aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
Diffstat (limited to 'embed')
-rw-r--r--embed/mozilla/GtkNSSClientAuthDialogs.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/embed/mozilla/GtkNSSClientAuthDialogs.cpp b/embed/mozilla/GtkNSSClientAuthDialogs.cpp
index ee699a23d..9c3320ec1 100644
--- a/embed/mozilla/GtkNSSClientAuthDialogs.cpp
+++ b/embed/mozilla/GtkNSSClientAuthDialogs.cpp
@@ -267,13 +267,36 @@ GtkNSSClientAuthDialogs::ChooseCertificate (nsIInterfaceRequestor *ctx,
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
+#ifdef HAVE_NSICLIENTAUTHUSERDECISION
+ GtkWidget *rememberButton;
+ nsCOMPtr<nsIClientAuthUserDecision> userDecision (do_QueryInterface (ctx));
+
+ if (userDecision)
+ {
+ PRBool remember = PR_FALSE;
+ userDecision->GetRememberClientAuthCertificate (&remember);
+
+ rememberButton = gtk_check_button_new_with_mnemonic ("_Remember this choice"); /* FIXME i18n */
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rememberButton), remember != PR_FALSE);
+ gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), rememberButton, FALSE, FALSE, 0);
+ gtk_widget_show (rememberButton);
+ }
+#endif /* HAVE_NSICLIENTAUTHUSERDECISION */
+
/* run the dialog */
int res = modalDialog.Run (GTK_DIALOG (dialog));
if (res == GTK_RESPONSE_OK)
{
*canceled = PR_FALSE;
*selectedIndex = gtk_combo_box_get_active (GTK_COMBO_BOX (combo));
- }
+
+#ifdef HAVE_NSICLIENTAUTHUSERDECISION
+ if (userDecision)
+ {
+ userDecision->SetRememberClientAuthCertificate (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rememberButton)) != FALSE);
+ }
+#endif /* HAVE_NSICLIENTAUTHUSERDECISION */
+ }
else
{
*canceled = PR_TRUE;