Diff
Modified: trunk/Source/WebKit2/ChangeLog (163242 => 163243)
--- trunk/Source/WebKit2/ChangeLog 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/ChangeLog 2014-02-01 17:31:48 UTC (rev 163243)
@@ -1,3 +1,26 @@
+2014-01-31 Anders Carlsson <[email protected]>
+
+ 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):
+
2014-01-31 Brady Eidson <[email protected]>
IDB: Handle "nextunique" and "prevunique" cursors, and handle "advance()" correctly
Modified: trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h 2014-02-01 17:31:48 UTC (rev 163243)
@@ -59,7 +59,7 @@
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*, uint64_t navigationID, API::Object*) { }
- virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceError&, API::Object*) { }
+ virtual void didFailLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) { }
virtual void didSameDocumentNavigationForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, WebKit::SameDocumentNavigationType, API::Object*) { }
virtual void didReceiveTitleForFrame(WebKit::WebPageProxy*, const WTF::String&, WebKit::WebFrameProxy*, API::Object*) { }
virtual void didFirstLayoutForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { }
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp 2014-02-01 17:31:48 UTC (rev 163243)
@@ -740,7 +740,7 @@
m_client.didFinishLoadForFrame(toAPI(page), toAPI(frame), toAPI(userData), m_client.base.clientInfo);
}
- virtual void didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, const ResourceError& error, API::Object* userData) override
+ virtual void didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t navigationID, const ResourceError& error, API::Object* userData) override
{
if (!m_client.didFailLoadWithErrorForFrame)
return;
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h 2014-02-01 17:31:48 UTC (rev 163243)
@@ -57,6 +57,7 @@
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error;
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
- (void)webView:(WKWebView *)webView didFinishLoadingNavigation:(WKNavigation *)navigation;
+- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error;
@end
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h 2014-02-01 17:31:48 UTC (rev 163243)
@@ -81,6 +81,7 @@
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;
virtual void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override;
+ virtual void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object* userData) override;
NavigationState& m_navigationState;
};
@@ -94,6 +95,7 @@
bool webViewDidFailProvisionalNavigationWithError : 1;
bool webViewDidCommitNavigation : 1;
bool webViewDidFinishLoadingNavigation : 1;
+ bool webViewDidFailNavigationWithError : 1;
} m_navigationDelegateMethods;
WKWebView *m_webView;
Modified: trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm 2014-02-01 17:31:48 UTC (rev 163243)
@@ -70,6 +70,7 @@
m_navigationDelegateMethods.webViewDidFailProvisionalNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailProvisionalNavigation:withError:)];
m_navigationDelegateMethods.webViewDidCommitNavigation = [delegate respondsToSelector:@selector(webView:didCommitNavigation:)];
m_navigationDelegateMethods.webViewDidFinishLoadingNavigation = [delegate respondsToSelector:@selector(webView:didFinishLoadingNavigation:)];
+ m_navigationDelegateMethods.webViewDidFailNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailNavigation:withError:)];
}
RetainPtr<WKNavigation> NavigationState::createLoadRequestNavigation(uint64_t navigationID, NSURLRequest *request)
@@ -274,6 +275,26 @@
[navigationDelegate webView:m_navigationState.m_webView didFinishLoadingNavigation:navigation];
}
+void NavigationState::LoaderClient::didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError& error, API::Object* userData)
+{
+ if (!webFrameProxy->isMainFrame())
+ return;
+
+ if (!m_navigationState.m_navigationDelegateMethods.webViewDidFailNavigationWithError)
+ 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 webView:m_navigationState.m_webView didFailNavigation:navigation withError:error];
+}
+
} // namespace WebKit
#endif
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2014-02-01 17:31:48 UTC (rev 163243)
@@ -2254,7 +2254,7 @@
m_loaderClient->didFinishLoadForFrame(this, frame, navigationID, userData.get());
}
-void WebPageProxy::didFailLoadForFrame(uint64_t frameID, const ResourceError& error, IPC::MessageDecoder& decoder)
+void WebPageProxy::didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const ResourceError& error, IPC::MessageDecoder& decoder)
{
RefPtr<API::Object> userData;
WebContextUserMessageDecoder messageDecoder(userData, process());
@@ -2274,7 +2274,7 @@
frame->didFailLoad();
m_pageLoadState.commitChanges();
- m_loaderClient->didFailLoadWithErrorForFrame(this, frame, error, userData.get());
+ m_loaderClient->didFailLoadWithErrorForFrame(this, frame, navigationID, error, userData.get());
}
void WebPageProxy::didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t opaqueSameDocumentNavigationType, const String& url, IPC::MessageDecoder& decoder)
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h 2014-02-01 17:31:48 UTC (rev 163243)
@@ -903,7 +903,7 @@
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, uint64_t navigationID, IPC::MessageDecoder&);
- void didFailLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);
+ void didFailLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&);
void didSameDocumentNavigationForFrame(uint64_t frameID, uint32_t sameDocumentNavigationType, const String&, IPC::MessageDecoder&);
void didReceiveTitleForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&);
void didFirstLayoutForFrame(uint64_t frameID, IPC::MessageDecoder&);
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (163242 => 163243)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in 2014-02-01 17:31:48 UTC (rev 163243)
@@ -124,7 +124,7 @@
DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, 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
+ DidFailLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFinishLoadForFrame(uint64_t frameID, uint64_t navigationID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
DidFirstLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (163242 => 163243)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2014-02-01 16:32:11 UTC (rev 163242)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp 2014-02-01 17:31:48 UTC (rev 163243)
@@ -484,7 +484,8 @@
webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(webPage, m_frame, error, userData);
// Notify the UIProcess.
- webPage->send(Messages::WebPageProxy::DidFailLoadForFrame(m_frame->frameID(), error, InjectedBundleUserMessageEncoder(userData.get())));
+ WebDocumentLoader& documentLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().documentLoader());
+ webPage->send(Messages::WebPageProxy::DidFailLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), error, InjectedBundleUserMessageEncoder(userData.get())));
// If we have a load listener, notify it.
if (WebFrame::LoadListener* loadListener = m_frame->loadListener())