Commit 47af24d0 authored by David Bokan's avatar David Bokan Committed by Chromium LUCI CQ

Convert ChromeManagementAPIDelegate to OnceCallback

The passed callback is stored and called from OnInstallPromptDone which
is itself a callback passed to ShowDialog. ShowDialog is already a
OnceCallback so this method will only be called once (and we convert the
call to BindOnce). Further, we already clear the |callback_| member when
calling it (using std::move) so this can be safely made a OnceCallback.

Bug: 1152268
Change-Id: Ib1ad3d92c239403a35ad9d226304b6f92dfc80d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2601061Reviewed-by: default avatarKaran Bhatia <karandeepb@chromium.org>
Commit-Queue: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#838972}
parent cadca4b2
...@@ -126,16 +126,16 @@ class ManagementSetEnabledFunctionInstallPromptDelegate ...@@ -126,16 +126,16 @@ class ManagementSetEnabledFunctionInstallPromptDelegate
content::WebContents* web_contents, content::WebContents* web_contents,
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const extensions::Extension* extension, const extensions::Extension* extension,
const base::Callback<void(bool)>& callback) base::OnceCallback<void(bool)> callback)
: install_prompt_(new ExtensionInstallPrompt(web_contents)), : install_prompt_(new ExtensionInstallPrompt(web_contents)),
callback_(callback) { callback_(std::move(callback)) {
ExtensionInstallPrompt::PromptType type = ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension( ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context, extension); browser_context, extension);
install_prompt_->ShowDialog( install_prompt_->ShowDialog(
base::Bind(&ManagementSetEnabledFunctionInstallPromptDelegate:: base::BindOnce(&ManagementSetEnabledFunctionInstallPromptDelegate::
OnInstallPromptDone, OnInstallPromptDone,
weak_factory_.GetWeakPtr()), weak_factory_.GetWeakPtr()),
extension, nullptr, extension, nullptr,
std::make_unique<ExtensionInstallPrompt::Prompt>(type), std::make_unique<ExtensionInstallPrompt::Prompt>(type),
ExtensionInstallPrompt::GetDefaultShowDialogCallback()); ExtensionInstallPrompt::GetDefaultShowDialogCallback());
...@@ -151,7 +151,7 @@ class ManagementSetEnabledFunctionInstallPromptDelegate ...@@ -151,7 +151,7 @@ class ManagementSetEnabledFunctionInstallPromptDelegate
// Used for prompting to re-enable items with permissions escalation updates. // Used for prompting to re-enable items with permissions escalation updates.
std::unique_ptr<ExtensionInstallPrompt> install_prompt_; std::unique_ptr<ExtensionInstallPrompt> install_prompt_;
base::Callback<void(bool)> callback_; base::OnceCallback<void(bool)> callback_;
base::WeakPtrFactory<ManagementSetEnabledFunctionInstallPromptDelegate> base::WeakPtrFactory<ManagementSetEnabledFunctionInstallPromptDelegate>
weak_factory_{this}; weak_factory_{this};
...@@ -442,10 +442,9 @@ ChromeManagementAPIDelegate::SetEnabledFunctionDelegate( ...@@ -442,10 +442,9 @@ ChromeManagementAPIDelegate::SetEnabledFunctionDelegate(
content::WebContents* web_contents, content::WebContents* web_contents,
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const extensions::Extension* extension, const extensions::Extension* extension,
const base::Callback<void(bool)>& callback) const { base::OnceCallback<void(bool)> callback) const {
return std::unique_ptr<ManagementSetEnabledFunctionInstallPromptDelegate>( return std::make_unique<ManagementSetEnabledFunctionInstallPromptDelegate>(
new ManagementSetEnabledFunctionInstallPromptDelegate( web_contents, browser_context, extension, std::move(callback));
web_contents, browser_context, extension, callback));
} }
std::unique_ptr<extensions::UninstallDialogDelegate> std::unique_ptr<extensions::UninstallDialogDelegate>
......
...@@ -30,7 +30,7 @@ class ChromeManagementAPIDelegate : public extensions::ManagementAPIDelegate { ...@@ -30,7 +30,7 @@ class ChromeManagementAPIDelegate : public extensions::ManagementAPIDelegate {
content::WebContents* web_contents, content::WebContents* web_contents,
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const extensions::Extension* extension, const extensions::Extension* extension,
const base::Callback<void(bool)>& callback) const override; base::OnceCallback<void(bool)> callback) const override;
std::unique_ptr<extensions::UninstallDialogDelegate> std::unique_ptr<extensions::UninstallDialogDelegate>
UninstallFunctionDelegate( UninstallFunctionDelegate(
extensions::ManagementUninstallFunctionBase* function, extensions::ManagementUninstallFunctionBase* function,
......
...@@ -774,7 +774,7 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate { ...@@ -774,7 +774,7 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate {
content::WebContents* web_contents, content::WebContents* web_contents,
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const Extension* extension, const Extension* extension,
const base::Callback<void(bool)>& callback) const override { base::OnceCallback<void(bool)> callback) const override {
return nullptr; return nullptr;
} }
void EnableExtension(content::BrowserContext* context, void EnableExtension(content::BrowserContext* context,
......
...@@ -484,7 +484,8 @@ ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() { ...@@ -484,7 +484,8 @@ ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() {
AddRef(); // Matched in OnInstallPromptDone(). AddRef(); // Matched in OnInstallPromptDone().
install_prompt_ = delegate->SetEnabledFunctionDelegate( install_prompt_ = delegate->SetEnabledFunctionDelegate(
GetSenderWebContents(), browser_context(), target_extension, GetSenderWebContents(), browser_context(), target_extension,
base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this)); base::BindOnce(&ManagementSetEnabledFunction::OnInstallPromptDone,
this));
return RespondLater(); return RespondLater();
} }
if (HasUnsupportedRequirements(extension_id_)) { if (HasUnsupportedRequirements(extension_id_)) {
......
...@@ -89,7 +89,7 @@ class ManagementAPIDelegate { ...@@ -89,7 +89,7 @@ class ManagementAPIDelegate {
content::WebContents* web_contents, content::WebContents* web_contents,
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const Extension* extension, const Extension* extension,
const base::Callback<void(bool)>& callback) const = 0; base::OnceCallback<void(bool)> callback) const = 0;
// Enables the extension identified by |extension_id|. // Enables the extension identified by |extension_id|.
virtual void EnableExtension(content::BrowserContext* context, virtual void EnableExtension(content::BrowserContext* context,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment