| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/memory/ref_counted.h" | 6 #include "base/memory/ref_counted.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/prefs/pref_store_observer_mock.h" | 8 #include "base/prefs/pref_store_observer_mock.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "extensions/browser/extension_pref_value_map.h" | 10 #include "extensions/browser/extension_pref_value_map.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 // Returns an empty string if the key is not set. | 45 // Returns an empty string if the key is not set. |
| 46 std::string GetValue(const char * key, bool incognito) const { | 46 std::string GetValue(const char * key, bool incognito) const { |
| 47 const base::Value *value = | 47 const base::Value *value = |
| 48 epvm_.GetEffectivePrefValue(key, incognito, NULL); | 48 epvm_.GetEffectivePrefValue(key, incognito, NULL); |
| 49 std::string string_value; | 49 std::string string_value; |
| 50 if (value) | 50 if (value) |
| 51 value->GetAsString(&string_value); | 51 value->GetAsString(&string_value); |
| 52 return string_value; | 52 return string_value; |
| 53 } | 53 } |
| 54 | 54 |
| 55 // Registers the extension as enabled but without incognito permission. |
| 56 void RegisterExtension(const std::string& ext_id, |
| 57 const base::Time& install_time) { |
| 58 epvm_.RegisterExtension( |
| 59 ext_id, install_time, true /*enabled*/, false /*incognito*/); |
| 60 } |
| 61 |
| 55 protected: | 62 protected: |
| 56 ExtensionPrefValueMap epvm_; | 63 ExtensionPrefValueMap epvm_; |
| 57 }; | 64 }; |
| 58 | 65 |
| 59 class ExtensionPrefValueMapTest | 66 class ExtensionPrefValueMapTest |
| 60 : public ExtensionPrefValueMapTestBase<testing::Test> { | 67 : public ExtensionPrefValueMapTestBase<testing::Test> { |
| 61 }; | 68 }; |
| 62 | 69 |
| 63 // A gmock-ified implementation of PrefStore::Observer. | 70 // A gmock-ified implementation of PrefStore::Observer. |
| 64 class ExtensionPrefValueMapObserverMock | 71 class ExtensionPrefValueMapObserverMock |
| 65 : public ExtensionPrefValueMap::Observer { | 72 : public ExtensionPrefValueMap::Observer { |
| 66 public: | 73 public: |
| 67 ExtensionPrefValueMapObserverMock() {} | 74 ExtensionPrefValueMapObserverMock() {} |
| 68 virtual ~ExtensionPrefValueMapObserverMock() {} | 75 virtual ~ExtensionPrefValueMapObserverMock() {} |
| 69 | 76 |
| 70 MOCK_METHOD1(OnPrefValueChanged, void(const std::string&)); | 77 MOCK_METHOD1(OnPrefValueChanged, void(const std::string&)); |
| 71 MOCK_METHOD0(OnInitializationCompleted, void()); | 78 MOCK_METHOD0(OnInitializationCompleted, void()); |
| 72 MOCK_METHOD0(OnExtensionPrefValueMapDestruction, void()); | 79 MOCK_METHOD0(OnExtensionPrefValueMapDestruction, void()); |
| 73 | 80 |
| 74 private: | 81 private: |
| 75 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefValueMapObserverMock); | 82 DISALLOW_COPY_AND_ASSIGN(ExtensionPrefValueMapObserverMock); |
| 76 }; | 83 }; |
| 77 | 84 |
| 78 TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValue) { | 85 TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValue) { |
| 79 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 86 RegisterExtension(kExt1, CreateTime(10)); |
| 80 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 87 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 81 EXPECT_EQ("val1", GetValue(kPref1, false)); | 88 EXPECT_EQ("val1", GetValue(kPref1, false)); |
| 82 }; | 89 }; |
| 83 | 90 |
| 84 TEST_F(ExtensionPrefValueMapTest, GetNotSetPrefValue) { | 91 TEST_F(ExtensionPrefValueMapTest, GetNotSetPrefValue) { |
| 85 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 92 RegisterExtension(kExt1, CreateTime(10)); |
| 86 EXPECT_EQ("", GetValue(kPref1, false)); | 93 EXPECT_EQ(std::string(), GetValue(kPref1, false)); |
| 87 }; | 94 }; |
| 88 | 95 |
| 89 // Make sure the last-installed extension wins for each preference. | 96 // Make sure the last-installed extension wins for each preference. |
| 90 TEST_F(ExtensionPrefValueMapTest, Override) { | 97 TEST_F(ExtensionPrefValueMapTest, Override) { |
| 91 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 98 RegisterExtension(kExt1, CreateTime(10)); |
| 92 epvm_.RegisterExtension(kExt2, CreateTime(20), true); | 99 RegisterExtension(kExt2, CreateTime(20)); |
| 93 epvm_.RegisterExtension(kExt3, CreateTime(30), true); | 100 RegisterExtension(kExt3, CreateTime(30)); |
| 94 | 101 |
| 95 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 102 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 96 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); | 103 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); |
| 97 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); | 104 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); |
| 98 | 105 |
| 99 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); | 106 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); |
| 100 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5")); | 107 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5")); |
| 101 | 108 |
| 102 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val6")); | 109 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val6")); |
| 103 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val7")); | 110 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val7")); |
| 104 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val8")); | 111 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val8")); |
| 105 | 112 |
| 106 EXPECT_EQ("val3", GetValue(kPref1, false)); | 113 EXPECT_EQ("val3", GetValue(kPref1, false)); |
| 107 EXPECT_EQ("val5", GetValue(kPref2, false)); | 114 EXPECT_EQ("val5", GetValue(kPref2, false)); |
| 108 EXPECT_EQ("val8", GetValue(kPref3, false)); | 115 EXPECT_EQ("val8", GetValue(kPref3, false)); |
| 109 } | 116 } |
| 110 | 117 |
| 111 TEST_F(ExtensionPrefValueMapTest, OverrideChecks) { | 118 TEST_F(ExtensionPrefValueMapTest, OverrideChecks) { |
| 112 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 119 RegisterExtension(kExt1, CreateTime(10)); |
| 113 epvm_.RegisterExtension(kExt2, CreateTime(20), true); | 120 RegisterExtension(kExt2, CreateTime(20)); |
| 114 epvm_.RegisterExtension(kExt3, CreateTime(30), true); | 121 RegisterExtension(kExt3, CreateTime(30)); |
| 115 | 122 |
| 116 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL)); | 123 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL)); |
| 117 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL)); | 124 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL)); |
| 118 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL)); | 125 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL)); |
| 119 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt1, kPref1, false)); | 126 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt1, kPref1, false)); |
| 120 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false)); | 127 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false)); |
| 121 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false)); | 128 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false)); |
| 122 | 129 |
| 123 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val1")); | 130 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val1")); |
| 124 | 131 |
| 125 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL)); | 132 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL)); |
| 126 EXPECT_TRUE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL)); | 133 EXPECT_TRUE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL)); |
| 127 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL)); | 134 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL)); |
| 128 EXPECT_FALSE(epvm_.CanExtensionControlPref(kExt1, kPref1, false)); | 135 EXPECT_FALSE(epvm_.CanExtensionControlPref(kExt1, kPref1, false)); |
| 129 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false)); | 136 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false)); |
| 130 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false)); | 137 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false)); |
| 131 } | 138 } |
| 132 | 139 |
| 133 TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValueIncognito) { | 140 TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValueIncognito) { |
| 134 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 141 RegisterExtension(kExt1, CreateTime(10)); |
| 135 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 142 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 143 // Check that the value is not propagated until the extension gets incognito |
| 144 // permission. |
| 145 EXPECT_EQ(std::string(), GetValue(kPref1, true)); |
| 146 epvm_.SetExtensionIncognitoState(kExt1, true); |
| 136 EXPECT_EQ("val1", GetValue(kPref1, true)); | 147 EXPECT_EQ("val1", GetValue(kPref1, true)); |
| 148 epvm_.SetExtensionIncognitoState(kExt1, false); |
| 149 EXPECT_EQ(std::string(), GetValue(kPref1, true)); |
| 137 } | 150 } |
| 138 | 151 |
| 139 TEST_F(ExtensionPrefValueMapTest, UninstallOnlyExtension) { | 152 TEST_F(ExtensionPrefValueMapTest, UninstallOnlyExtension) { |
| 140 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 153 RegisterExtension(kExt1, CreateTime(10)); |
| 141 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 154 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 142 epvm_.UnregisterExtension(kExt1); | 155 epvm_.UnregisterExtension(kExt1); |
| 143 | 156 |
| 144 EXPECT_EQ("", GetValue(kPref1, false)); | 157 EXPECT_EQ(std::string(), GetValue(kPref1, false)); |
| 145 } | 158 } |
| 146 | 159 |
| 147 // Tests uninstalling an extension that wasn't winning for any preferences. | 160 // Tests uninstalling an extension that wasn't winning for any preferences. |
| 148 TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) { | 161 TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) { |
| 149 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 162 RegisterExtension(kExt1, CreateTime(10)); |
| 150 epvm_.RegisterExtension(kExt2, CreateTime(10), true); | 163 RegisterExtension(kExt2, CreateTime(10)); |
| 151 | 164 |
| 152 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 165 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 153 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); | 166 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); |
| 154 | 167 |
| 155 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val3")); | 168 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val3")); |
| 156 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val4")); | 169 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val4")); |
| 157 | 170 |
| 158 epvm_.UnregisterExtension(kExt1); | 171 epvm_.UnregisterExtension(kExt1); |
| 159 | 172 |
| 160 EXPECT_EQ("val2", GetValue(kPref1, false)); | 173 EXPECT_EQ("val2", GetValue(kPref1, false)); |
| 161 EXPECT_EQ("val4", GetValue(kPref2, false)); | 174 EXPECT_EQ("val4", GetValue(kPref2, false)); |
| 162 } | 175 } |
| 163 | 176 |
| 164 // Tests uninstalling an extension that was winning for all preferences. | 177 // Tests uninstalling an extension that was winning for all preferences. |
| 165 TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) { | 178 TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) { |
| 166 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 179 RegisterExtension(kExt1, CreateTime(10)); |
| 167 epvm_.RegisterExtension(kExt2, CreateTime(20), true); | 180 RegisterExtension(kExt2, CreateTime(20)); |
| 168 epvm_.RegisterExtension(kExt3, CreateTime(30), true); | 181 RegisterExtension(kExt3, CreateTime(30)); |
| 169 | 182 |
| 170 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 183 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 171 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); | 184 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); |
| 172 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); | 185 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); |
| 173 | 186 |
| 174 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); | 187 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); |
| 175 epvm_.SetExtensionPref(kExt3, kPref2, kRegular, CreateVal("val5")); | 188 epvm_.SetExtensionPref(kExt3, kPref2, kRegular, CreateVal("val5")); |
| 176 | 189 |
| 177 epvm_.UnregisterExtension(kExt3); | 190 epvm_.UnregisterExtension(kExt3); |
| 178 | 191 |
| 179 EXPECT_EQ("val2", GetValue(kPref1, false)); | 192 EXPECT_EQ("val2", GetValue(kPref1, false)); |
| 180 EXPECT_EQ("val4", GetValue(kPref2, false)); | 193 EXPECT_EQ("val4", GetValue(kPref2, false)); |
| 181 } | 194 } |
| 182 | 195 |
| 183 // Tests uninstalling an extension that was winning for only some preferences. | 196 // Tests uninstalling an extension that was winning for only some preferences. |
| 184 TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) { | 197 TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) { |
| 185 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 198 RegisterExtension(kExt1, CreateTime(10)); |
| 186 epvm_.RegisterExtension(kExt2, CreateTime(20), true); | 199 RegisterExtension(kExt2, CreateTime(20)); |
| 187 epvm_.RegisterExtension(kExt3, CreateTime(30), true); | 200 RegisterExtension(kExt3, CreateTime(30)); |
| 188 | 201 |
| 189 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 202 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 190 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); | 203 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2")); |
| 191 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); | 204 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3")); |
| 192 | 205 |
| 193 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); | 206 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4")); |
| 194 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5")); | 207 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5")); |
| 195 | 208 |
| 196 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val6")); | 209 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val6")); |
| 197 | 210 |
| 198 epvm_.SetExtensionPref(kExt2, kPref4, kRegular, CreateVal("val7")); | 211 epvm_.SetExtensionPref(kExt2, kPref4, kRegular, CreateVal("val7")); |
| 199 | 212 |
| 200 epvm_.UnregisterExtension(kExt2); | 213 epvm_.UnregisterExtension(kExt2); |
| 201 | 214 |
| 202 EXPECT_EQ("val3", GetValue(kPref1, false)); | 215 EXPECT_EQ("val3", GetValue(kPref1, false)); |
| 203 EXPECT_EQ("val4", GetValue(kPref2, false)); | 216 EXPECT_EQ("val4", GetValue(kPref2, false)); |
| 204 EXPECT_EQ("val6", GetValue(kPref3, false)); | 217 EXPECT_EQ("val6", GetValue(kPref3, false)); |
| 205 EXPECT_EQ("", GetValue(kPref4, false)); | 218 EXPECT_EQ(std::string(), GetValue(kPref4, false)); |
| 206 } | 219 } |
| 207 | 220 |
| 208 // Tests triggering of notifications to registered observers. | 221 // Tests triggering of notifications to registered observers. |
| 209 TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) { | 222 TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) { |
| 210 using testing::Mock; | 223 using testing::Mock; |
| 211 using testing::StrEq; | 224 using testing::StrEq; |
| 212 | 225 |
| 213 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 226 RegisterExtension(kExt1, CreateTime(10)); |
| 214 | 227 |
| 215 ExtensionPrefValueMapObserverMock observer; | 228 ExtensionPrefValueMapObserverMock observer; |
| 216 epvm_.AddObserver(&observer); | 229 epvm_.AddObserver(&observer); |
| 217 | 230 |
| 218 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))); | 231 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))); |
| 219 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 232 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 220 Mock::VerifyAndClearExpectations(&observer); | 233 Mock::VerifyAndClearExpectations(&observer); |
| 221 | 234 |
| 222 // Write the same value again. | 235 // Write the same value again. |
| 223 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0); | 236 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 246 | 259 |
| 247 // Uninstall | 260 // Uninstall |
| 248 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))); | 261 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))); |
| 249 epvm_.UnregisterExtension(kExt1); | 262 epvm_.UnregisterExtension(kExt1); |
| 250 Mock::VerifyAndClearExpectations(&observer); | 263 Mock::VerifyAndClearExpectations(&observer); |
| 251 | 264 |
| 252 epvm_.RemoveObserver(&observer); | 265 epvm_.RemoveObserver(&observer); |
| 253 | 266 |
| 254 // Write new value --> no notification after removing observer. | 267 // Write new value --> no notification after removing observer. |
| 255 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0); | 268 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0); |
| 256 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 269 RegisterExtension(kExt1, CreateTime(10)); |
| 257 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val4")); | 270 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val4")); |
| 258 Mock::VerifyAndClearExpectations(&observer); | 271 Mock::VerifyAndClearExpectations(&observer); |
| 259 } | 272 } |
| 260 | 273 |
| 261 // Tests disabling an extension. | 274 // Tests disabling an extension. |
| 262 TEST_F(ExtensionPrefValueMapTest, DisableExt) { | 275 TEST_F(ExtensionPrefValueMapTest, DisableExt) { |
| 263 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 276 RegisterExtension(kExt1, CreateTime(10)); |
| 264 | 277 |
| 265 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 278 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 266 epvm_.SetExtensionState(kExt1, false); | 279 epvm_.SetExtensionState(kExt1, false); |
| 267 EXPECT_EQ("", GetValue(kPref1, false)); | 280 EXPECT_EQ(std::string(), GetValue(kPref1, false)); |
| 268 } | 281 } |
| 269 | 282 |
| 270 // Tests disabling and reenabling an extension. | 283 // Tests disabling and reenabling an extension. |
| 271 TEST_F(ExtensionPrefValueMapTest, ReenableExt) { | 284 TEST_F(ExtensionPrefValueMapTest, ReenableExt) { |
| 272 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 285 RegisterExtension(kExt1, CreateTime(10)); |
| 273 | 286 |
| 274 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); | 287 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1")); |
| 275 epvm_.SetExtensionState(kExt1, false); | 288 epvm_.SetExtensionState(kExt1, false); |
| 276 epvm_.SetExtensionState(kExt1, true); | 289 epvm_.SetExtensionState(kExt1, true); |
| 277 EXPECT_EQ("val1", GetValue(kPref1, false)); | 290 EXPECT_EQ("val1", GetValue(kPref1, false)); |
| 278 } | 291 } |
| 279 | 292 |
| 280 struct OverrideIncognitoTestCase { | 293 struct OverrideIncognitoTestCase { |
| 281 OverrideIncognitoTestCase(int val_ext1_regular, | 294 OverrideIncognitoTestCase(bool enable_ext1_in_incognito, |
| 295 bool enable_ext2_in_incognito, |
| 296 int val_ext1_regular, |
| 282 int val_ext1_regular_only, | 297 int val_ext1_regular_only, |
| 283 int val_ext1_incognito_pers, | 298 int val_ext1_incognito_pers, |
| 284 int val_ext1_incognito_sess, | 299 int val_ext1_incognito_sess, |
| 285 int val_ext2_regular, | 300 int val_ext2_regular, |
| 286 int val_ext2_regular_only, | 301 int val_ext2_regular_only, |
| 287 int val_ext2_incognito_pers, | 302 int val_ext2_incognito_pers, |
| 288 int val_ext2_incognito_sess, | 303 int val_ext2_incognito_sess, |
| 289 int effective_value_regular, | 304 int effective_value_regular, |
| 290 int effective_value_incognito) | 305 int effective_value_incognito) |
| 291 : val_ext1_regular_(val_ext1_regular), | 306 : enable_ext1_in_incognito_(enable_ext1_in_incognito), |
| 307 enable_ext2_in_incognito_(enable_ext2_in_incognito), |
| 308 val_ext1_regular_(val_ext1_regular), |
| 292 val_ext1_regular_only_(val_ext1_regular_only), | 309 val_ext1_regular_only_(val_ext1_regular_only), |
| 293 val_ext1_incognito_pers_(val_ext1_incognito_pers), | 310 val_ext1_incognito_pers_(val_ext1_incognito_pers), |
| 294 val_ext1_incognito_sess_(val_ext1_incognito_sess), | 311 val_ext1_incognito_sess_(val_ext1_incognito_sess), |
| 295 val_ext2_regular_(val_ext2_regular), | 312 val_ext2_regular_(val_ext2_regular), |
| 296 val_ext2_regular_only_(val_ext2_regular_only), | 313 val_ext2_regular_only_(val_ext2_regular_only), |
| 297 val_ext2_incognito_pers_(val_ext2_incognito_pers), | 314 val_ext2_incognito_pers_(val_ext2_incognito_pers), |
| 298 val_ext2_incognito_sess_(val_ext2_incognito_sess), | 315 val_ext2_incognito_sess_(val_ext2_incognito_sess), |
| 299 effective_value_regular_(effective_value_regular), | 316 effective_value_regular_(effective_value_regular), |
| 300 effective_value_incognito_(effective_value_incognito) {} | 317 effective_value_incognito_(effective_value_incognito) {} |
| 301 | 318 |
| 319 bool enable_ext1_in_incognito_; |
| 320 bool enable_ext2_in_incognito_; |
| 321 |
| 302 // pers. = persistent | 322 // pers. = persistent |
| 303 // sess. = session only | 323 // sess. = session only |
| 304 int val_ext1_regular_; // pref value of extension 1 | 324 int val_ext1_regular_; // pref value of extension 1 |
| 305 int val_ext1_regular_only_; // pref value of extension 1 regular-only. | 325 int val_ext1_regular_only_; // pref value of extension 1 regular-only. |
| 306 int val_ext1_incognito_pers_; // pref value of extension 1 incognito pers. | 326 int val_ext1_incognito_pers_; // pref value of extension 1 incognito pers. |
| 307 int val_ext1_incognito_sess_; // pref value of extension 1 incognito sess. | 327 int val_ext1_incognito_sess_; // pref value of extension 1 incognito sess. |
| 308 int val_ext2_regular_; // pref value of extension 2 | 328 int val_ext2_regular_; // pref value of extension 2 |
| 309 int val_ext2_regular_only_; // pref value of extension 2 regular-only. | 329 int val_ext2_regular_only_; // pref value of extension 2 regular-only. |
| 310 int val_ext2_incognito_pers_; // pref value of extension 2 incognito pers. | 330 int val_ext2_incognito_pers_; // pref value of extension 2 incognito pers. |
| 311 int val_ext2_incognito_sess_; // pref value of extension 2 incognito sess. | 331 int val_ext2_incognito_sess_; // pref value of extension 2 incognito sess. |
| 312 int effective_value_regular_; // desired winner regular | 332 int effective_value_regular_; // desired winner regular |
| 313 int effective_value_incognito_; // desired winner incognito | 333 int effective_value_incognito_; // desired winner incognito |
| 314 }; | 334 }; |
| 315 | 335 |
| 316 class ExtensionPrefValueMapTestIncognitoTests | 336 class ExtensionPrefValueMapTestIncognitoTests |
| 317 : public ExtensionPrefValueMapTestBase< | 337 : public ExtensionPrefValueMapTestBase< |
| 318 testing::TestWithParam<OverrideIncognitoTestCase> > { | 338 testing::TestWithParam<OverrideIncognitoTestCase> > { |
| 319 }; | 339 }; |
| 320 | 340 |
| 321 TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) { | 341 TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) { |
| 322 OverrideIncognitoTestCase test = GetParam(); | 342 OverrideIncognitoTestCase test = GetParam(); |
| 323 const char* strings[] = { | 343 const char* strings[] = { |
| 324 "undefined", | 344 "", // undefined |
| 325 "val1", | 345 "val1", |
| 326 "val2", | 346 "val2", |
| 327 "val3", | 347 "val3", |
| 328 "val4", | 348 "val4", |
| 329 "val5", | 349 "val5", |
| 330 "val6", | 350 "val6", |
| 331 "val7", | 351 "val7", |
| 332 "val8", | 352 "val8", |
| 333 }; | 353 }; |
| 334 | 354 |
| 335 epvm_.RegisterExtension(kExt1, CreateTime(10), true); | 355 const bool kEnabled = true; |
| 336 epvm_.RegisterExtension(kExt2, CreateTime(20), true); | 356 epvm_.RegisterExtension( |
| 357 kExt1, CreateTime(10), kEnabled, test.enable_ext1_in_incognito_); |
| 358 epvm_.RegisterExtension( |
| 359 kExt2, CreateTime(20), kEnabled, test.enable_ext2_in_incognito_); |
| 337 if (test.val_ext1_regular_) { | 360 if (test.val_ext1_regular_) { |
| 338 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, | 361 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, |
| 339 CreateVal(strings[test.val_ext1_regular_])); | 362 CreateVal(strings[test.val_ext1_regular_])); |
| 340 } | 363 } |
| 341 if (test.val_ext1_regular_only_) { | 364 if (test.val_ext1_regular_only_) { |
| 342 epvm_.SetExtensionPref(kExt1, kPref1, kRegularOnly, | 365 epvm_.SetExtensionPref(kExt1, kPref1, kRegularOnly, |
| 343 CreateVal(strings[test.val_ext1_regular_only_])); | 366 CreateVal(strings[test.val_ext1_regular_only_])); |
| 344 } | 367 } |
| 345 if (test.val_ext1_incognito_pers_) { | 368 if (test.val_ext1_incognito_pers_) { |
| 346 epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoPersistent, | 369 epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoPersistent, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 370 EXPECT_EQ(strings[test.effective_value_regular_], GetValue(kPref1, false)); | 393 EXPECT_EQ(strings[test.effective_value_regular_], GetValue(kPref1, false)); |
| 371 EXPECT_EQ(strings[test.effective_value_incognito_], GetValue(kPref1, true)); | 394 EXPECT_EQ(strings[test.effective_value_incognito_], GetValue(kPref1, true)); |
| 372 epvm_.UnregisterExtension(kExt1); | 395 epvm_.UnregisterExtension(kExt1); |
| 373 epvm_.UnregisterExtension(kExt2); | 396 epvm_.UnregisterExtension(kExt2); |
| 374 } | 397 } |
| 375 | 398 |
| 376 INSTANTIATE_TEST_CASE_P( | 399 INSTANTIATE_TEST_CASE_P( |
| 377 ExtensionPrefValueMapTestIncognitoTestsInstance, | 400 ExtensionPrefValueMapTestIncognitoTestsInstance, |
| 378 ExtensionPrefValueMapTestIncognitoTests, | 401 ExtensionPrefValueMapTestIncognitoTests, |
| 379 testing::Values( | 402 testing::Values( |
| 380 // e.g. (1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means: | 403 // e.g. (true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means: |
| 381 // ext1 regular is set to "val1", ext2 incognito persistent is set to | 404 // ext1 regular is set to "val1", ext2 incognito persistent is set to |
| 382 // "val7" | 405 // "val7" |
| 383 // --> the winning regular value is "val1", the winning incognito | 406 // --> the winning regular value is "val1", the winning incognito |
| 384 // value is "val7". | 407 // value is "val7". |
| 385 OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 0, 0, 1, 1), | 408 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1), |
| 386 OverrideIncognitoTestCase(1, 2, 0, 0, 0, 0, 0, 0, 2, 1), | 409 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1), |
| 387 OverrideIncognitoTestCase(1, 0, 3, 0, 0, 0, 0, 0, 1, 3), | 410 OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 0, 0, 0, 0, 1, 3), |
| 388 OverrideIncognitoTestCase(1, 0, 0, 4, 0, 0, 0, 0, 1, 4), | 411 OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 0, 0, 0, 0, 1, 4), |
| 389 OverrideIncognitoTestCase(1, 0, 3, 4, 0, 0, 0, 0, 1, 4), | 412 OverrideIncognitoTestCase(true, true, 1, 0, 3, 4, 0, 0, 0, 0, 1, 4), |
| 390 OverrideIncognitoTestCase(1, 2, 3, 0, 0, 0, 0, 0, 2, 3), | 413 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 0, 0, 0, 2, 3), |
| 391 OverrideIncognitoTestCase(1, 0, 0, 0, 5, 0, 0, 0, 5, 5), | 414 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 5, 0, 0, 0, 5, 5), |
| 392 OverrideIncognitoTestCase(1, 2, 3, 0, 5, 0, 0, 0, 5, 5), | 415 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 5, 0, 0, 0, 5, 5), |
| 393 OverrideIncognitoTestCase(1, 0, 0, 0, 0, 6, 0, 0, 6, 1), | 416 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 6, 0, 0, 6, 1), |
| 394 OverrideIncognitoTestCase(1, 0, 3, 0, 5, 6, 0, 0, 6, 5), | 417 OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 5, 6, 0, 0, 6, 5), |
| 395 OverrideIncognitoTestCase(1, 0, 0, 4, 5, 6, 0, 0, 6, 5), | 418 OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 5, 6, 0, 0, 6, 5), |
| 396 OverrideIncognitoTestCase(1, 0, 0, 0, 0, 0, 7, 0, 1, 7), | 419 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7), |
| 397 OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 0, 5, 7), | 420 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 0, 5, 7), |
| 398 OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 0, 8, 5, 8), | 421 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 0, 8, 5, 8), |
| 399 OverrideIncognitoTestCase(1, 2, 0, 0, 5, 0, 7, 8, 5, 8), | 422 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 8, 5, 8), |
| 400 OverrideIncognitoTestCase(1, 2, 3, 0, 0, 6, 7, 0, 6, 7))); | 423 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 6, 7, 0, 6, 7), |
| 424 // Same tests as above but w/o incognito permission. |
| 425 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0), |
| 426 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0), |
| 427 OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0), |
| 428 OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 0, 0, 0, 0, 1, 0), |
| 429 OverrideIncognitoTestCase(false, false, 1, 0, 3, 4, 0, 0, 0, 0, 1, 0), |
| 430 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 0, 0, 0, 2, 0), |
| 431 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 5, 0, 0, 0, 5, 0), |
| 432 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 5, 0, 0, 0, 5, 0), |
| 433 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 6, 0, 0, 6, 0), |
| 434 OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 5, 6, 0, 0, 6, 0), |
| 435 OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 5, 6, 0, 0, 6, 0), |
| 436 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 7, 0, 1, 0), |
| 437 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 0, 5, 0), |
| 438 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 0, 8, 5, 0), |
| 439 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 8, 5, 0), |
| 440 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 6, 7, 0, 6, 0) |
| 441 )); |
| OLD | NEW |