Index: chrome/browser/gtk/ssl_client_certificate_selector.cc |
diff --git a/chrome/browser/gtk/ssl_client_certificate_selector.cc b/chrome/browser/gtk/ssl_client_certificate_selector.cc |
index 8e4077e934ec9721d9b2ad2aa58b8c5ffd302c94..09d03877992c734e801c5577ec2f03bf650994f5 100644 |
--- a/chrome/browser/gtk/ssl_client_certificate_selector.cc |
+++ b/chrome/browser/gtk/ssl_client_certificate_selector.cc |
@@ -21,6 +21,7 @@ |
#include "chrome/browser/gtk/owned_widget_gtk.h" |
#include "chrome/browser/ssl/ssl_client_auth_handler.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
+#include "chrome/browser/ui/pk11_password_dialog.h" |
#include "chrome/common/net/x509_certificate_model.h" |
#include "gfx/native_widget_types.h" |
#include "grit/generated_resources.h" |
@@ -60,6 +61,9 @@ class SSLClientCertificateSelector : public ConstrainedDialogDelegate { |
static std::string FormatDetailsText( |
net::X509Certificate::OSCertHandle cert); |
+ // Callback after unlocking certificate slot. |
+ void Unlocked(); |
+ |
CHROMEGTK_CALLBACK_0(SSLClientCertificateSelector, void, OnComboBoxChanged); |
CHROMEGTK_CALLBACK_0(SSLClientCertificateSelector, void, OnViewClicked); |
CHROMEGTK_CALLBACK_0(SSLClientCertificateSelector, void, OnCancelClicked); |
@@ -246,7 +250,7 @@ std::string SSLClientCertificateSelector::FormatDetailsText( |
rv += l10n_util::GetStringFUTF8( |
IDS_CERT_SUBJECTNAME_FORMAT, |
- UTF8ToUTF16(x509_certificate_model::GetSubjectName(cert)));; |
+ UTF8ToUTF16(x509_certificate_model::GetSubjectName(cert))); |
rv += "\n "; |
rv += l10n_util::GetStringFUTF8( |
@@ -303,6 +307,14 @@ std::string SSLClientCertificateSelector::FormatDetailsText( |
return rv; |
} |
+void SSLClientCertificateSelector::Unlocked() { |
+ net::X509Certificate* cert = GetSelectedCert(); |
wtc
2010/12/15 20:54:36
Can |cert| be passed to this method as a parameter
mattm
2011/01/12 01:22:07
Could be done, but UnlockSlotIfNecessary and Unloc
|
+ delegate_->CertificateSelected(cert); |
+ delegate_ = NULL; |
+ DCHECK(window_); |
+ window_->CloseConstrainedWindow(); |
+} |
+ |
void SSLClientCertificateSelector::OnComboBoxChanged(GtkWidget* combo_box) { |
int selected = gtk_combo_box_get_active( |
GTK_COMBO_BOX(cert_combo_box_)); |
@@ -330,10 +342,12 @@ void SSLClientCertificateSelector::OnCancelClicked(GtkWidget* button) { |
void SSLClientCertificateSelector::OnOkClicked(GtkWidget* button) { |
net::X509Certificate* cert = GetSelectedCert(); |
- delegate_->CertificateSelected(cert); |
- delegate_ = NULL; |
- DCHECK(window_); |
- window_->CloseConstrainedWindow(); |
+ |
+ browser::UnlockCertSlotIfNecessary( |
+ cert, |
+ browser::kPK11PasswordClientAuth, |
+ cert_request_info_->host_and_port, // TODO(mattm): strip port part? |
wtc
2010/12/15 20:54:36
The port part is important.
mattm
2011/01/12 01:22:07
Done.
|
+ NewCallback(this, &SSLClientCertificateSelector::Unlocked)); |
} |
void SSLClientCertificateSelector::OnPromptShown(GtkWidget* widget, |