Changeset 163201 in webkit


Ignore:
Timestamp:
Jan 31, 2014 2:21:27 PM (10 years ago)
Author:
andersca@apple.com
Message:

Add webView:didReceiveServerRedirectForProvisionalNavigation:
https://bugs.webkit.org/show_bug.cgi?id=128016

Reviewed by Dan Bernstein.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):

  • 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::didReceiveServerRedirectForProvisionalLoadForFrame):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):

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

(WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Location:
trunk/Source/WebKit2
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r163200 r163201  
     12014-01-31  Anders Carlsson  <andersca@apple.com>
     2
     3        Add webView:didReceiveServerRedirectForProvisionalNavigation:
     4        https://bugs.webkit.org/show_bug.cgi?id=128016
     5
     6        Reviewed by Dan Bernstein.
     7
     8        * UIProcess/API/APILoaderClient.h:
     9        (API::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame):
     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::didReceiveServerRedirectForProvisionalLoadForFrame):
     17        * UIProcess/WebPageProxy.cpp:
     18        (WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame):
     19        * UIProcess/WebPageProxy.h:
     20        * UIProcess/WebPageProxy.messages.in:
     21        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
     22        (WebKit::WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
     23        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
     24        (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
     25
    1262014-01-31  Brady Eidson  <beidson@apple.com>
    227
  • trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h

    r163149 r163201  
    5555
    5656    virtual void didStartProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
    57     virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
     57    virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
    5858    virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) { }
    5959    virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
  • trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp

    r163149 r163201  
    701701        }
    702702
    703         virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
     703        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t navigationID, API::Object* userData) override
    704704        {
    705705            if (!m_client.didReceiveServerRedirectForProvisionalLoadForFrame)
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h

    r163149 r163201  
    5353
    5454- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
     55- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;
     56
    5557- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error;
    5658- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h

    r163149 r163201  
    7878    private:
    7979        virtual void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
     80        virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*);
    8081        virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override;
    8182        virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
     
    9091
    9192        bool webViewDidStartProvisionalNavigation : 1;
     93        bool webViewDidReceiveServerRedirectForProvisionalNavigation : 1;
    9294        bool webViewDidFailProvisionalNavigationWithError : 1;
    9395        bool webViewDidCommitNavigation : 1;
  • trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm

    r163149 r163201  
    6767
    6868    m_navigationDelegateMethods.webViewDidStartProvisionalNavigation = [delegate respondsToSelector:@selector(webView:didStartProvisionalNavigation:)];
     69    m_navigationDelegateMethods.webViewDidReceiveServerRedirectForProvisionalNavigation = [delegate respondsToSelector:@selector(webView:didReceiveServerRedirectForProvisionalNavigation:)];
    6970    m_navigationDelegateMethods.webViewDidFailProvisionalNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailProvisionalNavigation:withError:)];
    7071    m_navigationDelegateMethods.webViewDidCommitNavigation = [delegate respondsToSelector:@selector(webView:didCommitNavigation:)];
     
    192193}
    193194
     195void NavigationState::LoaderClient::didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
     196{
     197    if (!webFrameProxy->isMainFrame())
     198        return;
     199
     200    if (!m_navigationState.m_navigationDelegateMethods.webViewDidReceiveServerRedirectForProvisionalNavigation)
     201        return;
     202
     203    auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
     204    if (!navigationDelegate)
     205        return;
     206
     207    // FIXME: We should assert that navigationID is not zero here, but it's currently zero for navigations originating from the web process.
     208    WKNavigation *navigation = nil;
     209    if (navigationID)
     210        navigation = m_navigationState.m_navigations.get(navigationID).get();
     211
     212    [navigationDelegate webView:m_navigationState.m_webView didReceiveServerRedirectForProvisionalNavigation:navigation];
     213}
     214
    194215void NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError& error, API::Object*)
    195216{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r163150 r163201  
    21242124}
    21252125
    2126 void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String& url, IPC::MessageDecoder& decoder)
     2126void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& url, IPC::MessageDecoder& decoder)
    21272127{
    21282128    RefPtr<API::Object> userData;
     
    21432143
    21442144    m_pageLoadState.commitChanges();
    2145     m_loaderClient->didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData.get());
     2145    m_loaderClient->didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, navigationID, userData.get());
    21462146}
    21472147
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r163149 r163201  
    899899
    900900    void didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& url, const String& unreachableURL, IPC::MessageDecoder&);
    901     void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
     901    void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String&, IPC::MessageDecoder&);
    902902    void didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
    903903    void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&);
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r163149 r163201  
    122122    # Frame load messages
    123123    DidStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, String unreachableURL, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    124     DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
     124    DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
    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
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp

    r163149 r163201  
    280280        return;
    281281
    282     DocumentLoader* provisionalLoader = m_frame->coreFrame()->loader().provisionalDocumentLoader();
    283     const String& url = provisionalLoader->url().string();
     282    WebDocumentLoader& documentLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().provisionalDocumentLoader());
     283    const String& url = documentLoader.url().string();
    284284    RefPtr<API::Object> userData;
    285285
     
    288288
    289289    // Notify the UIProcess.
    290     webPage->send(Messages::WebPageProxy::DidReceiveServerRedirectForProvisionalLoadForFrame(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())));
     290    webPage->send(Messages::WebPageProxy::DidReceiveServerRedirectForProvisionalLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), url, InjectedBundleUserMessageEncoder(userData.get())));
    291291}
    292292
Note: See TracChangeset for help on using the changeset viewer.