Changeset 223737 in webkit
- Timestamp:
- Oct 19, 2017 7:17:46 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r223730 r223737 1 2017-10-19 Alex Christensen <achristensen@webkit.org> 2 3 Modernize authentication challenge handling in WebKit 4 https://bugs.webkit.org/show_bug.cgi?id=178555 5 6 Reviewed by Tim Horton. 7 8 * UIProcess/API/APILoaderClient.h: 9 (API::LoaderClient::didReceiveAuthenticationChallengeInFrame): 10 * UIProcess/API/APINavigationClient.h: 11 (API::NavigationClient::didReceiveAuthenticationChallenge): 12 * UIProcess/API/C/WKPage.cpp: 13 (WKPageSetPageLoaderClient): 14 (WKPageSetPageNavigationClient): 15 * UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h: 16 * UIProcess/Cocoa/NavigationState.h: 17 * UIProcess/Cocoa/NavigationState.mm: 18 (WebKit::NavigationState::NavigationClient::canAuthenticateAgainstProtectionSpace): 19 (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge): 20 * UIProcess/WebPageProxy.cpp: 21 (WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy): 22 1 23 2017-10-19 Alex Christensen <achristensen@webkit.org> 2 24 -
trunk/Source/WebKit/UIProcess/API/APILoaderClient.h
r222824 r223737 79 79 80 80 virtual bool canAuthenticateAgainstProtectionSpaceInFrame(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, WebKit::WebProtectionSpace*) { return false; } 81 virtual void didReceiveAuthenticationChallengeInFrame(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, WebKit::AuthenticationChallengeProxy *) { }81 virtual void didReceiveAuthenticationChallengeInFrame(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, WebKit::AuthenticationChallengeProxy&) { } 82 82 83 83 virtual void didStartProgress(WebKit::WebPageProxy&) { } -
trunk/Source/WebKit/UIProcess/API/APINavigationClient.h
r222944 r223737 83 83 84 84 virtual bool canAuthenticateAgainstProtectionSpace(WebKit::WebPageProxy&, WebKit::WebProtectionSpace*) { return false; } 85 virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy *) { }85 virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy&) { } 86 86 87 87 // FIXME: These function should not be part of this client. -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r222824 r223737 1149 1149 } 1150 1150 1151 void didReceiveAuthenticationChallengeInFrame(WebPageProxy& page, WebFrameProxy& frame, AuthenticationChallengeProxy *authenticationChallenge) override1151 void didReceiveAuthenticationChallengeInFrame(WebPageProxy& page, WebFrameProxy& frame, AuthenticationChallengeProxy& authenticationChallenge) override 1152 1152 { 1153 1153 if (!m_client.didReceiveAuthenticationChallengeInFrame) 1154 1154 return; 1155 1155 1156 m_client.didReceiveAuthenticationChallengeInFrame(toAPI(&page), toAPI(&frame), toAPI( authenticationChallenge), m_client.base.clientInfo);1156 m_client.didReceiveAuthenticationChallengeInFrame(toAPI(&page), toAPI(&frame), toAPI(&authenticationChallenge), m_client.base.clientInfo); 1157 1157 } 1158 1158 … … 2236 2236 } 2237 2237 2238 void didReceiveAuthenticationChallenge(WebPageProxy& page, AuthenticationChallengeProxy *authenticationChallenge) override2238 void didReceiveAuthenticationChallenge(WebPageProxy& page, AuthenticationChallengeProxy& authenticationChallenge) override 2239 2239 { 2240 2240 if (!m_client.didReceiveAuthenticationChallenge) 2241 2241 return; 2242 m_client.didReceiveAuthenticationChallenge(toAPI(&page), toAPI( authenticationChallenge), m_client.base.clientInfo);2242 m_client.didReceiveAuthenticationChallenge(toAPI(&page), toAPI(&authenticationChallenge), m_client.base.clientInfo); 2243 2243 } 2244 2244 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h
r222944 r223737 61 61 - (void)_webView:(WKWebView *)webView renderingProgressDidChange:(_WKRenderingProgressEvents)progressEvents; 62 62 63 - (BOOL)_webView:(WKWebView *)webView canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace ;64 - (void)_webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge ;63 - (BOOL)_webView:(WKWebView *)webView canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace WK_API_DEPRECATED_WITH_REPLACEMENT("webView:didReceiveAuthenticationChallenge:completionHandler:", macosx(10.10, WK_MAC_TBA), ios(8.0, WK_IOS_TBA)); 64 - (void)_webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge WK_API_DEPRECATED_WITH_REPLACEMENT("webView:didReceiveAuthenticationChallenge:completionHandler:", macosx(10.10, WK_MAC_TBA), ios(8.0, WK_IOS_TBA)); 65 65 66 66 - (void)_webViewWebProcessDidCrash:(WKWebView *)webView; -
trunk/Source/WebKit/UIProcess/API/glib/WebKitLoaderClient.cpp
r222824 r223737 106 106 } 107 107 108 void didReceiveAuthenticationChallengeInFrame(WebPageProxy&, WebFrameProxy&, AuthenticationChallengeProxy *authenticationChallenge) override108 void didReceiveAuthenticationChallengeInFrame(WebPageProxy&, WebFrameProxy&, AuthenticationChallengeProxy& authenticationChallenge) override 109 109 { 110 webkitWebViewHandleAuthenticationChallenge(m_webView, authenticationChallenge);110 webkitWebViewHandleAuthenticationChallenge(m_webView, &authenticationChallenge); 111 111 } 112 112 -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.h
r222944 r223737 105 105 106 106 bool canAuthenticateAgainstProtectionSpace(WebPageProxy&, WebProtectionSpace*) override; 107 void didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy *) override;107 void didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy&) override; 108 108 void processDidTerminate(WebPageProxy&, ProcessTerminationReason) override; 109 109 void processDidBecomeResponsive(WebPageProxy&) override; -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r222944 r223737 820 820 return false; 821 821 822 #pragma clang diagnostic push 823 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 822 824 return [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) _webView:m_navigationState.m_webView canAuthenticateAgainstProtectionSpace:protectionSpace->protectionSpace().nsSpace()]; 823 } 824 825 void NavigationState::NavigationClient::didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy* authenticationChallenge) 825 #pragma clang diagnostic pop 826 } 827 828 void NavigationState::NavigationClient::didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy& authenticationChallenge) 826 829 { 827 830 if (m_navigationState.m_navigationDelegateMethods.webViewDidReceiveAuthenticationChallengeCompletionHandler) { 828 831 auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); 829 832 if (!navigationDelegate) { 830 authenticationChallenge ->listener()->performDefaultHandling();833 authenticationChallenge.listener()->performDefaultHandling(); 831 834 return; 832 835 } 833 836 834 RefPtr<AuthenticationChallengeProxy> challenge = authenticationChallenge; 835 RefPtr<CompletionHandlerCallChecker> checker = CompletionHandlerCallChecker::create(navigationDelegate.get(), @selector(webView:didReceiveAuthenticationChallenge:completionHandler:)); 836 [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) webView:m_navigationState.m_webView didReceiveAuthenticationChallenge:wrapper(*authenticationChallenge) 837 completionHandler:[challenge, checker](NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential) { 838 if (checker->completionHandlerHasBeenCalled()) 839 return; 840 checker->didCallCompletionHandler(); 841 842 switch (disposition) { 843 case NSURLSessionAuthChallengeUseCredential: { 844 RefPtr<WebCredential> webCredential; 845 if (credential) 846 webCredential = WebCredential::create(WebCore::Credential(credential)); 847 848 challenge->listener()->useCredential(webCredential.get()); 849 break; 850 } 851 852 case NSURLSessionAuthChallengePerformDefaultHandling: 853 challenge->listener()->performDefaultHandling(); 854 break; 855 856 case NSURLSessionAuthChallengeCancelAuthenticationChallenge: 857 challenge->listener()->cancel(); 858 break; 859 860 case NSURLSessionAuthChallengeRejectProtectionSpace: 861 challenge->listener()->rejectProtectionSpaceAndContinue(); 862 break; 863 864 default: 865 [NSException raise:NSInvalidArgumentException format:@"Invalid NSURLSessionAuthChallengeDisposition (%ld)", (long)disposition]; 866 } 837 auto checker = CompletionHandlerCallChecker::create(navigationDelegate.get(), @selector(webView:didReceiveAuthenticationChallenge:completionHandler:)); 838 [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) webView:m_navigationState.m_webView didReceiveAuthenticationChallenge:wrapper(authenticationChallenge) completionHandler:BlockPtr<void(NSURLSessionAuthChallengeDisposition, NSURLCredential *)>::fromCallable([challenge = makeRef(authenticationChallenge), checker = WTFMove(checker)](NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential) { 839 if (checker->completionHandlerHasBeenCalled()) 840 return; 841 checker->didCallCompletionHandler(); 842 843 switch (disposition) { 844 case NSURLSessionAuthChallengeUseCredential: { 845 RefPtr<WebCredential> webCredential; 846 if (credential) 847 webCredential = WebCredential::create(WebCore::Credential(credential)); 848 849 challenge->listener()->useCredential(webCredential.get()); 850 break; 867 851 } 868 ]; 852 853 case NSURLSessionAuthChallengePerformDefaultHandling: 854 challenge->listener()->performDefaultHandling(); 855 break; 856 857 case NSURLSessionAuthChallengeCancelAuthenticationChallenge: 858 challenge->listener()->cancel(); 859 break; 860 861 case NSURLSessionAuthChallengeRejectProtectionSpace: 862 challenge->listener()->rejectProtectionSpaceAndContinue(); 863 break; 864 865 default: 866 [NSException raise:NSInvalidArgumentException format:@"Invalid NSURLSessionAuthChallengeDisposition (%ld)", (long)disposition]; 867 } 868 }).get()]; 869 869 return; 870 870 } … … 877 877 return; 878 878 879 [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) _webView:m_navigationState.m_webView didReceiveAuthenticationChallenge:wrapper(*authenticationChallenge)]; 879 #pragma clang diagnostic push 880 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 881 [static_cast<id <WKNavigationDelegatePrivate>>(navigationDelegate.get()) _webView:m_navigationState.m_webView didReceiveAuthenticationChallenge:wrapper(authenticationChallenge)]; 882 #pragma clang diagnostic pop 880 883 } 881 884 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r223436 r223737 5825 5825 5826 5826 if (m_navigationClient) 5827 m_navigationClient->didReceiveAuthenticationChallenge(*this, authenticationChallenge. ptr());5827 m_navigationClient->didReceiveAuthenticationChallenge(*this, authenticationChallenge.get()); 5828 5828 else 5829 m_loaderClient->didReceiveAuthenticationChallengeInFrame(*this, *frame, authenticationChallenge. ptr());5829 m_loaderClient->didReceiveAuthenticationChallengeInFrame(*this, *frame, authenticationChallenge.get()); 5830 5830 } 5831 5831
Note: See TracChangeset
for help on using the changeset viewer.