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
content::WebContents* web_contents,
content::BrowserContext* browser_context,
const extensions::Extension* extension,
const base::Callback<void(bool)>& callback)
base::OnceCallback<void(bool)> callback)
: install_prompt_(new ExtensionInstallPrompt(web_contents)),
callback_(callback) {
callback_(std::move(callback)) {
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
browser_context, extension);
install_prompt_->ShowDialog(
base::Bind(&ManagementSetEnabledFunctionInstallPromptDelegate::
OnInstallPromptDone,
weak_factory_.GetWeakPtr()),
base::BindOnce(&ManagementSetEnabledFunctionInstallPromptDelegate::
OnInstallPromptDone,
weak_factory_.GetWeakPtr()),
extension, nullptr,
std::make_unique<ExtensionInstallPrompt::Prompt>(type),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
......@@ -151,7 +151,7 @@ class ManagementSetEnabledFunctionInstallPromptDelegate
// Used for prompting to re-enable items with permissions escalation updates.
std::unique_ptr<ExtensionInstallPrompt> install_prompt_;
base::Callback<void(bool)> callback_;
base::OnceCallback<void(bool)> callback_;
base::WeakPtrFactory<ManagementSetEnabledFunctionInstallPromptDelegate>
weak_factory_{this};
......@@ -442,10 +442,9 @@ ChromeManagementAPIDelegate::SetEnabledFunctionDelegate(
content::WebContents* web_contents,
content::BrowserContext* browser_context,
const extensions::Extension* extension,
const base::Callback<void(bool)>& callback) const {
return std::unique_ptr<ManagementSetEnabledFunctionInstallPromptDelegate>(
new ManagementSetEnabledFunctionInstallPromptDelegate(
web_contents, browser_context, extension, callback));
base::OnceCallback<void(bool)> callback) const {
return std::make_unique<ManagementSetEnabledFunctionInstallPromptDelegate>(
web_contents, browser_context, extension, std::move(callback));
}
std::unique_ptr<extensions::UninstallDialogDelegate>
......
......@@ -30,7 +30,7 @@ class ChromeManagementAPIDelegate : public extensions::ManagementAPIDelegate {
content::WebContents* web_contents,
content::BrowserContext* browser_context,
const extensions::Extension* extension,
const base::Callback<void(bool)>& callback) const override;
base::OnceCallback<void(bool)> callback) const override;
std::unique_ptr<extensions::UninstallDialogDelegate>
UninstallFunctionDelegate(
extensions::ManagementUninstallFunctionBase* function,
......
......@@ -774,7 +774,7 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate {
content::WebContents* web_contents,
content::BrowserContext* browser_context,
const Extension* extension,
const base::Callback<void(bool)>& callback) const override {
base::OnceCallback<void(bool)> callback) const override {
return nullptr;
}
void EnableExtension(content::BrowserContext* context,
......
......@@ -484,7 +484,8 @@ ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() {
AddRef(); // Matched in OnInstallPromptDone().
install_prompt_ = delegate->SetEnabledFunctionDelegate(
GetSenderWebContents(), browser_context(), target_extension,
base::Bind(&ManagementSetEnabledFunction::OnInstallPromptDone, this));
base::BindOnce(&ManagementSetEnabledFunction::OnInstallPromptDone,
this));
return RespondLater();
}
if (HasUnsupportedRequirements(extension_id_)) {
......
......@@ -89,7 +89,7 @@ class ManagementAPIDelegate {
content::WebContents* web_contents,
content::BrowserContext* browser_context,
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|.
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