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

Unified Diff: chrome/browser/extensions/external_install_error.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
« no previous file with comments | « chrome/browser/extensions/external_install_error.h ('k') | chrome/browser/extensions/navigation_observer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/external_install_error.cc
diff --git a/chrome/browser/extensions/external_install_error.cc b/chrome/browser/extensions/external_install_error.cc
index e704895c6844931cf78afca48d736971e8708d62..fc3c50e9ba74710dd01ce9b34ddaad62e6baad23 100644
--- a/chrome/browser/extensions/external_install_error.cc
+++ b/chrome/browser/extensions/external_install_error.cc
@@ -265,12 +265,12 @@ void ExternalInstallBubbleAlert::OnBubbleViewDidClose(Browser* browser) {
void ExternalInstallBubbleAlert::BubbleViewAcceptButtonPressed(
Browser* browser) {
- error_->InstallUIProceed();
+ error_->OnInstallPromptDone(ExtensionInstallPrompt::Result::ACCEPTED);
}
void ExternalInstallBubbleAlert::BubbleViewCancelButtonPressed(
Browser* browser) {
- error_->InstallUIAbort(true);
+ error_->OnInstallPromptDone(ExtensionInstallPrompt::Result::USER_CANCELED);
}
} // namespace
@@ -303,34 +303,37 @@ ExternalInstallError::~ExternalInstallError() {
error_service_->RemoveGlobalError(global_error_.get());
}
-void ExternalInstallError::InstallUIProceed() {
+void ExternalInstallError::OnInstallPromptDone(
+ ExtensionInstallPrompt::Result result) {
const Extension* extension = GetExtension();
- if (extension) {
- ExtensionSystem::Get(browser_context_)
- ->extension_service()
- ->GrantPermissionsAndEnableExtension(extension);
- // Since the manager listens for the extension to be loaded, this will
- // remove the error...
- } else {
- // ... Otherwise we have to do it explicitly.
- manager_->RemoveExternalInstallError(extension_id_);
+ bool did_remove_error = false;
+ switch (result) {
+ case ExtensionInstallPrompt::Result::ACCEPTED:
+ if (extension) {
+ ExtensionSystem::Get(browser_context_)
+ ->extension_service()
+ ->GrantPermissionsAndEnableExtension(extension);
+ // Since the manager listens for the extension to be loaded, this will
+ // remove the error.
+ did_remove_error = true;
+ }
+ break;
+ case ExtensionInstallPrompt::Result::USER_CANCELED:
+ if (extension) {
+ ExtensionSystem::Get(browser_context_)
+ ->extension_service()
+ ->UninstallExtension(extension_id_,
+ extensions::UNINSTALL_REASON_INSTALL_CANCELED,
+ base::Bind(&base::DoNothing),
+ nullptr); // Ignore error.
+ did_remove_error = true;
+ }
+ break;
+ case ExtensionInstallPrompt::Result::ABORTED:
+ break;
}
-}
-
-void ExternalInstallError::InstallUIAbort(bool user_initiated) {
- if (user_initiated && GetExtension()) {
- ExtensionSystem::Get(browser_context_)
- ->extension_service()
- ->UninstallExtension(extension_id_,
- extensions::UNINSTALL_REASON_INSTALL_CANCELED,
- base::Bind(&base::DoNothing),
- NULL); // Ignore error.
- // Since the manager listens for the extension to be removed, this will
- // remove the error...
- } else {
- // ... Otherwise we have to do it explicitly.
+ if (!did_remove_error)
manager_->RemoveExternalInstallError(extension_id_);
- }
}
void ExternalInstallError::ShowDialog(Browser* browser) {
@@ -342,7 +345,10 @@ void ExternalInstallError::ShowDialog(Browser* browser) {
install_ui_show_params_.reset(
new ExtensionInstallPromptShowParams(web_contents));
ExtensionInstallPrompt::GetDefaultShowDialogCallback().Run(
- install_ui_show_params_.get(), this, std::move(prompt_));
+ install_ui_show_params_.get(),
+ base::Bind(&ExternalInstallError::OnInstallPromptDone,
+ weak_factory_.GetWeakPtr()),
+ std::move(prompt_));
}
const Extension* ExternalInstallError::GetExtension() const {
@@ -389,7 +395,9 @@ void ExternalInstallError::OnFetchComplete() {
new ExtensionInstallPrompt(Profile::FromBrowserContext(browser_context_),
NULL)); // NULL native window.
- install_ui_->ShowDialog(this, GetExtension(),
+ install_ui_->ShowDialog(base::Bind(&ExternalInstallError::OnInstallPromptDone,
+ weak_factory_.GetWeakPtr()),
+ GetExtension(),
nullptr, // Force a fetch of the icon.
std::move(prompt_),
base::Bind(&ExternalInstallError::OnDialogReady,
@@ -398,9 +406,8 @@ void ExternalInstallError::OnFetchComplete() {
void ExternalInstallError::OnDialogReady(
ExtensionInstallPromptShowParams* show_params,
- ExtensionInstallPrompt::Delegate* prompt_delegate,
+ const ExtensionInstallPrompt::DoneCallback& callback,
scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
- DCHECK_EQ(this, prompt_delegate);
prompt_ = std::move(prompt);
if (alert_type_ == BUBBLE_ALERT) {
« no previous file with comments | « chrome/browser/extensions/external_install_error.h ('k') | chrome/browser/extensions/navigation_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698