| Index: chrome/browser/views/ssl_client_certificate_selector_win.cc | 
| diff --git a/chrome/browser/ssl/ssl_client_auth_handler_win.cc b/chrome/browser/views/ssl_client_certificate_selector_win.cc | 
| similarity index 74% | 
| rename from chrome/browser/ssl/ssl_client_auth_handler_win.cc | 
| rename to chrome/browser/views/ssl_client_certificate_selector_win.cc | 
| index cbac1aed902359dc37c4b1ba867c3401c48264a9..cf5ad4f39c3a9ccaea1d6c020b68e9c0ad256643 100644 | 
| --- a/chrome/browser/ssl/ssl_client_auth_handler_win.cc | 
| +++ b/chrome/browser/views/ssl_client_certificate_selector_win.cc | 
| @@ -2,7 +2,7 @@ | 
| // Use of this source code is governed by a BSD-style license that can be | 
| // found in the LICENSE file. | 
|  | 
| -#include "chrome/browser/ssl/ssl_client_auth_handler.h" | 
| +#include "chrome/browser/ssl_client_certificate_selector.h" | 
|  | 
| #include <cryptuiapi.h> | 
| #pragma comment(lib, "cryptui.lib") | 
| @@ -13,10 +13,16 @@ | 
| #include "chrome/browser/browser.h" | 
| #include "chrome/browser/browser_window.h" | 
| #include "chrome/browser/chrome_thread.h" | 
| +#include "chrome/browser/ssl/ssl_client_auth_handler.h" | 
| #include "grit/generated_resources.h" | 
| #include "net/url_request/url_request.h" | 
|  | 
| -void SSLClientAuthHandler::DoSelectCertificate() { | 
| +namespace browser { | 
| + | 
| +void ShowSSLClientCertificateSelector( | 
| +    gfx::NativeWindow parent, | 
| +    net::SSLCertRequestInfo* cert_request_info, | 
| +    SSLClientAuthHandler* delegate) { | 
| net::X509Certificate* cert = NULL; | 
| // TODO(jcampan): replace this with our own cert selection dialog. | 
| // CryptUIDlgSelectCertificateFromStore is blocking (but still processes | 
| @@ -24,24 +30,19 @@ void SSLClientAuthHandler::DoSelectCertificate() { | 
| HCERTSTORE client_certs = CertOpenStore(CERT_STORE_PROV_MEMORY, 0, NULL, | 
| 0, NULL); | 
| BOOL ok; | 
| -  for (size_t i = 0; i < cert_request_info_->client_certs.size(); ++i) { | 
| -    PCCERT_CONTEXT cc = cert_request_info_->client_certs[i]->os_cert_handle(); | 
| +  for (size_t i = 0; i < cert_request_info->client_certs.size(); ++i) { | 
| +    PCCERT_CONTEXT cc = cert_request_info->client_certs[i]->os_cert_handle(); | 
| ok = CertAddCertificateContextToStore(client_certs, cc, | 
| CERT_STORE_ADD_ALWAYS, NULL); | 
| DCHECK(ok); | 
| } | 
|  | 
| -  HWND browser_hwnd = NULL; | 
| -  Browser* browser = BrowserList::GetLastActive(); | 
| -  if (browser) | 
| -    browser_hwnd = browser->window()->GetNativeHandle(); | 
| - | 
| std::wstring title = l10n_util::GetString(IDS_CLIENT_CERT_DIALOG_TITLE); | 
| std::wstring text = l10n_util::GetStringF( | 
| IDS_CLIENT_CERT_DIALOG_TEXT, | 
| -      ASCIIToWide(cert_request_info_->host_and_port)); | 
| +      ASCIIToWide(cert_request_info->host_and_port)); | 
| PCCERT_CONTEXT cert_context = CryptUIDlgSelectCertificateFromStore( | 
| -      client_certs, browser_hwnd, title.c_str(), text.c_str(), 0, 0, NULL); | 
| +      client_certs, parent, title.c_str(), text.c_str(), 0, 0, NULL); | 
|  | 
| if (cert_context) { | 
| cert = net::X509Certificate::CreateFromHandle( | 
| @@ -54,5 +55,7 @@ void SSLClientAuthHandler::DoSelectCertificate() { | 
| ok = CertCloseStore(client_certs, CERT_CLOSE_STORE_CHECK_FLAG); | 
| DCHECK(ok); | 
|  | 
| -  CertificateSelected(cert); | 
| +  delegate->CertificateSelected(cert); | 
| } | 
| + | 
| +}  // namespace browser | 
|  |