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