diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 22:12:27 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-29 22:12:27 +0000 |
commit | 289838c2af90d730be340a2706627dba2d0f550c (patch) | |
tree | b91d831192f5998076699a63691aee7f194abee5 | |
parent | f6fac2d473fc0c279dea590261f6394cfd9fa088 (diff) | |
download | chromium_src-289838c2af90d730be340a2706627dba2d0f550c.zip chromium_src-289838c2af90d730be340a2706627dba2d0f550c.tar.gz chromium_src-289838c2af90d730be340a2706627dba2d0f550c.tar.bz2 |
Convert CryptoModulePasswordDialog related callbacks to new callback system.
BUG=none
TEST=manual
Review URL: http://codereview.chromium.org/8070017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103370 0039d316-1c4b-4281-b951-d872f2087c98
8 files changed, 54 insertions, 47 deletions
diff --git a/chrome/browser/certificate_manager_model.cc b/chrome/browser/certificate_manager_model.cc index 1dbd985..e722ad8 100644 --- a/chrome/browser/certificate_manager_model.cc +++ b/chrome/browser/certificate_manager_model.cc @@ -4,7 +4,7 @@ #include "chrome/browser/certificate_manager_model.h" -#include "base/callback_old.h" +#include "base/bind.h" #include "base/i18n/time_formatting.h" #include "base/logging.h" #include "base/utf_string_conversions.h" @@ -38,8 +38,8 @@ void CertificateManagerModel::Refresh() { modules, browser::kCryptoModulePasswordListCerts, "", // unused. - NewCallback(this, - &CertificateManagerModel::RefreshSlotsUnlocked)); + base::Bind(&CertificateManagerModel::RefreshSlotsUnlocked, + base::Unretained(this))); } void CertificateManagerModel::RefreshSlotsUnlocked() { diff --git a/chrome/browser/ui/crypto_module_password_dialog.h b/chrome/browser/ui/crypto_module_password_dialog.h index 5b669e0..7a25bd8 100644 --- a/chrome/browser/ui/crypto_module_password_dialog.h +++ b/chrome/browser/ui/crypto_module_password_dialog.h @@ -9,7 +9,7 @@ #include <string> #include <vector> -#include "base/callback_old.h" +#include "base/callback.h" #include "base/memory/ref_counted.h" namespace crypto { @@ -34,7 +34,7 @@ enum CryptoModulePasswordReason { kCryptoModulePasswordCertExport, }; -typedef Callback1<const char*>::Type CryptoModulePasswordCallback; +typedef base::Callback<void(const char*)> CryptoModulePasswordCallback; // Display a dialog, prompting the user to authenticate to unlock // |module|. |reason| describes the purpose of the authentication and @@ -44,7 +44,7 @@ void ShowCryptoModulePasswordDialog(const std::string& module_name, bool retry, CryptoModulePasswordReason reason, const std::string& server, - CryptoModulePasswordCallback* callback); + const CryptoModulePasswordCallback& callback); // Returns a CryptoModuleBlockingPasswordDelegate to open a dialog and block // until returning. Should only be used on a worker thread. @@ -59,7 +59,7 @@ crypto::CryptoModuleBlockingPasswordDelegate* void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, browser::CryptoModulePasswordReason reason, const std::string& server, - Callback0::Type* callback); + const base::Closure& callback); // Asynchronously unlock the |cert|'s module, if necessary. |callback| is // called when done (regardless if module was successfully unlocked or not). @@ -67,7 +67,7 @@ void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, void UnlockCertSlotIfNecessary(net::X509Certificate* cert, browser::CryptoModulePasswordReason reason, const std::string& server, - Callback0::Type* callback); + const base::Closure& callback); } // namespace browser diff --git a/chrome/browser/ui/crypto_module_password_dialog_nss.cc b/chrome/browser/ui/crypto_module_password_dialog_nss.cc index 20f62f7..a45913f 100644 --- a/chrome/browser/ui/crypto_module_password_dialog_nss.cc +++ b/chrome/browser/ui/crypto_module_password_dialog_nss.cc @@ -6,6 +6,7 @@ #include <pk11pub.h> +#include "base/bind.h" #include "base/logging.h" #include "content/browser/browser_thread.h" #include "net/base/crypto_module.h" @@ -31,7 +32,7 @@ class SlotUnlocker { SlotUnlocker(const net::CryptoModuleList& modules, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback); + const base::Closure& callback); void Start(); @@ -43,14 +44,14 @@ class SlotUnlocker { net::CryptoModuleList modules_; browser::CryptoModulePasswordReason reason_; std::string host_; - Callback0::Type* callback_; + base::Closure callback_; PRBool retry_; }; SlotUnlocker::SlotUnlocker(const net::CryptoModuleList& modules, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback) + const base::Closure& callback) : current_(0), modules_(modules), reason_(reason), @@ -84,7 +85,7 @@ void SlotUnlocker::Start() { retry_, reason_, host_, - NewCallback(this, &SlotUnlocker::GotPassword)); + base::Bind(&SlotUnlocker::GotPassword, base::Unretained(this))); return; } } @@ -124,7 +125,7 @@ void SlotUnlocker::GotPassword(const char* password) { void SlotUnlocker::Done() { DCHECK_EQ(current_, modules_.size()); - callback_->Run(); + callback_.Run(); delete this; } @@ -135,7 +136,7 @@ namespace browser { void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback) { + const base::Closure& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); for (size_t i = 0; i < modules.size(); ++i) { if (ShouldShowDialog(modules[i].get())) { @@ -143,13 +144,13 @@ void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, return; } } - callback->Run(); + callback.Run(); } void UnlockCertSlotIfNecessary(net::X509Certificate* cert, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback) { + const base::Closure& callback) { net::CryptoModuleList modules; modules.push_back(net::CryptoModule::CreateFromHandle( cert->os_cert_handle()->slot)); diff --git a/chrome/browser/ui/crypto_module_password_dialog_openssl.cc b/chrome/browser/ui/crypto_module_password_dialog_openssl.cc index 5de2d24..6c80486 100644 --- a/chrome/browser/ui/crypto_module_password_dialog_openssl.cc +++ b/chrome/browser/ui/crypto_module_password_dialog_openssl.cc @@ -11,7 +11,7 @@ namespace browser { void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback) { + const base::Closure& callback) { // TODO(bulach): implement me. NOTREACHED(); } @@ -19,7 +19,7 @@ void UnlockSlotsIfNecessary(const net::CryptoModuleList& modules, void UnlockCertSlotIfNecessary(net::X509Certificate* cert, browser::CryptoModulePasswordReason reason, const std::string& host, - Callback0::Type* callback) { + const base::Closure& callback) { // TODO(bulach): implement me. NOTREACHED(); } diff --git a/chrome/browser/ui/gtk/crypto_module_password_dialog.cc b/chrome/browser/ui/gtk/crypto_module_password_dialog.cc index c411452..b189436 100644 --- a/chrome/browser/ui/gtk/crypto_module_password_dialog.cc +++ b/chrome/browser/ui/gtk/crypto_module_password_dialog.cc @@ -7,8 +7,8 @@ #include <gtk/gtk.h> #include "base/basictypes.h" +#include "base/bind.h" #include "base/synchronization/waitable_event.h" -#include "base/task.h" #include "base/utf_string_conversions.h" #include "crypto/crypto_module_blocking_password_delegate.h" #include "chrome/browser/ui/gtk/gtk_util.h" @@ -43,12 +43,15 @@ class CryptoModuleBlockingDialogDelegate DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK(!event_.IsSignaled()); event_.Reset(); + if (BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - NewRunnableMethod(this, - &CryptoModuleBlockingDialogDelegate::ShowDialog, - slot_name, - retry))) { + 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_; @@ -60,7 +63,8 @@ class CryptoModuleBlockingDialogDelegate DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); ShowCryptoModulePasswordDialog( slot_name, retry, reason_, server_, - NewCallback(this, &CryptoModuleBlockingDialogDelegate::GotPassword)); + base::Bind(&CryptoModuleBlockingDialogDelegate::GotPassword, + base::Unretained(this))); } void GotPassword(const char* password) { if (password) @@ -81,11 +85,12 @@ class 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, - browser::CryptoModulePasswordCallback* callback); + CryptoModulePasswordDialog( + const std::string& slot_name, + bool retry, + browser::CryptoModulePasswordReason reason, + const std::string& server, + const browser::CryptoModulePasswordCallback& callback); virtual ~CryptoModulePasswordDialog() {} @@ -95,7 +100,7 @@ class CryptoModulePasswordDialog { CHROMEGTK_CALLBACK_1(CryptoModulePasswordDialog, void, OnResponse, int); CHROMEGTK_CALLBACK_0(CryptoModulePasswordDialog, void, OnWindowDestroy); - scoped_ptr<browser::CryptoModulePasswordCallback> callback_; + browser::CryptoModulePasswordCallback callback_; GtkWidget* dialog_; GtkWidget* password_entry_; @@ -108,7 +113,7 @@ CryptoModulePasswordDialog::CryptoModulePasswordDialog( bool retry, browser::CryptoModulePasswordReason reason, const std::string& server, - browser::CryptoModulePasswordCallback* callback) + const browser::CryptoModulePasswordCallback& callback) : callback_(callback) { dialog_ = gtk_dialog_new_with_buttons( l10n_util::GetStringUTF8(IDS_CRYPTO_MODULE_AUTH_DIALOG_TITLE).c_str(), @@ -192,9 +197,9 @@ void CryptoModulePasswordDialog::Show() { void CryptoModulePasswordDialog::OnResponse(GtkWidget* dialog, int response_id) { if (response_id == GTK_RESPONSE_ACCEPT) - callback_->Run(gtk_entry_get_text(GTK_ENTRY(password_entry_))); + callback_.Run(gtk_entry_get_text(GTK_ENTRY(password_entry_))); else - callback_->Run(static_cast<const char*>(NULL)); + callback_.Run(static_cast<const char*>(NULL)); // This will cause gtk to zero out the buffer. (see // gtk_entry_buffer_normal_delete_text: @@ -209,16 +214,14 @@ void CryptoModulePasswordDialog::OnWindowDestroy(GtkWidget* widget) { } // namespace -// Every post-task we do blocks, so there's no need to ref-count. -DISABLE_RUNNABLE_METHOD_REFCOUNT(CryptoModuleBlockingDialogDelegate); - namespace browser { -void ShowCryptoModulePasswordDialog(const std::string& slot_name, - bool retry, - CryptoModulePasswordReason reason, - const std::string& server, - CryptoModulePasswordCallback* callback) { +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(); } diff --git a/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc b/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc index 0fc6050..4d7b67a 100644 --- a/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc +++ b/chrome/browser/ui/gtk/ssl_client_certificate_selector.cc @@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/bind.h" #include "base/i18n/time_formatting.h" #include "base/logging.h" #include "base/utf_string_conversions.h" @@ -376,7 +377,8 @@ void SSLClientCertificateSelector::OnOkClicked(GtkWidget* button) { cert, browser::kCryptoModulePasswordClientAuth, cert_request_info_->host_and_port, - NewCallback(this, &SSLClientCertificateSelector::Unlocked)); + base::Bind(&SSLClientCertificateSelector::Unlocked, + base::Unretained(this))); } void SSLClientCertificateSelector::OnPromptShown(GtkWidget* widget, diff --git a/chrome/browser/ui/views/stubs_aura.cc b/chrome/browser/ui/views/stubs_aura.cc index 7317057..455d057 100644 --- a/chrome/browser/ui/views/stubs_aura.cc +++ b/chrome/browser/ui/views/stubs_aura.cc @@ -119,7 +119,7 @@ void ShowCryptoModulePasswordDialog(const std::string& module_name, bool retry, CryptoModulePasswordReason reason, const std::string& server, - CryptoModulePasswordCallback* callback) { + const CryptoModulePasswordCallback& callback) { // TODO(saintlou): NOTIMPLEMENTED(); } diff --git a/chrome/browser/ui/webui/options/certificate_manager_handler.cc b/chrome/browser/ui/webui/options/certificate_manager_handler.cc index 16e9cf7..f610e65 100644 --- a/chrome/browser/ui/webui/options/certificate_manager_handler.cc +++ b/chrome/browser/ui/webui/options/certificate_manager_handler.cc @@ -4,6 +4,7 @@ #include "chrome/browser/ui/webui/options/certificate_manager_handler.h" +#include "base/bind.h" #include "base/file_util.h" // for FileAccessProvider #include "base/memory/scoped_vector.h" #include "base/safe_strerror_posix.h" @@ -566,8 +567,8 @@ void CertificateManagerHandler::ExportPersonalPasswordSelected( selected_cert_list_[0].get(), browser::kCryptoModulePasswordCertExport, "", // unused. - NewCallback(this, - &CertificateManagerHandler::ExportPersonalSlotsUnlocked)); + base::Bind(&CertificateManagerHandler::ExportPersonalSlotsUnlocked, + base::Unretained(this))); } void CertificateManagerHandler::ExportPersonalSlotsUnlocked() { @@ -671,8 +672,8 @@ void CertificateManagerHandler::ImportPersonalFileRead( modules, browser::kCryptoModulePasswordCertImport, "", // unused. - NewCallback(this, - &CertificateManagerHandler::ImportPersonalSlotUnlocked)); + base::Bind(&CertificateManagerHandler::ImportPersonalSlotUnlocked, + base::Unretained(this))); } void CertificateManagerHandler::ImportPersonalSlotUnlocked() { |