Title: [150271] trunk/Source/WebKit2
Revision
150271
Author
wei...@apple.com
Date
2013-05-17 10:30:59 -0700 (Fri, 17 May 2013)

Log Message

Add WKPageLoadData and WKPageLoadDataWithUserData SPI to support loading arbitrary data blobs
https://bugs.webkit.org/show_bug.cgi?id=116325

Reviewed by Simon Fraser.

* UIProcess/API/C/WKPage.cpp:
(WKPageLoadData):
(WKPageLoadDataWithUserData):
Add new SPI.

* UIProcess/API/C/WKPage.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadData):
* UIProcess/WebPageProxy.h:
Pipe through to the WebProcess.

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::loadData):
(WebKit::WebPage::loadHTMLString):
(WebKit::WebPage::loadAlternateHTMLString):
(WebKit::WebPage::loadPlainTextString):
(WebKit::WebPage::loadWebArchiveData):
Rename existing loadData function to loadDataImpl (I hate it) to avoid overload conflict
from IPC magic.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (150270 => 150271)


--- trunk/Source/WebKit2/ChangeLog	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/ChangeLog	2013-05-17 17:30:59 UTC (rev 150271)
@@ -1,3 +1,34 @@
+2013-05-17  Sam Weinig  <s...@webkit.org>
+
+        Add WKPageLoadData and WKPageLoadDataWithUserData SPI to support loading arbitrary data blobs
+        https://bugs.webkit.org/show_bug.cgi?id=116325
+
+        Reviewed by Simon Fraser.
+
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageLoadData):
+        (WKPageLoadDataWithUserData):
+        Add new SPI.
+
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::loadData):
+        * UIProcess/WebPageProxy.h:
+        Pipe through to the WebProcess.
+
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::loadDataImpl):
+        (WebKit::WebPage::loadData):
+        (WebKit::WebPage::loadHTMLString):
+        (WebKit::WebPage::loadAlternateHTMLString):
+        (WebKit::WebPage::loadPlainTextString):
+        (WebKit::WebPage::loadWebArchiveData):
+        Rename existing loadData function to loadDataImpl (I hate it) to avoid overload conflict
+        from IPC magic.
+
+
 2013-05-17  Michał Pakuła vel Rutka  <m.pak...@samsung.com>
 
         [EFL][WK2] Fix sub menu initialization in ewk_context_menu_item

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (150270 => 150271)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp	2013-05-17 17:30:59 UTC (rev 150271)
@@ -92,6 +92,16 @@
     toImpl(pageRef)->loadFile(toWTFString(fileURL), toWTFString(resourceDirectoryURL), toImpl(userDataRef));
 }
 
+void WKPageLoadData(WKPageRef pageRef, WKDataRef dataRef, WKStringRef MIMETypeRef, WKStringRef encodingRef, WKURLRef baseURLRef)
+{
+    toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), toWTFString(baseURLRef));
+}
+
+void WKPageLoadDataWithUserData(WKPageRef pageRef, WKDataRef dataRef, WKStringRef MIMETypeRef, WKStringRef encodingRef, WKURLRef baseURLRef, WKTypeRef userDataRef)
+{
+    toImpl(pageRef)->loadData(toImpl(dataRef), toWTFString(MIMETypeRef), toWTFString(encodingRef), toWTFString(baseURLRef), toImpl(userDataRef));
+}
+
 void WKPageLoadHTMLString(WKPageRef pageRef, WKStringRef htmlStringRef, WKURLRef baseURLRef)
 {
     toImpl(pageRef)->loadHTMLString(toWTFString(htmlStringRef), toWTFString(baseURLRef));

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (150270 => 150271)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h	2013-05-17 17:30:59 UTC (rev 150271)
@@ -365,6 +365,8 @@
 WK_EXPORT void WKPageLoadFileWithUserData(WKPageRef page, WKURLRef fileURL, WKURLRef resourceDirectoryURL, WKTypeRef userData);
 
 // Data Requests
+WK_EXPORT void WKPageLoadData(WKPageRef page, WKDataRef data, WKStringRef MIMEType, WKStringRef encoding, WKURLRef baseURL);
+WK_EXPORT void WKPageLoadDataWithUserData(WKPageRef page, WKDataRef data, WKStringRef MIMEType, WKStringRef encoding, WKURLRef baseURL, WKTypeRef userData);
 WK_EXPORT void WKPageLoadHTMLString(WKPageRef page, WKStringRef htmlString, WKURLRef baseURL);
 WK_EXPORT void WKPageLoadHTMLStringWithUserData(WKPageRef page, WKStringRef htmlString, WKURLRef baseURL, WKTypeRef userData);
 WK_EXPORT void WKPageLoadAlternateHTMLString(WKPageRef page, WKStringRef htmlString, WKURLRef baseURL, WKURLRef unreachableURL);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (150270 => 150271)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2013-05-17 17:30:59 UTC (rev 150271)
@@ -725,6 +725,16 @@
     m_process->responsivenessTimer()->start();
 }
 
