Changeset 120410 in webkit
- Timestamp:
- Jun 14, 2012, 11:38:25 PM (14 years ago)
- Location:
- trunk/Source
- Files:
-
- 8 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/html/FileInputType.cpp (modified) (2 diffs)
-
WebCore/html/HTMLInputElement.cpp (modified) (2 diffs)
-
WebCore/html/HTMLInputElement.h (modified) (1 diff)
-
WebCore/platform/FileChooser.cpp (modified) (1 diff)
-
WebCore/platform/FileChooser.h (modified) (1 diff)
-
WebKit/chromium/ChangeLog (modified) (1 diff)
-
WebKit/chromium/src/ChromeClientImpl.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r120406 r120410 1 2012-06-14 Kent Tamura <tkent@chromium.org> 2 3 Support file extensions in HTMLInputElement::accept 4 https://bugs.webkit.org/show_bug.cgi?id=88298 5 6 Reviewed by Hajime Morita. 7 8 The WHATWG specification added file extensions supoprt for 9 HTMLInputElement::accept recently. 10 11 In the WebCore FileChooser interface, we rejected invalid MIME type 12 strings in HTMLInputElement::acceptMIMETypes(), and platform file 13 choosers don't expect that it containts file extensions. So, this patch 14 introduces additional member "acceptFileExtensions" to 15 FileChooserSettings, and it contains only file extensions specified by 16 an accept attribute. 17 18 * html/FileInputType.cpp: 19 Sets HTMLInputElement::acceptFileExtensions() to 20 FileChooserSettings::acceptFileExtensions. 21 (WebCore::FileInputType::handleDOMActivateEvent): 22 (WebCore::FileInputType::receiveDropForDirectoryUpload): 23 * html/HTMLInputElement.cpp: 24 (WebCore::isValidFileExtension): Added. 25 (WebCore::parseAcceptAttribute): 26 Common part for acceptMIMETyps() and acceptFileExtensions(). 27 (WebCore::HTMLInputElement::acceptMIMETypes): 28 Uses parseAcceptAttribute() with isValidMIMEType(). 29 (WebCore::HTMLInputElement::acceptFileExtensions): 30 Added. Uses parseAcceptAttribute() with isValidFileExtension(). 31 * html/HTMLInputElement.h: 32 (HTMLInputElement): Add acceptFileExtensions(). 33 * platform/FileChooser.h: 34 (FileChooserSettings): Add acceptFileExtensions and acceptTypes(). 35 * platform/FileChooser.cpp: 36 (WebCore::FileChooserSettings::acceptTypes): Added. 37 1 38 2012-06-14 James Robinson <jamesr@chromium.org> 2 39 -
trunk/Source/WebCore/html/FileInputType.cpp
r120081 r120410 189 189 #endif 190 190 settings.acceptMIMETypes = input->acceptMIMETypes(); 191 settings.acceptFileExtensions = input->acceptFileExtensions(); 191 192 settings.selectedFiles = m_fileList->paths(); 192 193 #if ENABLE(MEDIA_CAPTURE) … … 376 377 settings.selectedFiles.append(paths[0]); 377 378 settings.acceptMIMETypes = input->acceptMIMETypes(); 379 settings.acceptFileExtensions = input->acceptFileExtensions(); 378 380 chrome->enumerateChosenDirectory(newFileChooser(settings)); 379 381 } -
trunk/Source/WebCore/html/HTMLInputElement.cpp
r120313 r120410 1136 1136 } 1137 1137 1138 static inlinebool isValidMIMEType(const String& type)1138 static bool isValidMIMEType(const String& type) 1139 1139 { 1140 1140 size_t slashPosition = type.find('/'); … … 1148 1148 } 1149 1149 1150 Vector<String> HTMLInputElement::acceptMIMETypes() 1151 { 1152 Vector<String> mimeTypes; 1153 1154 String acceptString = accept(); 1150 static bool isValidFileExtension(const String& type) 1151 { 1152 if (type.length() < 2) 1153 return false; 1154 return type[0] == '.'; 1155 } 1156 1157 static Vector<String> parseAcceptAttribute(const String& acceptString, bool (*predicate)(const String&)) 1158 { 1159 Vector<String> types; 1155 1160 if (acceptString.isEmpty()) 1156 return mimeTypes;1161 return types; 1157 1162 1158 1163 Vector<String> splitTypes; 1159 1164 acceptString.split(',', false, splitTypes); 1160 1165 for (size_t i = 0; i < splitTypes.size(); ++i) { 1161 String trimmed MimeType = stripLeadingAndTrailingHTMLSpaces(splitTypes[i]);1162 if (trimmed MimeType.isEmpty())1166 String trimmedType = stripLeadingAndTrailingHTMLSpaces(splitTypes[i]); 1167 if (trimmedType.isEmpty()) 1163 1168 continue; 1164 if (! isValidMIMEType(trimmedMimeType))1169 if (!predicate(trimmedType)) 1165 1170 continue; 1166 mimeTypes.append(trimmedMimeType.lower()); 1167 } 1168 1169 return mimeTypes; 1171 types.append(trimmedType.lower()); 1172 } 1173 1174 return types; 1175 } 1176 1177 Vector<String> HTMLInputElement::acceptMIMETypes() 1178 { 1179 return parseAcceptAttribute(fastGetAttribute(acceptAttr), isValidMIMEType); 1180 } 1181 1182 Vector<String> HTMLInputElement::acceptFileExtensions() 1183 { 1184 return parseAcceptAttribute(fastGetAttribute(acceptAttr), isValidFileExtension); 1170 1185 } 1171 1186 -
trunk/Source/WebCore/html/HTMLInputElement.h
r120313 r120410 198 198 199 199 Vector<String> acceptMIMETypes(); 200 Vector<String> acceptFileExtensions(); 200 201 String accept() const; 201 202 String alt() const; -
trunk/Source/WebCore/platform/FileChooser.cpp
r110557 r120410 100 100 } 101 101 102 Vector<String> FileChooserSettings::acceptTypes() const 103 { 104 Vector<String> acceptTypes; 105 acceptTypes.reserveCapacity(acceptMIMETypes.size() + acceptFileExtensions.size()); 106 acceptTypes.append(acceptMIMETypes); 107 acceptTypes.append(acceptFileExtensions); 108 return acceptTypes; 102 109 } 110 111 } -
trunk/Source/WebCore/platform/FileChooser.h
r116592 r120410 56 56 #endif 57 57 Vector<String> acceptMIMETypes; 58 Vector<String> acceptFileExtensions; 58 59 Vector<String> selectedFiles; 59 60 #if ENABLE(MEDIA_CAPTURE) 60 61 String capture; 61 62 #endif 63 64 // Returns a combined vector of acceptMIMETypes and acceptFileExtensions. 65 Vector<String> acceptTypes() const; 62 66 }; 63 67 -
trunk/Source/WebKit/chromium/ChangeLog
r120408 r120410 1 2012-06-14 Kent Tamura <tkent@chromium.org> 2 3 Support file extensions in HTMLInputElement::accept 4 https://bugs.webkit.org/show_bug.cgi?id=88298 5 6 Reviewed by Hajime Morita. 7 8 * src/ChromeClientImpl.cpp: 9 (WebKit::ChromeClientImpl::runOpenPanel): 10 Use FileChooserSettings::acceptTypes() to get both of MIME types and file extensions. 11 1 12 2012-06-14 Kaustubh Atrawalkar <kaustubh@motorola.com> 2 13 -
trunk/Source/WebKit/chromium/src/ChromeClientImpl.cpp
r119752 r120410 719 719 params.directory = false; 720 720 #endif 721 params.acceptTypes = fileChooser->settings().accept MIMETypes;721 params.acceptTypes = fileChooser->settings().acceptTypes(); 722 722 params.selectedFiles = fileChooser->settings().selectedFiles; 723 723 if (params.selectedFiles.size() > 0)
Note:
See TracChangeset
for help on using the changeset viewer.