| Index: chrome/browser/ui/gtk/ssl_client_certificate_selector.cc
|
| diff --git a/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc b/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc
|
| index 1e5399114f6f8e34eaf1493eec85b414adc2ee82..37b2f7ca27219fe25cd8358d7208838fd447940d 100644
|
| --- a/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc
|
| +++ b/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc
|
| @@ -43,8 +43,7 @@ enum {
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // SSLClientCertificateSelector
|
|
|
| -class SSLClientCertificateSelector : public SSLClientAuthObserver,
|
| - public ConstrainedWindowGtkDelegate {
|
| +class SSLClientCertificateSelector : public SSLClientAuthObserver {
|
| public:
|
| explicit SSLClientCertificateSelector(
|
| WebContents* parent,
|
| @@ -58,11 +57,6 @@ class SSLClientCertificateSelector : public SSLClientAuthObserver,
|
| // SSLClientAuthObserver implementation:
|
| virtual void OnCertSelectedByNotification() OVERRIDE;
|
|
|
| - // ConstrainedWindowGtkDelegate implementation:
|
| - virtual GtkWidget* GetWidgetRoot() OVERRIDE { return root_widget_.get(); }
|
| - virtual GtkWidget* GetFocusWidget() OVERRIDE;
|
| - virtual void DeleteDelegate() OVERRIDE;
|
| -
|
| private:
|
| void PopulateCerts();
|
|
|
| @@ -83,6 +77,7 @@ class SSLClientCertificateSelector : public SSLClientAuthObserver,
|
| CHROMEGTK_CALLBACK_0(SSLClientCertificateSelector, void, OnOkClicked);
|
| CHROMEGTK_CALLBACK_1(SSLClientCertificateSelector, void, OnPromptShown,
|
| GtkWidget*);
|
| + CHROMEGTK_CALLBACK_0(SSLClientCertificateSelector, void, OnDestroy);
|
|
|
| std::vector<std::string> details_strings_;
|
|
|
| @@ -108,6 +103,10 @@ SSLClientCertificateSelector::SSLClientCertificateSelector(
|
| web_contents_(web_contents),
|
| window_(NULL) {
|
| root_widget_.Own(gtk_vbox_new(FALSE, ui::kControlSpacing));
|
| + g_signal_connect(root_widget_.get(),
|
| + "destroy",
|
| + G_CALLBACK(OnDestroyThunk),
|
| + this);
|
|
|
| GtkWidget* site_vbox = gtk_vbox_new(FALSE, ui::kControlSpacing);
|
| gtk_box_pack_start(GTK_BOX(root_widget_.get()), site_vbox,
|
| @@ -198,7 +197,9 @@ SSLClientCertificateSelector::~SSLClientCertificateSelector() {
|
|
|
| void SSLClientCertificateSelector::Show() {
|
| DCHECK(!window_);
|
| - window_ = CreateWebContentsModalDialogGtk(web_contents_, this);
|
| + window_ = CreateWebContentsModalDialogGtk(web_contents_,
|
| + root_widget_.get(),
|
| + select_button_);
|
|
|
| WebContentsModalDialogManager* web_contents_modal_dialog_manager =
|
| WebContentsModalDialogManager::FromWebContents(web_contents_);
|
| @@ -210,17 +211,6 @@ void SSLClientCertificateSelector::OnCertSelectedByNotification() {
|
| gtk_widget_destroy(window_);
|
| }
|
|
|
| -GtkWidget* SSLClientCertificateSelector::GetFocusWidget() {
|
| - return select_button_;
|
| -}
|
| -
|
| -void SSLClientCertificateSelector::DeleteDelegate() {
|
| - // The dialog was closed by escape key.
|
| - StopObserving();
|
| - CertificateSelected(NULL);
|
| - delete this;
|
| -}
|
| -
|
| void SSLClientCertificateSelector::PopulateCerts() {
|
| std::vector<std::string> nicknames;
|
| x509_certificate_model::GetNicknameStringsFromCertList(
|
| @@ -385,6 +375,13 @@ void SSLClientCertificateSelector::OnPromptShown(GtkWidget* widget,
|
| gtk_widget_grab_default(select_button_);
|
| }
|
|
|
| +void SSLClientCertificateSelector::OnDestroy(GtkWidget* widget) {
|
| + // The dialog was closed by escape key.
|
| + StopObserving();
|
| + CertificateSelected(NULL);
|
| + delete this;
|
| +}
|
| +
|
| } // namespace
|
|
|
| namespace chrome {
|
|
|