Changeset 163243 in webkit


Ignore:
Timestamp:
Feb 1, 2014 9:31:48 AM (10 years ago)
Author:
andersca@apple.com
Message:

Add webView:didFailNavigation:withError: delegate method
https://bugs.webkit.org/show_bug.cgi?id=128022

Reviewed by Darin Adler.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didFailLoadWithErrorForFrame):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/API/Cocoa/WKNavigationDelegate.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFailLoadForFrame):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidFailLoad):

Location:
trunk/Source/WebKit2
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r163237 r163243  
     12014-01-31  Anders Carlsson  <andersca@apple.com>
     2
     3        Add webView:didFailNavigation:withError: delegate method
     4        https://bugs.webkit.org/show_bug.cgi?id=128022
     5
     6        Reviewed by Darin Adler.
     7
     8        * UIProcess/API/APILoaderClient.h:
     9        (API::LoaderClient::didFailLoadWithErrorForFrame):
     10        * UIProcess/API/C/WKPage.cpp:
     11        (WKPageSetPageLoaderClient):
     12        * UIProcess/API/Cocoa/WKNavigationDelegate.h:
     13        * UIProcess/Cocoa/NavigationState.h:
     14        * UIProcess/Cocoa/NavigationState.mm:
     15        (WebKit::NavigationState::setNavigationDelegate):
     16        (WebKit::NavigationState::LoaderClient::didFailLoadWithErrorForFrame):
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::didFailLoadForFrame):
     19        * UIProcess/WebPageProxy.h:
     20        * UIProcess/WebPageProxy.messages.in:
     21        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     22        (WebKit::WebFrameLoaderClient::dispatchDidFailLoad):
     23
    1242014-01-31  Brady Eidson  <beidson@apple.com>
    225
  • trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h

    r163201 r163243  
    6060    virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
    6161    virtual void didFinishLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
    62     virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceError&, API::Object*) { }
     62    virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) { }
    6363    virtual void didSameDocumentNavigationForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::SameDocumentNavigationType, API::Object*) { }
    6464    virtual void didReceiveTitleForFrame(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, API::Object*) { }
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r163201 r163243  
    741741        }
    742742
    743         virtual void didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, const ResourceError& error, API::Object* userData) override
     743        virtual void didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t navigationID, const ResourceError& error, API::Object* userData) override
    744744        {
    745745            if (!m_client.didFailLoadWithErrorForFrame)
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h

    r163201 r163243  
    5858- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
    5959- (void)webView:(WKWebView *)webView didFinishLoadingNavigation:(WKNavigation *)navigation;
     60- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error;
    6061
    6162@end
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h

    r163201 r163243  
    8282        virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
    8383        virtual void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
     84        virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object* userData) override;
    8485
    8586        NavigationState& m_navigationState;
     
    9596        bool webViewDidCommitNavigation : 1;
    9697        bool webViewDidFinishLoadingNavigation : 1;
     98        bool webViewDidFailNavigationWithError : 1;
    9799    } m_navigationDelegateMethods;
    98100
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r163201 r163243  
    7171    m_navigationDelegateMethods.webViewDidCommitNavigation = [delegate respondsToSelector:@selector(webView:didCommitNavigation:)];
    7272    m_navigationDelegateMethods.webViewDidFinishLoadingNavigation = [delegate respondsToSelector:@selector(webView:didFinishLoadingNavigation:)];
     73    m_navigationDelegateMethods.webViewDidFailNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailNavigation:withError:)];
    7374}
    7475
     
    275276}
    276277
     278void NavigationState::LoaderClient::didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError& error, API::Object* userData)
     279{
     280    if (!webFrameProxy->isMainFrame())
     281        return;
     282
     283    if (!m_navigationState.m_navigationDelegateMethods.webViewDidFailNavigationWithError)
     284        return;
     285
     286    auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
     287    if (!navigationDelegate)
     288        return;
     289
     290    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for navigations originating from the web process.
     291    WKNavigation *navigation = nil;
     292    if (navigationID)
     293        navigation = m_navigationState.m_navigations.get(navigationID).get();
     294
     295    [navigationDelegate webView:m_navigationState.m_webView didFailNavigation:navigation withError:error];
     296}
     297
    277298} // namespace WebKit
    278299
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r163218 r163243  
    22552255}
    22562256
    2257 void WebPageProxy::didFailLoadForFrame(uint64_t frameID, const ResourceError& error, IPC::MessageDecoder& decoder)
     2257void WebPageProxy::didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const ResourceError& error, IPC::MessageDecoder& decoder)
    22582258{
    22592259    RefPtr<API::Object> userData;
     
    22752275
    22762276    m_pageLoadState.commitChanges();
    2277     m_loaderClient->didFailLoadWithErrorForFrame(this, frame, error, userData.get());
     2277    m_loaderClient->didFailLoadWithErrorForFrame(this, frame, navigationID, error, userData.get());
    22782278}
    22792279
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r163201 r163243  
    904904    void didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
    905905    void didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, IPC::MessageDecoder&);
    906     void didFailLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
     906    void didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
    907907    void didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t sameDocumentNavigationType, const String&, IPC::MessageDecoder&);
    908908    void didReceiveTitleForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r163201 r163243  
    125125    DidFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    126126    DidCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, String mimeType, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    127     DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
     127    DidFailLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    128128    DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    129129    DidFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r163201 r163243  
    485485
    486486    // Notify the UIProcess.
    487     webPage->send(Messages::WebPageProxy::DidFailLoadForFrame(m_frame->frameID(), error, InjectedBundleUserMessageEncoder(userData.get())));
     487    WebDocumentLoader& documentLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().documentLoader());
     488    webPage->send(Messages::WebPageProxy::DidFailLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), error, InjectedBundleUserMessageEncoder(userData.get())));
    488489
    489490    // If we have a load listener, notify it.
Note: See TracChangeset for help on using the changeset viewer.