summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/api/preference
diff options
context:
space:
mode:
authorbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 00:29:15 +0000
committerbattre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-12 00:29:15 +0000
commit6c16475940a16572e1ecd093b96f6ad1e282725a (patch)
tree99a4f01a9b4337f8f93d0e2db9fa989d920c6fa8 /chrome/browser/extensions/api/preference
parentbad70b5e1cac23b0930d8c3008a9a47b302b6a29 (diff)
downloadchromium_src-6c16475940a16572e1ecd093b96f6ad1e282725a.zip
chromium_src-6c16475940a16572e1ecd093b96f6ad1e282725a.tar.gz
chromium_src-6c16475940a16572e1ecd093b96f6ad1e282725a.tar.bz2
Limit scope of settings API configuration and proxy permission
The proxy API permission gave an extension super power: It gained complete incognito permission. This was introduced in r210766 and is reverted here. The reason for r210766 was that a proxy setting for regular mode was propagated into incognito mode. This propagation was based on the assumption that incognito mode inherits most settings from regular mode but has caused lots of confusion and several bug reports. With this CL, extensions can only affect settings of incognito mode if they have incognito permission. BUG=346125,290423 Review URL: https://codereview.chromium.org/184043024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256362 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/api/preference')
-rw-r--r--chrome/browser/extensions/api/preference/preference_api.cc4
-rw-r--r--chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc1
2 files changed, 4 insertions, 1 deletions
diff --git a/chrome/browser/extensions/api/preference/preference_api.cc b/chrome/browser/extensions/api/preference/preference_api.cc
index b72bbb3..bffab60 100644
--- a/chrome/browser/extensions/api/preference/preference_api.cc
+++ b/chrome/browser/extensions/api/preference/preference_api.cc
@@ -454,7 +454,9 @@ void PreferenceAPI::InitExtensionControlledPrefs(
extension_id != extension_ids.end(); ++extension_id) {
base::Time install_time = prefs->GetInstallTime(*extension_id);
bool is_enabled = !prefs->IsExtensionDisabled(*extension_id);
- value_map->RegisterExtension(*extension_id, install_time, is_enabled);
+ bool is_incognito_enabled = prefs->IsIncognitoEnabled(*extension_id);
+ value_map->RegisterExtension(
+ *extension_id, install_time, is_enabled, is_incognito_enabled);
prefs->content_settings_store()->RegisterExtension(
*extension_id, install_time, is_enabled);
diff --git a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
index bd40808..5f2ef28 100644
--- a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
+++ b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
@@ -153,6 +153,7 @@ void ExtensionControlledPrefsTest::EnsureExtensionInstalled(
Extension::ENABLED,
false,
syncer::StringOrdinal());
+ prefs()->SetIsIncognitoEnabled(extension->id(), true);
installed_[i] = true;
break;
}