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

Unified Diff: chrome/browser/extensions/extension_disabled_ui.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 5 years 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_disabled_ui.cc
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index 0e096b5e6bff9c2de7392605fd8043c72faa8bf5..02ac58ae3478909e75b4fb86989add9f8c340c56 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -92,28 +92,24 @@ void ReleaseMenuCommandID(int id) {
// ExtensionDisabledDialogDelegate --------------------------------------------
-class ExtensionDisabledDialogDelegate
- : public ExtensionInstallPrompt::Delegate,
- public base::RefCountedThreadSafe<ExtensionDisabledDialogDelegate> {
+class ExtensionDisabledDialogDelegate {
public:
ExtensionDisabledDialogDelegate(ExtensionService* service,
scoped_ptr<ExtensionInstallPrompt> install_ui,
const Extension* extension);
private:
- friend class base::RefCountedThreadSafe<ExtensionDisabledDialogDelegate>;
+ ~ExtensionDisabledDialogDelegate();
- ~ExtensionDisabledDialogDelegate() override;
-
- // ExtensionInstallPrompt::Delegate:
- void InstallUIProceed() override;
- void InstallUIAbort(bool user_initiated) override;
+ void InstallPromptDone(ExtensionInstallPrompt::Result result);
// The UI for showing the install dialog when enabling.
scoped_ptr<ExtensionInstallPrompt> install_ui_;
ExtensionService* service_;
const Extension* extension_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionDisabledDialogDelegate);
Avi (use Gerrit) 2015/12/29 03:10:45 base/macros.h
Devlin 2016/01/04 22:59:23 Done.
};
ExtensionDisabledDialogDelegate::ExtensionDisabledDialogDelegate(
@@ -123,12 +119,15 @@ ExtensionDisabledDialogDelegate::ExtensionDisabledDialogDelegate(
: install_ui_(std::move(install_ui)),
service_(service),
extension_(extension) {
- AddRef(); // Balanced in Proceed or Abort.
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
service_->profile(), extension);
+ // Unretained() is safe since this object manages its own lifetime and deletes
+ // itself only once the prompt finishes.
asargent_no_longer_on_chrome 2015/12/31 00:45:56 also because it owns install_ui_ (not sure if wort
Devlin 2016/01/04 22:59:23 See other comment.
install_ui_->ShowDialog(
- this, extension_, nullptr,
+ base::Bind(&ExtensionDisabledDialogDelegate::InstallPromptDone,
+ base::Unretained(this)),
+ extension_, nullptr,
make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
@@ -136,19 +135,21 @@ ExtensionDisabledDialogDelegate::ExtensionDisabledDialogDelegate(
ExtensionDisabledDialogDelegate::~ExtensionDisabledDialogDelegate() {
}
-void ExtensionDisabledDialogDelegate::InstallUIProceed() {
- service_->GrantPermissionsAndEnableExtension(extension_);
- Release();
-}
-
-void ExtensionDisabledDialogDelegate::InstallUIAbort(bool user_initiated) {
- std::string histogram_name = user_initiated ? "ReEnableCancel"
- : "ReEnableAbort";
- ExtensionService::RecordPermissionMessagesHistogram(
- extension_, histogram_name.c_str());
+void ExtensionDisabledDialogDelegate::InstallPromptDone(
+ ExtensionInstallPrompt::Result result) {
+ if (result == ExtensionInstallPrompt::Result::ACCEPTED) {
+ service_->GrantPermissionsAndEnableExtension(extension_);
+ } else {
+ const char* histogram_name =
+ result == ExtensionInstallPrompt::Result::USER_CANCELED
+ ? "ReEnableCancel"
+ : "ReEnableAbort";
+ ExtensionService::RecordPermissionMessagesHistogram(extension_,
+ histogram_name);
+ // Do nothing. The extension will remain disabled.
+ }
- // Do nothing. The extension will remain disabled.
- Release();
+ delete this;
}
// ExtensionDisabledGlobalError -----------------------------------------------

Powered by Google App Engine
This is Rietveld 408576698