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

Unified Diff: chrome/browser/extensions/extension_reenabler.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/extension_reenabler.cc
diff --git a/chrome/browser/extensions/extension_reenabler.cc b/chrome/browser/extensions/extension_reenabler.cc
index c957505a10898df230183359f3c2470bd0a3f5ba..8f35226ac57bfbe9709203040370876ec934c8d2 100644
--- a/chrome/browser/extensions/extension_reenabler.cc
+++ b/chrome/browser/extensions/extension_reenabler.cc
@@ -70,7 +70,8 @@ ExtensionReenabler::ExtensionReenabler(
callback_(callback),
show_dialog_callback_(show_dialog_callback),
finished_(false),
- registry_observer_(this) {
+ registry_observer_(this),
+ weak_factory_(this) {
DCHECK(extension_.get());
registry_observer_.Add(ExtensionRegistry::Get(browser_context_));
@@ -90,32 +91,46 @@ ExtensionReenabler::ExtensionReenabler(
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context, extension.get());
install_prompt_->ShowDialog(
- this, extension.get(), nullptr,
+ base::Bind(&ExtensionReenabler::OnInstallPromptDone,
+ weak_factory_.GetWeakPtr()),
+ extension.get(), nullptr,
make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
show_dialog_callback_);
}
}
-void ExtensionReenabler::InstallUIProceed() {
- // Stop observing - we don't want to see our own enablement.
- registry_observer_.RemoveAll();
-
- ExtensionService* extension_service =
- ExtensionSystem::Get(browser_context_)->extension_service();
- if (extension_service->browser_terminating()) {
- Finish(ABORTED);
- } else {
- extension_service->GrantPermissionsAndEnableExtension(extension_.get());
- // The re-enable could have failed if the extension is disallowed by
- // policy.
- bool enabled = ExtensionRegistry::Get(browser_context_)->
- enabled_extensions().GetByID(extension_->id()) != nullptr;
- Finish(enabled ? REENABLE_SUCCESS : NOT_ALLOWED);
+void ExtensionReenabler::OnInstallPromptDone(
+ ExtensionInstallPrompt::Result install_result) {
+ ReenableResult result = ABORTED;
+ switch (install_result) {
+ case ExtensionInstallPrompt::Result::ACCEPTED: {
+ // Stop observing - we don't want to see our own enablement.
+ registry_observer_.RemoveAll();
+
+ ExtensionService* extension_service =
+ ExtensionSystem::Get(browser_context_)->extension_service();
+ if (extension_service->browser_terminating()) {
+ result = ABORTED;
+ } else {
+ extension_service->GrantPermissionsAndEnableExtension(extension_.get());
+ // The re-enable could have failed if the extension is disallowed by
+ // policy.
+ bool enabled = ExtensionRegistry::Get(browser_context_)
+ ->enabled_extensions()
+ .GetByID(extension_->id()) != nullptr;
+ result = enabled ? REENABLE_SUCCESS : NOT_ALLOWED;
+ }
+ break;
+ }
+ case ExtensionInstallPrompt::Result::USER_CANCELED:
+ result = USER_CANCELED;
+ break;
+ case ExtensionInstallPrompt::Result::ABORTED:
+ result = ABORTED;
+ break;
}
-}
-void ExtensionReenabler::InstallUIAbort(bool user_initiated) {
- Finish(user_initiated ? USER_CANCELED : ABORTED);
+ Finish(result);
}
void ExtensionReenabler::OnExtensionLoaded(
@@ -152,7 +167,9 @@ void ExtensionReenabler::OnWebstoreResponseParseSuccess(
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context_, extension_.get());
install_prompt_->ShowDialog(
- this, extension_.get(), nullptr,
+ base::Bind(&ExtensionReenabler::OnInstallPromptDone,
+ weak_factory_.GetWeakPtr()),
+ extension_.get(), nullptr,
make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
show_dialog_callback_);
}
« no previous file with comments | « chrome/browser/extensions/extension_reenabler.h ('k') | chrome/browser/extensions/extension_reenabler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698