diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-16 22:31:32 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-16 22:31:32 +0000 |
commit | d8c8749b93af8d5b8b2a761313673539234680ef (patch) | |
tree | c545342aa8c464585b6801ba53ec223096b2ff02 /chrome/browser/extensions/extension_management_api.h | |
parent | debb04d07991d559cdd7d24107e3f4f862015d92 (diff) | |
download | chromium_src-d8c8749b93af8d5b8b2a761313673539234680ef.zip chromium_src-d8c8749b93af8d5b8b2a761313673539234680ef.tar.gz chromium_src-d8c8749b93af8d5b8b2a761313673539234680ef.tar.bz2 |
Fix for management API related to escalated permissions disabled extensions
The general approach is to require user gesture and put up the confirmation UI if an extension wants to re-enable a disabled-due-to-permissions-escalation extension.
Also added some new infrastructure for making this easier to test.
(This is re-landing http://codereview.chromium.org/8423069/ which had a compile
error on the cros_tegra2 bot)
BUG=102579
TEST=See bug
TBR=aa@chromium.org
Review URL: http://codereview.chromium.org/8488012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110376 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_management_api.h')
-rw-r--r-- | chrome/browser/extensions/extension_management_api.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extension_management_api.h b/chrome/browser/extensions/extension_management_api.h index d73b407..b7e6b80 100644 --- a/chrome/browser/extensions/extension_management_api.h +++ b/chrome/browser/extensions/extension_management_api.h @@ -8,6 +8,7 @@ #include "base/compiler_specific.h" #include "chrome/browser/extensions/extension_function.h" +#include "chrome/browser/extensions/extension_install_ui.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" @@ -18,6 +19,11 @@ class ExtensionManagementFunction : public SyncExtensionFunction { ExtensionService* service(); }; +class AsyncExtensionManagementFunction : public AsyncExtensionFunction { + protected: + ExtensionService* service(); +}; + class GetAllExtensionsFunction : public ExtensionManagementFunction { virtual ~GetAllExtensionsFunction() {} virtual bool RunImpl() OVERRIDE; @@ -54,9 +60,24 @@ class LaunchAppFunction : public ExtensionManagementFunction { DECLARE_EXTENSION_FUNCTION_NAME("management.launchApp"); }; -class SetEnabledFunction : public ExtensionManagementFunction { - virtual ~SetEnabledFunction() {} +class SetEnabledFunction : public AsyncExtensionManagementFunction, + public ExtensionInstallUI::Delegate { + public: + SetEnabledFunction(); + virtual ~SetEnabledFunction(); virtual bool RunImpl() OVERRIDE; + + protected: + // ExtensionInstalUI::Delegate. + virtual void InstallUIProceed() OVERRIDE; + virtual void InstallUIAbort(bool user_initiated) OVERRIDE; + + private: + std::string extension_id_; + + // Used for prompting to re-enable items with permissions escalation updates. + scoped_ptr<ExtensionInstallUI> install_ui_; + DECLARE_EXTENSION_FUNCTION_NAME("management.setEnabled"); }; |