summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-17 18:50:01 +0000
committerrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-17 18:50:01 +0000
commitd382baa5eb8e2c1a7b86101844bb42b68d936ac0 (patch)
tree4c503b725b80ae8b198cc0dd326b631462d41cd8
parent9e3074b4fc36b51906c94592703e6733058ae92d (diff)
downloadchromium_src-d382baa5eb8e2c1a7b86101844bb42b68d936ac0.zip
chromium_src-d382baa5eb8e2c1a7b86101844bb42b68d936ac0.tar.gz
chromium_src-d382baa5eb8e2c1a7b86101844bb42b68d936ac0.tar.bz2
Make ExtensionInstallPrompt::Prompt ref-counted
We pass around ExtensionInstallPrompt::Prompt a lot by value and reference, but should probably just have it ref-counted instead. It's an expensive object to copy (which we do far too much right now), and passing around weak references is dangerous (and leads to crashing). TBR=ben@chromium.org (c/b/ui minus c/b/ui/cocoa) TBR=kinaba@chromium.org (c/b/chromeos/file_manager) TBR=koz@chromium.org (c/b/apps) All TBRs are for strictly mechanical changes. Review URL: https://codereview.chromium.org/313203004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@277823 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/apps/ephemeral_app_launcher.cc6
-rw-r--r--chrome/browser/apps/ephemeral_app_launcher.h4
-rw-r--r--chrome/browser/chromeos/file_manager/app_installer.cc6
-rw-r--r--chrome/browser/chromeos/file_manager/app_installer.h4
-rw-r--r--chrome/browser/extensions/extension_install_prompt.cc57
-rw-r--r--chrome/browser/extensions/extension_install_prompt.h20
-rw-r--r--chrome/browser/extensions/external_install_ui.cc25
-rw-r--r--chrome/browser/extensions/webstore_inline_installer.cc6
-rw-r--r--chrome/browser/extensions/webstore_inline_installer.h4
-rw-r--r--chrome/browser/extensions/webstore_inline_installer_browsertest.cc2
-rw-r--r--chrome/browser/extensions/webstore_install_with_prompt.cc8
-rw-r--r--chrome/browser/extensions/webstore_install_with_prompt.h2
-rw-r--r--chrome/browser/extensions/webstore_standalone_installer.cc2
-rw-r--r--chrome/browser/extensions/webstore_standalone_installer.h6
-rw-r--r--chrome/browser/extensions/webstore_startup_installer.cc9
-rw-r--r--chrome/browser/extensions/webstore_startup_installer.h4
-rw-r--r--chrome/browser/ui/android/extensions/extension_install_dialog_android.cc2
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h2
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm6
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm4
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h8
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm23
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h6
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm14
-rw-r--r--chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm55
-rw-r--r--chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h2
-rw-r--r--chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm8
-rw-r--r--chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm2
-rw-r--r--chrome/browser/ui/views/extensions/extension_install_dialog_view.cc152
29 files changed, 234 insertions, 215 deletions
diff --git a/chrome/browser/apps/ephemeral_app_launcher.cc b/chrome/browser/apps/ephemeral_app_launcher.cc
index d46942e..90c4482 100644
--- a/chrome/browser/apps/ephemeral_app_launcher.cc
+++ b/chrome/browser/apps/ephemeral_app_launcher.cc
@@ -156,7 +156,7 @@ WebContents* EphemeralAppLauncher::GetWebContents() const {
return web_contents() ? web_contents() : dummy_web_contents_.get();
}
-scoped_ptr<ExtensionInstallPrompt::Prompt>
+scoped_refptr<ExtensionInstallPrompt::Prompt>
EphemeralAppLauncher::CreateInstallPrompt() const {
DCHECK(extension_.get() != NULL);
@@ -165,9 +165,9 @@ EphemeralAppLauncher::CreateInstallPrompt() const {
extensions::PermissionMessages permissions =
extension_->permissions_data()->GetPermissionMessages();
if (permissions.empty())
- return scoped_ptr<ExtensionInstallPrompt::Prompt>();
+ return NULL;
- return make_scoped_ptr(new ExtensionInstallPrompt::Prompt(
+ return make_scoped_refptr(new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::LAUNCH_PROMPT));
}
diff --git a/chrome/browser/apps/ephemeral_app_launcher.h b/chrome/browser/apps/ephemeral_app_launcher.h
index 92a82a5..a5f62bb 100644
--- a/chrome/browser/apps/ephemeral_app_launcher.h
+++ b/chrome/browser/apps/ephemeral_app_launcher.h
@@ -70,8 +70,8 @@ class EphemeralAppLauncher : public extensions::WebstoreStandaloneInstaller,
virtual bool ShouldShowPostInstallUI() const OVERRIDE;
virtual bool ShouldShowAppInstalledBubble() const OVERRIDE;
virtual content::WebContents* GetWebContents() const OVERRIDE;
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt>
- CreateInstallPrompt() const OVERRIDE;
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const OVERRIDE;
virtual bool CheckInlineInstallPermitted(
const base::DictionaryValue& webstore_data,
std::string* error) const OVERRIDE;
diff --git a/chrome/browser/chromeos/file_manager/app_installer.cc b/chrome/browser/chromeos/file_manager/app_installer.cc
index 637bc2f..65265a4 100644
--- a/chrome/browser/chromeos/file_manager/app_installer.cc
+++ b/chrome/browser/chromeos/file_manager/app_installer.cc
@@ -62,9 +62,9 @@ const GURL& AppInstaller::GetRequestorURL() const {
return GURL::EmptyGURL();
}
-scoped_ptr<ExtensionInstallPrompt::Prompt>
+scoped_refptr<ExtensionInstallPrompt::Prompt>
AppInstaller::CreateInstallPrompt() const {
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
@@ -72,7 +72,7 @@ AppInstaller::CreateInstallPrompt() const {
show_user_count(),
average_rating(),
rating_count());
- return prompt.Pass();
+ return prompt;
}
bool AppInstaller::ShouldShowPostInstallUI() const {
diff --git a/chrome/browser/chromeos/file_manager/app_installer.h b/chrome/browser/chromeos/file_manager/app_installer.h
index efeff78..e2e6b189 100644
--- a/chrome/browser/chromeos/file_manager/app_installer.h
+++ b/chrome/browser/chromeos/file_manager/app_installer.h
@@ -42,8 +42,8 @@ class AppInstaller
virtual bool ShouldShowPostInstallUI() const OVERRIDE;
virtual bool ShouldShowAppInstalledBubble() const OVERRIDE;
virtual content::WebContents* GetWebContents() const OVERRIDE;
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt>
- CreateInstallPrompt() const OVERRIDE;
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const OVERRIDE;
virtual bool CheckInlineInstallPermitted(
const base::DictionaryValue& webstore_data,
std::string* error) const OVERRIDE;
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index f0ba3c7..87ecb02 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -493,8 +493,8 @@ ExtensionInstallPrompt::ExtensionInstallPrompt(content::WebContents* contents)
bundle_(NULL),
install_ui_(ExtensionInstallUI::Create(ProfileForWebContents(contents))),
show_params_(contents),
- delegate_(NULL),
- prompt_(UNSET_PROMPT_TYPE) {}
+ delegate_(NULL) {
+}
ExtensionInstallPrompt::ExtensionInstallPrompt(
Profile* profile,
@@ -505,8 +505,8 @@ ExtensionInstallPrompt::ExtensionInstallPrompt(
bundle_(NULL),
install_ui_(ExtensionInstallUI::Create(profile)),
show_params_(native_window, navigator),
- delegate_(NULL),
- prompt_(UNSET_PROMPT_TYPE) {}
+ delegate_(NULL) {
+}
ExtensionInstallPrompt::~ExtensionInstallPrompt() {
}
@@ -518,7 +518,7 @@ void ExtensionInstallPrompt::ConfirmBundleInstall(
bundle_ = bundle;
permissions_ = permissions;
delegate_ = bundle;
- prompt_.set_type(BUNDLE_INSTALL_PROMPT);
+ prompt_ = new Prompt(BUNDLE_INSTALL_PROMPT);
ShowConfirmation();
}
@@ -527,7 +527,7 @@ void ExtensionInstallPrompt::ConfirmStandaloneInstall(
Delegate* delegate,
const Extension* extension,
SkBitmap* icon,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<Prompt> prompt) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
permissions_ = extension->permissions_data()->active_permissions();
@@ -558,7 +558,7 @@ void ExtensionInstallPrompt::ConfirmInstall(
extension_ = extension;
permissions_ = extension->permissions_data()->active_permissions();
delegate_ = delegate;
- prompt_.set_type(INSTALL_PROMPT);
+ prompt_ = new Prompt(INSTALL_PROMPT);
show_dialog_callback_ = show_dialog_callback;
// We special-case themes to not show any confirm UI. Instead they are
@@ -591,12 +591,16 @@ void ExtensionInstallPrompt::ConfirmReEnable(Delegate* delegate,
extension->id(), extensions::Extension::DISABLE_REMOTE_INSTALL);
bool is_ephemeral =
extensions::util::IsEphemeralApp(extension->id(), install_ui_->profile());
+
+ PromptType type = UNSET_PROMPT_TYPE;
if (is_ephemeral)
- prompt_.set_type(LAUNCH_PROMPT);
+ type = LAUNCH_PROMPT;
else if (is_remote_install)
- prompt_.set_type(REMOTE_INSTALL_PROMPT);
+ type = REMOTE_INSTALL_PROMPT;
else
- prompt_.set_type(RE_ENABLE_PROMPT);
+ type = RE_ENABLE_PROMPT;
+ prompt_ = new Prompt(type);
+
LoadImageIfNeeded();
}
@@ -604,7 +608,7 @@ void ExtensionInstallPrompt::ConfirmExternalInstall(
Delegate* delegate,
const Extension* extension,
const ShowDialogCallback& show_dialog_callback,
- const Prompt& prompt) {
+ scoped_refptr<Prompt> prompt) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
permissions_ = extension->permissions_data()->active_permissions();
@@ -623,7 +627,7 @@ void ExtensionInstallPrompt::ConfirmPermissions(
extension_ = extension;
permissions_ = permissions;
delegate_ = delegate;
- prompt_.set_type(PERMISSIONS_PROMPT);
+ prompt_ = new Prompt(PERMISSIONS_PROMPT);
LoadImageIfNeeded();
}
@@ -635,9 +639,9 @@ void ExtensionInstallPrompt::ReviewPermissions(
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
permissions_ = extension->permissions_data()->active_permissions();
- prompt_.set_retained_files(retained_file_paths);
+ prompt_ = new Prompt(POST_INSTALL_PERMISSIONS_PROMPT);
+ prompt_->set_retained_files(retained_file_paths);
delegate_ = delegate;
- prompt_.set_type(POST_INSTALL_PERMISSIONS_PROMPT);
LoadImageIfNeeded();
}
@@ -703,29 +707,30 @@ void ExtensionInstallPrompt::LoadImageIfNeeded() {
}
void ExtensionInstallPrompt::ShowConfirmation() {
- if (prompt_.type() == INSTALL_PROMPT)
- prompt_.set_experiment(ExtensionInstallPromptExperiment::Find());
+ if (prompt_->type() == INSTALL_PROMPT)
+ prompt_->set_experiment(ExtensionInstallPromptExperiment::Find());
else
- prompt_.set_experiment(ExtensionInstallPromptExperiment::ControlGroup());
+ prompt_->set_experiment(ExtensionInstallPromptExperiment::ControlGroup());
if (permissions_.get()) {
if (extension_) {
const extensions::PermissionsData* permissions_data =
extension_->permissions_data();
- prompt_.SetPermissions(permissions_data->GetPermissionMessageStrings());
- prompt_.SetPermissionsDetails(
+ prompt_->SetPermissions(permissions_data->GetPermissionMessageStrings());
+ prompt_->SetPermissionsDetails(
permissions_data->GetPermissionMessageDetailsStrings());
} else {
const extensions::PermissionMessageProvider* message_provider =
extensions::PermissionMessageProvider::Get();
- prompt_.SetPermissions(message_provider->GetWarningMessages(
- permissions_, Manifest::TYPE_UNKNOWN));
- prompt_.SetPermissionsDetails(message_provider->GetWarningMessagesDetails(
+ prompt_->SetPermissions(message_provider->GetWarningMessages(
permissions_, Manifest::TYPE_UNKNOWN));
+ prompt_->SetPermissionsDetails(
+ message_provider->GetWarningMessagesDetails(permissions_,
+ Manifest::TYPE_UNKNOWN));
}
}
- switch (prompt_.type()) {
+ switch (prompt_->type()) {
case PERMISSIONS_PROMPT:
case RE_ENABLE_PROMPT:
case INLINE_INSTALL_PROMPT:
@@ -734,12 +739,12 @@ void ExtensionInstallPrompt::ShowConfirmation() {
case LAUNCH_PROMPT:
case POST_INSTALL_PERMISSIONS_PROMPT:
case REMOTE_INSTALL_PROMPT: {
- prompt_.set_extension(extension_);
- prompt_.set_icon(gfx::Image::CreateFrom1xBitmap(icon_));
+ prompt_->set_extension(extension_);
+ prompt_->set_icon(gfx::Image::CreateFrom1xBitmap(icon_));
break;
}
case BUNDLE_INSTALL_PROMPT: {
- prompt_.set_bundle(bundle_);
+ prompt_->set_bundle(bundle_);
break;
}
default:
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_;
diff --git a/chrome/browser/extensions/external_install_ui.cc b/chrome/browser/extensions/external_install_ui.cc
index 901b26c..94cd0e5 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() {
diff --git a/chrome/browser/extensions/webstore_inline_installer.cc b/chrome/browser/extensions/webstore_inline_installer.cc
index f857f94..fcdce7c 100644
--- a/chrome/browser/extensions/webstore_inline_installer.cc
+++ b/chrome/browser/extensions/webstore_inline_installer.cc
@@ -47,9 +47,9 @@ const GURL& WebstoreInlineInstaller::GetRequestorURL() const {
return requestor_url_;
}
-scoped_ptr<ExtensionInstallPrompt::Prompt>
+scoped_refptr<ExtensionInstallPrompt::Prompt>
WebstoreInlineInstaller::CreateInstallPrompt() const {
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
@@ -60,7 +60,7 @@ WebstoreInlineInstaller::CreateInstallPrompt() const {
show_user_count(),
average_rating(),
rating_count());
- return prompt.Pass();
+ return prompt;
}
bool WebstoreInlineInstaller::ShouldShowPostInstallUI() const {
diff --git a/chrome/browser/extensions/webstore_inline_installer.h b/chrome/browser/extensions/webstore_inline_installer.h
index 33b278d..7e7e792 100644
--- a/chrome/browser/extensions/webstore_inline_installer.h
+++ b/chrome/browser/extensions/webstore_inline_installer.h
@@ -47,8 +47,8 @@ class WebstoreInlineInstaller
virtual bool ShouldShowPostInstallUI() const OVERRIDE;
virtual bool ShouldShowAppInstalledBubble() const OVERRIDE;
virtual content::WebContents* GetWebContents() const OVERRIDE;
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt>
- CreateInstallPrompt() const OVERRIDE;
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const OVERRIDE;
virtual bool CheckInlineInstallPermitted(
const base::DictionaryValue& webstore_data,
std::string* error) const OVERRIDE;
diff --git a/chrome/browser/extensions/webstore_inline_installer_browsertest.cc b/chrome/browser/extensions/webstore_inline_installer_browsertest.cc
index 921cb61..7146bdb 100644
--- a/chrome/browser/extensions/webstore_inline_installer_browsertest.cc
+++ b/chrome/browser/extensions/webstore_inline_installer_browsertest.cc
@@ -57,7 +57,7 @@ class ProgrammableInstallPrompt : public ExtensionInstallPrompt {
Delegate* delegate,
const Extension* extension,
SkBitmap* icon,
- const ExtensionInstallPrompt::Prompt& prompt) OVERRIDE {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) OVERRIDE {
delegate_ = delegate;
}
diff --git a/chrome/browser/extensions/webstore_install_with_prompt.cc b/chrome/browser/extensions/webstore_install_with_prompt.cc
index 4a43388..19ab614 100644
--- a/chrome/browser/extensions/webstore_install_with_prompt.cc
+++ b/chrome/browser/extensions/webstore_install_with_prompt.cc
@@ -50,12 +50,10 @@ const GURL& WebstoreInstallWithPrompt::GetRequestorURL() const {
return dummy_requestor_url_;
}
-scoped_ptr<ExtensionInstallPrompt::Prompt>
+scoped_refptr<ExtensionInstallPrompt::Prompt>
WebstoreInstallWithPrompt::CreateInstallPrompt() const {
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
- new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INSTALL_PROMPT));
- return prompt.Pass();
+ return new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INSTALL_PROMPT);
}
scoped_ptr<ExtensionInstallPrompt>
diff --git a/chrome/browser/extensions/webstore_install_with_prompt.h b/chrome/browser/extensions/webstore_install_with_prompt.h
index b170a12..5afc314 100644
--- a/chrome/browser/extensions/webstore_install_with_prompt.h
+++ b/chrome/browser/extensions/webstore_install_with_prompt.h
@@ -54,7 +54,7 @@ class WebstoreInstallWithPrompt : public WebstoreStandaloneInstaller,
virtual bool ShouldShowPostInstallUI() const OVERRIDE;
virtual bool ShouldShowAppInstalledBubble() const OVERRIDE;
virtual content::WebContents* GetWebContents() const OVERRIDE;
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const OVERRIDE;
virtual scoped_ptr<ExtensionInstallPrompt> CreateInstallUI() OVERRIDE;
virtual bool CheckInlineInstallPermitted(
diff --git a/chrome/browser/extensions/webstore_standalone_installer.cc b/chrome/browser/extensions/webstore_standalone_installer.cc
index ae40c9c..7933097 100644
--- a/chrome/browser/extensions/webstore_standalone_installer.cc
+++ b/chrome/browser/extensions/webstore_standalone_installer.cc
@@ -325,7 +325,7 @@ void WebstoreStandaloneInstaller::ShowInstallUI() {
install_ui_ = CreateInstallUI();
install_ui_->ConfirmStandaloneInstall(
- this, localized_extension_for_display_.get(), &icon_, *install_prompt_);
+ this, localized_extension_for_display_.get(), &icon_, install_prompt_);
}
void WebstoreStandaloneInstaller::OnWebStoreDataFetcherDone() {
diff --git a/chrome/browser/extensions/webstore_standalone_installer.h b/chrome/browser/extensions/webstore_standalone_installer.h
index 1013fa7..ecbfa98 100644
--- a/chrome/browser/extensions/webstore_standalone_installer.h
+++ b/chrome/browser/extensions/webstore_standalone_installer.h
@@ -91,8 +91,8 @@ class WebstoreStandaloneInstaller
// Should return an installation prompt with desired properties or NULL if
// no prompt should be shown.
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt>
- CreateInstallPrompt() const = 0;
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const = 0;
// Perform all necessary checks to make sure inline install is permitted,
// e.g. in the extension's properties in the store. The implementation may
@@ -196,7 +196,7 @@ class WebstoreStandaloneInstaller
// Installation dialog and its underlying prompt.
scoped_ptr<ExtensionInstallPrompt> install_ui_;
- scoped_ptr<ExtensionInstallPrompt::Prompt> install_prompt_;
+ scoped_refptr<ExtensionInstallPrompt::Prompt> install_prompt_;
// For fetching webstore JSON data.
scoped_ptr<WebstoreDataFetcher> webstore_data_fetcher_;
diff --git a/chrome/browser/extensions/webstore_startup_installer.cc b/chrome/browser/extensions/webstore_startup_installer.cc
index 283dabc..28ba551 100644
--- a/chrome/browser/extensions/webstore_startup_installer.cc
+++ b/chrome/browser/extensions/webstore_startup_installer.cc
@@ -18,14 +18,13 @@ WebstoreStartupInstaller::WebstoreStartupInstaller(
WebstoreStartupInstaller::~WebstoreStartupInstaller() {}
-scoped_ptr<ExtensionInstallPrompt::Prompt>
+scoped_refptr<ExtensionInstallPrompt::Prompt>
WebstoreStartupInstaller::CreateInstallPrompt() const {
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt;
if (show_prompt_) {
- prompt.reset(new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INSTALL_PROMPT));
+ return new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INSTALL_PROMPT);
}
- return prompt.Pass();
+ return NULL;
}
} // namespace extensions
diff --git a/chrome/browser/extensions/webstore_startup_installer.h b/chrome/browser/extensions/webstore_startup_installer.h
index de6cb6e..b90eba6 100644
--- a/chrome/browser/extensions/webstore_startup_installer.h
+++ b/chrome/browser/extensions/webstore_startup_installer.h
@@ -30,8 +30,8 @@ class WebstoreStartupInstaller : public WebstoreInstallWithPrompt {
virtual ~WebstoreStartupInstaller();
// Implementations of WebstoreStandaloneInstaller Template Method's hooks.
- virtual scoped_ptr<ExtensionInstallPrompt::Prompt>
- CreateInstallPrompt() const OVERRIDE;
+ virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const OVERRIDE;
private:
bool show_prompt_;
diff --git a/chrome/browser/ui/android/extensions/extension_install_dialog_android.cc b/chrome/browser/ui/android/extensions/extension_install_dialog_android.cc
index ab58ee0..e790932 100644
--- a/chrome/browser/ui/android/extensions/extension_install_dialog_android.cc
+++ b/chrome/browser/ui/android/extensions/extension_install_dialog_android.cc
@@ -10,7 +10,7 @@ namespace {
void ShowExtensionInstallDialogImpl(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h
index 18478ab..37e007e 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h
@@ -26,7 +26,7 @@ class ExtensionInstallDialogController :
ExtensionInstallDialogController(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt);
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
virtual ~ExtensionInstallDialogController();
// ExtensionInstallPrompt::Delegate implementation.
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm
index c8edfc8..992c8b9 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/logging.h"
+#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -21,7 +22,7 @@ namespace {
void ShowExtensionInstallDialogImpl(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
// These objects will delete themselves when the dialog closes.
if (!show_params.parent_web_contents) {
new WindowedInstallDialogController(show_params, delegate, prompt);
@@ -36,7 +37,8 @@ void ShowExtensionInstallDialogImpl(
ExtensionInstallDialogController::ExtensionInstallDialogController(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt) : delegate_(delegate) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
+ : delegate_(delegate) {
view_controller_.reset([[ExtensionInstallViewController alloc]
initWithNavigator:show_params.navigator
delegate:this
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm
index 4053c75..d458b0e 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller_browsertest.mm
@@ -31,7 +31,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionInstallDialogControllerTest, BasicTest) {
ExtensionInstallPrompt::ShowParams show_params(tab);
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
ExtensionInstallDialogController* controller =
@@ -56,7 +56,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionInstallDialogControllerTest,
ExtensionInstallPrompt::ShowParams show_params(tab);
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get());
ExtensionInstallDialogController* controller =
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h
index a6d6053..a0738b4 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.h
@@ -5,6 +5,7 @@
#ifndef CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_PROMPT_TEST_UTILS_H_
#define CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_PROMPT_TEST_UTILS_H_
+#include "base/memory/ref_counted.h"
#include "chrome/browser/extensions/extension_install_prompt.h"
namespace chrome {
@@ -42,11 +43,12 @@ scoped_refptr<extensions::Extension> LoadInstallPromptExtension();
gfx::Image LoadInstallPromptIcon();
// Builds a prompt using the given extension.
-ExtensionInstallPrompt::Prompt BuildExtensionInstallPrompt(
+scoped_refptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
extensions::Extension* extension);
-ExtensionInstallPrompt::Prompt BuildExtensionPostInstallPermissionsPrompt(
- extensions::Extension* extension);
+scoped_refptr<ExtensionInstallPrompt::Prompt>
+ BuildExtensionPostInstallPermissionsPrompt(
+ extensions::Extension* extension);
} // namespace chrome
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
index a6cd778..2433752 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils.mm
@@ -71,20 +71,23 @@ gfx::Image LoadInstallPromptIcon() {
file_contents.length());
}
-ExtensionInstallPrompt::Prompt BuildExtensionInstallPrompt(
+scoped_refptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
Extension* extension) {
- ExtensionInstallPrompt::Prompt prompt(ExtensionInstallPrompt::INSTALL_PROMPT);
- prompt.set_extension(extension);
- prompt.set_icon(LoadInstallPromptIcon());
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INSTALL_PROMPT);
+ prompt->set_extension(extension);
+ prompt->set_icon(LoadInstallPromptIcon());
return prompt;
}
-ExtensionInstallPrompt::Prompt BuildExtensionPostInstallPermissionsPrompt(
- Extension* extension) {
- ExtensionInstallPrompt::Prompt prompt(
- ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT);
- prompt.set_extension(extension);
- prompt.set_icon(LoadInstallPromptIcon());
+scoped_refptr<ExtensionInstallPrompt::Prompt>
+BuildExtensionPostInstallPermissionsPrompt(Extension* extension) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT);
+ prompt->set_extension(extension);
+ prompt->set_icon(LoadInstallPromptIcon());
return prompt;
}
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h
index bebb613..2b403a1 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h
@@ -10,7 +10,7 @@
#import <Cocoa/Cocoa.h>
#include "base/mac/scoped_nsobject.h"
-#include "base/memory/scoped_ptr.h"
+#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
#include "chrome/browser/extensions/extension_install_prompt.h"
#include "ui/gfx/image/image_skia.h"
@@ -43,7 +43,7 @@ class PageNavigator;
content::PageNavigator* navigator_; // weak
ExtensionInstallPrompt::Delegate* delegate_; // weak
- scoped_ptr<ExtensionInstallPrompt::Prompt> prompt_;
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
base::scoped_nsobject<NSArray> warnings_;
BOOL isComputingRowHeight_;
@@ -64,7 +64,7 @@ class PageNavigator;
- (id)initWithNavigator:(content::PageNavigator*)navigator
delegate:(ExtensionInstallPrompt::Delegate*)delegate
- prompt:(const ExtensionInstallPrompt::Prompt&)prompt;
+ prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt;
- (IBAction)storeLinkClicked:(id)sender; // Callback for "View details" link.
- (IBAction)cancel:(id)sender;
- (IBAction)ok:(id)sender;
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
index eeb45a3..62c482e 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
@@ -180,17 +180,17 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
- (id)initWithNavigator:(content::PageNavigator*)navigator
delegate:(ExtensionInstallPrompt::Delegate*)delegate
- prompt:(const ExtensionInstallPrompt::Prompt&)prompt {
+ prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt {
// We use a different XIB in the case of bundle installs, installs with
// webstore data, or no permission warnings. These are laid out nicely for
// the data they display.
NSString* nibName = nil;
- if (prompt.type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) {
+ if (prompt->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT) {
nibName = @"ExtensionInstallPromptBundle";
- } else if (prompt.has_webstore_data()) {
+ } else if (prompt->has_webstore_data()) {
nibName = @"ExtensionInstallPromptWebstoreData";
- } else if (!prompt.ShouldShowPermissions() &&
- prompt.GetRetainedFileCount() == 0) {
+ } else if (!prompt->ShouldShowPermissions() &&
+ prompt->GetRetainedFileCount() == 0) {
nibName = @"ExtensionInstallPromptNoWarnings";
} else {
nibName = @"ExtensionInstallPrompt";
@@ -200,8 +200,8 @@ bool HasAttribute(id item, CellAttributesMask attributeMask) {
bundle:base::mac::FrameworkBundle()])) {
navigator_ = navigator;
delegate_ = delegate;
- prompt_.reset(new ExtensionInstallPrompt::Prompt(prompt));
- warnings_.reset([[self buildWarnings:prompt] retain]);
+ prompt_ = prompt;
+ warnings_.reset([[self buildWarnings:*prompt] retain]);
}
return self;
}
diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm
index e23ac4f..d429550 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm
@@ -34,16 +34,16 @@ class ExtensionInstallViewControllerTest : public CocoaProfileTest {
TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) {
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
std::vector<base::string16> permissions;
permissions.push_back(base::UTF8ToUTF16("warning 1"));
- prompt.SetPermissions(permissions);
+ prompt->SetPermissions(permissions);
// No details provided with this permission.
std::vector<base::string16> details;
details.push_back(base::string16());
- prompt.SetPermissionsDetails(details);
+ prompt->SetPermissionsDetails(details);
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithNavigator:browser()
@@ -68,7 +68,7 @@ TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) {
NSOutlineView* outlineView = [controller outlineView];
EXPECT_TRUE(outlineView);
EXPECT_EQ(2, [outlineView numberOfRows]);
- EXPECT_NSEQ(base::SysUTF16ToNSString(prompt.GetPermission(0)),
+ EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermission(0)),
[[outlineView dataSource] outlineView:outlineView
objectValueForTableColumn:nil
byItem:[outlineView itemAtRow:1]]);
@@ -90,15 +90,15 @@ TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) {
TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) {
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
std::vector<base::string16> permissions;
permissions.push_back(base::UTF8ToUTF16("warning 1"));
- prompt.SetPermissions(permissions);
+ prompt->SetPermissions(permissions);
// No details provided with this permission.
std::vector<base::string16> details;
details.push_back(base::string16());
- prompt.SetPermissionsDetails(details);
+ prompt->SetPermissionsDetails(details);
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithNavigator:browser()
@@ -118,23 +118,23 @@ TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) {
chrome::MockExtensionInstallPromptDelegate delegate1;
chrome::MockExtensionInstallPromptDelegate delegate2;
- ExtensionInstallPrompt::Prompt one_warning_prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
std::vector<base::string16> permissions;
permissions.push_back(base::UTF8ToUTF16("warning 1"));
- one_warning_prompt.SetPermissions(permissions);
+ one_warning_prompt->SetPermissions(permissions);
// No details provided with this permission.
std::vector<base::string16> details;
details.push_back(base::string16());
- one_warning_prompt.SetPermissionsDetails(details);
+ one_warning_prompt->SetPermissionsDetails(details);
- ExtensionInstallPrompt::Prompt two_warnings_prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
permissions.push_back(base::UTF8ToUTF16("warning 2"));
- two_warnings_prompt.SetPermissions(permissions);
+ two_warnings_prompt->SetPermissions(permissions);
// No details provided with this permission.
details.push_back(base::string16());
- two_warnings_prompt.SetPermissionsDetails(details);
+ two_warnings_prompt->SetPermissionsDetails(details);
base::scoped_nsobject<ExtensionInstallViewController> controller1(
[[ExtensionInstallViewController alloc]
@@ -168,7 +168,7 @@ TEST_F(ExtensionInstallViewControllerTest, BasicsSkinny) {
chrome::MockExtensionInstallPromptDelegate delegate;
// No warnings should trigger skinny prompt.
- ExtensionInstallPrompt::Prompt no_warnings_prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> no_warnings_prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
base::scoped_nsobject<ExtensionInstallViewController> controller(
@@ -209,11 +209,12 @@ TEST_F(ExtensionInstallViewControllerTest, BasicsInline) {
chrome::MockExtensionInstallPromptDelegate delegate;
// No warnings should trigger skinny prompt.
- ExtensionInstallPrompt::Prompt inline_prompt(
- ExtensionInstallPrompt::INLINE_INSTALL_PROMPT);
- inline_prompt.SetWebstoreData("1,000", true, 3.5, 200);
- inline_prompt.set_extension(extension_.get());
- inline_prompt.set_icon(chrome::LoadInstallPromptIcon());
+ scoped_refptr<ExtensionInstallPrompt::Prompt> inline_prompt =
+ new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INLINE_INSTALL_PROMPT);
+ inline_prompt->SetWebstoreData("1,000", true, 3.5, 200);
+ inline_prompt->set_extension(extension_.get());
+ inline_prompt->set_icon(chrome::LoadInstallPromptIcon());
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithNavigator:browser()
@@ -265,15 +266,15 @@ TEST_F(ExtensionInstallViewControllerTest, BasicsInline) {
TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) {
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get());
std::vector<base::string16> permissions;
permissions.push_back(base::UTF8ToUTF16("warning 1"));
- prompt.SetPermissions(permissions);
+ prompt->SetPermissions(permissions);
// No details provided with this permission.
std::vector<base::string16> details;
details.push_back(base::string16());
- prompt.SetPermissionsDetails(details);
+ prompt->SetPermissionsDetails(details);
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithNavigator:browser()
@@ -293,16 +294,16 @@ TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) {
TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) {
chrome::MockExtensionInstallPromptDelegate delegate;
- ExtensionInstallPrompt::Prompt prompt =
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
std::vector<base::string16> permissions;
permissions.push_back(base::UTF8ToUTF16("warning 1"));
std::vector<base::string16> permissions_details;
permissions_details.push_back(base::UTF8ToUTF16("Detail 1"));
- prompt.SetPermissions(permissions);
- prompt.SetPermissionsDetails(permissions_details);
- prompt.SetIsShowingDetails(
+ prompt->SetPermissions(permissions);
+ prompt->SetPermissionsDetails(permissions_details);
+ prompt->SetIsShowingDetails(
ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true);
base::scoped_nsobject<ExtensionInstallViewController> controller(
@@ -315,7 +316,7 @@ TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) {
NSOutlineView* outlineView = [controller outlineView];
EXPECT_TRUE(outlineView);
EXPECT_EQ(4, [outlineView numberOfRows]);
- EXPECT_NSEQ(base::SysUTF16ToNSString(prompt.GetPermissionsDetails(0)),
+ EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0)),
[[outlineView dataSource] outlineView:outlineView
objectValueForTableColumn:nil
byItem:[outlineView itemAtRow:2]]);
diff --git a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h
index 1a47a78..55dd58c 100644
--- a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h
@@ -24,7 +24,7 @@ class WindowedInstallDialogController
WindowedInstallDialogController(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt);
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
virtual ~WindowedInstallDialogController();
// Invoked by the -[NSWindow windowWillClose:] notification after a dialog
diff --git a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm
index d1128ab..c457869 100644
--- a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm
@@ -21,14 +21,14 @@
- (id)initWithNavigator:(content::PageNavigator*)navigator
delegate:(WindowedInstallDialogController*)delegate
- prompt:(const ExtensionInstallPrompt::Prompt&)prompt;
+ prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt;
@end
WindowedInstallDialogController::WindowedInstallDialogController(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt)
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
: delegate_(delegate) {
install_controller_.reset([[WindowedInstallController alloc]
initWithNavigator:show_params.navigator
@@ -72,7 +72,7 @@ void WindowedInstallDialogController::InstallUIAbort(bool user_initiated) {
- (id)initWithNavigator:(content::PageNavigator*)navigator
delegate:(WindowedInstallDialogController*)delegate
- prompt:(const ExtensionInstallPrompt::Prompt&)prompt {
+ prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt {
base::scoped_nsobject<NSWindow> controlledPanel(
[[NSPanel alloc] initWithContentRect:ui::kWindowSizeDeterminedLater
styleMask:NSTitledWindowMask
@@ -94,7 +94,7 @@ void WindowedInstallDialogController::InstallUIAbort(bool user_initiated) {
if ([window respondsToSelector:@selector(setAnimationBehavior:)])
[window setAnimationBehavior:NSWindowAnimationBehaviorAlertPanel];
- [window setTitle:base::SysUTF16ToNSString(prompt.GetDialogTitle())];
+ [window setTitle:base::SysUTF16ToNSString(prompt->GetDialogTitle())];
NSRect viewFrame = [[installViewController_ view] frame];
[window setFrame:[window frameRectForContentRect:viewFrame]
display:NO];
diff --git a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm
index a8420d3..2993e8a 100644
--- a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller_browsertest.mm
@@ -21,7 +21,7 @@ void TestingShowAppListInstallDialogController(
WindowedInstallDialogController** controller,
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
*controller =
new WindowedInstallDialogController(show_params, delegate, prompt);
}
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
index f0c9fc3..a33e9e2 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
@@ -134,9 +134,10 @@ class ExtensionInstallDialogView : public views::DialogDelegateView,
public views::LinkListener,
public views::ButtonListener {
public:
- ExtensionInstallDialogView(content::PageNavigator* navigator,
- ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt);
+ ExtensionInstallDialogView(
+ content::PageNavigator* navigator,
+ ExtensionInstallPrompt::Delegate* delegate,
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
virtual ~ExtensionInstallDialogView();
// Called when one of the child elements has expanded/collapsed.
@@ -175,15 +176,15 @@ class ExtensionInstallDialogView : public views::DialogDelegateView,
bool single_detail_row) const;
bool is_inline_install() const {
- return prompt_.type() == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT;
+ return prompt_->type() == ExtensionInstallPrompt::INLINE_INSTALL_PROMPT;
}
bool is_bundle_install() const {
- return prompt_.type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT;
+ return prompt_->type() == ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT;
}
bool is_external_install() const {
- return prompt_.type() == ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT;
+ return prompt_->type() == ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT;
}
// Updates the histogram that holds installation accepted/aborted data.
@@ -195,7 +196,7 @@ class ExtensionInstallDialogView : public views::DialogDelegateView,
content::PageNavigator* navigator_;
ExtensionInstallPrompt::Delegate* delegate_;
- const ExtensionInstallPrompt::Prompt& prompt_;
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
// The scroll view containing all the details for the dialog (including all
// collapsible/expandable sections).
@@ -385,7 +386,7 @@ class ExpandableContainerView : public views::View,
void ShowExtensionInstallDialogImpl(
const ExtensionInstallPrompt::ShowParams& show_params,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt) {
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
CreateBrowserModalDialogViews(
new ExtensionInstallDialogView(show_params.navigator, delegate, prompt),
@@ -405,7 +406,7 @@ void CustomScrollableView::Layout() {
ExtensionInstallDialogView::ExtensionInstallDialogView(
content::PageNavigator* navigator,
ExtensionInstallPrompt::Delegate* delegate,
- const ExtensionInstallPrompt::Prompt& prompt)
+ scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
: navigator_(navigator),
delegate_(delegate),
prompt_(prompt),
@@ -496,9 +497,9 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
// the dialog depending on the experiment group.
int left_column_width =
- (prompt.ShouldShowPermissions() +
- prompt.GetRetainedFileCount()) > 0 ?
- kPermissionsLeftColumnWidth : kNoPermissionsLeftColumnWidth;
+ (prompt->ShouldShowPermissions() + prompt->GetRetainedFileCount()) > 0
+ ? kPermissionsLeftColumnWidth
+ : kNoPermissionsLeftColumnWidth;
if (is_bundle_install())
left_column_width = kBundleLeftColumnWidth;
if (is_external_install())
@@ -516,8 +517,8 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
scrollable_, left_column_width, column_set_id, false);
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- if (prompt.ShouldShowPermissions() &&
- prompt.experiment()->should_show_expandable_permission_list()) {
+ if (prompt->ShouldShowPermissions() &&
+ prompt->experiment()->should_show_expandable_permission_list()) {
// If the experiment should hide the permission list initially, create a
// simple layout that contains only the header, extension name and icon.
scrollable_header_only_ = new CustomScrollableView();
@@ -534,28 +535,28 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
// Widen the dialog for experiment with checkboxes so that the information
// label fits the area to the left of the buttons.
- if (prompt.experiment()->show_checkboxes())
+ if (prompt->experiment()->show_checkboxes())
dialog_width += 4 * views::kPanelHorizMargin;
- if (prompt.has_webstore_data()) {
+ if (prompt->has_webstore_data()) {
layout->StartRow(0, column_set_id);
views::View* rating = new views::View();
rating->SetLayoutManager(new views::BoxLayout(
views::BoxLayout::kHorizontal, 0, 0, 0));
layout->AddView(rating);
- prompt.AppendRatingStars(AddResourceIcon, rating);
+ prompt->AppendRatingStars(AddResourceIcon, rating);
const gfx::FontList& small_font_list =
rb.GetFontList(ui::ResourceBundle::SmallFont);
views::Label* rating_count =
- new views::Label(prompt.GetRatingCount(), small_font_list);
+ new views::Label(prompt->GetRatingCount(), small_font_list);
// Add some space between the stars and the rating count.
rating_count->SetBorder(views::Border::CreateEmptyBorder(0, 2, 0, 0));
rating->AddChildView(rating_count);
layout->StartRow(0, column_set_id);
views::Label* user_count =
- new views::Label(prompt.GetUserCount(), small_font_list);
+ new views::Label(prompt->GetUserCount(), small_font_list);
user_count->SetAutoColorReadabilityEnabled(false);
user_count->SetEnabledColor(SK_ColorGRAY);
layout->AddView(user_count);
@@ -569,7 +570,7 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
}
if (is_bundle_install()) {
- BundleInstaller::ItemList items = prompt.bundle()->GetItemsWithState(
+ BundleInstaller::ItemList items = prompt->bundle()->GetItemsWithState(
BundleInstaller::Item::STATE_PENDING);
for (size_t i = 0; i < items.size(); ++i) {
base::string16 extension_name =
@@ -586,10 +587,10 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
}
}
- if (prompt.ShouldShowPermissions()) {
+ if (prompt->ShouldShowPermissions()) {
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
- if (prompt.GetPermissionCount() > 0) {
+ if (prompt->GetPermissionCount() > 0) {
if (is_inline_install()) {
layout->StartRow(0, column_set_id);
layout->AddView(new views::Separator(views::Separator::HORIZONTAL),
@@ -603,31 +604,31 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
// We need to pass the FontList in the constructor, rather than calling
// SetFontList later, because otherwise SizeToFit mis-judges the width
// of the line.
- permissions_header = new views::Label(
- prompt.GetPermissionsHeading(),
- rb.GetFontList(ui::ResourceBundle::MediumFont));
+ permissions_header =
+ new views::Label(prompt->GetPermissionsHeading(),
+ rb.GetFontList(ui::ResourceBundle::MediumFont));
} else {
- permissions_header = new views::Label(prompt.GetPermissionsHeading());
+ permissions_header = new views::Label(prompt->GetPermissionsHeading());
}
permissions_header->SetMultiLine(true);
permissions_header->SetHorizontalAlignment(gfx::ALIGN_LEFT);
permissions_header->SizeToFit(left_column_width);
layout->AddView(permissions_header);
- for (size_t i = 0; i < prompt.GetPermissionCount(); ++i) {
+ for (size_t i = 0; i < prompt->GetPermissionCount(); ++i) {
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
layout->StartRow(0, column_set_id);
views::Label* permission_label =
- new views::Label(prompt.GetPermission(i));
+ new views::Label(prompt->GetPermission(i));
const SkColor kTextHighlight = SK_ColorRED;
const SkColor kBackgroundHighlight = SkColorSetRGB(0xFB, 0xF7, 0xA3);
- if (prompt.experiment()->ShouldHighlightText(
- prompt.GetPermission(i))) {
+ if (prompt->experiment()->ShouldHighlightText(
+ prompt->GetPermission(i))) {
permission_label->SetAutoColorReadabilityEnabled(false);
permission_label->SetEnabledColor(kTextHighlight);
- } else if (prompt.experiment()->ShouldHighlightBackground(
- prompt.GetPermission(i))) {
+ } else if (prompt->experiment()->ShouldHighlightBackground(
+ prompt->GetPermission(i))) {
permission_label->SetLineHeight(18);
permission_label->set_background(
views::Background::CreateSolidBackground(kBackgroundHighlight));
@@ -637,18 +638,18 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
permission_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
permission_label->SizeToFit(left_column_width);
- if (prompt.experiment()->show_checkboxes()) {
+ if (prompt->experiment()->show_checkboxes()) {
layout->AddView(new CheckboxedView(permission_label, this));
++unchecked_boxes_;
} else {
layout->AddView(new BulletedView(permission_label));
}
// If we have more details to provide, show them in collapsed form.
- if (!prompt.GetPermissionsDetails(i).empty()) {
+ if (!prompt->GetPermissionsDetails(i).empty()) {
layout->StartRow(0, column_set_id);
PermissionDetails details;
details.push_back(
- PrepareForDisplay(prompt.GetPermissionsDetails(i), false));
+ PrepareForDisplay(prompt->GetPermissionsDetails(i), false));
ExpandableContainerView* details_container =
new ExpandableContainerView(
this, base::string16(), details, left_column_width,
@@ -656,10 +657,10 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
layout->AddView(details_container);
}
- if (prompt.experiment()->should_show_inline_explanations()) {
+ if (prompt->experiment()->should_show_inline_explanations()) {
base::string16 explanation =
- prompt.experiment()->GetInlineExplanation(
- prompt.GetPermission(i));
+ prompt->experiment()->GetInlineExplanation(
+ prompt->GetPermission(i));
if (!explanation.empty()) {
PermissionDetails details;
details.push_back(explanation);
@@ -669,7 +670,7 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
false, false, true);
// Inline explanations are expanded by default if there is
// no "Show details" link.
- if (!prompt.experiment()->show_details_link())
+ if (!prompt->experiment()->show_details_link())
container->ExpandWithoutAnimation();
layout->StartRow(0, column_set_id);
layout->AddView(container);
@@ -689,13 +690,13 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
}
}
- if (prompt.GetRetainedFileCount()) {
+ if (prompt->GetRetainedFileCount()) {
// Slide in under the permissions, if there are any. If there are
// either, the retained files prompt stretches all the way to the
// right of the dialog. If there are no permissions, the retained
// files prompt just takes up the left column.
int space_for_files = left_column_width;
- if (prompt.GetPermissionCount()) {
+ if (prompt->GetPermissionCount()) {
space_for_files += kIconSize;
views::ColumnSet* column_set = layout->AddColumnSet(++column_set_id);
column_set->AddColumn(views::GridLayout::FILL,
@@ -710,8 +711,7 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
layout->StartRow(0, column_set_id);
views::Label* retained_files_header = NULL;
- retained_files_header =
- new views::Label(prompt.GetRetainedFilesHeading());
+ retained_files_header = new views::Label(prompt->GetRetainedFilesHeading());
retained_files_header->SetMultiLine(true);
retained_files_header->SetHorizontalAlignment(gfx::ALIGN_LEFT);
retained_files_header->SizeToFit(space_for_files);
@@ -719,8 +719,8 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
layout->StartRow(0, column_set_id);
PermissionDetails details;
- for (size_t i = 0; i < prompt.GetRetainedFileCount(); ++i)
- details.push_back(prompt.GetRetainedFile(i));
+ for (size_t i = 0; i < prompt->GetRetainedFileCount(); ++i)
+ details.push_back(prompt->GetRetainedFile(i));
ExpandableContainerView* issue_advice_view =
new ExpandableContainerView(
this, base::string16(), details, space_for_files,
@@ -728,13 +728,13 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
layout->AddView(issue_advice_view);
}
- DCHECK(prompt.type() >= 0);
+ DCHECK(prompt->type() >= 0);
UMA_HISTOGRAM_ENUMERATION("Extensions.InstallPrompt.Type",
- prompt.type(),
+ prompt->type(),
ExtensionInstallPrompt::NUM_PROMPT_TYPES);
- if (prompt.ShouldShowPermissions()) {
- if (prompt.ShouldShowExplanationText()) {
+ if (prompt->ShouldShowPermissions()) {
+ if (prompt->ShouldShowExplanationText()) {
views::ColumnSet* column_set = layout->AddColumnSet(++column_set_id);
column_set->AddColumn(views::GridLayout::LEADING,
views::GridLayout::FILL,
@@ -746,26 +746,26 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
layout->AddPaddingRow(0, 2 * views::kRelatedControlVerticalSpacing);
layout->StartRow(0, column_set_id);
- views::Label* explanation = new views::Label(
- prompt.experiment()->GetExplanationText());
+ views::Label* explanation =
+ new views::Label(prompt->experiment()->GetExplanationText());
explanation->SetMultiLine(true);
explanation->SetHorizontalAlignment(gfx::ALIGN_LEFT);
explanation->SizeToFit(left_column_width + kIconSize);
layout->AddView(explanation);
}
- if (prompt.experiment()->should_show_expandable_permission_list() ||
- (prompt.experiment()->show_details_link() &&
- prompt.experiment()->should_show_inline_explanations() &&
- !inline_explanations_.empty())) {
+ if (prompt->experiment()->should_show_expandable_permission_list() ||
+ (prompt->experiment()->show_details_link() &&
+ prompt->experiment()->should_show_inline_explanations() &&
+ !inline_explanations_.empty())) {
// Don't show the "Show details" link if there are retained
// files. These have their own "Show details" links and having
// multiple levels of links is confusing.
- if (prompt.GetRetainedFileCount() == 0) {
+ if (prompt->GetRetainedFileCount() == 0) {
int text_id =
- prompt.experiment()->should_show_expandable_permission_list() ?
- IDS_EXTENSION_PROMPT_EXPERIMENT_SHOW_PERMISSIONS :
- IDS_EXTENSION_PROMPT_EXPERIMENT_SHOW_DETAILS;
+ prompt->experiment()->should_show_expandable_permission_list()
+ ? IDS_EXTENSION_PROMPT_EXPERIMENT_SHOW_PERMISSIONS
+ : IDS_EXTENSION_PROMPT_EXPERIMENT_SHOW_DETAILS;
show_details_link_ = new views::Link(
l10n_util::GetStringUTF16(text_id));
show_details_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
@@ -776,7 +776,7 @@ ExtensionInstallDialogView::ExtensionInstallDialogView(
}
}
- if (prompt.experiment()->show_checkboxes()) {
+ if (prompt->experiment()->show_checkboxes()) {
checkbox_info_label_ = new views::Label(
l10n_util::GetStringUTF16(
IDS_EXTENSION_PROMPT_EXPERIMENT_CHECKBOX_INFO));
@@ -833,7 +833,7 @@ views::GridLayout* ExtensionInstallDialogView::CreateLayout(
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
views::Label* heading = new views::Label(
- prompt_.GetHeading(), rb.GetFontList(ui::ResourceBundle::MediumFont));
+ prompt_->GetHeading(), rb.GetFontList(ui::ResourceBundle::MediumFont));
heading->SetMultiLine(true);
heading->SetHorizontalAlignment(gfx::ALIGN_LEFT);
heading->SizeToFit(left_column_width);
@@ -841,7 +841,7 @@ views::GridLayout* ExtensionInstallDialogView::CreateLayout(
if (!is_bundle_install()) {
// Scale down to icon size, but allow smaller icons (don't scale up).
- const gfx::ImageSkia* image = prompt_.icon().ToImageSkia();
+ const gfx::ImageSkia* image = prompt_->icon().ToImageSkia();
gfx::Size size(image->width(), image->height());
if (size.width() > kIconSize || size.height() > kIconSize)
size = gfx::Size(kIconSize, kIconSize);
@@ -857,13 +857,13 @@ views::GridLayout* ExtensionInstallDialogView::CreateLayout(
if (is_inline_install()) {
// Also span the rating, user_count and store_link rows.
icon_row_span = 4;
- } else if (prompt_.ShouldShowPermissions()) {
- size_t permission_count = prompt_.GetPermissionCount();
+ } else if (prompt_->ShouldShowPermissions()) {
+ size_t permission_count = prompt_->GetPermissionCount();
// Also span the permission header and each of the permission rows (all
// have a padding row above it). This also works for the 'no special
// permissions' case.
icon_row_span = 3 + permission_count * 2;
- } else if (prompt_.GetRetainedFileCount()) {
+ } else if (prompt_->GetRetainedFileCount()) {
// Also span the permission header and the retained files container.
icon_row_span = 4;
}
@@ -900,7 +900,7 @@ void ExtensionInstallDialogView::ViewHierarchyChanged(
}
int ExtensionInstallDialogView::GetDialogButtons() const {
- int buttons = prompt_.GetDialogButtons();
+ int buttons = prompt_->GetDialogButtons();
// Simply having just an OK button is *not* supported. See comment on function
// GetDialogButtons in dialog_delegate.h for reasons.
DCHECK_GT(buttons & ui::DIALOG_BUTTON_CANCEL, 0);
@@ -911,11 +911,11 @@ base::string16 ExtensionInstallDialogView::GetDialogButtonLabel(
ui::DialogButton button) const {
switch (button) {
case ui::DIALOG_BUTTON_OK:
- return prompt_.GetAcceptButtonLabel();
+ return prompt_->GetAcceptButtonLabel();
case ui::DIALOG_BUTTON_CANCEL:
- return prompt_.HasAbortButtonLabel() ?
- prompt_.GetAbortButtonLabel() :
- l10n_util::GetStringUTF16(IDS_CANCEL);
+ return prompt_->HasAbortButtonLabel()
+ ? prompt_->GetAbortButtonLabel()
+ : l10n_util::GetStringUTF16(IDS_CANCEL);
default:
NOTREACHED();
return base::string16();
@@ -943,7 +943,7 @@ ui::ModalType ExtensionInstallDialogView::GetModalType() const {
}
base::string16 ExtensionInstallDialogView::GetWindowTitle() const {
- return prompt_.GetDialogTitle();
+ return prompt_->GetDialogTitle();
}
void ExtensionInstallDialogView::LinkClicked(views::Link* source,
@@ -952,7 +952,7 @@ void ExtensionInstallDialogView::LinkClicked(views::Link* source,
UpdateLinkActionHistogram(LINK_CLICKED);
// Show details link is used to either reveal whole permission list or to
// reveal inline explanations.
- if (prompt_.experiment()->should_show_expandable_permission_list()) {
+ if (prompt_->experiment()->should_show_expandable_permission_list()) {
gfx::Rect bounds = GetWidget()->GetWindowBoundsInScreen();
int spacing = bounds.height() -
scrollable_header_only_->GetPreferredSize().height();
@@ -968,7 +968,7 @@ void ExtensionInstallDialogView::LinkClicked(views::Link* source,
show_details_link_->SetVisible(false);
} else {
GURL store_url(extension_urls::GetWebstoreItemDetailURLPrefix() +
- prompt_.extension()->id());
+ prompt_->extension()->id());
OpenURLParams params(
store_url, Referrer(), NEW_FOREGROUND_TAB,
content::PAGE_TRANSITION_LINK,
@@ -1017,7 +1017,7 @@ void ExtensionInstallDialogView::Layout() {
}
// Disable accept button if there are unchecked boxes and
// the experiment is on.
- if (prompt_.experiment()->show_checkboxes())
+ if (prompt_->experiment()->show_checkboxes())
GetDialogClientView()->ok_button()->SetEnabled(unchecked_boxes_ == 0);
DialogDelegateView::Layout();
@@ -1043,13 +1043,13 @@ void ExtensionInstallDialogView::ButtonPressed(views::Button* sender,
void ExtensionInstallDialogView::UpdateInstallResultHistogram(bool accepted)
const {
- if (prompt_.type() == ExtensionInstallPrompt::INSTALL_PROMPT)
+ if (prompt_->type() == ExtensionInstallPrompt::INSTALL_PROMPT)
UMA_HISTOGRAM_BOOLEAN("Extensions.InstallPrompt.Accepted", accepted);
}
void ExtensionInstallDialogView::UpdateLinkActionHistogram(int action_type)
const {
- if (prompt_.experiment()->should_show_expandable_permission_list()) {
+ if (prompt_->experiment()->should_show_expandable_permission_list()) {
// The clickable link in the UI is "Show Permissions".
UMA_HISTOGRAM_ENUMERATION(
"Extensions.InstallPromptExperiment.ShowPermissions",