Changeset 163137 in webkit
- Timestamp:
- Jan 30, 2014 5:08:54 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r163132 r163137 1 2014-01-30 Anders Carlsson <andersca@apple.com> 2 3 Add a webView:didFailProvisionalNavigation:withError: delegate method 4 https://bugs.webkit.org/show_bug.cgi?id=127968 5 6 Reviewed by Dan Bernstein. 7 8 * UIProcess/API/APILoaderClient.h: 9 (API::LoaderClient::didFailProvisionalLoadWithErrorForFrame): 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::didFailProvisionalLoadWithErrorForFrame): 17 * UIProcess/WebPageProxy.cpp: 18 (WebKit::WebPageProxy::didFailProvisionalLoadForFrame): 19 * UIProcess/WebPageProxy.h: 20 * UIProcess/WebPageProxy.messages.in: 21 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 22 (WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad): 23 1 24 2014-01-30 Anders Carlsson <andersca@apple.com> 2 25 -
trunk/Source/WebKit2/UIProcess/API/APILoaderClient.h
r163132 r163137 56 56 virtual void didStartProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, API::Object*) { } 57 57 virtual void didReceiveServerRedirectForProvisionalLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { } 58 virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, const WebCore::ResourceError&, API::Object*) { }58 virtual void didFailProvisionalLoadWithErrorForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) { } 59 59 virtual void didCommitLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { } 60 60 virtual void didFinishDocumentLoadForFrame(WebKit::WebPageProxy*, WebKit::WebFrameProxy*, API::Object*) { } -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r163132 r163137 709 709 } 710 710 711 virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, const ResourceError& error, API::Object* userData) override711 virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy* page, WebFrameProxy* frame, uint64_t navigationID, const ResourceError& error, API::Object* userData) override 712 712 { 713 713 if (!m_client.didFailProvisionalLoadWithErrorForFrame) -
trunk/Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegate.h
r163132 r163137 53 53 54 54 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation; 55 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error; 55 56 56 57 @end -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.h
r163132 r163137 78 78 private: 79 79 virtual void didStartProvisionalLoadForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, API::Object*) override; 80 virtual void didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*, uint64_t navigationID, const WebCore::ResourceError&, API::Object*) override; 80 81 81 82 NavigationState& m_navigationState; … … 87 88 88 89 bool webViewDidStartProvisionalNavigation : 1; 90 bool webViewDidFailProvisionalNavigationWithError : 1; 89 91 } m_navigationDelegateMethods; 90 92 -
trunk/Source/WebKit2/UIProcess/Cocoa/NavigationState.mm
r163132 r163137 67 67 68 68 m_navigationDelegateMethods.webViewDidStartProvisionalNavigation = [delegate respondsToSelector:@selector(webView:didStartProvisionalNavigation:)]; 69 m_navigationDelegateMethods.webViewDidFailProvisionalNavigationWithError = [delegate respondsToSelector:@selector(webView:didFailProvisionalNavigation:withError:)]; 69 70 } 70 71 … … 189 190 } 190 191 192 void NavigationState::LoaderClient::didFailProvisionalLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy* webFrameProxy, uint64_t navigationID, const WebCore::ResourceError& error, API::Object*) 193 { 194 if (!webFrameProxy->isMainFrame()) 195 return; 196 197 // FIXME: We should assert that navigationID is not zero here, but it's currently zero for navigations originating from the web process. 198 RetainPtr<WKNavigation> navigation; 199 if (navigationID) 200 navigation = m_navigationState.m_navigations.take(navigationID); 201 202 // FIXME: Set the error on the navigation object. 203 204 if (!m_navigationState.m_navigationDelegateMethods.webViewDidFailProvisionalNavigationWithError) 205 return; 206 207 auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); 208 if (!navigationDelegate) 209 return; 210 211 [navigationDelegate.get() webView:m_navigationState.m_webView didFailProvisionalNavigation:navigation.get() withError:error]; 212 } 213 191 214 } // namespace WebKit 192 215 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r163132 r163137 2147 2147 } 2148 2148 2149 void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, const ResourceError& error, IPC::MessageDecoder& decoder)2149 void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const ResourceError& error, IPC::MessageDecoder& decoder) 2150 2150 { 2151 2151 RefPtr<API::Object> userData; … … 2165 2165 2166 2166 m_pageLoadState.commitChanges(); 2167 m_loaderClient->didFailProvisionalLoadWithErrorForFrame(this, frame, error, userData.get());2167 m_loaderClient->didFailProvisionalLoadWithErrorForFrame(this, frame, navigationID, error, userData.get()); 2168 2168 } 2169 2169 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.h
r163132 r163137 900 900 void didStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const String& url, const String& unreachableURL, IPC::MessageDecoder&); 901 901 void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&, IPC::MessageDecoder&); 902 void didFailProvisionalLoadForFrame(uint64_t frameID, const WebCore::ResourceError&, IPC::MessageDecoder&);902 void didFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, const WebCore::ResourceError&, IPC::MessageDecoder&); 903 903 void didCommitLoadForFrame(uint64_t frameID, const String& mimeType, uint32_t frameLoadType, const WebCore::CertificateInfo&, IPC::MessageDecoder&); 904 904 void didFinishDocumentLoadForFrame(uint64_t frameID, IPC::MessageDecoder&); -
trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in
r163132 r163137 121 121 122 122 # Frame load messages 123 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 125 DidFailProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 123 126 DidCommitLoadForFrame(uint64_t frameID, String mimeType, uint32_t loadType, WebCore::CertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 124 127 DidFailLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 125 DidFailProvisionalLoadForFrame(uint64_t frameID, WebCore::ResourceError error, WebKit::InjectedBundleUserMessageEncoder userData) Variadic126 128 DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 127 129 DidFinishLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic … … 129 131 DidFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 130 132 DidLayout(uint32_t type, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 131 DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, String url, WebKit::InjectedBundleUserMessageEncoder userData) Variadic132 133 DidRemoveFrameFromHierarchy(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 133 DidStartProvisionalLoadForFrame(uint64_t frameID, uint64_t navigationID, String url, String unreachableURL, WebKit::InjectedBundleUserMessageEncoder userData) Variadic134 134 DidReceiveTitleForFrame(uint64_t frameID, String title, WebKit::InjectedBundleUserMessageEncoder userData) Variadic 135 135 DidDisplayInsecureContentForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData) Variadic -
trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r163132 r163137 465 465 466 466 // Notify the UIProcess. 467 webPage->send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame->frameID(), error, InjectedBundleUserMessageEncoder(userData.get()))); 467 WebDocumentLoader& provisionalLoader = static_cast<WebDocumentLoader&>(*m_frame->coreFrame()->loader().provisionalDocumentLoader()); 468 webPage->send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame->frameID(), provisionalLoader.navigationID(), error, InjectedBundleUserMessageEncoder(userData.get()))); 468 469 469 470 // If we have a load listener, notify it. -
trunk/Tools/ChangeLog
r163136 r163137 1 2014-01-30 Anders Carlsson <andersca@apple.com> 2 3 Add a webView:didFailProvisionalNavigation:withError: delegate method 4 https://bugs.webkit.org/show_bug.cgi?id=127968 5 6 Reviewed by Dan Bernstein. 7 8 * TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm: 9 (-[DidFailProvisionalNavigationDelegate webView:didStartProvisionalNavigation:]): 10 (-[DidFailProvisionalNavigationDelegate webView:didFailProvisionalNavigation:withError:]): 11 (TEST): 12 1 13 2014-01-30 Ryosuke Niwa <rniwa@webkit.org> 2 14 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/Navigation.mm
r163132 r163137 35 35 #if WK_API_ENABLED 36 36 37 static bool isDone; 38 static RetainPtr<WKNavigation> currentNavigation; 39 37 40 @interface NavigationDelegate : NSObject <WKNavigationDelegate> 38 41 @end 39 40 static bool isDone;41 static RetainPtr<WKNavigation> currentNavigation;42 42 43 43 @implementation NavigationDelegate … … 84 84 } 85 85 86 @interface DidFailProvisionalNavigationDelegate : NSObject <WKNavigationDelegate> 87 @end 88 89 @implementation DidFailProvisionalNavigationDelegate 90 91 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation 92 { 93 EXPECT_EQ(currentNavigation, navigation); 94 EXPECT_NOT_NULL(navigation.request); 95 } 96 97 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error 98 { 99 EXPECT_EQ(currentNavigation, navigation); 100 EXPECT_NOT_NULL(navigation.request); 101 102 EXPECT_TRUE([error.domain isEqualToString:NSURLErrorDomain]); 103 EXPECT_EQ(NSURLErrorUnsupportedURL, error.code); 104 105 isDone = true; 106 } 107 108 @end 109 110 TEST(WKNavigation, DidFailProvisionalNavigation) 111 { 112 RetainPtr<WKWebView> webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]); 113 114 RetainPtr<DidFailProvisionalNavigationDelegate> delegate = adoptNS([[DidFailProvisionalNavigationDelegate alloc] init]); 115 [webView setNavigationDelegate:delegate.get()]; 116 117 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"non-existant-scheme://"]]; 118 119 currentNavigation = [webView loadRequest:request]; 120 ASSERT_NOT_NULL(currentNavigation); 121 ASSERT_TRUE([[currentNavigation request] isEqual:request]); 122 123 TestWebKitAPI::Util::run(&isDone); 124 } 125 86 126 #endif
Note: See TracChangeset
for help on using the changeset viewer.