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