[Extensions] Un-refcount ExtensionInstallPrompt::Prompt
There's no reason ExtensionInstallPrompt::Prompt needs to be refcounted, other
than that we were sloppy with passing it around. Un-refcount it and properly
pass ownership.
BUG=567845
[email protected] (mechanical ui/views/extensions changes)
Review URL: https://codereview.chromium.org/1513553002
Cr-Commit-Position: refs/heads/master@{#365342}
diff --git a/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc b/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc
index 27d7938..0de44d6 100644
--- a/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc
+++ b/chrome/browser/extensions/api/dashboard_private/dashboard_private_api.cc
@@ -138,14 +138,14 @@
Release();
return;
}
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::DELEGATED_PERMISSIONS_PROMPT));
prompt->set_delegated_username(details().delegated_user);
install_prompt_.reset(new ExtensionInstallPrompt(web_contents));
install_prompt_->ShowDialog(
- this, dummy_extension_.get(), &icon, prompt,
+ this, dummy_extension_.get(), &icon, prompt.Pass(),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
// Control flow finishes up in InstallUIProceed or InstallUIAbort.
}
diff --git a/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc b/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
index e35de04..c38ee810 100644
--- a/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
+++ b/chrome/browser/extensions/api/developer_private/show_permissions_dialog_helper.cc
@@ -76,12 +76,12 @@
DevicePermissionsManager::Get(profile_)
->GetPermissionMessageStrings(extension_id_);
}
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT));
prompt->set_retained_files(retained_file_paths);
prompt->set_retained_device_messages(retained_device_messages);
- prompt_->ShowDialog(this, extension, nullptr, prompt,
+ prompt_->ShowDialog(this, extension, nullptr, prompt.Pass(),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
diff --git a/chrome/browser/extensions/api/inline_install_private/inline_install_private_api.cc b/chrome/browser/extensions/api/inline_install_private/inline_install_private_api.cc
index 566e6c7..d632a600 100644
--- a/chrome/browser/extensions/api/inline_install_private/inline_install_private_api.cc
+++ b/chrome/browser/extensions/api/inline_install_private/inline_install_private_api.cc
@@ -32,8 +32,8 @@
// webstore.
const GURL& GetRequestorURL() const override { return requestor_url_; }
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt() const
- override;
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ const override;
void OnManifestParsed() override;
@@ -52,16 +52,16 @@
Installer::~Installer() {
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
-Installer::CreateInstallPrompt() const {
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+scoped_ptr<ExtensionInstallPrompt::Prompt> Installer::CreateInstallPrompt()
+ const {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
prompt->SetWebstoreData(localized_user_count(),
show_user_count(),
average_rating(),
rating_count());
- return prompt;
+ return prompt.Pass();
}
diff --git a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
index 2a87d99..4f88b6b79 100644
--- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
+++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
@@ -53,7 +53,8 @@
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
function->browser_context(), extension);
install_prompt_->ShowDialog(
- this, extension, nullptr, new ExtensionInstallPrompt::Prompt(type),
+ this, extension, nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
~ManagementSetEnabledFunctionInstallPromptDelegate() override {}
diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc
index 196a0056..82f7aac 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api.cc
@@ -250,8 +250,8 @@
install_ui_.reset(new ExtensionInstallPrompt(GetAssociatedWebContents()));
install_ui_->ShowDialog(
this, extension(), nullptr,
- new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::PERMISSIONS_PROMPT),
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::PERMISSIONS_PROMPT)),
requested_permissions_->Clone(),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
diff --git a/chrome/browser/extensions/api/webstore_widget_private/app_installer.cc b/chrome/browser/extensions/api/webstore_widget_private/app_installer.cc
index fbdb041..be0f9d9 100644
--- a/chrome/browser/extensions/api/webstore_widget_private/app_installer.cc
+++ b/chrome/browser/extensions/api/webstore_widget_private/app_installer.cc
@@ -55,18 +55,18 @@
return GURL::EmptyGURL();
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
-AppInstaller::CreateInstallPrompt() const {
+scoped_ptr<ExtensionInstallPrompt::Prompt> AppInstaller::CreateInstallPrompt()
+ const {
if (silent_installation_)
- return NULL;
+ return nullptr;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
prompt->SetWebstoreData(localized_user_count(), show_user_count(),
average_rating(), rating_count());
- return prompt;
+ return prompt.Pass();
}
bool AppInstaller::ShouldShowPostInstallUI() const {
diff --git a/chrome/browser/extensions/api/webstore_widget_private/app_installer.h b/chrome/browser/extensions/api/webstore_widget_private/app_installer.h
index 805cbaa..854b95b9 100644
--- a/chrome/browser/extensions/api/webstore_widget_private/app_installer.h
+++ b/chrome/browser/extensions/api/webstore_widget_private/app_installer.h
@@ -40,7 +40,7 @@
bool ShouldShowPostInstallUI() const override;
bool ShouldShowAppInstalledBubble() const override;
content::WebContents* GetWebContents() const override;
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const override;
bool CheckInlineInstallPermitted(const base::DictionaryValue& webstore_data,
std::string* error) const override;
diff --git a/chrome/browser/extensions/bundle_installer.cc b/chrome/browser/extensions/bundle_installer.cc
index 0be9cb9..30e489d9 100644
--- a/chrome/browser/extensions/bundle_installer.cc
+++ b/chrome/browser/extensions/bundle_installer.cc
@@ -287,18 +287,18 @@
if (browser)
web_contents = browser->tab_strip_model()->GetActiveWebContents();
install_ui_.reset(new ExtensionInstallPrompt(web_contents));
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt;
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt;
if (delegated_username_.empty()) {
- prompt = new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT);
+ prompt.reset(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::BUNDLE_INSTALL_PROMPT));
} else {
- prompt = new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::DELEGATED_BUNDLE_PERMISSIONS_PROMPT);
+ prompt.reset(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::DELEGATED_BUNDLE_PERMISSIONS_PROMPT));
prompt->set_delegated_username(delegated_username_);
}
prompt->set_bundle(this);
install_ui_->ShowDialog(
- this, nullptr, &icon_, prompt, permissions.Pass(),
+ this, nullptr, &icon_, prompt.Pass(), permissions.Pass(),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
}
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index 4d31cbf7..83d6620 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -913,9 +913,10 @@
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
service->profile(), extension());
- client_->ShowDialog(this, extension(), nullptr,
- new ExtensionInstallPrompt::Prompt(type),
- ExtensionInstallPrompt::GetDefaultShowDialogCallback());
+ client_->ShowDialog(
+ this, extension(), nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
+ ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
}
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index cbeae7b..54a13321 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -127,7 +127,8 @@
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
service_->profile(), extension);
install_ui_->ShowDialog(
- this, extension_, nullptr, new ExtensionInstallPrompt::Prompt(type),
+ this, extension_, nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 95e8aef4..6567b07 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -644,7 +644,17 @@
const Extension* extension,
const SkBitmap* icon,
const ShowDialogCallback& show_dialog_callback) {
- ShowDialog(delegate, extension, icon, new Prompt(INSTALL_PROMPT),
+ ShowDialog(delegate, extension, icon,
+ make_scoped_ptr(new Prompt(INSTALL_PROMPT)), show_dialog_callback);
+}
+
+void ExtensionInstallPrompt::ShowDialog(
+ Delegate* delegate,
+ const Extension* extension,
+ const SkBitmap* icon,
+ scoped_ptr<Prompt> prompt,
+ const ShowDialogCallback& show_dialog_callback) {
+ ShowDialog(delegate, extension, icon, prompt.Pass(), nullptr,
show_dialog_callback);
}
@@ -652,23 +662,15 @@
Delegate* delegate,
const Extension* extension,
const SkBitmap* icon,
- const scoped_refptr<Prompt>& prompt,
- const ShowDialogCallback& show_dialog_callback) {
- ShowDialog(delegate, extension, icon, prompt, nullptr, show_dialog_callback);
-}
-
-void ExtensionInstallPrompt::ShowDialog(
- Delegate* delegate,
- const Extension* extension,
- const SkBitmap* icon,
- const scoped_refptr<Prompt>& prompt,
+ scoped_ptr<Prompt> prompt,
scoped_ptr<const PermissionSet> custom_permissions,
const ShowDialogCallback& show_dialog_callback) {
DCHECK(ui_loop_ == base::MessageLoop::current());
+ DCHECK(prompt);
extension_ = extension;
delegate_ = delegate;
SetIcon(icon);
- prompt_ = prompt;
+ prompt_ = prompt.Pass();
custom_permissions_ = custom_permissions.Pass();
show_dialog_callback_ = show_dialog_callback;
@@ -836,7 +838,8 @@
}
if (show_dialog_callback_.is_null())
- GetDefaultShowDialogCallback().Run(show_params_.get(), delegate_, prompt_);
+ GetDefaultShowDialogCallback().Run(show_params_.get(), delegate_,
+ prompt_.Pass());
else
- show_dialog_callback_.Run(show_params_.get(), delegate_, prompt_);
+ show_dialog_callback_.Run(show_params_.get(), delegate_, prompt_.Pass());
}
diff --git a/chrome/browser/extensions/extension_install_prompt.h b/chrome/browser/extensions/extension_install_prompt.h
index 52eb01b..75c8488 100644
--- a/chrome/browser/extensions/extension_install_prompt.h
+++ b/chrome/browser/extensions/extension_install_prompt.h
@@ -98,11 +98,10 @@
// 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.
- // Ref-counted because we pass around the prompt independent of the full
- // ExtensionInstallPrompt.
- class Prompt : public base::RefCountedThreadSafe<Prompt> {
+ class Prompt {
public:
explicit Prompt(PromptType type);
+ ~Prompt();
void SetPermissions(const extensions::PermissionMessages& permissions,
PermissionsType permissions_type);
@@ -202,8 +201,6 @@
std::vector<bool> is_showing_details;
};
- virtual ~Prompt();
-
bool ShouldDisplayRevokeButton() const;
// Returns the InstallPromptPermissions corresponding to
@@ -275,7 +272,7 @@
typedef base::Callback<void(ExtensionInstallPromptShowParams*,
ExtensionInstallPrompt::Delegate*,
- scoped_refptr<ExtensionInstallPrompt::Prompt>)>
+ scoped_ptr<ExtensionInstallPrompt::Prompt>)>
ShowDialogCallback;
// Callback to show the default extension install dialog.
@@ -332,13 +329,13 @@
virtual void ShowDialog(Delegate* delegate,
const extensions::Extension* extension,
const SkBitmap* icon,
- const scoped_refptr<Prompt>& prompt,
+ scoped_ptr<Prompt> prompt,
const ShowDialogCallback& show_dialog_callback);
virtual void ShowDialog(
Delegate* delegate,
const extensions::Extension* extension,
const SkBitmap* icon,
- const scoped_refptr<Prompt>& prompt,
+ scoped_ptr<Prompt> prompt,
scoped_ptr<const extensions::PermissionSet> custom_permissions,
const ShowDialogCallback& show_dialog_callback);
@@ -396,7 +393,7 @@
Delegate* delegate_;
// A pre-filled prompt.
- scoped_refptr<Prompt> prompt_;
+ scoped_ptr<Prompt> prompt_;
// Used to show the confirm dialog.
ShowDialogCallback show_dialog_callback_;
diff --git a/chrome/browser/extensions/extension_install_prompt_browsertest.cc b/chrome/browser/extensions/extension_install_prompt_browsertest.cc
index 57a3e2d5..da055ca 100644
--- a/chrome/browser/extensions/extension_install_prompt_browsertest.cc
+++ b/chrome/browser/extensions/extension_install_prompt_browsertest.cc
@@ -27,10 +27,9 @@
// ExtensionInstallPrompt::ShowDialogCallback which proceeds without showing the
// prompt.
-void TestShowDialogCallback(
- ExtensionInstallPromptShowParams* params,
- ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+void TestShowDialogCallback(ExtensionInstallPromptShowParams* params,
+ ExtensionInstallPrompt::Delegate* delegate,
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
delegate->InstallUIProceed();
}
diff --git a/chrome/browser/extensions/extension_install_prompt_unittest.cc b/chrome/browser/extensions/extension_install_prompt_unittest.cc
index 1fd740e..6911666f 100644
--- a/chrome/browser/extensions/extension_install_prompt_unittest.cc
+++ b/chrome/browser/extensions/extension_install_prompt_unittest.cc
@@ -33,7 +33,7 @@
size_t withheld_permissions_count,
ExtensionInstallPromptShowParams* params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> install_prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> install_prompt) {
ASSERT_TRUE(install_prompt.get());
EXPECT_EQ(regular_permissions_count,
install_prompt->GetPermissionCount(
@@ -86,8 +86,9 @@
base::RunLoop run_loop;
prompt.ShowDialog(
nullptr, // no delegate
- extension.get(), nullptr, new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::PERMISSIONS_PROMPT),
+ extension.get(), nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::PERMISSIONS_PROMPT)),
permission_set.Pass(),
base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(),
1u, // |regular_permissions_count|.
@@ -147,13 +148,13 @@
ExtensionInstallPrompt prompt(factory.CreateWebContents(profile()));
base::RunLoop run_loop;
- scoped_refptr<ExtensionInstallPrompt::Prompt> sub_prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> sub_prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::DELEGATED_PERMISSIONS_PROMPT));
sub_prompt->set_delegated_username("Username");
prompt.ShowDialog(
nullptr, // no delegate
- extension.get(), nullptr, sub_prompt,
+ extension.get(), nullptr, sub_prompt.Pass(),
base::Bind(&VerifyPromptPermissionsCallback, run_loop.QuitClosure(),
2u, // |regular_permissions_count|.
0u)); // |withheld_permissions_count|.
diff --git a/chrome/browser/extensions/extension_reenabler.cc b/chrome/browser/extensions/extension_reenabler.cc
index 5744b26..c957505a 100644
--- a/chrome/browser/extensions/extension_reenabler.cc
+++ b/chrome/browser/extensions/extension_reenabler.cc
@@ -89,9 +89,10 @@
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context, extension.get());
- install_prompt_->ShowDialog(this, extension.get(), nullptr,
- new ExtensionInstallPrompt::Prompt(type),
- show_dialog_callback_);
+ install_prompt_->ShowDialog(
+ this, extension.get(), nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
+ show_dialog_callback_);
}
}
@@ -150,9 +151,10 @@
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context_, extension_.get());
- install_prompt_->ShowDialog(this, extension_.get(), nullptr,
- new ExtensionInstallPrompt::Prompt(type),
- show_dialog_callback_);
+ install_prompt_->ShowDialog(
+ this, extension_.get(), nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
+ show_dialog_callback_);
}
}
diff --git a/chrome/browser/extensions/extension_reenabler_unittest.cc b/chrome/browser/extensions/extension_reenabler_unittest.cc
index 24b074d..43d05b66 100644
--- a/chrome/browser/extensions/extension_reenabler_unittest.cc
+++ b/chrome/browser/extensions/extension_reenabler_unittest.cc
@@ -80,7 +80,7 @@
// The callback to run when a test ExtensionInstallPrompt is ready to show.
void OnShow(ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
DCHECK(!quit_closure_.is_null());
quit_closure_.Run();
quit_closure_ = base::Closure();
diff --git a/chrome/browser/extensions/external_install_error.cc b/chrome/browser/extensions/external_install_error.cc
index 912edda3..8b42cb1 100644
--- a/chrome/browser/extensions/external_install_error.cc
+++ b/chrome/browser/extensions/external_install_error.cc
@@ -75,8 +75,8 @@
// A global error that spawns a bubble when the menu item is clicked.
class ExternalInstallBubbleAlert : public GlobalErrorWithStandardBubble {
public:
- explicit ExternalInstallBubbleAlert(ExternalInstallError* error,
- ExtensionInstallPrompt::Prompt* prompt);
+ ExternalInstallBubbleAlert(ExternalInstallError* error,
+ ExtensionInstallPrompt::Prompt* prompt);
~ExternalInstallBubbleAlert() override;
private:
@@ -101,6 +101,7 @@
ExternalInstallError* error_;
// The Prompt with all information, which we then use to populate the bubble.
+ // Owned by |error|.
ExtensionInstallPrompt::Prompt* prompt_;
DISALLOW_COPY_AND_ASSIGN(ExternalInstallBubbleAlert);
@@ -280,8 +281,8 @@
error_service_(GlobalErrorServiceFactory::GetForProfile(
Profile::FromBrowserContext(browser_context_))),
weak_factory_(this) {
- prompt_ = new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT);
+ prompt_.reset(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::EXTERNAL_INSTALL_PROMPT));
webstore_data_fetcher_.reset(new WebstoreDataFetcher(
this, browser_context_->GetRequestContext(), GURL(), extension_id_));
@@ -332,7 +333,7 @@
install_ui_show_params_.reset(
new ExtensionInstallPromptShowParams(web_contents));
ExtensionInstallPrompt::GetDefaultShowDialogCallback().Run(
- install_ui_show_params_.get(), this, prompt_);
+ install_ui_show_params_.get(), this, prompt_.Pass());
}
const Extension* ExternalInstallError::GetExtension() const {
@@ -381,7 +382,7 @@
install_ui_->ShowDialog(this, GetExtension(),
nullptr, // Force a fetch of the icon.
- prompt_,
+ prompt_.Pass(),
base::Bind(&ExternalInstallError::OnDialogReady,
weak_factory_.GetWeakPtr()));
}
@@ -389,9 +390,9 @@
void ExternalInstallError::OnDialogReady(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* prompt_delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
DCHECK_EQ(this, prompt_delegate);
- prompt_ = prompt;
+ prompt_ = prompt.Pass();
if (alert_type_ == BUBBLE_ALERT) {
global_error_.reset(new ExternalInstallBubbleAlert(this, prompt_.get()));
diff --git a/chrome/browser/extensions/external_install_error.h b/chrome/browser/extensions/external_install_error.h
index c26aa73..ccad2d3d 100644
--- a/chrome/browser/extensions/external_install_error.h
+++ b/chrome/browser/extensions/external_install_error.h
@@ -79,7 +79,7 @@
// shown.
void OnDialogReady(ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* prompt_delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt);
// The associated BrowserContext.
content::BrowserContext* browser_context_;
@@ -99,7 +99,7 @@
// The UI for showing the error.
scoped_ptr<ExtensionInstallPrompt> install_ui_;
scoped_ptr<ExtensionInstallPromptShowParams> install_ui_show_params_;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt_;
// The UI for the given error, which will take the form of either a menu
// alert or a bubble alert (depending on the |alert_type_|.
diff --git a/chrome/browser/extensions/navigation_observer.cc b/chrome/browser/extensions/navigation_observer.cc
index 2682ac4..a7755836 100644
--- a/chrome/browser/extensions/navigation_observer.cc
+++ b/chrome/browser/extensions/navigation_observer.cc
@@ -82,7 +82,8 @@
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(profile_,
extension);
extension_install_prompt_->ShowDialog(
- this, extension, nullptr, new ExtensionInstallPrompt::Prompt(type),
+ this, extension, nullptr,
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
}
diff --git a/chrome/browser/extensions/webstore_inline_installer.cc b/chrome/browser/extensions/webstore_inline_installer.cc
index e0eaf43..b78d53a 100644
--- a/chrome/browser/extensions/webstore_inline_installer.cc
+++ b/chrome/browser/extensions/webstore_inline_installer.cc
@@ -101,9 +101,9 @@
return requestor_url_;
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
+scoped_ptr<ExtensionInstallPrompt::Prompt>
WebstoreInlineInstaller::CreateInstallPrompt() const {
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
@@ -114,7 +114,7 @@
show_user_count(),
average_rating(),
rating_count());
- return prompt;
+ return prompt.Pass();
}
bool WebstoreInlineInstaller::ShouldShowPostInstallUI() const {
diff --git a/chrome/browser/extensions/webstore_inline_installer.h b/chrome/browser/extensions/webstore_inline_installer.h
index 573e7d6..ebdab6a 100644
--- a/chrome/browser/extensions/webstore_inline_installer.h
+++ b/chrome/browser/extensions/webstore_inline_installer.h
@@ -53,7 +53,7 @@
bool ShouldShowPostInstallUI() const override;
bool ShouldShowAppInstalledBubble() const override;
content::WebContents* GetWebContents() const override;
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const override;
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 21f30bb..850f4e4 100644
--- a/chrome/browser/extensions/webstore_inline_installer_browsertest.cc
+++ b/chrome/browser/extensions/webstore_inline_installer_browsertest.cc
@@ -68,7 +68,7 @@
void ShowDialog(Delegate* delegate,
const Extension* extension,
const SkBitmap* icon,
- const scoped_refptr<ExtensionInstallPrompt::Prompt>& prompt,
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt,
const ShowDialogCallback& callback) override {
delegate_ = delegate;
}
diff --git a/chrome/browser/extensions/webstore_install_with_prompt.cc b/chrome/browser/extensions/webstore_install_with_prompt.cc
index b0ddf40..b45a6418 100644
--- a/chrome/browser/extensions/webstore_install_with_prompt.cc
+++ b/chrome/browser/extensions/webstore_install_with_prompt.cc
@@ -54,10 +54,10 @@
return dummy_requestor_url_;
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
+scoped_ptr<ExtensionInstallPrompt::Prompt>
WebstoreInstallWithPrompt::CreateInstallPrompt() const {
- return new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INSTALL_PROMPT);
+ return make_scoped_ptr(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 7166d58..dbabe50fb 100644
--- a/chrome/browser/extensions/webstore_install_with_prompt.h
+++ b/chrome/browser/extensions/webstore_install_with_prompt.h
@@ -55,7 +55,7 @@
bool ShouldShowPostInstallUI() const override;
bool ShouldShowAppInstalledBubble() const override;
content::WebContents* GetWebContents() const override;
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const override;
scoped_ptr<ExtensionInstallPrompt> CreateInstallUI() override;
bool CheckInlineInstallPermitted(const base::DictionaryValue& webstore_data,
diff --git a/chrome/browser/extensions/webstore_reinstaller.cc b/chrome/browser/extensions/webstore_reinstaller.cc
index 340fc2df..278d123 100644
--- a/chrome/browser/extensions/webstore_reinstaller.cc
+++ b/chrome/browser/extensions/webstore_reinstaller.cc
@@ -44,16 +44,16 @@
return GURL::EmptyGURL();
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
+scoped_ptr<ExtensionInstallPrompt::Prompt>
WebstoreReinstaller::CreateInstallPrompt() const {
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
ExtensionInstallPrompt::REPAIR_PROMPT));
prompt->SetWebstoreData(localized_user_count(),
show_user_count(),
average_rating(),
rating_count());
- return prompt;
+ return prompt.Pass();
}
bool WebstoreReinstaller::ShouldShowPostInstallUI() const {
diff --git a/chrome/browser/extensions/webstore_reinstaller.h b/chrome/browser/extensions/webstore_reinstaller.h
index 6927662..efaddb8 100644
--- a/chrome/browser/extensions/webstore_reinstaller.h
+++ b/chrome/browser/extensions/webstore_reinstaller.h
@@ -34,7 +34,7 @@
bool ShouldShowPostInstallUI() const override;
bool ShouldShowAppInstalledBubble() const override;
content::WebContents* GetWebContents() const override;
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const override;
bool CheckInlineInstallPermitted(const base::DictionaryValue& webstore_data,
std::string* error) const override;
diff --git a/chrome/browser/extensions/webstore_standalone_installer.cc b/chrome/browser/extensions/webstore_standalone_installer.cc
index 85fe3e37..8b1edca 100644
--- a/chrome/browser/extensions/webstore_standalone_installer.cc
+++ b/chrome/browser/extensions/webstore_standalone_installer.cc
@@ -406,7 +406,7 @@
install_ui_ = CreateInstallUI();
install_ui_->ShowDialog(
- this, localized_extension.get(), &icon_, install_prompt_,
+ this, localized_extension.get(), &icon_, install_prompt_.Pass(),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
diff --git a/chrome/browser/extensions/webstore_standalone_installer.h b/chrome/browser/extensions/webstore_standalone_installer.h
index af27549f..57f05bdae 100644
--- a/chrome/browser/extensions/webstore_standalone_installer.h
+++ b/chrome/browser/extensions/webstore_standalone_installer.h
@@ -120,7 +120,7 @@
// Should return an installation prompt with desired properties or NULL if
// no prompt should be shown.
- virtual scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ virtual scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const = 0;
// Perform all necessary checks to make sure inline install is permitted,
@@ -225,7 +225,7 @@
// Installation dialog and its underlying prompt.
scoped_ptr<ExtensionInstallPrompt> install_ui_;
- scoped_refptr<ExtensionInstallPrompt::Prompt> install_prompt_;
+ scoped_ptr<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 711e960c..7f0cdba 100644
--- a/chrome/browser/extensions/webstore_startup_installer.cc
+++ b/chrome/browser/extensions/webstore_startup_installer.cc
@@ -19,11 +19,11 @@
WebstoreStartupInstaller::~WebstoreStartupInstaller() {}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
+scoped_ptr<ExtensionInstallPrompt::Prompt>
WebstoreStartupInstaller::CreateInstallPrompt() const {
if (show_prompt_) {
- return new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INSTALL_PROMPT);
+ return make_scoped_ptr(new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INSTALL_PROMPT));
}
return NULL;
}
diff --git a/chrome/browser/extensions/webstore_startup_installer.h b/chrome/browser/extensions/webstore_startup_installer.h
index 2e56901..cfbbf76 100644
--- a/chrome/browser/extensions/webstore_startup_installer.h
+++ b/chrome/browser/extensions/webstore_startup_installer.h
@@ -31,7 +31,7 @@
~WebstoreStartupInstaller() override;
// Implementations of WebstoreStandaloneInstaller Template Method's hooks.
- scoped_refptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt()
const override;
private:
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 6a99ef0..0596b00 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.h
@@ -8,6 +8,7 @@
#import <Cocoa/Cocoa.h>
#include "base/mac/scoped_nsobject.h"
+#include "base/macros.h"
#include "chrome/browser/extensions/extension_install_prompt.h"
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.h"
@@ -31,7 +32,7 @@
ExtensionInstallDialogController(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt);
~ExtensionInstallDialogController() override;
// ExtensionInstallPrompt::Delegate implementation.
@@ -53,6 +54,8 @@
base::scoped_nsobject<ExtensionInstallViewController> view_controller_;
scoped_ptr<ConstrainedWindowMac> constrained_window_;
scoped_ptr<extensions::ExperienceSamplingEvent> sampling_event_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionInstallDialogController);
};
#endif // CHROME_BROWSER_UI_COCOA_EXTENSIONS_EXTENSION_INSTALL_DIALOG_CONTROLLER_H_
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 c901e17..f43b7e6 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller.mm
@@ -26,14 +26,14 @@
void ShowExtensionInstallDialogImpl(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
// These objects will delete themselves when the dialog closes.
if (!show_params->GetParentWebContents()) {
- new WindowedInstallDialogController(show_params, delegate, prompt);
+ new WindowedInstallDialogController(show_params, delegate, prompt.Pass());
return;
}
- new ExtensionInstallDialogController(show_params, delegate, prompt);
+ new ExtensionInstallDialogController(show_params, delegate, prompt.Pass());
}
} // namespace
@@ -41,13 +41,14 @@
ExtensionInstallDialogController::ExtensionInstallDialogController(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt)
: delegate_(delegate) {
+ ExtensionInstallPrompt::PromptType promptType = prompt->type();
view_controller_.reset([[ExtensionInstallViewController alloc]
initWithProfile:show_params->profile()
navigator:show_params->GetParentWebContents()
delegate:this
- prompt:prompt]);
+ prompt:prompt.Pass()]);
base::scoped_nsobject<NSWindow> window([[ConstrainedWindowCustomWindow alloc]
initWithContentRect:[[view_controller_ view] bounds]]);
@@ -59,7 +60,8 @@
this, show_params->GetParentWebContents(), sheet));
std::string event_name = ExperienceSamplingEvent::kExtensionInstallDialog;
- event_name.append(ExtensionInstallPrompt::PromptTypeToString(prompt->type()));
+ event_name.append(
+ ExtensionInstallPrompt::PromptTypeToString(promptType));
sampling_event_ = ExperienceSamplingEvent::Create(event_name);
}
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 9197c055..756ef90 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
@@ -32,13 +32,12 @@
ExtensionInstallPromptShowParams show_params(tab);
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionInstallPrompt(extension_.get());
ExtensionInstallDialogController* controller =
- new ExtensionInstallDialogController(&show_params,
- &delegate,
- prompt);
+ new ExtensionInstallDialogController(&show_params, &delegate,
+ prompt.Pass());
base::scoped_nsobject<NSWindow> window(
[[[controller->view_controller() view] window] retain]);
@@ -57,13 +56,12 @@
ExtensionInstallPromptShowParams show_params(tab);
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt =
chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get());
ExtensionInstallDialogController* controller =
- new ExtensionInstallDialogController(&show_params,
- &delegate,
- prompt);
+ new ExtensionInstallDialogController(&show_params, &delegate,
+ prompt.Pass());
base::scoped_nsobject<NSWindow> window(
[[[controller->view_controller() view] window] retain]);
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 07084e9..a95ba2f 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
@@ -43,12 +43,11 @@
gfx::Image LoadInstallPromptIcon();
// Builds a prompt using the given extension.
-scoped_refptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
+scoped_ptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
extensions::Extension* extension);
-scoped_refptr<ExtensionInstallPrompt::Prompt>
- BuildExtensionPostInstallPermissionsPrompt(
- extensions::Extension* extension);
+scoped_ptr<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 b2e2a70..7fa3edf 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,24 +71,24 @@
file_contents.length());
}
-scoped_refptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
+scoped_ptr<ExtensionInstallPrompt::Prompt> BuildExtensionInstallPrompt(
Extension* extension) {
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INSTALL_PROMPT);
+ ExtensionInstallPrompt::INSTALL_PROMPT));
prompt->set_extension(extension);
prompt->set_icon(LoadInstallPromptIcon());
- return prompt;
+ return prompt.Pass();
}
-scoped_refptr<ExtensionInstallPrompt::Prompt>
+scoped_ptr<ExtensionInstallPrompt::Prompt>
BuildExtensionPostInstallPermissionsPrompt(Extension* extension) {
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT);
+ ExtensionInstallPrompt::POST_INSTALL_PERMISSIONS_PROMPT));
prompt->set_extension(extension);
prompt->set_icon(LoadInstallPromptIcon());
- return prompt;
+ return prompt.Pass();
}
} // namespace chrome
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 170b293d..f88d3dc 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h
@@ -46,7 +46,7 @@
Profile* profile_; // weak
content::PageNavigator* navigator_; // weak
ExtensionInstallPrompt::Delegate* delegate_; // weak
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt_;
base::scoped_nsobject<NSArray> warnings_;
BOOL isComputingRowHeight_;
@@ -68,7 +68,7 @@
- (id)initWithProfile:(Profile*)profile
navigator:(content::PageNavigator*)navigator
delegate:(ExtensionInstallPrompt::Delegate*)delegate
- prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt;
+ prompt:(scoped_ptr<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 7bd7af0..d4bb7b6 100644
--- a/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/extension_install_view_controller.mm
@@ -224,7 +224,7 @@
- (id)initWithProfile:(Profile*)profile
navigator:(content::PageNavigator*)navigator
delegate:(ExtensionInstallPrompt::Delegate*)delegate
- prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt {
+ prompt:(scoped_ptr<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.
@@ -246,8 +246,8 @@
profile_ = profile;
navigator_ = navigator;
delegate_ = delegate;
- prompt_ = prompt;
- warnings_.reset([[self buildWarnings:*prompt] retain]);
+ prompt_ = prompt.Pass();
+ 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 508e312..02c5791 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
@@ -38,8 +38,8 @@
TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) {
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
ExtensionInstallPrompt::PermissionsType type =
ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
@@ -47,12 +47,13 @@
permissions.push_back(PermissionMessage(base::UTF8ToUTF16("warning 1"),
PermissionIDSet()));
prompt->SetPermissions(permissions, type);
+ base::string16 permissionString = prompt->GetPermission(0, type);
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithProfile:profile()
navigator:browser()
delegate:&delegate
- prompt:prompt]);
+ prompt:prompt.Pass()]);
[controller view]; // Force nib load.
@@ -72,7 +73,7 @@
NSOutlineView* outlineView = [controller outlineView];
EXPECT_TRUE(outlineView);
EXPECT_EQ(2, [outlineView numberOfRows]);
- EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermission(0, type)),
+ EXPECT_NSEQ(base::SysUTF16ToNSString(permissionString),
[[outlineView dataSource] outlineView:outlineView
objectValueForTableColumn:nil
byItem:[outlineView itemAtRow:1]]);
@@ -94,8 +95,8 @@
TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) {
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
ExtensionInstallPrompt::PermissionsType type =
ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
@@ -108,7 +109,7 @@
[[ExtensionInstallViewController alloc] initWithProfile:profile()
navigator:browser()
delegate:&delegate
- prompt:prompt]);
+ prompt:prompt.Pass()]);
[controller view]; // Force nib load.
[controller ok:nil];
@@ -123,8 +124,8 @@
chrome::MockExtensionInstallPromptDelegate delegate1;
chrome::MockExtensionInstallPromptDelegate delegate2;
- scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> one_warning_prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
ExtensionInstallPrompt::PermissionsType type =
ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
@@ -133,8 +134,8 @@
PermissionIDSet()));
one_warning_prompt->SetPermissions(permissions, type);
- scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
permissions.push_back(PermissionMessage(base::UTF8ToUTF16("warning 2"),
PermissionIDSet()));
two_warnings_prompt->SetPermissions(permissions, type);
@@ -144,7 +145,7 @@
initWithProfile:profile()
navigator:browser()
delegate:&delegate1
- prompt:one_warning_prompt]);
+ prompt:one_warning_prompt.Pass()]);
[controller1 view]; // Force nib load.
@@ -153,7 +154,7 @@
initWithProfile:profile()
navigator:browser()
delegate:&delegate2
- prompt:two_warnings_prompt]);
+ prompt:two_warnings_prompt.Pass()]);
[controller2 view]; // Force nib load.
@@ -173,15 +174,15 @@
chrome::MockExtensionInstallPromptDelegate delegate;
// No warnings should trigger skinny prompt.
- scoped_refptr<ExtensionInstallPrompt::Prompt> no_warnings_prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> no_warnings_prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc]
initWithProfile:profile()
navigator:browser()
delegate:&delegate
- prompt:no_warnings_prompt]);
+ prompt:no_warnings_prompt.Pass()]);
[controller view]; // Force nib load.
@@ -215,18 +216,19 @@
chrome::MockExtensionInstallPromptDelegate delegate;
// No warnings should trigger skinny prompt.
- scoped_refptr<ExtensionInstallPrompt::Prompt> inline_prompt =
+ scoped_ptr<ExtensionInstallPrompt::Prompt> inline_prompt(
new ExtensionInstallPrompt::Prompt(
- ExtensionInstallPrompt::INLINE_INSTALL_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] initWithProfile:profile()
- navigator:browser()
- delegate:&delegate
- prompt:inline_prompt]);
+ [[ExtensionInstallViewController alloc]
+ initWithProfile:profile()
+ navigator:browser()
+ delegate:&delegate
+ prompt:inline_prompt.Pass()]);
[controller view]; // Force nib load.
@@ -273,8 +275,8 @@
TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) {
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
- chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()));
ExtensionInstallPrompt::PermissionsType type =
ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
@@ -287,7 +289,7 @@
[[ExtensionInstallViewController alloc] initWithProfile:profile()
navigator:browser()
delegate:&delegate
- prompt:prompt]);
+ prompt:prompt.Pass()]);
[controller view]; // Force nib load.
@@ -302,8 +304,8 @@
TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) {
chrome::MockExtensionInstallPromptDelegate delegate;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
- chrome::BuildExtensionInstallPrompt(extension_.get());
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ chrome::BuildExtensionInstallPrompt(extension_.get()));
ExtensionInstallPrompt::PermissionsType type =
ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
@@ -315,19 +317,20 @@
prompt->SetPermissions(permissions, type);
prompt->SetIsShowingDetails(
ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true);
+ base::string16 permissionString = prompt->GetPermissionsDetails(0, type);
base::scoped_nsobject<ExtensionInstallViewController> controller(
[[ExtensionInstallViewController alloc] initWithProfile:profile()
navigator:browser()
delegate:&delegate
- prompt:prompt]);
+ prompt:prompt.Pass()]);
[controller view]; // Force nib load.
NSOutlineView* outlineView = [controller outlineView];
EXPECT_TRUE(outlineView);
EXPECT_EQ(4, [outlineView numberOfRows]);
- EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)),
+ EXPECT_NSEQ(base::SysUTF16ToNSString(permissionString),
[[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 ca787c0a..4e828cf 100644
--- a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h
+++ b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.h
@@ -25,7 +25,7 @@
WindowedInstallDialogController(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt);
~WindowedInstallDialogController() override;
// 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 d6f414f..542a82d 100644
--- a/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm
+++ b/chrome/browser/ui/cocoa/extensions/windowed_install_dialog_controller.mm
@@ -25,20 +25,20 @@
- (id)initWithProfile:(Profile*)profile
navigator:(content::PageNavigator*)navigator
delegate:(WindowedInstallDialogController*)delegate
- prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt;
+ prompt:(scoped_ptr<ExtensionInstallPrompt::Prompt>)prompt;
@end
WindowedInstallDialogController::WindowedInstallDialogController(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt)
: delegate_(delegate) {
install_controller_.reset([[WindowedInstallController alloc]
initWithProfile:show_params->profile()
navigator:show_params->GetParentWebContents()
delegate:this
- prompt:prompt]);
+ prompt:prompt.Pass()]);
[[install_controller_ window] makeKeyAndOrderFront:nil];
}
@@ -78,7 +78,7 @@
- (id)initWithProfile:(Profile*)profile
navigator:(content::PageNavigator*)navigator
delegate:(WindowedInstallDialogController*)delegate
- prompt:(scoped_refptr<ExtensionInstallPrompt::Prompt>)prompt {
+ prompt:(scoped_ptr<ExtensionInstallPrompt::Prompt>)prompt {
base::scoped_nsobject<NSWindow> controlledPanel(
[[NSPanel alloc] initWithContentRect:ui::kWindowSizeDeterminedLater
styleMask:NSTitledWindowMask
@@ -86,11 +86,12 @@
defer:NO]);
if ((self = [super initWithWindow:controlledPanel])) {
dialogController_ = delegate;
+ ExtensionInstallPrompt::Prompt* weakPrompt = prompt.get();
installViewController_.reset([[ExtensionInstallViewController alloc]
initWithProfile:profile
navigator:navigator
delegate:delegate
- prompt:prompt]);
+ prompt:prompt.Pass()]);
NSWindow* window = [self window];
// Ensure the window does not display behind the app launcher window, and is
@@ -101,7 +102,7 @@
if ([window respondsToSelector:@selector(setAnimationBehavior:)])
[window setAnimationBehavior:NSWindowAnimationBehaviorAlertPanel];
- [window setTitle:base::SysUTF16ToNSString(prompt->GetDialogTitle())];
+ [window setTitle:base::SysUTF16ToNSString(weakPrompt->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 29fa9bf..839366e 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
@@ -22,9 +22,9 @@
WindowedInstallDialogController** controller,
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
*controller =
- new WindowedInstallDialogController(show_params, delegate, prompt);
+ new WindowedInstallDialogController(show_params, delegate, prompt.Pass());
}
typedef InProcessBrowserTest WindowedInstallDialogControllerBrowserTest;
diff --git a/chrome/browser/ui/extensions/extension_enable_flow.cc b/chrome/browser/ui/extensions/extension_enable_flow.cc
index e16a2ea..6cc42919 100644
--- a/chrome/browser/ui/extensions/extension_enable_flow.cc
+++ b/chrome/browser/ui/extensions/extension_enable_flow.cc
@@ -118,7 +118,7 @@
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(profile_,
extension);
prompt_->ShowDialog(this, extension, nullptr,
- new ExtensionInstallPrompt::Prompt(type),
+ make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
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 ff1ac90f..e43bd823 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.cc
@@ -102,14 +102,15 @@
void ShowExtensionInstallDialogImpl(
ExtensionInstallPromptShowParams* show_params,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt) {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ bool use_tab_modal_dialog = prompt->ShouldUseTabModalDialog();
ExtensionInstallDialogView* dialog =
new ExtensionInstallDialogView(show_params->profile(),
show_params->GetParentWebContents(),
delegate,
- prompt);
- if (prompt->ShouldUseTabModalDialog()) {
+ prompt.Pass());
+ if (use_tab_modal_dialog) {
content::WebContents* parent_web_contents =
show_params->GetParentWebContents();
if (parent_web_contents)
@@ -198,11 +199,11 @@
Profile* profile,
content::PageNavigator* navigator,
ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt)
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt)
: profile_(profile),
navigator_(navigator),
delegate_(delegate),
- prompt_(prompt),
+ prompt_(prompt.Pass()),
container_(NULL),
scroll_view_(NULL),
handled_result_(false) {
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view.h b/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
index 0e81c85..2f15b36e 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view.h
@@ -38,11 +38,10 @@
class ExtensionInstallDialogView : public views::DialogDelegateView,
public views::LinkListener {
public:
- ExtensionInstallDialogView(
- Profile* profile,
- content::PageNavigator* navigator,
- ExtensionInstallPrompt::Delegate* delegate,
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt);
+ ExtensionInstallDialogView(Profile* profile,
+ content::PageNavigator* navigator,
+ ExtensionInstallPrompt::Delegate* delegate,
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt);
~ExtensionInstallDialogView() override;
// Returns the interior ScrollView of the dialog. This allows us to inspect
@@ -92,7 +91,7 @@
Profile* profile_;
content::PageNavigator* navigator_;
ExtensionInstallPrompt::Delegate* delegate_;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt_;
// The container view that contains all children (heading, icon, webstore
// data, and the scroll view with permissions etc.), excluding the buttons,
diff --git a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
index 752f6a0c..13a1b642 100644
--- a/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
+++ b/chrome/browser/ui/views/extensions/extension_install_dialog_view_browsertest.cc
@@ -56,24 +56,6 @@
++abort_count_;
}
-// This lets us construct the parent for the prompt we're constructing in our
-// tests.
-class MockExtensionInstallPrompt : public ExtensionInstallPrompt {
- public:
- explicit MockExtensionInstallPrompt(content::WebContents* web_contents)
- : ExtensionInstallPrompt(web_contents), prompt_(NULL) {}
- ~MockExtensionInstallPrompt() override {}
- void set_prompt(ExtensionInstallPrompt::Prompt* prompt) {
- prompt_ = prompt;
- }
- ExtensionInstallPrompt::Prompt* get_prompt() {
- return prompt_;
- }
-
- private:
- ExtensionInstallPrompt::Prompt* prompt_;
-};
-
class ExtensionInstallDialogViewTestBase : public ExtensionBrowserTest {
protected:
explicit ExtensionInstallDialogViewTestBase(
@@ -82,17 +64,18 @@
void SetUpOnMainThread() override;
- ExtensionInstallPrompt::Prompt* prompt() { return prompt_.get(); }
+ // Creates and returns an install prompt of |prompt_type_|, optionally setting
+ // |permissions|.
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreatePrompt();
+ scoped_ptr<ExtensionInstallPrompt::Prompt> CreatePrompt(
+ const PermissionMessages& permissions);
+
content::WebContents* web_contents() { return web_contents_; }
MockExtensionInstallPromptDelegate* delegate() { return &delegate_; }
- void SetPromptPermissions(const PermissionMessages& permissions);
- void SetPromptRetainedFiles(std::vector<base::FilePath> files);
-
private:
const extensions::Extension* extension_;
- MockExtensionInstallPrompt* install_prompt_;
- scoped_refptr<ExtensionInstallPrompt::Prompt> prompt_;
+ ExtensionInstallPrompt::PromptType prompt_type_;
content::WebContents* web_contents_;
MockExtensionInstallPromptDelegate delegate_;
@@ -101,11 +84,7 @@
ExtensionInstallDialogViewTestBase::ExtensionInstallDialogViewTestBase(
ExtensionInstallPrompt::PromptType prompt_type)
- : extension_(NULL),
- install_prompt_(NULL),
- prompt_(new ExtensionInstallPrompt::Prompt(prompt_type)),
- web_contents_(NULL) {
-}
+ : extension_(NULL), prompt_type_(prompt_type), web_contents_(NULL) {}
void ExtensionInstallDialogViewTestBase::SetUpOnMainThread() {
ExtensionBrowserTest::SetUpOnMainThread();
@@ -114,29 +93,20 @@
"install_prompt/permissions_scrollbar_regression"));
web_contents_ = browser()->tab_strip_model()->GetWebContentsAt(0);
+}
- install_prompt_ = new MockExtensionInstallPrompt(web_contents_);
- install_prompt_->set_prompt(prompt_.get());
- prompt_->set_extension(extension_);
+scoped_ptr<ExtensionInstallPrompt::Prompt>
+ExtensionInstallDialogViewTestBase::CreatePrompt() {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ new ExtensionInstallPrompt::Prompt(prompt_type_));
+ prompt->set_extension(extension_);
scoped_ptr<ExtensionIconManager> icon_manager(new ExtensionIconManager());
const SkBitmap icon_bitmap = icon_manager->GetIcon(extension_->id());
gfx::Image icon = gfx::Image::CreateFrom1xBitmap(icon_bitmap);
- prompt_->set_icon(icon);
+ prompt->set_icon(icon);
- this->SetPromptPermissions(PermissionMessages());
- this->SetPromptRetainedFiles(std::vector<base::FilePath>());
-}
-
-void ExtensionInstallDialogViewTestBase::SetPromptPermissions(
- const PermissionMessages& permissions) {
- prompt_->SetPermissions(permissions,
- ExtensionInstallPrompt::REGULAR_PERMISSIONS);
-}
-
-void ExtensionInstallDialogViewTestBase::SetPromptRetainedFiles(
- std::vector<base::FilePath> files) {
- prompt_->set_retained_files(files);
+ return prompt.Pass();
}
class ScrollbarTest : public ExtensionInstallDialogViewTestBase {
@@ -144,7 +114,7 @@
ScrollbarTest();
~ScrollbarTest() override {}
- bool IsScrollbarVisible();
+ bool IsScrollbarVisible(scoped_ptr<ExtensionInstallPrompt::Prompt> prompt);
private:
DISALLOW_COPY_AND_ASSIGN(ScrollbarTest);
@@ -155,12 +125,10 @@
ExtensionInstallPrompt::PERMISSIONS_PROMPT) {
}
-bool ScrollbarTest::IsScrollbarVisible() {
+bool ScrollbarTest::IsScrollbarVisible(
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt) {
ExtensionInstallDialogView* dialog = new ExtensionInstallDialogView(
- profile(),
- web_contents(),
- delegate(),
- prompt());
+ profile(), web_contents(), delegate(), prompt.Pass());
// Create the modal view around the install dialog view.
views::Widget* modal = constrained_window::CreateBrowserModalDialogViews(
@@ -181,8 +149,10 @@
permissions.push_back(PermissionMessage(permission_string,
PermissionIDSet()));
}
- this->SetPromptPermissions(permissions);
- ASSERT_TRUE(IsScrollbarVisible()) << "Scrollbar is not visible";
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt = CreatePrompt();
+ prompt->SetPermissions(permissions,
+ ExtensionInstallPrompt::REGULAR_PERMISSIONS);
+ ASSERT_TRUE(IsScrollbarVisible(prompt.Pass())) << "Scrollbar is not visible";
}
// Tests that a scrollbar isn't shown for this regression case.
@@ -193,8 +163,10 @@
PermissionMessages permissions;
permissions.push_back(PermissionMessage(permission_string,
PermissionIDSet()));
- this->SetPromptPermissions(permissions);
- ASSERT_FALSE(IsScrollbarVisible()) << "Scrollbar is visible";
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt = CreatePrompt();
+ prompt->SetPermissions(permissions,
+ ExtensionInstallPrompt::REGULAR_PERMISSIONS);
+ ASSERT_FALSE(IsScrollbarVisible(prompt.Pass())) << "Scrollbar is visible";
}
class ExtensionInstallDialogViewTest
@@ -216,8 +188,8 @@
// The user confirms the install.
MockExtensionInstallPromptDelegate delegate;
scoped_ptr<ExtensionInstallDialogView> dialog(
- new ExtensionInstallDialogView(
- profile(), web_contents(), &delegate, prompt()));
+ new ExtensionInstallDialogView(profile(), web_contents(), &delegate,
+ CreatePrompt()));
views::DialogDelegateView* delegate_view = dialog.get();
delegate_view->Accept();
@@ -232,8 +204,8 @@
// The user cancels the install.
MockExtensionInstallPromptDelegate delegate;
scoped_ptr<ExtensionInstallDialogView> dialog(
- new ExtensionInstallDialogView(
- profile(), web_contents(), &delegate, prompt()));
+ new ExtensionInstallDialogView(profile(), web_contents(), &delegate,
+ CreatePrompt()));
views::DialogDelegateView* delegate_view = dialog.get();
delegate_view->Cancel();
@@ -249,8 +221,8 @@
// proceed or cancel.
MockExtensionInstallPromptDelegate delegate;
scoped_ptr<ExtensionInstallDialogView> dialog(
- new ExtensionInstallDialogView(
- profile(), web_contents(), &delegate, prompt()));
+ new ExtensionInstallDialogView(profile(), web_contents(), &delegate,
+ CreatePrompt()));
dialog.reset();
EXPECT_EQ(1, delegate.abort_count());