Changeset 117995 in webkit
- Timestamp:
- May 22, 2012 10:32:59 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r117992 r117995 1 2012-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 1 24 2012-05-22 Vsevolod Vlasov <vsevik@chromium.org> 2 25 -
trunk/Source/WebCore/html/FileInputType.cpp
r116730 r117995 255 255 } 256 256 257 void FileInputType::setFileList(const Vector<FileChooserFileInfo>& files) 258 { 259 m_fileList->clear();257 PassRefPtr<FileList> FileInputType::createFileList(const Vector<FileChooserFileInfo>& files) const 258 { 259 RefPtr<FileList> fileList(FileList::create()); 260 260 size_t size = files.size(); 261 261 … … 279 279 // Normalize backslashes to slashes before exposing the relative path to script. 280 280 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)); 282 282 } 283 return ;283 return fileList; 284 284 } 285 285 #endif 286 286 287 287 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; 289 290 } 290 291 … … 318 319 } 319 320 320 void FileInputType:: filesChosen(const Vector<FileChooserFileInfo>&files)321 void FileInputType::setFiles(PassRefPtr<FileList> files) 321 322 { 322 323 RefPtr<HTMLInputElement> input = element(); 323 324 324 325 bool pathsChanged = false; 325 if (files .size() != m_fileList->length())326 if (files->length() != m_fileList->length()) 326 327 pathsChanged = true; 327 328 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()) { 330 331 pathsChanged = true; 331 332 break; … … 334 335 } 335 336 336 setFileList(files);337 m_fileList = files; 337 338 338 339 input->setFormControlValueMatchesRenderer(true); … … 341 342 342 343 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()); 345 346 requestIcon(paths); 346 347 … … 354 355 } 355 356 input->setChangedSinceLastFormControlChangeEvent(false); 357 } 358 359 void FileInputType::filesChosen(const Vector<FileChooserFileInfo>& files) 360 { 361 setFiles(createFileList(files)); 356 362 } 357 363 -
trunk/Source/WebCore/html/FileInputType.h
r110557 r117995 75 75 virtual void updateRendering(PassRefPtr<Icon>) OVERRIDE; 76 76 77 void setFileList(const Vector<FileChooserFileInfo>&); 77 void setFiles(PassRefPtr<FileList>); 78 PassRefPtr<FileList> createFileList(const Vector<FileChooserFileInfo>& files) const; 78 79 #if ENABLE(DIRECTORY_UPLOAD) 79 80 void receiveDropForDirectoryUpload(const Vector<String>&);
Note: See TracChangeset
for help on using the changeset viewer.