summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_install_prompt.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_install_prompt.h')
-rw-r--r--chrome/browser/extensions/extension_install_prompt.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h
index 455701b..57ed542 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_;