Chromium Code Reviews| 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..2181bfc1bdf9cd3f45782abd063141b1da51f7b8 100644 |
| --- a/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc |
| +++ b/chrome/browser/extensions/api/management/chrome_management_api_delegate.cc |
| @@ -41,38 +41,45 @@ |
| 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) { |
| + install_prompt_.reset(new ExtensionInstallPrompt(web_contents)); |
|
asargent_no_longer_on_chrome
2015/12/31 00:45:56
nit: looks like you're initializing install_prompt
Devlin
2016/01/04 22:59:22
Whoops, thanks!
|
| 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: |
| + void OnInstallPromptDone(ExtensionInstallPrompt::Result result) { |
| + callback_.Run(result == ExtensionInstallPrompt::Result::ACCEPTED); |
| } |
| - private: |
| extensions::ManagementSetEnabledFunction* function_; |
|
asargent_no_longer_on_chrome
2015/12/31 00:45:56
Can you get rid of function_? Looks like we aren't
Devlin
2016/01/04 22:59:22
Done.
|
| // 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 +216,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> |