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 |