Changeset 167496 in webkit


Ignore:
Timestamp:
Apr 18, 2014 10:49:24 AM (10 years ago)
Author:
mitz@apple.com
Message:

[Cocoa] Add a navigation delegate method corresponding to didFinishDocumentLoadForFrame for the main frame
https://bugs.webkit.org/show_bug.cgi?id=131847

Reviewed by Anders Carlsson.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didFinishDocumentLoadForFrame): Added a navigationID parameter.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient): Updated for the above change in paramerers.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: Declared new delegate method.
  • UIProcess/Cocoa/NavigationState.h: Declare override of didFinishDocumentLoadForFrame.
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate): Initialize
webViewNavigationDidFinishDocumentLoad flag in the delegate methods struct.
(WebKit::NavigationState::LoaderClient::didFinishDocumentLoadForFrame): Added override
of the client function which calls the delegate.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFinishDocumentLoadForFrame): Get and pass the navigation ID to
the client.

  • UIProcess/WebPageProxy.h: Added navigationID parameter.
  • UIProcess/WebPageProxy.messages.in: Ditto.
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): Get and send the navigation
ID to the UI process.

Location:
trunk/Source/WebKit2
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r167488 r167496  
     12014-04-18  Dan Bernstein  <mitz@apple.com>
     2
     3        [Cocoa] Add a navigation delegate method corresponding to didFinishDocumentLoadForFrame for the main frame
     4        https://bugs.webkit.org/show_bug.cgi?id=131847
     5
     6        Reviewed by Anders Carlsson.
     7
     8        * UIProcess/API/APILoaderClient.h:
     9        (API::LoaderClient::didFinishDocumentLoadForFrame): Added a navigationID parameter.
     10        * UIProcess/API/C/WKPage.cpp:
     11        (WKPageSetPageLoaderClient): Updated for the above change in paramerers.
     12        * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: Declared new delegate method.
     13        * UIProcess/Cocoa/NavigationState.h: Declare override of didFinishDocumentLoadForFrame.
     14        * UIProcess/Cocoa/NavigationState.mm:
     15        (WebKit::NavigationState::setNavigationDelegate): Initialize
     16        webViewNavigationDidFinishDocumentLoad flag in the delegate methods struct.
     17        (WebKit::NavigationState::LoaderClient::didFinishDocumentLoadForFrame): Added override
     18        of the client function which calls the delegate.
     19        * UIProcess/WebPageProxy.cpp:
     20        (WebKit::WebPageProxy::didFinishDocumentLoadForFrame): Get and pass the navigation ID to
     21        the client.
     22        * UIProcess/WebPageProxy.h: Added navigationID parameter.
     23        * UIProcess/WebPageProxy.messages.in: Ditto.
     24        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     25        (WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad): Get and send the navigation
     26        ID to the UI process.
     27
    1282014-04-18  Philippe Normand  <pnormand@igalia.com>
    229
  • trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h

    r166914 r167496  
    5858    virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, const WebCore::ResourceError&, API::Object*) { }
    5959    virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
    60     virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
     60    virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
    6161    virtual void didFinishLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, API::Object*) { }
    6262    virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t, const WebCore::ResourceError&, API::Object*) { }
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r167330 r167496  
    787787        }
    788788
    789         virtual void didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
     789        virtual void didFinishDocumentLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t, API::Object* userData) override
    790790        {
    791791            if (!m_client.didFinishDocumentLoadForFrame)
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h

    r166742 r167496  
    3737@optional
    3838
     39- (void)_webView:(WKWebView *)webView navigationDidFinishDocumentLoad:(WKNavigation *)navigation;
     40
    3941- (void)_webView:(WKWebView *)webView renderingProgressDidChange:(_WKRenderingProgressEvents)progressEvents;
    4042
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h

    r166338 r167496  
    100100        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override;
    101101        virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
     102        virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) override;
    102103        virtual void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
    103104        virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override;
     
    134135        bool webViewDidFailProvisionalNavigationWithError : 1;
    135136        bool webViewDidCommitNavigation : 1;
     137        bool webViewNavigationDidFinishDocumentLoad : 1;
    136138        bool webViewDidFinishNavigation : 1;
    137139        bool webViewDidFailNavigationWithError : 1;
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r167476 r167496  
    116116    m_navigationDelegateMethods.webViewDidFailNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailNavigation:withError:)];
    117117
     118    m_navigationDelegateMethods.webViewNavigationDidFinishDocumentLoad = [delegate respondsToSelector:@selector(_webView:navigationDidFinishDocumentLoad:)];
    118119    m_navigationDelegateMethods.webViewRenderingProgressDidChange = [delegate respondsToSelector:@selector(_webView:renderingProgressDidChange:)];
    119120    m_navigationDelegateMethods.webViewCanAuthenticateAgainstProtectionSpace = [delegate respondsToSelector:@selector(_webView:canAuthenticateAgainstProtectionSpace:)];
     
    397398}
    398399
     400void NavigationState::LoaderClient::didFinishDocumentLoadForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
     401{
     402    if (!webFrameProxy->isMainFrame())
     403        return;
     404
     405    if (!m_navigationState.m_navigationDelegateMethods.webViewNavigationDidFinishDocumentLoad)
     406        return;
     407
     408    auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
     409    if (!navigationDelegate)
     410        return;
     411
     412    WKNavigation *navigation = nil;
     413    if (navigationID)
     414        navigation = m_navigationState.m_navigations.get(navigationID).get();
     415
     416    [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) _webView:m_navigationState.m_webView navigationDidFinishDocumentLoad:navigation];
     417}
     418
    399419void NavigationState::LoaderClient::didFinishLoadForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
    400420{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r167481 r167496  
    24142414}
    24152415
    2416 void WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder& decoder)
     2416void WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, IPC::MessageDecoder& decoder)
    24172417{
    24182418    RefPtr<API::Object> userData;
     
    24242424    MESSAGE_CHECK(frame);
    24252425
    2426     m_loaderClient->didFinishDocumentLoadForFrame(this, frame, userData.get());
     2426    m_loaderClient->didFinishDocumentLoadForFrame(this, frame, navigationID, userData.get());
    24272427}
    24282428
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r167481 r167496  
    11011101    void didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
    11021102    void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, bool frameHasCustomContentProvider, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&);
    1103     void didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
     1103    void didFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, IPC::MessageDecoder&);
    11041104    void didFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, IPC::MessageDecoder&);
    11051105    void didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r167154 r167496  
    124124    DidCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, String mimeType, bool hasCustomContentProvider, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    125125    DidFailLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    126     DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
     126    DidFinishDocumentLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    127127    DidFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    128128    DidFirstLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r167425 r167496  
    506506    webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(webPage, m_frame, userData);
    507507
     508    WebDocumentLoader& documentLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().documentLoader());
     509
    508510    // Notify the UIProcess.
    509     webPage->send(Messages::WebPageProxy::DidFinishDocumentLoadForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
     511    webPage->send(Messages::WebPageProxy::DidFinishDocumentLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), InjectedBundleUserMessageEncoder(userData.get())));
    510512}
    511513
Note: See TracChangeset for help on using the changeset viewer.