Changeset 176408 in webkit


Ignore:
Timestamp:
Nov 20, 2014 12:01:40 PM (9 years ago)
Author:
andersca@apple.com
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:
Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r176400 r176408  
     12014-11-20  Anders Carlsson  <andersca@apple.com>
     2
     3        Add -[WKWebView loadData:MIMEType:textEncodingName:baseURL:]
     4        https://bugs.webkit.org/show_bug.cgi?id=138929
     5        <rdar://problem/18683802>
     6
     7        Reviewed by Dan Bernstein.
     8
     9        Also, re-implement -[WKWebView loadHTMLString:baseURL:] in terms of this newly added function
     10        and assume a UTF-8 encoding. This matches what Legacy WebKit does.
     11
     12        * UIProcess/API/Cocoa/WKWebView.h:
     13        * UIProcess/API/Cocoa/WKWebView.mm:
     14        (-[WKWebView loadHTMLString:baseURL:]):
     15        (-[WKWebView loadData:MIMEType:textEncodingName:baseURL:]):
     16        * UIProcess/WebPageProxy.cpp:
     17        (WebKit::WebPageProxy::loadData):
     18        * UIProcess/WebPageProxy.h:
     19
    1202014-11-20  Antti Koivisto  <antti@apple.com>
    221
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.h

    r176340 r176408  
    106106- (WKNavigation *)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
    107107
     108/*! @abstract Sets the webpage contents and base URL.
     109 @param data The data to use as the contents of the webpage.
     110 @param MIMEType The MIME type of the data.
     111 @param encodingName The data's character encoding name.
     112 @param baseURL A URL that is used to resolve relative URLs within the document.
     113 @result A new navigation.
     114 */
     115- (WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
     116
    108117/*! @abstract Navigates to an item from the back-forward list and sets it
    109118 as the current item.
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

    r176340 r176408  
    435435- (WKNavigation *)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
    436436{
    437     uint64_t navigationID = _page->loadHTMLString(string, baseURL.absoluteString);
     437    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
     438
     439    return [self loadData:data MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:baseURL];
     440}
     441
     442- (WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL
     443{
     444    uint64_t navigationID = _page->loadData(API::Data::createWithoutCopying(data).get(), MIMEType, characterEncodingName, baseURL.absoluteString);
    438445    if (!navigationID)
    439446        return nil;
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r176363 r176408  
    785785}
    786786
    787 void WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData)
     787uint64_t WebPageProxy::loadData(API::Data* data, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData)
    788788{
    789789    if (m_isClosed)
    790         return;
     790        return 0;
     791
     792    uint64_t navigationID = generateNavigationID();
     793
     794    auto transaction = m_pageLoadState.transaction();
     795
     796    m_pageLoadState.setPendingAPIRequestURL(transaction, !baseURL.isEmpty() ? baseURL : ASCIILiteral("about:blank"));
    791797
    792798    if (!isValid())
     
    796802    m_process->send(Messages::WebPage::LoadData(data->dataReference(), MIMEType, encoding, baseURL, WebContextUserMessageEncoder(userData, process())), m_pageID);
    797803    m_process->responsivenessTimer()->start();
    798 }
    799 
     804
     805    return navigationID;
     806}
     807
     808// FIXME: Get rid of loadHTMLString and just use loadData instead.
    800809uint64_t WebPageProxy::loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData)
    801810{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r176363 r176408  
    309309    uint64_t loadRequest(const WebCore::ResourceRequest&, API::Object* userData = nullptr);
    310310    uint64_t loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr);
    311     void loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
     311    uint64_t loadData(API::Data*, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr);
    312312    uint64_t loadHTMLString(const String& htmlString, const String& baseURL, API::Object* userData = nullptr);
    313313    void loadAlternateHTMLString(const String& htmlString, const String& baseURL, const String& unreachableURL, API::Object* userData = nullptr);
Note: See TracChangeset for help on using the changeset viewer.