From 23a85362dfcde394dd17d7158423dfde35c20ca4 Mon Sep 17 00:00:00 2001 From: "rdevlin.cronin@chromium.org" Date: Mon, 7 Jul 2014 23:26:19 +0000 Subject: Add a withheld permissions model to PermissionsData. Withheld permissions are the permissions which were requested by the extension, but not granted due to how dangerous/powerful they are. Currently, these withheld permissions are only used for all hosts, and only behind the scripts_require_action flag. BUG=362353 Review URL: https://codereview.chromium.org/348313003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281605 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/extensions/extension_util.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'chrome/browser/extensions/extension_util.cc') diff --git a/chrome/browser/extensions/extension_util.cc b/chrome/browser/extensions/extension_util.cc index 6b27885..6d86ca7 100644 --- a/chrome/browser/extensions/extension_util.cc +++ b/chrome/browser/extensions/extension_util.cc @@ -9,6 +9,7 @@ #include "base/values.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_sync_service.h" +#include "chrome/browser/extensions/permissions_updater.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" #include "chrome/common/chrome_switches.h" @@ -183,10 +184,24 @@ bool AllowedScriptingOnAllUrls(const std::string& extension_id, void SetAllowedScriptingOnAllUrls(const std::string& extension_id, content::BrowserContext* context, bool allowed) { + if (allowed == AllowedScriptingOnAllUrls(extension_id, context)) + return; // Nothing to do here. + ExtensionPrefs::Get(context)->UpdateExtensionPref( extension_id, kExtensionAllowedOnAllUrlsPrefName, allowed ? new base::FundamentalValue(true) : NULL); + + const Extension* extension = + ExtensionRegistry::Get(context)->enabled_extensions().GetByID( + extension_id); + if (extension) { + PermissionsUpdater updater(context); + if (allowed) + updater.GrantWithheldImpliedAllHosts(extension); + else + updater.WithholdImpliedAllHosts(extension); + } } bool IsAppLaunchable(const std::string& extension_id, -- cgit v1.1