Index: extensions/browser/extension_pref_value_map_unittest.cc |
diff --git a/extensions/browser/extension_pref_value_map_unittest.cc b/extensions/browser/extension_pref_value_map_unittest.cc |
index 35fa3c6b4bd1cd1d8074b66b852e6b10731cae14..400a22fa0d87f97c860760f97b5d40c1e3cc9648 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) |
+ )); |