| 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 {
|
|
|