+void WebPageProxy::loadData(WebData* data, const String& MIMEType, const String& encoding, const String& baseURL, APIObject* userData)
+{
+    if (!isValid())
+        reattachToWebProcess();
+
+    m_process->assumeReadAccessToBaseURL(baseURL);
+    m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData)), m_pageID);
+    m_process->responsivenessTimer()->start();
+}
+
 void WebPageProxy::loadHTMLString(const String& htmlString, const String& baseURL, APIObject* userData)
 {
     if (!isValid())

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (150270 => 150271)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2013-05-17 17:30:59 UTC (rev 150271)
@@ -285,6 +285,7 @@
     void loadURL(const String&, APIObject* userData = 0);
     void loadURLRequest(WebURLRequest*, APIObject* userData = 0);
     void loadFile(const String& fileURL, const String& resourceDirectoryURL, APIObject* userData = 0);
+    void loadData(WebData*, const String& MIMEType, const String& encoding, const String& baseURL, APIObject* userData = 0);
     void loadHTMLString(const String& htmlString, const String& baseURL, APIObject* userData = 0);
     void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, APIObject* userData = 0);
     void loadPlainTextString(const String& string, APIObject* userData = 0);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (150270 => 150271)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-05-17 17:30:59 UTC (rev 150271)
@@ -906,7 +906,7 @@
     m_mainFrame->coreFrame()->loader()->load(FrameLoadRequest(m_mainFrame->coreFrame(), request));
 }
 
-void WebPage::loadData(PassRefPtr<SharedBuffer> sharedBuffer, const String& MIMEType, const String& encodingName, const KURL& baseURL, const KURL& unreachableURL, CoreIPC::MessageDecoder& decoder)
+void WebPage::loadDataImpl(PassRefPtr<SharedBuffer> sharedBuffer, const String& MIMEType, const String& encodingName, const KURL& baseURL, const KURL& unreachableURL, CoreIPC::MessageDecoder& decoder)
 {
     SendStopResponsivenessTimer stopper(this);
 
@@ -926,11 +926,18 @@
     m_mainFrame->coreFrame()->loader()->load(FrameLoadRequest(m_mainFrame->coreFrame(), request, substituteData));
 }
 
+void WebPage::loadData(const CoreIPC::DataReference& data, const String& MIMEType, const String& encodingName, const String& baseURLString, CoreIPC::MessageDecoder& decoder)
+{
+    RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(data.data()), data.size() * sizeof(uint8_t));
+    KURL baseURL = baseURLString.isEmpty() ? blankURL() : KURL(KURL(), baseURLString);
+    loadDataImpl(sharedBuffer, MIMEType, encodingName, blankURL(), KURL(), decoder);
+}
+
 void WebPage::loadHTMLString(const String& htmlString, const String& baseURLString, CoreIPC::MessageDecoder& decoder)
 {
     RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(htmlString.characters()), htmlString.length() * sizeof(UChar));
     KURL baseURL = baseURLString.isEmpty() ? blankURL() : KURL(KURL(), baseURLString);
-    loadData(sharedBuffer, "text/html", "utf-16", baseURL, KURL(), decoder);
+    loadDataImpl(sharedBuffer, "text/html", "utf-16", baseURL, KURL(), decoder);
 }
 
 void WebPage::loadAlternateHTMLString(const String& htmlString, const String& baseURLString, const String& unreachableURLString, CoreIPC::MessageDecoder& decoder)
