- Revision
- 176408
- Author
- [email protected]
- Date
- 2014-11-20 12:01:40 -0800 (Thu, 20 Nov 2014)
Log Message
Add -[WKWebView loadData:MIMEType:textEncodingName:baseURL:]
https://bugs.webkit.org/show_bug.cgi?id=138929
<rdar://problem/18683802>
Reviewed by Dan Bernstein.
Also, re-implement -[WKWebView loadHTMLString:baseURL:] in terms of this newly added function
and assume a UTF-8 encoding. This matches what Legacy WebKit does.
* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView loadHTMLString:baseURL:]):
(-[WKWebView loadData:MIMEType:textEncodingName:baseURL:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadData):
* UIProcess/WebPageProxy.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (176407 => 176408)
--- trunk/Source/WebKit2/ChangeLog 2014-11-20 19:56:13 UTC (rev 176407)
+++ trunk/Source/WebKit2/ChangeLog 2014-11-20 20:01:40 UTC (rev 176408)
@@ -1,3 +1,22 @@
+2014-11-20 Anders Carlsson <[email protected]>
+
+ Add -[WKWebView loadData:MIMEType:textEncodingName:baseURL:]
+ https://bugs.webkit.org/show_bug.cgi?id=138929
+ <rdar://problem/18683802>
+
+ Reviewed by Dan Bernstein.
+
+ Also, re-implement -[WKWebView loadHTMLString:baseURL:] in terms of this newly added function
+ and assume a UTF-8 encoding. This matches what Legacy WebKit does.
+
+ * UIProcess/API/Cocoa/WKWebView.h:
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView loadHTMLString:baseURL:]):
+ (-[WKWebView loadData:MIMEType:textEncodingName:baseURL:]):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::loadData):
+ * UIProcess/WebPageProxy.h:
+
2014-11-20 Antti Koivisto <[email protected]>
Remove alignment code from cache coders
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h (176407 => 176408)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h 2014-11-20 19:56:13 UTC (rev 176407)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h 2014-11-20 20:01:40 UTC (rev 176408)
@@ -105,6 +105,15 @@
*/
- (WKNavigation *)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
+/*! @abstract Sets the webpage contents and base URL.
+ @param data The data to use as the contents of the webpage.
+ @param MIMEType The MIME type of the data.
+ @param encodingName The data's character encoding name.
+ @param baseURL A URL that is used to resolve relative URLs within the document.
+ @result A new navigation.
+ */
+- (WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+
/*! @abstract Navigates to an item from the back-forward list and sets it
as the current item.
@param item The item to which to navigate. Must be one of the items in the
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (176407 => 176408)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-11-20 19:56:13 UTC (rev 176407)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm 2014-11-20 20:01:40 UTC (rev 176408)
@@ -434,7 +434,14 @@
- (WKNavigation *)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
{
- uint64_t navigationID = _page->loadHTMLString(string, baseURL.absoluteString);
+ NSData *data = "" dataUsingEncoding:NSUTF8StringEncoding];
+
+ return [self loadData:data MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:baseURL];
+}
+
+- (WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL
+{
+ uint64_t navigationID = _page->loadData(API::Data::createWithoutCopying(data).get(), MIMEType, characterEncodingName, baseURL.absoluteString);
if (!navigationID)
return nil;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (176407 => 176408)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-11-20 19:56:13 UTC (rev 176407)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-11-20 20:01:40 UTC (rev 176408)
@@ -784,19 +784,28 @@
return navigationID;
}
-void WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData)
+uint64_t WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData)
{
if (m_isClosed)
- return;
+ return 0;
+ uint64_t navigationID = generateNavigationID();
+
+ auto transaction = m_pageLoadState.transaction();
+
+ m_pageLoadState.setPendingAPIRequestURL(transaction, !baseURL.isEmpty() ? baseURL : ASCIILiteral("about:blank"));
+
if (!isValid())
reattachToWebProcess();
m_process->assumeReadAccessToBaseURL(baseURL);
m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData, process())), m_pageID);
m_process->responsivenessTimer()->start();
+
+ return navigationID;
}
+// FIXME: Get rid of loadHTMLString and just use loadData instead.
uint64_t WebPageProxy::loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData)
{
if (m_isClosed)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (176407 => 176408)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-11-20 19:56:13 UTC (rev 176407)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-11-20 20:01:40 UTC (rev 176408)
@@ -308,7 +308,7 @@
uint64_t loadRequest(const WebCore::ResourceRequest&, API::Object* userData = nullptr);
uint64_t loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
- void loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
+ uint64_t loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
uint64_t loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData = nullptr);
void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, API::Object* userData = nullptr);
void loadPlainTextString(const String&, API::Object* userData = nullptr);