summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/browser/extension_pref_value_map.cc29
-rw-r--r--extensions/browser/extension_pref_value_map.h15
-rw-r--r--extensions/browser/extension_pref_value_map_unittest.cc137
-rw-r--r--extensions/browser/extension_prefs.cc6
-rw-r--r--extensions/common/extension.cc4
-rw-r--r--extensions/common/extension.h1
6 files changed, 132 insertions, 60 deletions
diff --git a/extensions/browser/extension_pref_value_map.cc b/extensions/browser/extension_pref_value_map.cc
index 5cba7e5..0797b24 100644
--- a/extensions/browser/extension_pref_value_map.cc
+++ b/extensions/browser/extension_pref_value_map.cc
@@ -15,6 +15,8 @@ struct ExtensionPrefValueMap::ExtensionEntry {
base::Time install_time;
// Whether extension is enabled in the profile.
bool enabled;
+ // Whether the extension has access to the incognito profile.
+ bool incognito_enabled;
// Extension controlled preferences for the regular profile.
PrefValueMap regular_profile_preferences;
// Extension controlled preferences that should *only* apply to the regular
@@ -74,6 +76,9 @@ bool ExtensionPrefValueMap::CanExtensionControlPref(
return false;
}
+ if (incognito && !ext->second->incognito_enabled)
+ return false;
+
ExtensionEntryMap::const_iterator winner =
GetEffectivePrefValueController(pref_key, incognito, NULL);
if (winner == entries_.end())
@@ -115,7 +120,8 @@ bool ExtensionPrefValueMap::DoesExtensionControlPref(
void ExtensionPrefValueMap::RegisterExtension(const std::string& ext_id,
const base::Time& install_time,
- bool is_enabled) {
+ bool is_enabled,
+ bool is_incognito_enabled) {
if (entries_.find(ext_id) == entries_.end()) {
entries_[ext_id] = new ExtensionEntry;
@@ -124,6 +130,7 @@ void ExtensionPrefValueMap::RegisterExtension(const std::string& ext_id,
}
entries_[ext_id]->enabled = is_enabled;
+ entries_[ext_id]->incognito_enabled = is_incognito_enabled;
}
void ExtensionPrefValueMap::UnregisterExtension(const std::string& ext_id) {
@@ -154,6 +161,22 @@ void ExtensionPrefValueMap::SetExtensionState(const std::string& ext_id,
NotifyPrefValueChanged(keys);
}
+void ExtensionPrefValueMap::SetExtensionIncognitoState(
+ const std::string& ext_id,
+ bool is_incognito_enabled) {
+ ExtensionEntryMap::const_iterator i = entries_.find(ext_id);
+ // This may happen when sync sets the extension state for an
+ // extension that is not installed.
+ if (i == entries_.end())
+ return;
+ if (i->second->incognito_enabled == is_incognito_enabled)
+ return;
+ std::set<std::string> keys; // keys set by this extension
+ GetExtensionControlledKeys(*(i->second), &keys);
+ i->second->incognito_enabled = is_incognito_enabled;
+ NotifyPrefValueChanged(keys);
+}
+
PrefValueMap* ExtensionPrefValueMap::GetExtensionPrefValueMap(
const std::string& ext_id,
ExtensionPrefsScope scope) {
@@ -231,6 +254,7 @@ const base::Value* ExtensionPrefValueMap::GetEffectivePrefValue(
// First search for incognito session only preferences.
if (incognito) {
+ DCHECK(winner->second->incognito_enabled);
const PrefValueMap* prefs = GetExtensionPrefValueMap(
ext_id, extensions::kExtensionPrefsScopeIncognitoSessionOnly);
prefs->GetValue(key, &value);
@@ -274,11 +298,14 @@ ExtensionPrefValueMap::GetEffectivePrefValueController(
const std::string& ext_id = i->first;
const base::Time& install_time = i->second->install_time;
const bool enabled = i->second->enabled;
+ const bool incognito_enabled = i->second->incognito_enabled;
if (!enabled)
continue;
if (install_time < winners_install_time)
continue;
+ if (incognito && !incognito_enabled)
+ continue;
const base::Value* value = NULL;
const PrefValueMap* prefs = GetExtensionPrefValueMap(
diff --git a/extensions/browser/extension_pref_value_map.h b/extensions/browser/extension_pref_value_map.h
index 48f30d9..c0e48cc 100644
--- a/extensions/browser/extension_pref_value_map.h
+++ b/extensions/browser/extension_pref_value_map.h
@@ -95,8 +95,9 @@ class ExtensionPrefValueMap : public BrowserContextKeyedService {
extensions::ExtensionPrefsScope scope);
// Returns true if currently no extension with higher precedence controls the
- // preference.
- // Note that the this function does does not consider the existence of
+ // preference. If |incognito| is true and the extension does not have
+ // incognito permission, CanExtensionControlPref returns false.
+ // Note that this function does does not consider the existence of
// policies. An extension is only really able to control a preference if
// PrefService::Preference::IsExtensionModifiable() returns true as well.
bool CanExtensionControlPref(const std::string& extension_id,
@@ -119,7 +120,8 @@ class ExtensionPrefValueMap : public BrowserContextKeyedService {
const std::string& pref_key,
bool* from_incognito) const;
- // Returns the ID of the extension that currently controls this preference.
+ // Returns the ID of the extension that currently controls this preference
+ // for a regular profile. Incognito settings are ignored.
// Returns an empty string if this preference is not controlled by an
// extension.
std::string GetExtensionControllingPref(const std::string& pref_key) const;
@@ -130,7 +132,8 @@ class ExtensionPrefValueMap : public BrowserContextKeyedService {
// Registers the time when an extension |ext_id| is installed.
void RegisterExtension(const std::string& ext_id,
const base::Time& install_time,
- bool is_enabled);
+ bool is_enabled,
+ bool is_incognito_enabled);
// Deletes all entries related to extension |ext_id|.
void UnregisterExtension(const std::string& ext_id);
@@ -139,6 +142,10 @@ class ExtensionPrefValueMap : public BrowserContextKeyedService {
// visible.
void SetExtensionState(const std::string& ext_id, bool is_enabled);
+ // Sets whether the extension has permission to access incognito state.
+ void SetExtensionIncognitoState(const std::string& ext_id,
+ bool is_incognito_enabled);
+
// Adds an observer and notifies it about the currently stored keys.
void AddObserver(Observer* observer);
diff --git a/extensions/browser/extension_pref_value_map_unittest.cc b/extensions/browser/extension_pref_value_map_unittest.cc
index 35fa3c6..400a22f 100644
--- a/extensions/browser/extension_pref_value_map_unittest.cc
+++ b/extensions/browser/extension_pref_value_map_unittest.cc
@@ -52,6 +52,13 @@ class ExtensionPrefValueMapTestBase : public BASECLASS {
return string_value;
}
+ // Registers the extension as enabled but without incognito permission.
+ void RegisterExtension(const std::string& ext_id,
+ const base::Time& install_time) {
+ epvm_.RegisterExtension(
+ ext_id, install_time, true /*enabled*/, false /*incognito*/);
+ }
+
protected:
ExtensionPrefValueMap epvm_;
};
@@ -76,21 +83,21 @@ class ExtensionPrefValueMapObserverMock
};
TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValue) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
EXPECT_EQ("val1", GetValue(kPref1, false));
};
TEST_F(ExtensionPrefValueMapTest, GetNotSetPrefValue) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- EXPECT_EQ("", GetValue(kPref1, false));
+ RegisterExtension(kExt1, CreateTime(10));
+ EXPECT_EQ(std::string(), GetValue(kPref1, false));
};
// Make sure the last-installed extension wins for each preference.
TEST_F(ExtensionPrefValueMapTest, Override) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(20), true);
- epvm_.RegisterExtension(kExt3, CreateTime(30), true);
+ RegisterExtension(kExt1, CreateTime(10));
+ RegisterExtension(kExt2, CreateTime(20));
+ RegisterExtension(kExt3, CreateTime(30));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
@@ -109,9 +116,9 @@ TEST_F(ExtensionPrefValueMapTest, Override) {
}
TEST_F(ExtensionPrefValueMapTest, OverrideChecks) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(20), true);
- epvm_.RegisterExtension(kExt3, CreateTime(30), true);
+ RegisterExtension(kExt1, CreateTime(10));
+ RegisterExtension(kExt2, CreateTime(20));
+ RegisterExtension(kExt3, CreateTime(30));
EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL));
EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL));
@@ -131,23 +138,29 @@ TEST_F(ExtensionPrefValueMapTest, OverrideChecks) {
}
TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValueIncognito) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
+ // Check that the value is not propagated until the extension gets incognito
+ // permission.
+ EXPECT_EQ(std::string(), GetValue(kPref1, true));
+ epvm_.SetExtensionIncognitoState(kExt1, true);
EXPECT_EQ("val1", GetValue(kPref1, true));
+ epvm_.SetExtensionIncognitoState(kExt1, false);
+ EXPECT_EQ(std::string(), GetValue(kPref1, true));
}
TEST_F(ExtensionPrefValueMapTest, UninstallOnlyExtension) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.UnregisterExtension(kExt1);
- EXPECT_EQ("", GetValue(kPref1, false));
+ EXPECT_EQ(std::string(), GetValue(kPref1, false));
}
// Tests uninstalling an extension that wasn't winning for any preferences.
TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
+ RegisterExtension(kExt2, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
@@ -163,9 +176,9 @@ TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) {
// Tests uninstalling an extension that was winning for all preferences.
TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(20), true);
- epvm_.RegisterExtension(kExt3, CreateTime(30), true);
+ RegisterExtension(kExt1, CreateTime(10));
+ RegisterExtension(kExt2, CreateTime(20));
+ RegisterExtension(kExt3, CreateTime(30));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
@@ -182,9 +195,9 @@ TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) {
// Tests uninstalling an extension that was winning for only some preferences.
TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(20), true);
- epvm_.RegisterExtension(kExt3, CreateTime(30), true);
+ RegisterExtension(kExt1, CreateTime(10));
+ RegisterExtension(kExt2, CreateTime(20));
+ RegisterExtension(kExt3, CreateTime(30));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
@@ -202,7 +215,7 @@ TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) {
EXPECT_EQ("val3", GetValue(kPref1, false));
EXPECT_EQ("val4", GetValue(kPref2, false));
EXPECT_EQ("val6", GetValue(kPref3, false));
- EXPECT_EQ("", GetValue(kPref4, false));
+ EXPECT_EQ(std::string(), GetValue(kPref4, false));
}
// Tests triggering of notifications to registered observers.
@@ -210,7 +223,7 @@ TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) {
using testing::Mock;
using testing::StrEq;
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
ExtensionPrefValueMapObserverMock observer;
epvm_.AddObserver(&observer);
@@ -253,23 +266,23 @@ TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) {
// Write new value --> no notification after removing observer.
EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0);
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val4"));
Mock::VerifyAndClearExpectations(&observer);
}
// Tests disabling an extension.
TEST_F(ExtensionPrefValueMapTest, DisableExt) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionState(kExt1, false);
- EXPECT_EQ("", GetValue(kPref1, false));
+ EXPECT_EQ(std::string(), GetValue(kPref1, false));
}
// Tests disabling and reenabling an extension.
TEST_F(ExtensionPrefValueMapTest, ReenableExt) {
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
+ RegisterExtension(kExt1, CreateTime(10));
epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
epvm_.SetExtensionState(kExt1, false);
@@ -278,7 +291,9 @@ TEST_F(ExtensionPrefValueMapTest, ReenableExt) {
}
struct OverrideIncognitoTestCase {
- OverrideIncognitoTestCase(int val_ext1_regular,
+ OverrideIncognitoTestCase(bool enable_ext1_in_incognito,
+ bool enable_ext2_in_incognito,
+ int val_ext1_regular,
int val_ext1_regular_only,
int val_ext1_incognito_pers,
int val_ext1_incognito_sess,
@@ -288,7 +303,9 @@ struct OverrideIncognitoTestCase {
int val_ext2_incognito_sess,
int effective_value_regular,
int effective_value_incognito)
- : val_ext1_regular_(val_ext1_regular),
+ : enable_ext1_in_incognito_(enable_ext1_in_incognito),
+ enable_ext2_in_incognito_(enable_ext2_in_incognito),
+ val_ext1_regular_(val_ext1_regular),
val_ext1_regular_only_(val_ext1_regular_only),
val_ext1_incognito_pers_(val_ext1_incognito_pers),
val_ext1_incognito_sess_(val_ext1_incognito_sess),
@@ -299,6 +316,9 @@ struct OverrideIncognitoTestCase {
effective_value_regular_(effective_value_regular),
effective_value_incognito_(effective_value_incognito) {}
+ bool enable_ext1_in_incognito_;
+ bool enable_ext2_in_incognito_;
+
// pers. = persistent
// sess. = session only
int val_ext1_regular_; // pref value of extension 1
@@ -321,7 +341,7 @@ class ExtensionPrefValueMapTestIncognitoTests
TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) {
OverrideIncognitoTestCase test = GetParam();
const char* strings[] = {
- "undefined",
+ "", // undefined
"val1",
"val2",
"val3",
@@ -332,8 +352,11 @@ TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) {
"val8",
};
- epvm_.RegisterExtension(kExt1, CreateTime(10), true);
- epvm_.RegisterExtension(kExt2, CreateTime(20), true);
+ const bool kEnabled = true;
+ epvm_.RegisterExtension(
+ kExt1, CreateTime(10), kEnabled, test.enable_ext1_in_incognito_);
+ epvm_.RegisterExtension(
+ kExt2, CreateTime(20), kEnabled, test.enable_ext2_in_incognito_);
if (test.val_ext1_regular_) {
epvm_.SetExtensionPref(kExt1, kPref1, kRegular,
CreateVal(strings[test.val_ext1_regular_]));
@@ -377,24 +400,42 @@ INSTANTIATE_TEST_CASE_P(
ExtensionPrefValueMapTestIncognitoTestsInstance,
ExtensionPrefValueMapTestIncognitoTests,
testing::Values(
- // e.g. (1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means:
+ // e.g. (true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means:
// ext1 regular is set to "val1", ext2 incognito persistent is set to
// "val7"
// --> the winning regular value is "val1", the winning incognito
// value is "val7".
- OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 0, 0, 1, 1),
- OverrideIncognitoTestCase(1, 2, 0, 0, 0, 0, 0, 0, 2, 1),
- OverrideIncognitoTestCase(1, 0, 3, 0, 0, 0, 0, 0, 1, 3),
- OverrideIncognitoTestCase(1, 0, 0, 4, 0, 0, 0, 0, 1, 4),
- OverrideIncognitoTestCase(1, 0, 3, 4, 0, 0, 0, 0, 1, 4),
- OverrideIncognitoTestCase(1, 2, 3, 0, 0, 0, 0, 0, 2, 3),
- OverrideIncognitoTestCase(1, 0, 0, 0, 5, 0, 0, 0, 5, 5),
- OverrideIncognitoTestCase(1, 2, 3, 0, 5, 0, 0, 0, 5, 5),
- OverrideIncognitoTestCase(1, 0, 0, 0, 0, 6, 0, 0, 6, 1),
- OverrideIncognitoTestCase(1, 0, 3, 0, 5, 6, 0, 0, 6, 5),
- OverrideIncognitoTestCase(1, 0, 0, 4, 5, 6, 0, 0, 6, 5),
- OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 7, 0, 1, 7),
- OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 0, 5, 7),
- OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 0, 8, 5, 8),
- OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 8, 5, 8),
- OverrideIncognitoTestCase(1, 2, 3, 0, 0, 6, 7, 0, 6, 7)));
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1),
+ OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1),
+ OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 0, 0, 0, 0, 1, 3),
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 0, 0, 0, 0, 1, 4),
+ OverrideIncognitoTestCase(true, true, 1, 0, 3, 4, 0, 0, 0, 0, 1, 4),
+ OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 0, 0, 0, 2, 3),
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 5, 0, 0, 0, 5, 5),
+ OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 5, 0, 0, 0, 5, 5),
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 6, 0, 0, 6, 1),
+ OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 5, 6, 0, 0, 6, 5),
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 5, 6, 0, 0, 6, 5),
+ OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7),
+ OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 0, 5, 7),
+ OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 0, 8, 5, 8),
+ OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 8, 5, 8),
+ OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 6, 7, 0, 6, 7),
+ // Same tests as above but w/o incognito permission.
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 0, 0, 0, 0, 1, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 3, 4, 0, 0, 0, 0, 1, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 0, 0, 0, 2, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 5, 0, 0, 0, 5, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 5, 0, 0, 0, 5, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 6, 0, 0, 6, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 5, 6, 0, 0, 6, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 5, 6, 0, 0, 6, 0),
+ OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 7, 0, 1, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 0, 5, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 0, 8, 5, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 8, 5, 0),
+ OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 6, 7, 0, 6, 0)
+ ));
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index 8c26aa3..aaab4cc 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -1036,6 +1036,7 @@ void ExtensionPrefs::SetIsIncognitoEnabled(const std::string& extension_id,
bool enabled) {
UpdateExtensionPref(extension_id, kPrefIncognitoEnabled,
new base::FundamentalValue(enabled));
+ extension_pref_value_map_->SetExtensionIncognitoState(extension_id, enabled);
}
bool ExtensionPrefs::AllowFileAccess(const std::string& extension_id) const {
@@ -1901,9 +1902,10 @@ void ExtensionPrefs::FinishExtensionInfoPrefs(
if (extension_dict->GetInteger(kPrefState, &initial_state)) {
is_enabled = initial_state == Extension::ENABLED;
}
+ bool is_incognito_enabled = IsIncognitoEnabled(extension_id);
- extension_pref_value_map_->RegisterExtension(extension_id, install_time,
- is_enabled);
+ extension_pref_value_map_->RegisterExtension(
+ extension_id, install_time, is_enabled, is_incognito_enabled);
content_settings_store_->RegisterExtension(extension_id, install_time,
is_enabled);
}
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
index d6158c4..8532842 100644
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -450,10 +450,6 @@ bool Extension::can_be_incognito_enabled() const {
return !is_platform_app() || location() == Manifest::COMPONENT;
}
-bool Extension::force_incognito_enabled() const {
- return PermissionsData::HasAPIPermission(this, APIPermission::kProxy);
-}
-
void Extension::AddWebExtentPattern(const URLPattern& pattern) {
// Bookmark apps are permissionless.
if (from_bookmark())
diff --git a/extensions/common/extension.h b/extensions/common/extension.h
index 85062d1..f1fe7d7 100644
--- a/extensions/common/extension.h
+++ b/extensions/common/extension.h
@@ -332,7 +332,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
bool is_legacy_packaged_app() const;
bool is_extension() const;
bool can_be_incognito_enabled() const;
- bool force_incognito_enabled() const;
void AddWebExtentPattern(const URLPattern& pattern);
const URLPatternSet& web_extent() const { return extent_; }