Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1113)

Unified Diff: chrome/browser/ui/gtk/crypto_module_password_dialog.cc

Issue 8115020: add crypto module password dialog view and test. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: update and merge Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/gtk/crypto_module_password_dialog.cc
diff --git a/chrome/browser/ui/gtk/crypto_module_password_dialog.cc b/chrome/browser/ui/gtk/crypto_module_password_dialog.cc
deleted file mode 100644
index bcfb1f739352c5f5e96ea4250297d5d64d9e1a95..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/gtk/crypto_module_password_dialog.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/crypto_module_password_dialog.h"
-
-#include <gtk/gtk.h>
-
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/synchronization/waitable_event.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/ui/gtk/gtk_util.h"
-#include "content/public/browser/browser_thread.h"
-#include "crypto/crypto_module_blocking_password_delegate.h"
-#include "googleurl/src/gurl.h"
-#include "grit/generated_resources.h"
-#include "ui/base/gtk/gtk_hig_constants.h"
-#include "ui/base/gtk/gtk_signal.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using content::BrowserThread;
-
-namespace {
-
-class CryptoModuleBlockingDialogDelegate
- : public crypto::CryptoModuleBlockingPasswordDelegate {
- public:
- CryptoModuleBlockingDialogDelegate(browser::CryptoModulePasswordReason reason,
- const std::string& server)
- : event_(false, false),
- reason_(reason),
- server_(server),
- password_(),
- cancelled_(false) {
- }
-
- ~CryptoModuleBlockingDialogDelegate() {
- password_.replace(0, password_.size(), password_.size(), 0);
- }
-
- // crypto::CryptoModuleBlockingDialogDelegate implementation.
- virtual std::string RequestPassword(const std::string& slot_name, bool retry,
- bool* cancelled) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI));
- DCHECK(!event_.IsSignaled());
- event_.Reset();
-
- if (BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&CryptoModuleBlockingDialogDelegate::ShowDialog,
- // We block on event_ until the task completes, so
- // there's no need to ref-count.
- base::Unretained(this),
- slot_name,
- retry))) {
- event_.Wait();
- }
- *cancelled = cancelled_;
- return password_;
- }
-
- private:
- void ShowDialog(const std::string& slot_name, bool retry) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- ShowCryptoModulePasswordDialog(
- slot_name, retry, reason_, server_,
- base::Bind(&CryptoModuleBlockingDialogDelegate::GotPassword,
- base::Unretained(this)));
- }
- void GotPassword(const char* password) {
- if (password)
- password_ = password;
- else
- cancelled_ = true;
- event_.Signal();
- }
- base::WaitableEvent event_;
- browser::CryptoModulePasswordReason reason_;
- std::string server_;
- std::string password_;
- bool cancelled_;
-
- DISALLOW_COPY_AND_ASSIGN(CryptoModuleBlockingDialogDelegate);
-};
-
-// TODO(mattm): change into a constrained dialog.
-class CryptoModulePasswordDialog {
- public:
- CryptoModulePasswordDialog(
- const std::string& slot_name,
- bool retry,
- browser::CryptoModulePasswordReason reason,
- const std::string& server,
- const browser::CryptoModulePasswordCallback& callback);
-
- ~CryptoModulePasswordDialog() {}
-
- void Show();
-
- private:
- CHROMEGTK_CALLBACK_1(CryptoModulePasswordDialog, void, OnResponse, int);
- CHROMEGTK_CALLBACK_0(CryptoModulePasswordDialog, void, OnWindowDestroy);
-
- browser::CryptoModulePasswordCallback callback_;
-
- GtkWidget* dialog_;
- GtkWidget* password_entry_;
-
- DISALLOW_COPY_AND_ASSIGN(CryptoModulePasswordDialog);
-};
-
-CryptoModulePasswordDialog::CryptoModulePasswordDialog(
- const std::string& slot_name,
- bool retry,
- browser::CryptoModulePasswordReason reason,
- const std::string& server,
- const browser::CryptoModulePasswordCallback& callback)
- : callback_(callback) {
- dialog_ = gtk_dialog_new_with_buttons(
- l10n_util::GetStringUTF8(IDS_CRYPTO_MODULE_AUTH_DIALOG_TITLE).c_str(),
- NULL,
- GTK_DIALOG_NO_SEPARATOR,
- NULL); // Populate the buttons later, for control over the OK button.
- gtk_dialog_add_button(GTK_DIALOG(dialog_),
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
- GtkWidget* ok_button = gtk_util::AddButtonToDialog(
- dialog_,
- l10n_util::GetStringUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_OK_BUTTON_LABEL).c_str(),
- GTK_STOCK_OK,
- GTK_RESPONSE_ACCEPT);
- gtk_widget_set_can_default(ok_button, TRUE);
- gtk_dialog_set_default_response(GTK_DIALOG(dialog_), GTK_RESPONSE_ACCEPT);
-
- // Select an appropriate text for the reason.
- std::string text;
- const string16& server16 = UTF8ToUTF16(server);
- const string16& slot16 = UTF8ToUTF16(slot_name);
- switch (reason) {
- case browser::kCryptoModulePasswordKeygen:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_KEYGEN, slot16, server16);
- break;
- case browser::kCryptoModulePasswordCertEnrollment:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_ENROLLMENT, slot16, server16);
- break;
- case browser::kCryptoModulePasswordClientAuth:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CLIENT_AUTH, slot16, server16);
- break;
- case browser::kCryptoModulePasswordListCerts:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_LIST_CERTS, slot16);
- break;
- case browser::kCryptoModulePasswordCertImport:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_IMPORT, slot16);
- break;
- case browser::kCryptoModulePasswordCertExport:
- text = l10n_util::GetStringFUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_EXPORT, slot16);
- break;
- default:
- NOTREACHED();
- }
- GtkWidget* label = gtk_label_new(text.c_str());
- gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
- gtk_util::LeftAlignMisc(label);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_)->vbox), label,
- FALSE, FALSE, 0);
-
- password_entry_ = gtk_entry_new();
- gtk_entry_set_activates_default(GTK_ENTRY(password_entry_), TRUE);
- gtk_entry_set_visibility(GTK_ENTRY(password_entry_), FALSE);
-
- GtkWidget* password_box = gtk_hbox_new(FALSE, ui::kLabelSpacing);
- gtk_box_pack_start(GTK_BOX(password_box),
- gtk_label_new(l10n_util::GetStringUTF8(
- IDS_CRYPTO_MODULE_AUTH_DIALOG_PASSWORD_FIELD).c_str()),
- FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(password_box), password_entry_,
- TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_)->vbox), password_box,
- FALSE, FALSE, 0);
-
- g_signal_connect(dialog_, "response",
- G_CALLBACK(OnResponseThunk), this);
- g_signal_connect(dialog_, "destroy",
- G_CALLBACK(OnWindowDestroyThunk), this);
-}
-
-void CryptoModulePasswordDialog::Show() {
- gtk_util::ShowDialog(dialog_);
-}
-
-void CryptoModulePasswordDialog::OnResponse(GtkWidget* dialog,
- int response_id) {
- if (response_id == GTK_RESPONSE_ACCEPT)
- callback_.Run(gtk_entry_get_text(GTK_ENTRY(password_entry_)));
- else
- callback_.Run(static_cast<const char*>(NULL));
-
- // This will cause gtk to zero out the buffer. (see
- // gtk_entry_buffer_normal_delete_text:
- // http://git.gnome.org/browse/gtk+/tree/gtk/gtkentrybuffer.c#n187)
- gtk_editable_delete_text(GTK_EDITABLE(password_entry_), 0, -1);
- gtk_widget_destroy(dialog_);
-}
-
-void CryptoModulePasswordDialog::OnWindowDestroy(GtkWidget* widget) {
- delete this;
-}
-
-} // namespace
-
-namespace browser {
-
-void ShowCryptoModulePasswordDialog(
- const std::string& slot_name,
- bool retry,
- CryptoModulePasswordReason reason,
- const std::string& server,
- const CryptoModulePasswordCallback& callback) {
- (new CryptoModulePasswordDialog(slot_name, retry, reason, server,
- callback))->Show();
-}
-
-crypto::CryptoModuleBlockingPasswordDelegate*
- NewCryptoModuleBlockingDialogDelegate(
- CryptoModulePasswordReason reason,
- const std::string& server) {
- return new CryptoModuleBlockingDialogDelegate(reason, server);
-}
-
-} // namespace browser
« no previous file with comments | « chrome/browser/ui/crypto_module_password_dialog.cc ('k') | chrome/browser/ui/views/crypto_module_password_dialog_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698