Changeset 141709 in webkit
- Timestamp:
- Feb 2, 2013 4:14:41 PM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r141708 r141709 1 2013-02-02 Christophe Dumez <christophe.dumez@intel.com> 2 3 [EFL][WK2] Use C API inside ewk_file_chooser_request 4 https://bugs.webkit.org/show_bug.cgi?id=107811 5 6 Reviewed by Sam Weinig. 7 8 Use C API inside ewk_file_chooser_request instead of 9 accessing the internal C++ classes directly, to 10 avoid violating API layering. 11 12 * UIProcess/API/efl/ewk_file_chooser_request.cpp: 13 (EwkFileChooserRequest::EwkFileChooserRequest): 14 (EwkFileChooserRequest::~EwkFileChooserRequest): 15 (EwkFileChooserRequest::allowMultipleFiles): 16 (EwkFileChooserRequest::acceptedMIMETypes): 17 (EwkFileChooserRequest::cancel): 18 (EwkFileChooserRequest::chooseFiles): 19 (ewk_file_chooser_request_accepted_mimetypes_get): 20 (ewk_file_chooser_request_files_choose): 21 (ewk_file_chooser_request_file_choose): 22 * UIProcess/API/efl/ewk_file_chooser_request_private.h: 23 (EwkFileChooserRequest::create): 24 (EwkFileChooserRequest): 25 * UIProcess/efl/PageUIClientEfl.cpp: 26 (WebKit::PageUIClientEfl::runOpenPanel): 27 1 28 2013-02-02 Sam Weinig <sam@webkit.org> 2 29 -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_file_chooser_request.cpp
r133744 r141709 27 27 #include "ewk_file_chooser_request.h" 28 28 29 #include " ImmutableArray.h"30 #include " MutableArray.h"31 #include "W ebOpenPanelParameters.h"32 #include "W ebOpenPanelResultListenerProxy.h"33 #include "W ebString.h"34 #include "W ebURL.h"29 #include "WKArray.h" 30 #include "WKOpenPanelParameters.h" 31 #include "WKOpenPanelResultListener.h" 32 #include "WKSharedAPICast.h" 33 #include "WKString.h" 34 #include "WKURL.h" 35 35 #include "ewk_file_chooser_request_private.h" 36 #include <wtf/OwnArrayPtr.h> 36 37 #include <wtf/text/CString.h> 37 38 38 39 using namespace WebKit; 39 40 40 EwkFileChooserRequest::EwkFileChooserRequest(W ebOpenPanelParameters* parameters, WebOpenPanelResultListenerProxy*listener)41 EwkFileChooserRequest::EwkFileChooserRequest(WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener) 41 42 : m_parameters(parameters) 42 43 , m_listener(listener) … … 50 51 { 51 52 if (!m_wasRequestHandled) 52 m_listener->cancel();53 WKOpenPanelResultListenerCancel(m_listener.get()); 53 54 } 54 55 55 56 bool EwkFileChooserRequest::allowMultipleFiles() const 56 57 { 57 return m_parameters->allowMultipleFiles();58 return WKOpenPanelParametersGetAllowsMultipleFiles(m_parameters.get()); 58 59 } 59 60 60 PassRefPtr<ImmutableArray> EwkFileChooserRequest::acceptedMIMETypes() const61 WKRetainPtr<WKArrayRef> EwkFileChooserRequest::acceptedMIMETypes() const 61 62 { 62 return m_parameters->acceptMIMETypes();63 return adoptWK(WKOpenPanelParametersCopyAcceptedMIMETypes(m_parameters.get())); 63 64 } 64 65 … … 67 68 m_wasRequestHandled = true; 68 69 69 return m_listener->cancel();70 return WKOpenPanelResultListenerCancel(m_listener.get()); 70 71 } 71 72 72 void EwkFileChooserRequest::chooseFiles( Vector< RefPtr<APIObject> >&fileURLs)73 void EwkFileChooserRequest::chooseFiles(WKArrayRef fileURLs) 73 74 { 74 ASSERT(!fileURLs.isEmpty());75 ASSERT(fileURLs.size() == 1 || m_parameters->allowMultipleFiles());76 77 75 m_wasRequestHandled = true; 78 m_listener->chooseFiles(ImmutableArray::adopt(fileURLs).get());76 WKOpenPanelResultListenerChooseFiles(m_listener.get(), fileURLs); 79 77 } 80 78 … … 91 89 92 90 Eina_List* mimeTypeList = 0; 93 RefPtr<ImmutableArray> mimeTypes = impl->acceptedMIMETypes();91 WKRetainPtr<WKArrayRef> mimeTypes = impl->acceptedMIMETypes(); 94 92 95 const size_t size = mimeTypes->size();93 const size_t size = WKArrayGetSize(mimeTypes.get()); 96 94 for (size_t i = 0; i < size; ++i) { 97 String mimeTypeString = static_cast<WebString*>(mimeTypes->at(i))->string();98 if ( mimeTypeString.isEmpty())95 WKRetainPtr<WKStringRef> mimeType = static_cast<WKStringRef>(WKArrayGetItemAtIndex(mimeTypes.get(), i)); 96 if (!mimeType || WKStringIsEmpty(mimeType.get())) 99 97 continue; 100 mimeTypeList = eina_list_append(mimeTypeList, eina_stringshare_add( mimeTypeString.utf8().data()));98 mimeTypeList = eina_list_append(mimeTypeList, eina_stringshare_add(toWTFString(mimeType.get()).utf8().data())); 101 99 } 102 100 … … 118 116 EWK_OBJ_GET_IMPL_OR_RETURN(EwkFileChooserRequest, request, impl, false); 119 117 EINA_SAFETY_ON_NULL_RETURN_VAL(chosenFiles, false); 120 EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_list_count(chosenFiles) == 1 || impl->allowMultipleFiles(), false);121 118 EINA_SAFETY_ON_TRUE_RETURN_VAL(impl->wasHandled(), false); 122 119 123 Vector< RefPtr<APIObject> > fileURLs; 120 const unsigned urlCount = eina_list_count(chosenFiles); 121 EINA_SAFETY_ON_FALSE_RETURN_VAL(urlCount == 1 || (urlCount > 1 && impl->allowMultipleFiles()), false); 124 122 125 const Eina_List* l; 126 void* data; 127 EINA_LIST_FOREACH(chosenFiles, l, data) { 128 EINA_SAFETY_ON_NULL_RETURN_VAL(data, false); 129 String fileURL = "file://" + String::fromUTF8(static_cast<char*>(data)); 130 fileURLs.append(WebURL::create(fileURL)); 123 OwnArrayPtr<WKTypeRef> filesURLs = adoptArrayPtr(new WKTypeRef[urlCount]); 124 125 for (unsigned i = 0; i < urlCount; ++i) { 126 const char* url = static_cast<char*>(eina_list_nth(chosenFiles, i)); 127 EINA_SAFETY_ON_NULL_RETURN_VAL(url, false); 128 String fileURL = ASCIILiteral("file://") + String::fromUTF8(url); 129 filesURLs[i] = toCopiedURLAPI(fileURL); 131 130 } 132 131 133 impl->chooseFiles(fileURLs); 132 WKRetainPtr<WKArrayRef> wkFileURLs(AdoptWK, WKArrayCreateAdoptingValues(filesURLs.get(), urlCount)); 133 impl->chooseFiles(wkFileURLs.get()); 134 134 135 135 return true; … … 142 142 EINA_SAFETY_ON_TRUE_RETURN_VAL(impl->wasHandled(), false); 143 143 144 Vector< RefPtr<APIObject> > fileURLs; 145 String fileURL = "file://" + String::fromUTF8(chosenFile); 146 fileURLs.append(WebURL::create(fileURL)); 144 String fileURL = ASCIILiteral("file://") + String::fromUTF8(chosenFile); 145 WKRetainPtr<WKURLRef> wkURL(AdoptWK, toCopiedURLAPI(fileURL)); 147 146 148 impl->chooseFiles(fileURLs); 147 WKTypeRef wkURLPtr = wkURL.get(); 148 WKRetainPtr<WKArrayRef> wkFileURLs(AdoptWK, WKArrayCreate(&wkURLPtr, 1)); 149 impl->chooseFiles(wkFileURLs.get()); 149 150 150 151 return true; -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_file_chooser_request_private.h
r135117 r141709 28 28 29 29 #include "APIObject.h" 30 #include "WKRetainPtr.h" 30 31 #include "ewk_object_private.h" 32 #include <WebKit2/WKBase.h> 31 33 #include <wtf/PassRefPtr.h> 32 #include <wtf/RefPtr.h>33 #include <wtf/Vector.h>34 35 namespace WebKit {36 class ImmutableArray;37 class WebOpenPanelParameters;38 class WebOpenPanelResultListenerProxy;39 }40 34 41 35 class EwkFileChooserRequest : public EwkObject { … … 43 37 EWK_OBJECT_DECLARE(EwkFileChooserRequest) 44 38 45 static PassRefPtr<EwkFileChooserRequest> create(W ebKit::WebOpenPanelParameters* parameters, WebKit::WebOpenPanelResultListenerProxy*listener)39 static PassRefPtr<EwkFileChooserRequest> create(WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener) 46 40 { 47 41 return adoptRef(new EwkFileChooserRequest(parameters, listener)); … … 51 45 52 46 bool allowMultipleFiles() const; 53 PassRefPtr<WebKit::ImmutableArray> acceptedMIMETypes() const;47 WKRetainPtr<WKArrayRef> acceptedMIMETypes() const; 54 48 inline bool wasHandled() const { return m_wasRequestHandled; } 55 49 void cancel(); 56 void chooseFiles( Vector< RefPtr<WebKit::APIObject> >&fileURLs);50 void chooseFiles(WKArrayRef fileURLs); 57 51 58 52 private: 59 EwkFileChooserRequest(W ebKit::WebOpenPanelParameters* parameters, WebKit::WebOpenPanelResultListenerProxy*listener);53 EwkFileChooserRequest(WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener); 60 54 61 RefPtr<WebKit::WebOpenPanelParameters> m_parameters;62 RefPtr<WebKit::WebOpenPanelResultListenerProxy> m_listener;55 WKRetainPtr<WKOpenPanelParametersRef> m_parameters; 56 WKRetainPtr<WKOpenPanelResultListenerRef> m_listener; 63 57 bool m_wasRequestHandled; 64 58 }; -
trunk/Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp
r141274 r141709 201 201 { 202 202 EwkView* view = toPageUIClientEfl(clientInfo)->m_view; 203 RefPtr<EwkFileChooserRequest> fileChooserRequest = EwkFileChooserRequest::create( toImpl(parameters), toImpl(listener));203 RefPtr<EwkFileChooserRequest> fileChooserRequest = EwkFileChooserRequest::create(parameters, listener); 204 204 view->smartCallback<FileChooserRequest>().call(fileChooserRequest.get()); 205 205 }
Note: See TracChangeset
for help on using the changeset viewer.