Changeset 117995 in webkit


Ignore:
Timestamp:
May 22, 2012 10:32:59 AM (12 years ago)
Author:
thakis@chromium.org
Message:

Give FileInputType a setFiles() method, let Drag-n-Drop call it.
https://bugs.webkit.org/show_bug.cgi?id=87139

Reviewed by Ojan Vafai.

filesChosen(), the FileChooserClient callback, used to modify
m_fileList directly. Instead, convert the FileChooserClient
data to a FileList and pass that to a factored-out setFiles()
method. This is in preparation to making the files property
writable.

Pure refactoring, no functionality change.

  • html/FileInputType.cpp:

(WebCore::FileInputType::toFileList):
(WebCore::FileInputType::setFiles):
(WebCore::FileInputType::filesChosen):
(WebCore):

  • html/FileInputType.h:

(FileInputType):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r117992 r117995  
     12012-05-22  Nico Weber  <thakis@chromium.org>
     2
     3        Give FileInputType a setFiles() method, let Drag-n-Drop call it.
     4        https://bugs.webkit.org/show_bug.cgi?id=87139
     5
     6        Reviewed by Ojan Vafai.
     7
     8        filesChosen(), the FileChooserClient callback, used to modify
     9        m_fileList directly. Instead, convert the FileChooserClient
     10        data to a FileList and pass that to a factored-out setFiles()
     11        method. This is in preparation to making the files property
     12        writable.
     13
     14        Pure refactoring, no functionality change.
     15
     16        * html/FileInputType.cpp:
     17        (WebCore::FileInputType::toFileList):
     18        (WebCore::FileInputType::setFiles):
     19        (WebCore::FileInputType::filesChosen):
     20        (WebCore):
     21        * html/FileInputType.h:
     22        (FileInputType):
     23
    1242012-05-22  Vsevolod Vlasov  <vsevik@chromium.org>
    225
  • trunk/Source/WebCore/html/FileInputType.cpp

    r116730 r117995  
    255255}
    256256
    257 void FileInputType::setFileList(const Vector<FileChooserFileInfo>& files)
    258 {
    259     m_fileList->clear();
     257PassRefPtr<FileList> FileInputType::createFileList(const Vector<FileChooserFileInfo>& files) const
     258{
     259    RefPtr<FileList> fileList(FileList::create());
    260260    size_t size = files.size();
    261261
     
    279279            // Normalize backslashes to slashes before exposing the relative path to script.
    280280            String relativePath = files[i].path.substring(rootLength).replace('\\', '/');
    281             m_fileList->append(File::createWithRelativePath(files[i].path, relativePath));
     281            fileList->append(File::createWithRelativePath(files[i].path, relativePath));
    282282        }
    283         return;
     283        return fileList;
    284284    }
    285285#endif
    286286
    287287    for (size_t i = 0; i < size; i++)
    288         m_fileList->append(File::createWithName(files[i].path, files[i].displayName));
     288        fileList->append(File::createWithName(files[i].path, files[i].displayName));
     289    return fileList;
    289290}
    290291
     
    318319}
    319320
    320 void FileInputType::filesChosen(const Vector<FileChooserFileInfo>& files)
     321void FileInputType::setFiles(PassRefPtr<FileList> files)
    321322{
    322323    RefPtr<HTMLInputElement> input = element();
    323324
    324325    bool pathsChanged = false;
    325     if (files.size() != m_fileList->length())
     326    if (files->length() != m_fileList->length())
    326327        pathsChanged = true;
    327328    else {
    328         for (unsigned i = 0; i < files.size(); ++i) {
    329             if (files[i].path != m_fileList->item(i)->path()) {
     329        for (unsigned i = 0; i < files->length(); ++i) {
     330            if (files->item(i)->path() != m_fileList->item(i)->path()) {
    330331                pathsChanged = true;
    331332                break;
     
    334335    }
    335336
    336     setFileList(files);
     337    m_fileList = files;
    337338
    338339    input->setFormControlValueMatchesRenderer(true);
     
    341342
    342343    Vector<String> paths;
    343     for (unsigned i = 0; i < files.size(); ++i)
    344         paths.append(files[i].path);
     344    for (unsigned i = 0; i < m_fileList->length(); ++i)
     345        paths.append(m_fileList->item(i)->path());
    345346    requestIcon(paths);
    346347
     
    354355    }
    355356    input->setChangedSinceLastFormControlChangeEvent(false);
     357}
     358
     359void FileInputType::filesChosen(const Vector<FileChooserFileInfo>& files)
     360{
     361    setFiles(createFileList(files));
    356362}
    357363
  • trunk/Source/WebCore/html/FileInputType.h

    r110557 r117995  
    7575    virtual void updateRendering(PassRefPtr<Icon>) OVERRIDE;
    7676
    77     void setFileList(const Vector<FileChooserFileInfo>&);
     77    void setFiles(PassRefPtr<FileList>);
     78    PassRefPtr<FileList> createFileList(const Vector<FileChooserFileInfo>& files) const;
    7879#if ENABLE(DIRECTORY_UPLOAD)
    7980    void receiveDropForDirectoryUpload(const Vector<String>&);
Note: See TracChangeset for help on using the changeset viewer.