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

Unified Diff: chrome/browser/extensions/extension_install_prompt.h

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/extension_install_prompt.h
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h
index 455701b346415382941046f467d86799ee703b7f..57ed5423979e470f6d47b3d6eecb0e4cf1f2392e 100644
--- a/chrome/browser/extensions/extension_install_prompt.h
+++ b/chrome/browser/extensions/extension_install_prompt.h
@@ -11,6 +11,7 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
+#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/strings/string16.h"
@@ -77,10 +78,11 @@ class ExtensionInstallPrompt
// prompt. Gets populated with raw data and exposes getters for formatted
// strings so that the GTK/views/Cocoa install dialogs don't have to repeat
// that logic.
- class Prompt {
+ // Ref-counted because we pass around the prompt independent of the full
+ // ExtensionInstallPrompt.
+ class Prompt : public base::RefCountedThreadSafe<Prompt> {
public:
explicit Prompt(PromptType type);
- ~Prompt();
// Sets the permission list for this prompt.
void SetPermissions(const std::vector<base::string16>& permissions);
@@ -161,6 +163,10 @@ class ExtensionInstallPrompt
}
private:
+ friend class base::RefCountedThreadSafe<Prompt>;
+
+ virtual ~Prompt();
+
bool ShouldDisplayRevokeFilesButton() const;
PromptType type_;
@@ -198,6 +204,8 @@ class ExtensionInstallPrompt
std::vector<base::FilePath> retained_files_;
scoped_refptr<ExtensionInstallPromptExperiment> experiment_;
+
+ DISALLOW_COPY_AND_ASSIGN(Prompt);
};
static const int kMinExtensionRating = 0;
@@ -234,7 +242,7 @@ class ExtensionInstallPrompt
typedef base::Callback<void(const ExtensionInstallPrompt::ShowParams&,
ExtensionInstallPrompt::Delegate*,
- const ExtensionInstallPrompt::Prompt&)>
+ scoped_refptr<ExtensionInstallPrompt::Prompt>)>
ShowDialogCallback;
// Callback to show the default extension install dialog.
@@ -282,7 +290,7 @@ class ExtensionInstallPrompt
virtual void ConfirmStandaloneInstall(Delegate* delegate,
const extensions::Extension* extension,
SkBitmap* icon,
- const Prompt& prompt);
+ scoped_refptr<Prompt> prompt);
// This is called by the installer to verify whether the installation from
// the webstore should proceed. |show_dialog_callback| is optional and can be
@@ -319,7 +327,7 @@ class ExtensionInstallPrompt
Delegate* delegate,
const extensions::Extension* extension,
const ShowDialogCallback& show_dialog_callback,
- const Prompt& prompt);
+ scoped_refptr<Prompt> prompt);
// This is called by the extension permissions API to verify whether an
// extension may be granted additional permissions.
@@ -395,7 +403,7 @@ class ExtensionInstallPrompt
Delegate* delegate_;
// A pre-filled prompt.
- Prompt prompt_;
+ scoped_refptr<Prompt> prompt_;
// Used to show the confirm dialog.
ShowDialogCallback show_dialog_callback_;
« no previous file with comments | « chrome/browser/chromeos/file_manager/app_installer.cc ('k') | chrome/browser/extensions/extension_install_prompt.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698