@@ -938,19 +945,19 @@
     RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(htmlString.characters()), htmlString.length() * sizeof(UChar));
     KURL baseURL = baseURLString.isEmpty() ? blankURL() : KURL(KURL(), baseURLString);
     KURL unreachableURL = unreachableURLString.isEmpty() ? KURL() : KURL(KURL(), unreachableURLString);
-    loadData(sharedBuffer, "text/html", "utf-16", baseURL, unreachableURL, decoder);
+    loadDataImpl(sharedBuffer, "text/html", "utf-16", baseURL, unreachableURL, decoder);
 }
 
 void WebPage::loadPlainTextString(const String& string, CoreIPC::MessageDecoder& decoder)
 {
     RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(string.characters()), string.length() * sizeof(UChar));
-    loadData(sharedBuffer, "text/plain", "utf-16", blankURL(), KURL(), decoder);
+    loadDataImpl(sharedBuffer, "text/plain", "utf-16", blankURL(), KURL(), decoder);
 }
 
 void WebPage::loadWebArchiveData(const CoreIPC::DataReference& webArchiveData, CoreIPC::MessageDecoder& decoder)
 {
     RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(reinterpret_cast<const char*>(webArchiveData.data()), webArchiveData.size() * sizeof(uint8_t));
-    loadData(sharedBuffer, "application/x-webarchive", "utf-16", blankURL(), KURL(), decoder);
+    loadDataImpl(sharedBuffer, "application/x-webarchive", "utf-16", blankURL(), KURL(), decoder);
 }
 
 void WebPage::linkClicked(const String& url, const WebMouseEvent& event)

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (150270 => 150271)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2013-05-17 17:30:59 UTC (rev 150271)
@@ -672,7 +672,7 @@
 
     String sourceForFrame(WebFrame*);
 
-    void loadData(PassRefPtr<WebCore::SharedBuffer>, const String& MIMEType, const String& encodingName, const WebCore::KURL& baseURL, const WebCore::KURL& failingURL, CoreIPC::MessageDecoder&);
+    void loadDataImpl(PassRefPtr<WebCore::SharedBuffer>, const String& MIMEType, const String& encodingName, const WebCore::KURL& baseURL, const WebCore::KURL& failingURL, CoreIPC::MessageDecoder&);
 
     bool platformHasLocalDataForURL(const WebCore::KURL&);
 
@@ -680,6 +680,7 @@
     void tryClose();
     void loadURL(const String&, const SandboxExtension::Handle&, CoreIPC::MessageDecoder&);
     void loadURLRequest(const WebCore::ResourceRequest&, const SandboxExtension::Handle&, CoreIPC::MessageDecoder&);
+    void loadData(const CoreIPC::DataReference&, const String& MIMEType, const String& encodingName, const String& baseURL, CoreIPC::MessageDecoder&);
     void loadHTMLString(const String& htmlString, const String& baseURL, CoreIPC::MessageDecoder&);
     void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, CoreIPC::MessageDecoder&);
     void loadPlainTextString(const String&, CoreIPC::MessageDecoder&);

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (150270 => 150271)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2013-05-17 17:25:41 UTC (rev 150270)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in	2013-05-17 17:30:59 UTC (rev 150271)
@@ -66,6 +66,7 @@
 
     LoadURL(WTF::String url, WebKit::SandboxExtension::Handle sandboxExtensionHandle, WebKit::WebContextUserMessageEncoder userData) Variadic
     LoadURLRequest(WebCore::ResourceRequest request, WebKit::SandboxExtension::Handle sandboxExtensionHandle, WebKit::WebContextUserMessageEncoder userData) Variadic
+    LoadData(CoreIPC::DataReference data, WTF::String MIMEType, WTF::String encoding, WTF::String baseURL, WebKit::WebContextUserMessageEncoder userData) Variadic
     LoadHTMLString(WTF::String htmlString, WTF::String baseURL, WebKit::WebContextUserMessageEncoder userData) Variadic
     LoadAlternateHTMLString(WTF::String htmlString, WTF::String baseURL, WTF::String unreachableURL, WebKit::WebContextUserMessageEncoder userData) Variadic
     LoadPlainTextString(WTF::String string, WebKit::WebContextUserMessageEncoder userData) Variadic
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to