Changeset 236344 in webkit
- Timestamp:
- Sep 21, 2018 12:25:21 PM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 1 added
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r236343 r236344 1 2018-09-21 Alex Christensen <achristensen@webkit.org> 2 3 Simply authentication code even more! 4 https://bugs.webkit.org/show_bug.cgi?id=189719 5 6 Reviewed by Andy Estes. 7 8 Just when you thought it couldn't get simpler and more elegant, it can! 9 10 * NetworkProcess/Downloads/Download.cpp: 11 * NetworkProcess/NetworkCORSPreflightChecker.cpp: 12 * NetworkProcess/NetworkLoad.cpp: 13 * NetworkProcess/PingLoad.cpp: 14 * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: 15 * NetworkProcess/cocoa/NetworkSessionCocoa.mm: 16 * Shared/Authentication/AuthenticationChallengeDisposition.h: Added. 17 * Shared/Authentication/AuthenticationManager.cpp: 18 (WebKit::AuthenticationManager::completeAuthenticationChallenge): 19 (WebKit::AuthenticationManager::useCredentialForChallenge): Deleted. 20 (WebKit::AuthenticationManager::useCredentialForSingleChallenge): Deleted. 21 (WebKit::AuthenticationManager::continueWithoutCredentialForChallenge): Deleted. 22 (WebKit::AuthenticationManager::continueWithoutCredentialForSingleChallenge): Deleted. 23 (WebKit::AuthenticationManager::cancelChallenge): Deleted. 24 (WebKit::AuthenticationManager::cancelSingleChallenge): Deleted. 25 (WebKit::AuthenticationManager::performDefaultHandling): Deleted. 26 (WebKit::AuthenticationManager::performDefaultHandlingForSingleChallenge): Deleted. 27 (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinue): Deleted. 28 (WebKit::AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge): Deleted. 29 * Shared/Authentication/AuthenticationManager.h: 30 * Shared/Authentication/AuthenticationManager.messages.in: 31 * Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm: 32 (WebKit::AuthenticationManager::initializeConnection): 33 * UIProcess/API/C/WKAuthenticationDecisionListener.cpp: 34 (WKAuthenticationDecisionListenerUseCredential): 35 * UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm: 36 (-[WKNSURLAuthenticationChallengeSender continueWithoutCredentialForAuthenticationChallenge:]): 37 * UIProcess/API/glib/WebKitAuthenticationRequest.cpp: 38 (webkit_authentication_request_authenticate): 39 * UIProcess/Authentication/AuthenticationChallengeProxy.cpp: 40 (WebKit::AuthenticationChallengeProxy::AuthenticationChallengeProxy): 41 * UIProcess/Authentication/AuthenticationDecisionListener.cpp: 42 (WebKit::AuthenticationDecisionListener::AuthenticationDecisionListener): 43 (WebKit::AuthenticationDecisionListener::~AuthenticationDecisionListener): 44 (WebKit::AuthenticationDecisionListener::useCredential): 45 (WebKit::AuthenticationDecisionListener::cancel): 46 (WebKit::AuthenticationDecisionListener::performDefaultHandling): 47 (WebKit::AuthenticationDecisionListener::rejectProtectionSpaceAndContinue): 48 * UIProcess/Authentication/AuthenticationDecisionListener.h: 49 (WebKit::AuthenticationDecisionListener::create): 50 * UIProcess/Cocoa/DownloadClient.mm: 51 (WebKit::DownloadClient::didReceiveAuthenticationChallenge): 52 * UIProcess/Cocoa/NavigationState.mm: 53 (WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge): 54 * WebKit.xcodeproj/project.pbxproj: 55 1 56 2018-09-21 Chris Dumez <cdumez@apple.com> 2 57 -
trunk/Source/WebKit/NetworkProcess/Downloads/Download.cpp
r235101 r236344 27 27 #include "Download.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "Connection.h" -
trunk/Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp
r235511 r236344 27 27 #include "NetworkCORSPreflightChecker.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "Logging.h" -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp
r235511 r236344 27 27 #include "NetworkLoad.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "DownloadProxyMessages.h" -
trunk/Source/WebKit/NetworkProcess/PingLoad.cpp
r235511 r236344 27 27 #include "PingLoad.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "Logging.h" -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
r235935 r236344 27 27 #import "NetworkDataTaskCocoa.h" 28 28 29 #import "AuthenticationChallengeDisposition.h" 29 30 #import "AuthenticationManager.h" 30 31 #import "Download.h" -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm
r236153 r236344 27 27 #import "NetworkSessionCocoa.h" 28 28 29 #import "AuthenticationChallengeDisposition.h" 29 30 #import "AuthenticationManager.h" 30 31 #import "DataReference.h" -
trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp
r236156 r236344 27 27 #include "NetworkDataTaskCurl.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "NetworkSessionCurl.h" -
trunk/Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
r234896 r236344 27 27 #include "NetworkDataTaskSoup.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationManager.h" 30 31 #include "DataReference.h" -
trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.cpp
r236153 r236344 135 135 } 136 136 137 void AuthenticationManager:: useCredentialForChallenge(uint64_t challengeID, const Credential& credential)137 void AuthenticationManager::completeAuthenticationChallenge(uint64_t challengeID, AuthenticationChallengeDisposition disposition, WebCore::Credential&& credential) 138 138 { 139 139 ASSERT(RunLoop::isMain()); 140 140 141 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) 142 useCredentialForSingleChallenge(coalescedChallengeID, credential); 143 } 144 145 void AuthenticationManager::useCredentialForSingleChallenge(uint64_t challengeID, const Credential& credential) 146 { 147 auto challenge = m_challenges.take(challengeID); 148 ASSERT(!challenge.challenge.isNull()); 149 150 auto completionHandler = WTFMove(challenge.completionHandler); 151 152 if (completionHandler) 153 completionHandler(AuthenticationChallengeDisposition::UseCredential, credential); 154 else 155 ASSERT_NOT_REACHED(); 156 } 157 158 void AuthenticationManager::continueWithoutCredentialForChallenge(uint64_t challengeID) 159 { 160 ASSERT(RunLoop::isMain()); 161 162 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) 163 continueWithoutCredentialForSingleChallenge(coalescedChallengeID); 164 } 165 166 void AuthenticationManager::continueWithoutCredentialForSingleChallenge(uint64_t challengeID) 167 { 168 auto challenge = m_challenges.take(challengeID); 169 ASSERT(!challenge.challenge.isNull()); 170 171 if (challenge.completionHandler) 172 challenge.completionHandler(AuthenticationChallengeDisposition::UseCredential, Credential()); 173 else 174 ASSERT_NOT_REACHED(); 175 } 176 177 void AuthenticationManager::cancelChallenge(uint64_t challengeID) 178 { 179 ASSERT(RunLoop::isMain()); 180 181 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) 182 cancelSingleChallenge(coalescedChallengeID); 183 } 184 185 void AuthenticationManager::cancelSingleChallenge(uint64_t challengeID) 186 { 187 auto challenge = m_challenges.take(challengeID); 188 ASSERT(!challenge.challenge.isNull()); 189 190 if (challenge.completionHandler) 191 challenge.completionHandler(AuthenticationChallengeDisposition::Cancel, Credential()); 192 else 193 ASSERT_NOT_REACHED(); 194 } 195 196 void AuthenticationManager::performDefaultHandling(uint64_t challengeID) 197 { 198 ASSERT(RunLoop::isMain()); 199 200 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) 201 performDefaultHandlingForSingleChallenge(coalescedChallengeID); 202 } 203 204 void AuthenticationManager::performDefaultHandlingForSingleChallenge(uint64_t challengeID) 205 { 206 auto challenge = m_challenges.take(challengeID); 207 ASSERT(!challenge.challenge.isNull()); 208 209 if (challenge.completionHandler) 210 challenge.completionHandler(AuthenticationChallengeDisposition::PerformDefaultHandling, Credential()); 211 else 212 ASSERT_NOT_REACHED(); 213 } 214 215 void AuthenticationManager::rejectProtectionSpaceAndContinue(uint64_t challengeID) 216 { 217 ASSERT(RunLoop::isMain()); 218 219 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) 220 rejectProtectionSpaceAndContinueForSingleChallenge(coalescedChallengeID); 221 } 222 223 void AuthenticationManager::rejectProtectionSpaceAndContinueForSingleChallenge(uint64_t challengeID) 224 { 225 auto challenge = m_challenges.take(challengeID); 226 ASSERT(!challenge.challenge.isNull()); 227 228 if (challenge.completionHandler) 229 challenge.completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue, { }); 230 else 231 ASSERT_NOT_REACHED(); 141 for (auto& coalescedChallengeID : coalesceChallengesMatching(challengeID)) { 142 auto challenge = m_challenges.take(coalescedChallengeID); 143 ASSERT(!challenge.challenge.isNull()); 144 challenge.completionHandler(disposition, credential); 145 } 232 146 } 233 147 -
trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.h
r236153 r236344 52 52 class WebFrame; 53 53 54 enum class AuthenticationChallengeDisposition { 55 UseCredential, 56 PerformDefaultHandling, 57 Cancel, 58 RejectProtectionSpaceAndContinue 59 }; 54 enum class AuthenticationChallengeDisposition; 60 55 using ChallengeCompletionHandler = CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>; 61 56 … … 70 65 void didReceiveAuthenticationChallenge(IPC::MessageSender& download, const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler&&); 71 66 72 void useCredentialForChallenge(uint64_t challengeID, const WebCore::Credential&); 73 void continueWithoutCredentialForChallenge(uint64_t challengeID); 74 void cancelChallenge(uint64_t challengeID); 75 void performDefaultHandling(uint64_t challengeID); 76 void rejectProtectionSpaceAndContinue(uint64_t challengeID); 67 void completeAuthenticationChallenge(uint64_t challengeID, AuthenticationChallengeDisposition, WebCore::Credential&&); 77 68 78 69 uint64_t outstandingAuthenticationChallengeCount() const { return m_challenges.size(); } … … 96 87 bool shouldCoalesceChallenge(uint64_t pageID, uint64_t challengeID, const WebCore::AuthenticationChallenge&) const; 97 88 98 void useCredentialForSingleChallenge(uint64_t challengeID, const WebCore::Credential&);99 void continueWithoutCredentialForSingleChallenge(uint64_t challengeID);100 void cancelSingleChallenge(uint64_t challengeID);101 void performDefaultHandlingForSingleChallenge(uint64_t challengeID);102 void rejectProtectionSpaceAndContinueForSingleChallenge(uint64_t challengeID);103 104 89 Vector<uint64_t> coalesceChallengesMatching(uint64_t challengeID) const; 105 90 -
trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.messages.in
r231916 r236344 22 22 23 23 messages -> AuthenticationManager { 24 void UseCredentialForChallenge(uint64_t challengeID, WebCore::Credential credential); 25 void ContinueWithoutCredentialForChallenge(uint64_t challengeID); 26 void CancelChallenge(uint64_t challengeID); 27 void PerformDefaultHandling(uint64_t challengeID); 28 void RejectProtectionSpaceAndContinue(uint64_t challengeID); 24 void CompleteAuthenticationChallenge(uint64_t challengeID, enum WebKit::AuthenticationChallengeDisposition disposition, WebCore::Credential credential); 29 25 } -
trunk/Source/WebKit/Shared/Authentication/cocoa/AuthenticationManagerCocoa.mm
r233340 r236344 29 29 #if HAVE(SEC_KEY_PROXY) 30 30 31 #import "AuthenticationChallengeDisposition.h" 31 32 #import "ClientCertificateAuthenticationXPCConstants.h" 32 33 #import "Connection.h" … … 97 98 return; 98 99 99 weakThis-> useCredentialForChallenge(challengeID, WebCore::Credential(adoptNS([[NSURLCredential alloc] initWithIdentity:identity.get() certificates:certificates persistence:(NSURLCredentialPersistence)persistence]).get()));100 weakThis->completeAuthenticationChallenge(challengeID, AuthenticationChallengeDisposition::UseCredential, WebCore::Credential(adoptNS([[NSURLCredential alloc] initWithIdentity:identity.get() certificates:certificates persistence:(NSURLCredentialPersistence)persistence]).get())); 100 101 }); 101 102 } -
trunk/Source/WebKit/UIProcess/API/APINavigationClient.h
r236232 r236344 28 28 #include "APIData.h" 29 29 #include "APIString.h" 30 #include "AuthenticationChallengeDisposition.h" 30 31 #include "AuthenticationChallengeProxy.h" 31 32 #include "AuthenticationDecisionListener.h" … … 88 89 virtual void renderingProgressDidChange(WebKit::WebPageProxy&, WebCore::LayoutMilestones) { } 89 90 90 virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy& challenge) { challenge.listener(). performDefaultHandling(); }91 virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy& challenge) { challenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); } 91 92 92 93 // FIXME: These function should not be part of this client. -
trunk/Source/WebKit/UIProcess/API/C/WKAuthenticationDecisionListener.cpp
r236153 r236344 27 27 #include "WKAuthenticationDecisionListener.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationDecisionListener.h" 30 31 #include "WKAPICast.h" … … 40 41 void WKAuthenticationDecisionListenerUseCredential(WKAuthenticationDecisionListenerRef authenticationListener, WKCredentialRef credential) 41 42 { 42 if (credential) 43 toImpl(authenticationListener)->useCredential(toImpl(credential)->credential()); 44 else 45 toImpl(authenticationListener)->useCredential(std::nullopt); 43 toImpl(authenticationListener)->completeChallenge(AuthenticationChallengeDisposition::UseCredential, credential ? toImpl(credential)->credential() : WebCore::Credential()); 46 44 } 47 45 48 46 void WKAuthenticationDecisionListenerCancel(WKAuthenticationDecisionListenerRef authenticationListener) 49 47 { 50 toImpl(authenticationListener)->c ancel();48 toImpl(authenticationListener)->completeChallenge(AuthenticationChallengeDisposition::Cancel); 51 49 } 52 50 53 51 void WKAuthenticationDecisionListenerRejectProtectionSpaceAndContinue(WKAuthenticationDecisionListenerRef authenticationListener) 54 52 { 55 toImpl(authenticationListener)-> rejectProtectionSpaceAndContinue();53 toImpl(authenticationListener)->completeChallenge(AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue); 56 54 } -
trunk/Source/WebKit/UIProcess/API/C/WKPage.cpp
r236154 r236344 50 50 #include "APIWebsitePolicies.h" 51 51 #include "APIWindowFeatures.h" 52 #include "AuthenticationChallengeDisposition.h" 52 53 #include "AuthenticationChallengeProxy.h" 53 54 #include "AuthenticationDecisionListener.h" … … 2150 2151 { 2151 2152 if (m_client.canAuthenticateAgainstProtectionSpace && !m_client.canAuthenticateAgainstProtectionSpace(toAPI(&page), toAPI(WebProtectionSpace::create(authenticationChallenge.core().protectionSpace()).ptr()), m_client.base.clientInfo)) 2152 return authenticationChallenge.listener(). rejectProtectionSpaceAndContinue();2153 return authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue); 2153 2154 if (!m_client.didReceiveAuthenticationChallenge) 2154 return authenticationChallenge.listener(). performDefaultHandling();2155 return authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); 2155 2156 m_client.didReceiveAuthenticationChallenge(toAPI(&page), toAPI(&authenticationChallenge), m_client.base.clientInfo); 2156 2157 } -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKNSURLAuthenticationChallenge.mm
r236153 r236344 29 29 #if WK_API_ENABLED 30 30 31 #import "AuthenticationChallengeDisposition.h" 31 32 #import "AuthenticationDecisionListener.h" 32 33 #import "WebCertificateInfo.h" … … 71 72 checkChallenge(challenge); 72 73 WebKit::AuthenticationChallengeProxy& webChallenge = ((WKNSURLAuthenticationChallenge *)challenge)._web_authenticationChallengeProxy; 73 webChallenge.listener().c ancel();74 webChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::Cancel); 74 75 } 75 76 … … 78 79 checkChallenge(challenge); 79 80 WebKit::AuthenticationChallengeProxy& webChallenge = ((WKNSURLAuthenticationChallenge *)challenge)._web_authenticationChallengeProxy; 80 webChallenge.listener(). useCredential(std::nullopt);81 webChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::UseCredential); 81 82 } 82 83 … … 85 86 checkChallenge(challenge); 86 87 WebKit::AuthenticationChallengeProxy& webChallenge = ((WKNSURLAuthenticationChallenge *)challenge)._web_authenticationChallengeProxy; 87 webChallenge.listener(). useCredential(WebCore::Credential(credential));88 webChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::UseCredential, WebCore::Credential(credential)); 88 89 } 89 90 … … 92 93 checkChallenge(challenge); 93 94 WebKit::AuthenticationChallengeProxy& webChallenge = ((WKNSURLAuthenticationChallenge *)challenge)._web_authenticationChallengeProxy; 94 webChallenge.listener(). performDefaultHandling();95 webChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); 95 96 } 96 97 … … 99 100 checkChallenge(challenge); 100 101 WebKit::AuthenticationChallengeProxy& webChallenge = ((WKNSURLAuthenticationChallenge *)challenge)._web_authenticationChallengeProxy; 101 webChallenge.listener(). rejectProtectionSpaceAndContinue();102 webChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue); 102 103 } 103 104 -
trunk/Source/WebKit/UIProcess/API/glib/WebKitAuthenticationRequest.cpp
r236153 r236344 21 21 #include "WebKitAuthenticationRequest.h" 22 22 23 #include "AuthenticationChallengeDisposition.h" 23 24 #include "AuthenticationDecisionListener.h" 24 25 #include "WebCredential.h" … … 316 317 g_return_if_fail(WEBKIT_IS_AUTHENTICATION_REQUEST(request)); 317 318 318 if (credential) 319 request->priv->authenticationChallenge->listener().useCredential(webkitCredentialGetCredential(credential)); 320 else 321 request->priv->authenticationChallenge->listener().useCredential(std::nullopt); 319 request->priv->authenticationChallenge->listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::UseCredential, credential ? webkitCredentialGetCredential(credential) : WebCore::Credential()); 322 320 323 321 request->priv->handledRequest = true; … … 337 335 g_return_if_fail(WEBKIT_IS_AUTHENTICATION_REQUEST(request)); 338 336 339 request->priv->authenticationChallenge->listener().c ancel();337 request->priv->authenticationChallenge->listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::Cancel); 340 338 341 339 g_signal_emit(request, signals[CANCELLED], 0); -
trunk/Source/WebKit/UIProcess/Authentication/AuthenticationChallengeProxy.cpp
r236153 r236344 45 45 AuthenticationChallengeProxy::AuthenticationChallengeProxy(WebCore::AuthenticationChallenge&& authenticationChallenge, uint64_t challengeID, Ref<IPC::Connection>&& connection, WeakPtr<SecKeyProxyStore>&& secKeyProxyStore) 46 46 : m_coreAuthenticationChallenge(WTFMove(authenticationChallenge)) 47 , m_listener(AuthenticationDecisionListener::create([challengeID, connection = WTFMove(connection), secKeyProxyStore = WTFMove(secKeyProxyStore)](AuthenticationChallengeDisposition disposition, std::optional<WebCore::Credential>&& credential) { 48 switch (disposition) { 49 case AuthenticationChallengeDisposition::Cancel: 50 connection->send(Messages::AuthenticationManager::CancelChallenge(challengeID), 0); 51 break; 52 case AuthenticationChallengeDisposition::PerformDefaultHandling: 53 connection->send(Messages::AuthenticationManager::PerformDefaultHandling(challengeID), 0); 54 break; 55 case AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue: 56 connection->send(Messages::AuthenticationManager::RejectProtectionSpaceAndContinue(challengeID), 0); 57 break; 58 case AuthenticationChallengeDisposition::UseCredential: 59 if (!credential) { 60 connection->send(Messages::AuthenticationManager::ContinueWithoutCredentialForChallenge(challengeID), 0); 61 break; 62 } 63 47 , m_listener(AuthenticationDecisionListener::create([challengeID, connection = WTFMove(connection), secKeyProxyStore = WTFMove(secKeyProxyStore)](AuthenticationChallengeDisposition disposition, const WebCore::Credential& credential) { 64 48 #if HAVE(SEC_KEY_PROXY) 65 66 secKeyProxyStore->initialize(*credential);67 sendClientCertificateCredentialOverXpc(connection, *secKeyProxyStore, challengeID, *credential);68 break;69 49 if (secKeyProxyStore) { 50 secKeyProxyStore->initialize(credential); 51 sendClientCertificateCredentialOverXpc(connection, *secKeyProxyStore, challengeID, credential); 52 return; 53 } 70 54 #endif 71 72 connection->send(Messages::AuthenticationManager::UseCredentialForChallenge(challengeID, *credential), 0); 73 } 55 connection->send(Messages::AuthenticationManager::CompleteAuthenticationChallenge(challengeID, disposition, credential), 0); 74 56 })) 75 57 { -
trunk/Source/WebKit/UIProcess/Authentication/AuthenticationDecisionListener.cpp
r236153 r236344 27 27 #include "AuthenticationDecisionListener.h" 28 28 29 #include "AuthenticationChallengeDisposition.h" 29 30 #include "AuthenticationChallengeProxy.h" 30 31 #include "AuthenticationManager.h" … … 37 38 namespace WebKit { 38 39 39 AuthenticationDecisionListener::AuthenticationDecisionListener(CompletionHandler<void(AuthenticationChallengeDisposition, std::optional<WebCore::Credential>&&)>&& completionHandler)40 AuthenticationDecisionListener::AuthenticationDecisionListener(CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>&& completionHandler) 40 41 : m_completionHandler(WTFMove(completionHandler)) 41 42 { … … 45 46 { 46 47 if (m_completionHandler) 47 m_completionHandler(AuthenticationChallengeDisposition::Cancel, std::nullopt);48 m_completionHandler(AuthenticationChallengeDisposition::Cancel, { }); 48 49 } 49 50 50 void AuthenticationDecisionListener:: useCredential(std::optional<WebCore::Credential>&& credential)51 void AuthenticationDecisionListener::completeChallenge(AuthenticationChallengeDisposition disposition, const WebCore::Credential& credential) 51 52 { 52 53 if (m_completionHandler) 53 m_completionHandler( AuthenticationChallengeDisposition::UseCredential, WTFMove(credential));54 m_completionHandler(disposition, credential); 54 55 } 55 56 56 void AuthenticationDecisionListener::cancel()57 {58 if (m_completionHandler)59 m_completionHandler(AuthenticationChallengeDisposition::Cancel, std::nullopt);60 }61 62 void AuthenticationDecisionListener::performDefaultHandling()63 {64 if (m_completionHandler)65 m_completionHandler(AuthenticationChallengeDisposition::PerformDefaultHandling, std::nullopt);66 }67 68 void AuthenticationDecisionListener::rejectProtectionSpaceAndContinue()69 {70 if (m_completionHandler)71 m_completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue, std::nullopt);72 }73 74 57 } // namespace WebKit -
trunk/Source/WebKit/UIProcess/Authentication/AuthenticationDecisionListener.h
r236153 r236344 38 38 class AuthenticationDecisionListener : public API::ObjectImpl<API::Object::Type::AuthenticationDecisionListener> { 39 39 public: 40 static Ref<AuthenticationDecisionListener> create(CompletionHandler<void(AuthenticationChallengeDisposition, std::optional<WebCore::Credential>&&)>&& completionHandler)40 static Ref<AuthenticationDecisionListener> create(CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>&& completionHandler) 41 41 { 42 42 return adoptRef(*new AuthenticationDecisionListener(WTFMove(completionHandler))); … … 44 44 ~AuthenticationDecisionListener(); 45 45 46 void useCredential(std::optional<WebCore::Credential>&&); 47 void cancel(); 48 void performDefaultHandling(); 49 void rejectProtectionSpaceAndContinue(); 46 void completeChallenge(AuthenticationChallengeDisposition, const WebCore::Credential& = { }); 50 47 51 48 private: 52 explicit AuthenticationDecisionListener(CompletionHandler<void(AuthenticationChallengeDisposition, std::optional<WebCore::Credential>&&)>&&);49 explicit AuthenticationDecisionListener(CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>&&); 53 50 54 CompletionHandler<void(AuthenticationChallengeDisposition, std::optional<WebCore::Credential>&&)> m_completionHandler;51 CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)> m_completionHandler; 55 52 }; 56 53 -
trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm
r236153 r236344 29 29 #if WK_API_ENABLED 30 30 31 #import "AuthenticationChallengeDisposition.h" 31 32 #import "AuthenticationChallengeProxy.h" 32 33 #import "AuthenticationDecisionListener.h" … … 123 124 // FIXME: System Preview needs code here. 124 125 if (!m_delegateMethods.downloadDidReceiveAuthenticationChallengeCompletionHandler) { 125 authenticationChallenge.listener(). performDefaultHandling();126 authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); 126 127 return; 127 128 } … … 133 134 switch (disposition) { 134 135 case NSURLSessionAuthChallengeUseCredential: 135 if (credential) 136 authenticationChallenge->listener().useCredential(WebCore::Credential(credential)); 137 else 138 authenticationChallenge->listener().useCredential(std::nullopt); 136 authenticationChallenge->listener().completeChallenge(AuthenticationChallengeDisposition::UseCredential, credential ? WebCore::Credential(credential) : WebCore::Credential()); 139 137 break; 140 138 case NSURLSessionAuthChallengePerformDefaultHandling: 141 authenticationChallenge->listener(). performDefaultHandling();139 authenticationChallenge->listener().completeChallenge(AuthenticationChallengeDisposition::PerformDefaultHandling); 142 140 break; 143 141 144 142 case NSURLSessionAuthChallengeCancelAuthenticationChallenge: 145 authenticationChallenge->listener().c ancel();143 authenticationChallenge->listener().completeChallenge(AuthenticationChallengeDisposition::Cancel); 146 144 break; 147 145 148 146 case NSURLSessionAuthChallengeRejectProtectionSpace: 149 authenticationChallenge->listener(). rejectProtectionSpaceAndContinue();147 authenticationChallenge->listener().completeChallenge(AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue); 150 148 break; 151 149 -
trunk/Source/WebKit/UIProcess/Cocoa/NavigationState.mm
r236154 r236344 35 35 #import "APIURL.h" 36 36 #import "APIWebsiteDataStore.h" 37 #import "AuthenticationChallengeDisposition.h" 37 38 #import "AuthenticationDecisionListener.h" 38 39 #import "CompletionHandlerCallChecker.h" … … 850 851 } 851 852 853 static AuthenticationChallengeDisposition toAuthenticationChallengeDisposition(NSURLSessionAuthChallengeDisposition disposition) 854 { 855 switch (disposition) { 856 case NSURLSessionAuthChallengeUseCredential: 857 return AuthenticationChallengeDisposition::UseCredential; 858 case NSURLSessionAuthChallengePerformDefaultHandling: 859 return AuthenticationChallengeDisposition::PerformDefaultHandling; 860 case NSURLSessionAuthChallengeCancelAuthenticationChallenge: 861 return AuthenticationChallengeDisposition::Cancel; 862 case NSURLSessionAuthChallengeRejectProtectionSpace: 863 return AuthenticationChallengeDisposition::RejectProtectionSpaceAndContinue; 864 } 865 [NSException raise:NSInvalidArgumentException format:@"Invalid NSURLSessionAuthChallengeDisposition (%ld)", (long)disposition]; 866 } 867 852 868 void NavigationState::NavigationClient::didReceiveAuthenticationChallenge(WebPageProxy&, AuthenticationChallengeProxy& authenticationChallenge) 853 869 { 854 870 if (!m_navigationState.m_navigationDelegateMethods.webViewDidReceiveAuthenticationChallengeCompletionHandler) 855 return authenticationChallenge.listener(). performDefaultHandling();856 857 auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); 858 if (!navigationDelegate) 859 return authenticationChallenge.listener(). performDefaultHandling();871 return authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); 872 873 auto navigationDelegate = m_navigationState.m_navigationDelegate.get(); 874 if (!navigationDelegate) 875 return authenticationChallenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); 860 876 861 877 auto checker = CompletionHandlerCallChecker::create(navigationDelegate.get(), @selector(webView:didReceiveAuthenticationChallenge:completionHandler:)); … … 864 880 return; 865 881 checker->didCallCompletionHandler(); 866 867 switch (disposition) { 868 case NSURLSessionAuthChallengeUseCredential: 869 if (credential) 870 challenge->listener().useCredential(Credential(credential)); 871 else 872 challenge->listener().useCredential(std::nullopt); 873 break; 874 case NSURLSessionAuthChallengePerformDefaultHandling: 875 challenge->listener().performDefaultHandling(); 876 break; 877 878 case NSURLSessionAuthChallengeCancelAuthenticationChallenge: 879 challenge->listener().cancel(); 880 break; 881 882 case NSURLSessionAuthChallengeRejectProtectionSpace: 883 challenge->listener().rejectProtectionSpaceAndContinue(); 884 break; 885 886 default: 887 [NSException raise:NSInvalidArgumentException format:@"Invalid NSURLSessionAuthChallengeDisposition (%ld)", (long)disposition]; 888 } 882 challenge->listener().completeChallenge(toAuthenticationChallengeDisposition(disposition), Credential(credential)); 889 883 }).get()]; 890 884 } -
trunk/Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp
r236153 r236344 29 29 #if ENABLE(SERVICE_WORKER) 30 30 31 #include "AuthenticationChallengeDisposition.h" 31 32 #include "AuthenticationChallengeProxy.h" 32 33 #include "AuthenticationDecisionListener.h" … … 99 100 if (protectionSpace.authenticationScheme() == WebCore::ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested && processPool().allowsAnySSLCertificateForServiceWorker()) { 100 101 auto credential = WebCore::Credential("accept server trust"_s, emptyString(), WebCore::CredentialPersistenceNone); 101 challenge->listener(). useCredential(credential);102 challenge->listener().completeChallenge(AuthenticationChallengeDisposition::UseCredential, credential); 102 103 return; 103 104 } 104 105 notImplemented(); 105 challenge->listener(). performDefaultHandling();106 challenge->listener().completeChallenge(AuthenticationChallengeDisposition::PerformDefaultHandling); 106 107 } 107 108 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r236152 r236344 3444 3444 5CA98549210BEB5A0057EB6B /* SafeBrowsingResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SafeBrowsingResult.h; sourceTree = "<group>"; }; 3445 3445 5CA9854B210BEB730057EB6B /* SafeBrowsingResultCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SafeBrowsingResultCocoa.mm; sourceTree = "<group>"; }; 3446 5CADDE0D2151AA010067D309 /* AuthenticationChallengeDisposition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AuthenticationChallengeDisposition.h; path = Authentication/AuthenticationChallengeDisposition.h; sourceTree = "<group>"; }; 3446 3447 5CAFDE422130843500B1F7E1 /* _WKInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKInspector.h; sourceTree = "<group>"; }; 3447 3448 5CAFDE432130843600B1F7E1 /* _WKInspector.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKInspector.mm; sourceTree = "<group>"; }; … … 6596 6597 children = ( 6597 6598 57B4B45C20B5048B00D4AD79 /* cocoa */, 6599 5CADDE0D2151AA010067D309 /* AuthenticationChallengeDisposition.h */, 6598 6600 518E8EF316B2091C00E91429 /* AuthenticationManager.cpp */, 6599 6601 518E8EF416B2091C00E91429 /* AuthenticationManager.h */,
Note: See TracChangeset
for help on using the changeset viewer.