Index: chrome/browser/ui/login/login_prompt.cc |
diff --git a/chrome/browser/ui/login/login_prompt.cc b/chrome/browser/ui/login/login_prompt.cc |
index 380f7b559a9229350334e4c99bc899b83591010f..7cf93c546d9572d65ab95a09ec54ee85e1ca812f 100644 |
--- a/chrome/browser/ui/login/login_prompt.cc |
+++ b/chrome/browser/ui/login/login_prompt.cc |
@@ -350,7 +350,14 @@ void LoginHandler::SetAuthDeferred(const std::wstring& username, |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (request_) { |
- request_->SetAuth(WideToUTF16Hack(username), WideToUTF16Hack(password)); |
+ if (auth_info->over_protocol == AUTH_OVER_TLS) { |
+ DCHECK_EQ(ASCIIToWide(net::kTLSSRPScheme), auth_info_->scheme); |
+ request_->SetTLSLogin(WideToUTF16Hack(username), |
+ WideToUTF16Hack(password)); |
+ request_->ContinueWithTLSLogin(); |
+ } else { |
+ request_->SetAuth(WideToUTF16Hack(username), WideToUTF16Hack(password)); |
+ } |
ResetLoginHandlerForRequest(request_); |
} |
} |
@@ -360,8 +367,14 @@ void LoginHandler::CancelAuthDeferred() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (request_) { |
- request_->CancelAuth(); |
- // Verify that CancelAuth doesn't destroy the request via our delegate. |
+ if (auth_info->over_protocol == AUTH_OVER_TLS) { |
+ DCHECK_EQ(ASCIIToWide(net::kTLSSRPScheme), auth_info_->scheme); |
+ request_->CancelTLSLogin(); |
+ } else { |
+ request_->CancelAuth(); |
+ } |
+ // Verify that CancelAuth/CancelTLSLogin doesn't destroy the request via |
+ // our delegate. |
DCHECK(request_ != NULL); |
ResetLoginHandlerForRequest(request_); |
} |
@@ -435,6 +448,8 @@ class LoginDialogTask : public Task { |
dialog_form.scheme = PasswordForm::SCHEME_BASIC; |
} else if (LowerCaseEqualsASCII(auth_info_->scheme, "digest")) { |
dialog_form.scheme = PasswordForm::SCHEME_DIGEST; |
+ } else if (LowerCaseEqualsASCII(auth_info_->scheme, "tls-srp")) { |
+ dialog_form.scheme = PasswordForm::SCHEME_TLS_SRP; |
} else { |
dialog_form.scheme = PasswordForm::SCHEME_OTHER; |
} |
@@ -442,10 +457,12 @@ class LoginDialogTask : public Task { |
if (auth_info_->is_proxy) { |
std::string origin = host_and_port; |
// We don't expect this to already start with http:// or https://. |
- DCHECK(origin.find("http://") != 0 && origin.find("https://") != 0); |
+ DCHECK(origin.find("http://") != 0 && origin.find("https://") != 0 && |
+ origin.find("httpsv://") != 0); |
origin = std::string("http://") + origin; |
dialog_form.origin = GURL(origin); |
} else if (net::GetHostAndPort(request_url_) != host_and_port) { |
+ LOG(INFO) << net::GetHostAndPort(request_url_) << " vs " << host_and_port; |
dialog_form.origin = GURL(); |
NOTREACHED(); // crbug.com/32718 |
} else { |