Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1894)

Unified Diff: chrome/browser/extensions/api/management/chrome_management_api_delegate.cc

Issue 1534123002: [Extensions] Migrate ExtensionInstallPrompt::Delegate to be a callback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
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 2ee92b5bcb9b3897252258bdb69d4ffa6954607a..d15eef3ef929eccfd464bbdcc531cf375757c70e 100644
--- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
+++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/api/management/chrome_management_api_delegate.h"
+#include "base/callback_helpers.h"
#include "base/macros.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/extensions/bookmark_app_helper.h"
@@ -41,38 +42,43 @@
namespace {
class ManagementSetEnabledFunctionInstallPromptDelegate
- : public ExtensionInstallPrompt::Delegate,
- public extensions::InstallPromptDelegate {
+ : public extensions::InstallPromptDelegate {
public:
ManagementSetEnabledFunctionInstallPromptDelegate(
- extensions::ManagementSetEnabledFunction* function,
- const extensions::Extension* extension)
- : function_(function) {
- install_prompt_.reset(
- new ExtensionInstallPrompt(function->GetSenderWebContents()));
+ content::WebContents* web_contents,
+ content::BrowserContext* browser_context,
+ const extensions::Extension* extension,
+ const base::Callback<void(bool)>& callback)
+ : install_prompt_(new ExtensionInstallPrompt(web_contents)),
+ callback_(callback),
+ weak_factory_(this) {
ExtensionInstallPrompt::PromptType type =
ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(
- function->browser_context(), extension);
+ browser_context, extension);
install_prompt_->ShowDialog(
- this, extension, nullptr,
+ base::Bind(&ManagementSetEnabledFunctionInstallPromptDelegate::
+ OnInstallPromptDone,
+ weak_factory_.GetWeakPtr()),
+ extension, nullptr,
make_scoped_ptr(new ExtensionInstallPrompt::Prompt(type)),
ExtensionInstallPrompt::GetDefaultShowDialogCallback());
}
~ManagementSetEnabledFunctionInstallPromptDelegate() override {}
- protected:
- // ExtensionInstallPrompt::Delegate.
- void InstallUIProceed() override { function_->InstallUIProceed(); }
- void InstallUIAbort(bool user_initiated) override {
- function_->InstallUIAbort(user_initiated);
- }
-
private:
- extensions::ManagementSetEnabledFunction* function_;
+ void OnInstallPromptDone(ExtensionInstallPrompt::Result result) {
+ base::ResetAndReturn(&callback_).Run(
+ result == ExtensionInstallPrompt::Result::ACCEPTED);
+ }
// Used for prompting to re-enable items with permissions escalation updates.
scoped_ptr<ExtensionInstallPrompt> install_prompt_;
+ base::Callback<void(bool)> callback_;
+
+ base::WeakPtrFactory<ManagementSetEnabledFunctionInstallPromptDelegate>
+ weak_factory_;
+
DISALLOW_COPY_AND_ASSIGN(ManagementSetEnabledFunctionInstallPromptDelegate);
};
@@ -209,11 +215,13 @@ void ChromeManagementAPIDelegate::
scoped_ptr<extensions::InstallPromptDelegate>
ChromeManagementAPIDelegate::SetEnabledFunctionDelegate(
- extensions::ManagementSetEnabledFunction* function,
- const extensions::Extension* extension) const {
+ content::WebContents* web_contents,
+ content::BrowserContext* browser_context,
+ const extensions::Extension* extension,
+ const base::Callback<void(bool)>& callback) const {
return scoped_ptr<ManagementSetEnabledFunctionInstallPromptDelegate>(
- new ManagementSetEnabledFunctionInstallPromptDelegate(function,
- extension));
+ new ManagementSetEnabledFunctionInstallPromptDelegate(
+ web_contents, browser_context, extension, callback));
}
scoped_ptr<extensions::RequirementsChecker>

Powered by Google App Engine
This is Rietveld 408576698