Title: [176408] trunk/Source/WebKit2
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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to