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

Unified Diff: chrome/browser/extensions/unpacked_installer.cc

Issue 1534123002: [Extensions] Migrate ExtensionInstallPrompt::Delegate to be a callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months 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/extensions/unpacked_installer.cc
diff --git a/chrome/browser/extensions/unpacked_installer.cc b/chrome/browser/extensions/unpacked_installer.cc
index 1849630d04036d21d602d303769218472e917786..035aecff75f90f3725cf63dc15b649098c111ff5 100644
--- a/chrome/browser/extensions/unpacked_installer.cc
+++ b/chrome/browser/extensions/unpacked_installer.cc
@@ -47,23 +47,24 @@ const char kImportMissing[] = "'import' extension is not installed.";
const char kImportNotSharedModule[] = "'import' is not a shared module.";
// Manages an ExtensionInstallPrompt for a particular extension.
-class SimpleExtensionLoadPrompt : public ExtensionInstallPrompt::Delegate {
+class SimpleExtensionLoadPrompt {
public:
SimpleExtensionLoadPrompt(const Extension* extension,
Profile* profile,
const base::Closure& callback);
- ~SimpleExtensionLoadPrompt() override;
void ShowPrompt();
- // ExtensionInstallUI::Delegate
- void InstallUIProceed() override;
- void InstallUIAbort(bool user_initiated) override;
-
private:
+ ~SimpleExtensionLoadPrompt(); // Manages its own lifetime.
+
+ void OnInstallPromptDone(ExtensionInstallPrompt::Result result);
+
scoped_ptr<ExtensionInstallPrompt> install_ui_;
scoped_refptr<const Extension> extension_;
base::Closure callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(SimpleExtensionLoadPrompt);
};
SimpleExtensionLoadPrompt::SimpleExtensionLoadPrompt(
@@ -81,27 +82,30 @@ SimpleExtensionLoadPrompt::~SimpleExtensionLoadPrompt() {
}
void SimpleExtensionLoadPrompt::ShowPrompt() {
+ // TODO(devlin): The AutoConfirm values should work from the
+ // ExtensionInstallPrompt code, so these should be unnecessary.
switch (extensions::ScopedTestDialogAutoConfirm::GetAutoConfirmValue()) {
case extensions::ScopedTestDialogAutoConfirm::NONE:
+ // Unretained() is safe because this object manages its own lifetime.
install_ui_->ShowDialog(
- this, extension_.get(), nullptr,
+ base::Bind(&SimpleExtensionLoadPrompt::OnInstallPromptDone,
+ base::Unretained(this)),
+ extension_.get(), nullptr,
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
break;
case extensions::ScopedTestDialogAutoConfirm::ACCEPT:
- InstallUIProceed();
+ OnInstallPromptDone(ExtensionInstallPrompt::Result::ACCEPTED);
break;
case extensions::ScopedTestDialogAutoConfirm::CANCEL:
- InstallUIAbort(false);
+ OnInstallPromptDone(ExtensionInstallPrompt::Result::ABORTED);
break;
}
}
-void SimpleExtensionLoadPrompt::InstallUIProceed() {
- callback_.Run();
- delete this;
-}
-
-void SimpleExtensionLoadPrompt::InstallUIAbort(bool user_initiated) {
+void SimpleExtensionLoadPrompt::OnInstallPromptDone(
+ ExtensionInstallPrompt::Result result) {
+ if (result == ExtensionInstallPrompt::Result::ACCEPTED)
+ callback_.Run();
delete this;
}
« no previous file with comments | « chrome/browser/extensions/navigation_observer.cc ('k') | chrome/browser/extensions/webstore_inline_installer_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698