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

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

Issue 313203004: Make ExtensionInstallPrompt::Prompt ref-counted (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Latest master for CQ Created 6 years, 6 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/external_install_ui.cc
diff --git a/chrome/browser/extensions/external_install_ui.cc b/chrome/browser/extensions/external_install_ui.cc
index 901b26c1c694648ea89cf4d7c701d6930811ac47..94cd0e5d195d407847376fdae37ea87c92621903 100644
--- a/chrome/browser/extensions/external_install_ui.cc
+++ b/chrome/browser/extensions/external_install_ui.cc
@@ -101,7 +101,7 @@ class ExternalInstallDialogDelegate
// The UI for showing the install dialog when enabling.
scoped_ptr<ExtensionInstallPrompt> install_ui_;
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt_;
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
Browser* browser_;
base::WeakPtr<ExtensionService> service_weak_;
@@ -167,10 +167,11 @@ class ExternalInstallMenuAlert : public GlobalErrorWithStandardBubble,
// Shows a menu item and a global error bubble, replacing the install dialog.
class ExternalInstallGlobalError : public ExternalInstallMenuAlert {
public:
- ExternalInstallGlobalError(ExtensionService* service,
- const Extension* extension,
- ExternalInstallDialogDelegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt);
+ ExternalInstallGlobalError(
+ ExtensionService* service,
+ const Extension* extension,
+ ExternalInstallDialogDelegate* delegate,
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
virtual ~ExternalInstallGlobalError();
virtual void ExecuteMenuItem(Browser* browser) OVERRIDE;
@@ -189,7 +190,7 @@ class ExternalInstallGlobalError : public ExternalInstallMenuAlert {
// having been clicked (perhaps because the user enabled the extension
// manually).
ExternalInstallDialogDelegate* delegate_;
- const ExtensionInstallPrompt::Prompt* prompt_;
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
private:
DISALLOW_COPY_AND_ASSIGN(ExternalInstallGlobalError);
@@ -200,7 +201,7 @@ static void CreateExternalInstallGlobalError(
const std::string& extension_id,
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* prompt_delegate,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
if (!service.get())
return;
const Extension* extension = service->GetInstalledExtension(extension_id);
@@ -242,8 +243,8 @@ ExternalInstallDialogDelegate::ExternalInstallDialogDelegate(
use_global_error_(use_global_error) {
AddRef(); // Balanced in Proceed or Abort.
- prompt_.reset(new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT));
+ prompt_ = new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT);
// If we don't have a browser, we can't go to the webstore to fetch data.
// This should only happen in tests.
@@ -324,7 +325,7 @@ void ExternalInstallDialogDelegate::ShowInstallUI() {
extension_id_) :
ExtensionInstallPrompt::GetDefaultShowDialogCallback();
- install_ui_->ConfirmExternalInstall(this, extension, callback, *prompt_);
+ install_ui_->ConfirmExternalInstall(this, extension, callback, prompt_);
}
ExternalInstallDialogDelegate::~ExternalInstallDialogDelegate() {
@@ -461,10 +462,10 @@ ExternalInstallGlobalError::ExternalInstallGlobalError(
ExtensionService* service,
const Extension* extension,
ExternalInstallDialogDelegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt)
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
: ExternalInstallMenuAlert(service, extension),
delegate_(delegate),
- prompt_(&prompt) {
+ prompt_(prompt) {
}
ExternalInstallGlobalError::~ExternalInstallGlobalError() {
« no previous file with comments | « chrome/browser/extensions/extension_install_prompt.cc ('k') | chrome/browser/extensions/webstore_inline_installer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698