Diff
Modified: trunk/Source/WebKit2/ChangeLog (163143 => 163144)
--- trunk/Source/WebKit2/ChangeLog 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/ChangeLog 2014-01-31 01:45:16 UTC (rev 163144)
@@ -1,5 +1,28 @@
2014-01-30 Anders Carlsson <[email protected]>
+ Add a webView:didCommitNavigation: delegate method
+ https://bugs.webkit.org/show_bug.cgi?id=127972
+
+ Reviewed by Dan Bernstein.
+
+ * UIProcess/API/APILoaderClient.h:
+ (API::LoaderClient::didCommitLoadForFrame):
+ * 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::didCommitLoadForFrame):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::didCommitLoadForFrame):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+ (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
+
+2014-01-30 Anders Carlsson <[email protected]>
+
Add a webView:didFailProvisionalNavigation:withError: delegate method
https://bugs.webkit.org/show_bug.cgi?id=127968
Modified: trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h 2014-01-31 01:45:16 UTC (rev 163144)
@@ -56,7 +56,7 @@
virtual void didStartProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) { }
- virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
+ virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { }
virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
virtual void didFinishLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceError&, API::Object*) { }
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-01-31 01:45:16 UTC (rev 163144)
@@ -716,7 +716,7 @@
m_client.didFailProvisionalLoadWithErrorForFrame(toAPI(page), toAPI(frame), toAPI(error), toAPI(userData), m_client.base.clientInfo);
}
- virtual void didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, API::Object* userData) override
+ virtual void didCommitLoadForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t navigationID, API::Object* userData) override
{
if (!m_client.didCommitLoadForFrame)
return;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h 2014-01-31 01:45:16 UTC (rev 163144)
@@ -53,6 +53,7 @@
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error;
+- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
@end
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h 2014-01-31 01:45:16 UTC (rev 163144)
@@ -78,6 +78,7 @@
private:
virtual void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override;
+ virtual void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
NavigationState& m_navigationState;
};
@@ -88,6 +89,7 @@
bool webViewDidStartProvisionalNavigation : 1;
bool webViewDidFailProvisionalNavigationWithError : 1;
+ bool webViewDidCommitNavigation : 1;
} m_navigationDelegateMethods;
WKWebView *m_webView;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-01-31 01:45:16 UTC (rev 163144)
@@ -67,6 +67,7 @@
m_navigationDelegateMethods.webViewDidStartProvisionalNavigation = [delegate respondsToSelector:@selector(webView:didStartProvisionalNavigation:)];
m_navigationDelegateMethods.webViewDidFailProvisionalNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailProvisionalNavigation:withError:)];
+ m_navigationDelegateMethods.webViewDidCommitNavigation = [delegate respondsToSelector:@selector(webView:didCommitNavigation:)];
}
RetainPtr<WKNavigation> NavigationState::createLoadRequestNavigation(uint64_t navigationID, NSURLRequest *request)
@@ -211,6 +212,26 @@
[navigationDelegate.get() webView:m_navigationState.m_webView didFailProvisionalNavigation:navigation.get() withError:error];
}
+void NavigationState::LoaderClient::didCommitLoadForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, API::Object*)
+{
+ if (!webFrameProxy->isMainFrame())
+ return;
+
+ if (!m_navigationState.m_navigationDelegateMethods.webViewDidCommitNavigation)
+ return;
+
+ auto navigationDelegate = m_navigationState.m_navigationDelegate.get();
+ if (!navigationDelegate)
+ return;
+
+ // FIXME: We should assert that navigationID is not zero here, but it's currently zero for navigations originating from the web process.
+ WKNavigation *navigation = nil;
+ if (navigationID)
+ navigation = m_navigationState.m_navigations.get(navigationID).get();
+
+ [navigationDelegate.get() webView:m_navigationState.m_webView didCommitNavigation:navigation];
+}
+
} // namespace WebKit
#endif
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-01-31 01:45:16 UTC (rev 163144)
@@ -2180,7 +2180,7 @@
}
}
-void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String& mimeType, uint32_t opaqueFrameLoadType, const WebCore::CertificateInfo& certificateInfo, IPC::MessageDecoder& decoder)
+void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, uint32_t opaqueFrameLoadType, const WebCore::CertificateInfo& certificateInfo, IPC::MessageDecoder& decoder)
{
RefPtr<API::Object> userData;
WebContextUserMessageDecoder messageDecoder(userData, process());
@@ -2217,7 +2217,7 @@
m_pageScaleFactor = 1;
m_pageLoadState.commitChanges();
- m_loaderClient->didCommitLoadForFrame(this, frame, userData.get());
+ m_loaderClient->didCommitLoadForFrame(this, frame, navigationID, userData.get());
}
void WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder& decoder)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-01-31 01:45:16 UTC (rev 163144)
@@ -900,7 +900,7 @@
void didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& url, const String& unreachableURL, IPC::MessageDecoder&);
void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
void didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
- void didCommitLoadForFrame(uint64_t frameID, const String& mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&);
+ void didCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&);
void didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
void didFinishLoadForFrame(uint64_t frameID, IPC::MessageDecoder&);
void didFailLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (163143 => 163144)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-01-31 01:45:16 UTC (rev 163144)
@@ -123,7 +123,7 @@
DidStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, String unreachableURL, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
- DidCommitLoadForFrame(uint64_t frameID, String mimeType, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
+ DidCommitLoadForFrame(uint64_t frameID, uint64_t navigationID, String mimeType, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFinishLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (163143 => 163144)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2014-01-31 01:45:16 UTC (rev 163144)
@@ -435,7 +435,7 @@
if (!webPage)
return;
- const ResourceResponse& response = m_frame->coreFrame()->loader().documentLoader()->response();
+ WebDocumentLoader& documentLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().documentLoader());
RefPtr<API::Object> userData;
// Notify the bundle client.
@@ -445,7 +445,7 @@
// Notify the UIProcess.
- webPage->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), response.mimeType(), m_frame->coreFrame()->loader().loadType(), CertificateInfo(response), InjectedBundleUserMessageEncoder(userData.get())));
+ webPage->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), documentLoader.response().mimeType(), m_frame->coreFrame()->loader().loadType(), CertificateInfo(documentLoader.response()), InjectedBundleUserMessageEncoder(userData.get())));
webPage->didCommitLoad(m_frame);
}
Modified: trunk/Tools/ChangeLog (163143 => 163144)
--- trunk/Tools/ChangeLog 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Tools/ChangeLog 2014-01-31 01:45:16 UTC (rev 163144)
@@ -1,5 +1,16 @@
2014-01-30 Anders Carlsson <[email protected]>
+ Add a webView:didCommitNavigation: delegate method
+ https://bugs.webkit.org/show_bug.cgi?id=127972
+
+ Reviewed by Dan Bernstein.
+
+ * TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm:
+ (-[NavigationDelegate webView:didStartProvisionalNavigation:]):
+ (-[NavigationDelegate webView:didCommitNavigation:]):
+
+2014-01-30 Anders Carlsson <[email protected]>
+
Add a webView:didFailProvisionalNavigation:withError: delegate method
https://bugs.webkit.org/show_bug.cgi?id=127968
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm (163143 => 163144)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm 2014-01-31 01:35:16 UTC (rev 163143)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm 2014-01-31 01:45:16 UTC (rev 163144)
@@ -46,7 +46,12 @@
{
EXPECT_EQ(currentNavigation, navigation);
EXPECT_NOT_NULL(navigation.request);
+}
+- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation
+{
+ EXPECT_EQ(currentNavigation, navigation);
+
isDone = true;
}