Changeset 148005 in webkit
- Timestamp:
- Apr 9, 2013 4:13:44 AM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r148000 r148005 1 2013-04-09 Michael Brüning <michael.bruning@digia.com> 2 3 [WK2] Add C API to copy selected files from WebOpenPanelParameters. 4 https://bugs.webkit.org/show_bug.cgi?id=112339 5 6 Reviewed by Andreas Kling. 7 8 Replaces the existing WebOpenPanelParameters::selectedFileNames() method 9 to return a copy of the selected file names and exposes it through the 10 C API. This is done in order to reduce the direct use of WebKit2 internal 11 classes. The implementation is very similar to the one in 12 WebOpenPanelParameters::acceptMIMETypes(). 13 14 This also updates the GTK port, which is the other user of selectedFileNames. 15 16 * Shared/WebOpenPanelParameters.cpp: 17 (WebKit::WebOpenPanelParameters::selectedFileNames): 18 (WebKit): 19 * Shared/WebOpenPanelParameters.h: 20 (WebOpenPanelParameters): 21 * UIProcess/API/C/WKOpenPanelParameters.cpp: 22 (WKOpenPanelParametersCopySelectedFileNames): 23 * UIProcess/API/C/WKOpenPanelParameters.h: 24 * UIProcess/API/gtk/WebKitFileChooserRequest.cpp: 25 (webkit_file_chooser_request_get_selected_files): 26 * UIProcess/qt/QtWebPageUIClient.cpp: 27 (WebKit::QtWebPageUIClient::runOpenPanel): 28 1 29 2013-04-09 Jinwoo Song <jinwoo7.song@samsung.com> 2 30 -
trunk/Source/WebKit2/Shared/WebOpenPanelParameters.cpp
r125512 r148005 69 69 #endif 70 70 71 PassRefPtr<ImmutableArray> WebOpenPanelParameters::selectedFileNames() const 72 { 73 size_t size = m_settings.selectedFiles.size(); 74 75 Vector<RefPtr<APIObject> > vector; 76 vector.reserveInitialCapacity(size); 77 78 for (size_t i = 0; i < size; ++i) 79 vector.uncheckedAppend(WebString::create(m_settings.selectedFiles[i])); 80 return ImmutableArray::adopt(vector); 81 } 82 71 83 72 84 } // namespace WebCore -
trunk/Source/WebKit2/Shared/WebOpenPanelParameters.h
r147403 r148005 44 44 bool allowMultipleFiles() const { return m_settings.allowsMultipleFiles; } 45 45 PassRefPtr<ImmutableArray> acceptMIMETypes() const; 46 Vector<String> selectedFileNames() const { return m_settings.selectedFiles; }46 PassRefPtr<ImmutableArray> selectedFileNames() const; 47 47 #if ENABLE(MEDIA_CAPTURE) 48 48 String capture() const; -
trunk/Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp
r125512 r148005 57 57 #endif 58 58 } 59 60 WKArrayRef WKOpenPanelParametersCopySelectedFileNames(WKOpenPanelParametersRef parametersRef) 61 { 62 return toAPI(toImpl(parametersRef)->selectedFileNames().leakRef()); 63 } -
trunk/Source/WebKit2/UIProcess/API/C/WKOpenPanelParameters.h
r125512 r148005 46 46 WK_EXPORT WKStringRef WKOpenPanelParametersCopyCapture(WKOpenPanelParametersRef parameters); 47 47 48 WK_EXPORT WKArrayRef WKOpenPanelParametersCopySelectedFileNames(WKOpenPanelParametersRef parametersRef); 49 48 50 #ifdef __cplusplus 49 51 } -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitFileChooserRequest.cpp
r135565 r148005 346 346 return reinterpret_cast<gchar**>(request->priv->selectedFiles->pdata); 347 347 348 const Vector<String> selectedFileNames = request->priv->parameters->selectedFileNames();349 size_t numOfFiles = selectedFileNames .size();348 RefPtr<ImmutableArray> selectedFileNames = request->priv->parameters->selectedFileNames(); 349 size_t numOfFiles = selectedFileNames->size(); 350 350 if (!numOfFiles) 351 351 return 0; … … 353 353 request->priv->selectedFiles = adoptGRef(g_ptr_array_new_with_free_func(g_free)); 354 354 for (size_t i = 0; i < numOfFiles; ++i) { 355 if (selectedFileNames[i].isEmpty()) 355 WebString* webFileName = static_cast<WebString*>(selectedFileNames->at(i)); 356 if (webFileName->isEmpty()) 356 357 continue; 357 358 CString filename = fileSystemRepresentation(selectedFileNames[i]); -
trunk/Source/WebKit2/UIProcess/qt/QtWebPageUIClient.cpp
r122478 r148005 27 27 #include "qquickwebview_p_p.h" 28 28 #include "qwebpermissionrequest_p.h" 29 #include <WKA PICast.h>29 #include <WKArray.h> 30 30 #include <WKHitTestResult.h> 31 31 #include <WKOpenPanelParameters.h> … … 137 137 void QtWebPageUIClient::runOpenPanel(WKPageRef, WKFrameRef, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener, const void* clientInfo) 138 138 { 139 Vector<String> wkSelectedFileNames = toImpl(parameters)->selectedFileNames(); 139 WKRetainPtr<WKArrayRef> wkSelectedFileNames = adoptWK(WKOpenPanelParametersCopySelectedFileNames(parameters)); 140 QStringList selectedFileNames; 141 size_t selectedFilesSize = WKArrayGetSize(wkSelectedFileNames.get()); 142 selectedFileNames.reserve(selectedFilesSize); 140 143 141 QStringList selectedFileNames; 142 for (size_t i = 0; i < wkSelectedFileNames.size(); ++i) 143 selectedFileNames += wkSelectedFileNames.at(i); 144 for (size_t i = 0; i < selectedFilesSize; ++i) 145 selectedFileNames += WKStringCopyQString(static_cast<WKStringRef>(WKArrayGetItemAtIndex(wkSelectedFileNames.get(), i))); 144 146 145 147 FileChooserType allowMultipleFiles = WKOpenPanelParametersGetAllowsMultipleFiles(parameters) ? MultipleFilesSelection : SingleFileSelection;
Note: See TracChangeset
for help on using the changeset viewer.