| 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;
|
| }
|
|
|
|
|