summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_management_api.h
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-16 22:31:32 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-16 22:31:32 +0000
commitd8c8749b93af8d5b8b2a761313673539234680ef (patch)
treec545342aa8c464585b6801ba53ec223096b2ff02 /chrome/browser/extensions/extension_management_api.h
parentdebb04d07991d559cdd7d24107e3f4f862015d92 (diff)
downloadchromium_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.h25
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");
};