blob: 87a1a726012a8b32a029e67e78b00a355ca0f6f8 [file] [log] [blame]
[email protected]489db0842014-01-22 18:20:031// Copyright 2014 The Chromium Authors. All rights reserved.
[email protected]9a8c4022011-01-25 14:25:332// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
dchengf5d241082016-04-21 03:43:115#include "extensions/browser/extension_pref_value_map.h"
6
avic9cec102015-12-23 00:39:267#include <stdint.h>
8
dchengf5d241082016-04-21 03:43:119#include <memory>
10
[email protected]3b63f8f42011-03-28 01:54:1511#include "base/memory/ref_counted.h"
Peter Kastingf2279cae2021-07-08 15:04:5812#include "base/time/time.h"
[email protected]9a8c4022011-01-25 14:25:3313#include "base/values.h"
brettw066508682016-02-03 08:22:0214#include "components/prefs/pref_store_observer_mock.h"
[email protected]9a8c4022011-01-25 14:25:3315#include "testing/gmock/include/gmock/gmock.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace {
19const char kExt1[] = "ext1";
20const char kExt2[] = "ext2";
21const char kExt3[] = "ext3";
22
23const char kPref1[] = "path1.subpath";
24const char kPref2[] = "path2";
25const char kPref3[] = "path3";
26const char kPref4[] = "path4";
27} // namespace
28
Sylvain Defresneabe32642019-02-01 15:14:4129static base::Value CreateVal(const char* str) {
30 return base::Value(str);
[email protected]9a8c4022011-01-25 14:25:3331}
32
avic9cec102015-12-23 00:39:2633static base::Time CreateTime(int64_t t) {
[email protected]9a28f132011-02-24 21:15:1634 return base::Time::FromInternalValue(t);
[email protected]9a8c4022011-01-25 14:25:3335}
36
37template <typename BASECLASS>
38class ExtensionPrefValueMapTestBase : public BASECLASS {
39 public:
[email protected]45759612012-07-10 17:21:2340 static const extensions::ExtensionPrefsScope kRegular =
41 extensions::kExtensionPrefsScopeRegular;
42 static const extensions::ExtensionPrefsScope kRegularOnly =
43 extensions::kExtensionPrefsScopeRegularOnly;
44 static const extensions::ExtensionPrefsScope kIncognitoPersistent =
45 extensions::kExtensionPrefsScopeIncognitoPersistent;
46 static const extensions::ExtensionPrefsScope kIncognitoSessionOnly =
47 extensions::kExtensionPrefsScopeIncognitoSessionOnly;
[email protected]dece9a62011-06-07 17:38:5948
[email protected]9a8c4022011-01-25 14:25:3349 // Returns an empty string if the key is not set.
50 std::string GetValue(const char * key, bool incognito) const {
Yoichi Osato809a309f2022-02-03 18:31:5051 const base::Value* value =
[email protected]023b3d12013-12-23 18:46:4952 epvm_.GetEffectivePrefValue(key, incognito, NULL);
Yoichi Osato809a309f2022-02-03 18:31:5053 return (value && value->is_string()) ? value->GetString() : std::string();
[email protected]9a8c4022011-01-25 14:25:3354 }
55
[email protected]6c164752014-03-12 00:29:1556 // Registers the extension as enabled but without incognito permission.
57 void RegisterExtension(const std::string& ext_id,
58 const base::Time& install_time) {
59 epvm_.RegisterExtension(
60 ext_id, install_time, true /*enabled*/, false /*incognito*/);
61 }
62
[email protected]9a8c4022011-01-25 14:25:3363 protected:
64 ExtensionPrefValueMap epvm_;
65};
66
67class ExtensionPrefValueMapTest
68 : public ExtensionPrefValueMapTestBase<testing::Test> {
69};
70
71// A gmock-ified implementation of PrefStore::Observer.
72class ExtensionPrefValueMapObserverMock
73 : public ExtensionPrefValueMap::Observer {
74 public:
75 ExtensionPrefValueMapObserverMock() {}
Peter Boström951cf77e2021-09-22 00:02:5976
77 ExtensionPrefValueMapObserverMock(const ExtensionPrefValueMapObserverMock&) =
78 delete;
79 ExtensionPrefValueMapObserverMock& operator=(
80 const ExtensionPrefValueMapObserverMock&) = delete;
81
Daniel Chengad7d8fc2018-04-26 22:25:4982 ~ExtensionPrefValueMapObserverMock() override {}
[email protected]9a8c4022011-01-25 14:25:3383
84 MOCK_METHOD1(OnPrefValueChanged, void(const std::string&));
85 MOCK_METHOD0(OnInitializationCompleted, void());
86 MOCK_METHOD0(OnExtensionPrefValueMapDestruction, void());
[email protected]9a8c4022011-01-25 14:25:3387};
88
89TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValue) {
[email protected]6c164752014-03-12 00:29:1590 RegisterExtension(kExt1, CreateTime(10));
[email protected]9783c162011-05-25 21:45:5191 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:3392 EXPECT_EQ("val1", GetValue(kPref1, false));
Nico Weber210c0bc2019-02-11 22:01:0993}
[email protected]9a8c4022011-01-25 14:25:3394
95TEST_F(ExtensionPrefValueMapTest, GetNotSetPrefValue) {
[email protected]6c164752014-03-12 00:29:1596 RegisterExtension(kExt1, CreateTime(10));
97 EXPECT_EQ(std::string(), GetValue(kPref1, false));
Nico Weber210c0bc2019-02-11 22:01:0998}
[email protected]9a8c4022011-01-25 14:25:3399
100// Make sure the last-installed extension wins for each preference.
101TEST_F(ExtensionPrefValueMapTest, Override) {
[email protected]6c164752014-03-12 00:29:15102 RegisterExtension(kExt1, CreateTime(10));
103 RegisterExtension(kExt2, CreateTime(20));
104 RegisterExtension(kExt3, CreateTime(30));
[email protected]9a8c4022011-01-25 14:25:33105
[email protected]9783c162011-05-25 21:45:51106 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
107 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
108 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
[email protected]9a8c4022011-01-25 14:25:33109
[email protected]9783c162011-05-25 21:45:51110 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
111 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5"));
[email protected]9a8c4022011-01-25 14:25:33112
[email protected]9783c162011-05-25 21:45:51113 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val6"));
114 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val7"));
115 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val8"));
[email protected]9a8c4022011-01-25 14:25:33116
117 EXPECT_EQ("val3", GetValue(kPref1, false));
118 EXPECT_EQ("val5", GetValue(kPref2, false));
119 EXPECT_EQ("val8", GetValue(kPref3, false));
120}
121
[email protected]9a28f132011-02-24 21:15:16122TEST_F(ExtensionPrefValueMapTest, OverrideChecks) {
[email protected]6c164752014-03-12 00:29:15123 RegisterExtension(kExt1, CreateTime(10));
124 RegisterExtension(kExt2, CreateTime(20));
125 RegisterExtension(kExt3, CreateTime(30));
[email protected]9a28f132011-02-24 21:15:16126
[email protected]42c037e2012-06-26 22:23:32127 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL));
128 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL));
129 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL));
[email protected]9a28f132011-02-24 21:15:16130 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt1, kPref1, false));
131 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false));
132 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false));
133
[email protected]9783c162011-05-25 21:45:51134 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val1"));
[email protected]9a28f132011-02-24 21:15:16135
[email protected]42c037e2012-06-26 22:23:32136 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt1, kPref1, NULL));
137 EXPECT_TRUE(epvm_.DoesExtensionControlPref(kExt2, kPref1, NULL));
138 EXPECT_FALSE(epvm_.DoesExtensionControlPref(kExt3, kPref1, NULL));
[email protected]9a28f132011-02-24 21:15:16139 EXPECT_FALSE(epvm_.CanExtensionControlPref(kExt1, kPref1, false));
140 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt2, kPref1, false));
141 EXPECT_TRUE(epvm_.CanExtensionControlPref(kExt3, kPref1, false));
142}
143
[email protected]9a8c4022011-01-25 14:25:33144TEST_F(ExtensionPrefValueMapTest, SetAndGetPrefValueIncognito) {
[email protected]6c164752014-03-12 00:29:15145 RegisterExtension(kExt1, CreateTime(10));
[email protected]9783c162011-05-25 21:45:51146 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]6c164752014-03-12 00:29:15147 // Check that the value is not propagated until the extension gets incognito
148 // permission.
149 EXPECT_EQ(std::string(), GetValue(kPref1, true));
150 epvm_.SetExtensionIncognitoState(kExt1, true);
[email protected]9a8c4022011-01-25 14:25:33151 EXPECT_EQ("val1", GetValue(kPref1, true));
[email protected]6c164752014-03-12 00:29:15152 epvm_.SetExtensionIncognitoState(kExt1, false);
153 EXPECT_EQ(std::string(), GetValue(kPref1, true));
[email protected]9a8c4022011-01-25 14:25:33154}
155
156TEST_F(ExtensionPrefValueMapTest, UninstallOnlyExtension) {
[email protected]6c164752014-03-12 00:29:15157 RegisterExtension(kExt1, CreateTime(10));
[email protected]9783c162011-05-25 21:45:51158 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:33159 epvm_.UnregisterExtension(kExt1);
160
[email protected]6c164752014-03-12 00:29:15161 EXPECT_EQ(std::string(), GetValue(kPref1, false));
[email protected]9a8c4022011-01-25 14:25:33162}
163
164// Tests uninstalling an extension that wasn't winning for any preferences.
165TEST_F(ExtensionPrefValueMapTest, UninstallIrrelevantExtension) {
[email protected]6c164752014-03-12 00:29:15166 RegisterExtension(kExt1, CreateTime(10));
167 RegisterExtension(kExt2, CreateTime(10));
[email protected]9a8c4022011-01-25 14:25:33168
[email protected]9783c162011-05-25 21:45:51169 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
170 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
[email protected]9a8c4022011-01-25 14:25:33171
[email protected]9783c162011-05-25 21:45:51172 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val3"));
173 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val4"));
[email protected]9a8c4022011-01-25 14:25:33174
175 epvm_.UnregisterExtension(kExt1);
176
177 EXPECT_EQ("val2", GetValue(kPref1, false));
178 EXPECT_EQ("val4", GetValue(kPref2, false));
179}
180
181// Tests uninstalling an extension that was winning for all preferences.
182TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromTop) {
[email protected]6c164752014-03-12 00:29:15183 RegisterExtension(kExt1, CreateTime(10));
184 RegisterExtension(kExt2, CreateTime(20));
185 RegisterExtension(kExt3, CreateTime(30));
[email protected]9a8c4022011-01-25 14:25:33186
[email protected]9783c162011-05-25 21:45:51187 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
188 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
189 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
[email protected]9a8c4022011-01-25 14:25:33190
[email protected]9783c162011-05-25 21:45:51191 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
192 epvm_.SetExtensionPref(kExt3, kPref2, kRegular, CreateVal("val5"));
[email protected]9a8c4022011-01-25 14:25:33193
194 epvm_.UnregisterExtension(kExt3);
195
196 EXPECT_EQ("val2", GetValue(kPref1, false));
197 EXPECT_EQ("val4", GetValue(kPref2, false));
198}
199
200// Tests uninstalling an extension that was winning for only some preferences.
201TEST_F(ExtensionPrefValueMapTest, UninstallExtensionFromMiddle) {
[email protected]6c164752014-03-12 00:29:15202 RegisterExtension(kExt1, CreateTime(10));
203 RegisterExtension(kExt2, CreateTime(20));
204 RegisterExtension(kExt3, CreateTime(30));
[email protected]9a8c4022011-01-25 14:25:33205
[email protected]9783c162011-05-25 21:45:51206 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
207 epvm_.SetExtensionPref(kExt2, kPref1, kRegular, CreateVal("val2"));
208 epvm_.SetExtensionPref(kExt3, kPref1, kRegular, CreateVal("val3"));
[email protected]9a8c4022011-01-25 14:25:33209
[email protected]9783c162011-05-25 21:45:51210 epvm_.SetExtensionPref(kExt1, kPref2, kRegular, CreateVal("val4"));
211 epvm_.SetExtensionPref(kExt2, kPref2, kRegular, CreateVal("val5"));
[email protected]9a8c4022011-01-25 14:25:33212
[email protected]9783c162011-05-25 21:45:51213 epvm_.SetExtensionPref(kExt1, kPref3, kRegular, CreateVal("val6"));
[email protected]9a8c4022011-01-25 14:25:33214
[email protected]9783c162011-05-25 21:45:51215 epvm_.SetExtensionPref(kExt2, kPref4, kRegular, CreateVal("val7"));
[email protected]9a8c4022011-01-25 14:25:33216
217 epvm_.UnregisterExtension(kExt2);
218
219 EXPECT_EQ("val3", GetValue(kPref1, false));
220 EXPECT_EQ("val4", GetValue(kPref2, false));
221 EXPECT_EQ("val6", GetValue(kPref3, false));
[email protected]6c164752014-03-12 00:29:15222 EXPECT_EQ(std::string(), GetValue(kPref4, false));
[email protected]9a8c4022011-01-25 14:25:33223}
224
225// Tests triggering of notifications to registered observers.
226TEST_F(ExtensionPrefValueMapTest, NotifyWhenNeeded) {
[email protected]9a8c4022011-01-25 14:25:33227 using testing::Mock;
228 using testing::StrEq;
229
[email protected]6c164752014-03-12 00:29:15230 RegisterExtension(kExt1, CreateTime(10));
[email protected]9a8c4022011-01-25 14:25:33231
232 ExtensionPrefValueMapObserverMock observer;
233 epvm_.AddObserver(&observer);
234
235 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
[email protected]9783c162011-05-25 21:45:51236 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:33237 Mock::VerifyAndClearExpectations(&observer);
238
239 // Write the same value again.
240 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0);
[email protected]9783c162011-05-25 21:45:51241 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:33242 Mock::VerifyAndClearExpectations(&observer);
243
244 // Override incognito value.
245 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
[email protected]9783c162011-05-25 21:45:51246 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val2"));
[email protected]9a8c4022011-01-25 14:25:33247 Mock::VerifyAndClearExpectations(&observer);
248
249 // Override non-incognito value.
250 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
[email protected]9783c162011-05-25 21:45:51251 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val3"));
[email protected]9a8c4022011-01-25 14:25:33252 Mock::VerifyAndClearExpectations(&observer);
253
254 // Disable.
255 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
256 epvm_.SetExtensionState(kExt1, false);
257 Mock::VerifyAndClearExpectations(&observer);
258
259 // Enable.
260 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
261 epvm_.SetExtensionState(kExt1, true);
262 Mock::VerifyAndClearExpectations(&observer);
263
264 // Uninstall
265 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1)));
266 epvm_.UnregisterExtension(kExt1);
267 Mock::VerifyAndClearExpectations(&observer);
268
269 epvm_.RemoveObserver(&observer);
270
271 // Write new value --> no notification after removing observer.
272 EXPECT_CALL(observer, OnPrefValueChanged(std::string(kPref1))).Times(0);
[email protected]6c164752014-03-12 00:29:15273 RegisterExtension(kExt1, CreateTime(10));
[email protected]9783c162011-05-25 21:45:51274 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val4"));
[email protected]9a8c4022011-01-25 14:25:33275 Mock::VerifyAndClearExpectations(&observer);
276}
277
278// Tests disabling an extension.
279TEST_F(ExtensionPrefValueMapTest, DisableExt) {
[email protected]6c164752014-03-12 00:29:15280 RegisterExtension(kExt1, CreateTime(10));
[email protected]9a8c4022011-01-25 14:25:33281
[email protected]9783c162011-05-25 21:45:51282 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:33283 epvm_.SetExtensionState(kExt1, false);
[email protected]6c164752014-03-12 00:29:15284 EXPECT_EQ(std::string(), GetValue(kPref1, false));
[email protected]9a8c4022011-01-25 14:25:33285}
286
287// Tests disabling and reenabling an extension.
288TEST_F(ExtensionPrefValueMapTest, ReenableExt) {
[email protected]6c164752014-03-12 00:29:15289 RegisterExtension(kExt1, CreateTime(10));
[email protected]9a8c4022011-01-25 14:25:33290
[email protected]9783c162011-05-25 21:45:51291 epvm_.SetExtensionPref(kExt1, kPref1, kRegular, CreateVal("val1"));
[email protected]9a8c4022011-01-25 14:25:33292 epvm_.SetExtensionState(kExt1, false);
293 epvm_.SetExtensionState(kExt1, true);
294 EXPECT_EQ("val1", GetValue(kPref1, false));
295}
296
297struct OverrideIncognitoTestCase {
[email protected]6c164752014-03-12 00:29:15298 OverrideIncognitoTestCase(bool enable_ext1_in_incognito,
299 bool enable_ext2_in_incognito,
300 int val_ext1_regular,
[email protected]7d3a0e32012-06-14 22:37:29301 int val_ext1_regular_only,
[email protected]31685742011-05-25 23:01:56302 int val_ext1_incognito_pers,
303 int val_ext1_incognito_sess,
[email protected]9a8c4022011-01-25 14:25:33304 int val_ext2_regular,
[email protected]7d3a0e32012-06-14 22:37:29305 int val_ext2_regular_only,
[email protected]31685742011-05-25 23:01:56306 int val_ext2_incognito_pers,
307 int val_ext2_incognito_sess,
[email protected]9a8c4022011-01-25 14:25:33308 int effective_value_regular,
309 int effective_value_incognito)
[email protected]6c164752014-03-12 00:29:15310 : enable_ext1_in_incognito_(enable_ext1_in_incognito),
311 enable_ext2_in_incognito_(enable_ext2_in_incognito),
312 val_ext1_regular_(val_ext1_regular),
[email protected]7d3a0e32012-06-14 22:37:29313 val_ext1_regular_only_(val_ext1_regular_only),
[email protected]31685742011-05-25 23:01:56314 val_ext1_incognito_pers_(val_ext1_incognito_pers),
315 val_ext1_incognito_sess_(val_ext1_incognito_sess),
[email protected]9a8c4022011-01-25 14:25:33316 val_ext2_regular_(val_ext2_regular),
[email protected]7d3a0e32012-06-14 22:37:29317 val_ext2_regular_only_(val_ext2_regular_only),
[email protected]31685742011-05-25 23:01:56318 val_ext2_incognito_pers_(val_ext2_incognito_pers),
319 val_ext2_incognito_sess_(val_ext2_incognito_sess),
[email protected]9a8c4022011-01-25 14:25:33320 effective_value_regular_(effective_value_regular),
321 effective_value_incognito_(effective_value_incognito) {}
322
[email protected]6c164752014-03-12 00:29:15323 bool enable_ext1_in_incognito_;
324 bool enable_ext2_in_incognito_;
325
[email protected]31685742011-05-25 23:01:56326 // pers. = persistent
327 // sess. = session only
[email protected]9a8c4022011-01-25 14:25:33328 int val_ext1_regular_; // pref value of extension 1
[email protected]7d3a0e32012-06-14 22:37:29329 int val_ext1_regular_only_; // pref value of extension 1 regular-only.
[email protected]31685742011-05-25 23:01:56330 int val_ext1_incognito_pers_; // pref value of extension 1 incognito pers.
331 int val_ext1_incognito_sess_; // pref value of extension 1 incognito sess.
[email protected]9a8c4022011-01-25 14:25:33332 int val_ext2_regular_; // pref value of extension 2
[email protected]7d3a0e32012-06-14 22:37:29333 int val_ext2_regular_only_; // pref value of extension 2 regular-only.
[email protected]31685742011-05-25 23:01:56334 int val_ext2_incognito_pers_; // pref value of extension 2 incognito pers.
335 int val_ext2_incognito_sess_; // pref value of extension 2 incognito sess.
[email protected]9a8c4022011-01-25 14:25:33336 int effective_value_regular_; // desired winner regular
337 int effective_value_incognito_; // desired winner incognito
338};
339
340class ExtensionPrefValueMapTestIncognitoTests
341 : public ExtensionPrefValueMapTestBase<
342 testing::TestWithParam<OverrideIncognitoTestCase> > {
343};
344
345TEST_P(ExtensionPrefValueMapTestIncognitoTests, OverrideIncognito) {
346 OverrideIncognitoTestCase test = GetParam();
347 const char* strings[] = {
[email protected]6c164752014-03-12 00:29:15348 "", // undefined
[email protected]9a8c4022011-01-25 14:25:33349 "val1",
350 "val2",
351 "val3",
[email protected]31685742011-05-25 23:01:56352 "val4",
353 "val5",
[email protected]7d3a0e32012-06-14 22:37:29354 "val6",
355 "val7",
356 "val8",
[email protected]9a8c4022011-01-25 14:25:33357 };
358
[email protected]6c164752014-03-12 00:29:15359 const bool kEnabled = true;
360 epvm_.RegisterExtension(
361 kExt1, CreateTime(10), kEnabled, test.enable_ext1_in_incognito_);
362 epvm_.RegisterExtension(
363 kExt2, CreateTime(20), kEnabled, test.enable_ext2_in_incognito_);
[email protected]9a8c4022011-01-25 14:25:33364 if (test.val_ext1_regular_) {
[email protected]9783c162011-05-25 21:45:51365 epvm_.SetExtensionPref(kExt1, kPref1, kRegular,
[email protected]9a8c4022011-01-25 14:25:33366 CreateVal(strings[test.val_ext1_regular_]));
367 }
[email protected]7d3a0e32012-06-14 22:37:29368 if (test.val_ext1_regular_only_) {
369 epvm_.SetExtensionPref(kExt1, kPref1, kRegularOnly,
370 CreateVal(strings[test.val_ext1_regular_only_]));
371 }
[email protected]31685742011-05-25 23:01:56372 if (test.val_ext1_incognito_pers_) {
[email protected]9783c162011-05-25 21:45:51373 epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoPersistent,
[email protected]31685742011-05-25 23:01:56374 CreateVal(strings[test.val_ext1_incognito_pers_]));
375 }
376 if (test.val_ext1_incognito_sess_) {
377 epvm_.SetExtensionPref(kExt1, kPref1, kIncognitoSessionOnly,
378 CreateVal(strings[test.val_ext1_incognito_sess_]));
[email protected]9a8c4022011-01-25 14:25:33379 }
380 if (test.val_ext2_regular_) {
[email protected]9783c162011-05-25 21:45:51381 epvm_.SetExtensionPref(kExt2, kPref1, kRegular,
[email protected]9a8c4022011-01-25 14:25:33382 CreateVal(strings[test.val_ext2_regular_]));
383 }
[email protected]7d3a0e32012-06-14 22:37:29384 if (test.val_ext2_regular_only_) {
385 epvm_.SetExtensionPref(kExt2, kPref1, kRegularOnly,
386 CreateVal(strings[test.val_ext2_regular_only_]));
387 }
[email protected]31685742011-05-25 23:01:56388 if (test.val_ext2_incognito_pers_) {
[email protected]9783c162011-05-25 21:45:51389 epvm_.SetExtensionPref(kExt2, kPref1, kIncognitoPersistent,
[email protected]31685742011-05-25 23:01:56390 CreateVal(strings[test.val_ext2_incognito_pers_]));
391 }
392 if (test.val_ext2_incognito_sess_) {
393 epvm_.SetExtensionPref(kExt2, kPref1, kIncognitoSessionOnly,
394 CreateVal(strings[test.val_ext2_incognito_sess_]));
[email protected]9a8c4022011-01-25 14:25:33395 }
396 std::string actual;
397 EXPECT_EQ(strings[test.effective_value_regular_], GetValue(kPref1, false));
398 EXPECT_EQ(strings[test.effective_value_incognito_], GetValue(kPref1, true));
399 epvm_.UnregisterExtension(kExt1);
400 epvm_.UnregisterExtension(kExt2);
401}
402
Victor Costan6ab575a002019-02-13 17:30:39403INSTANTIATE_TEST_SUITE_P(
[email protected]9a8c4022011-01-25 14:25:33404 ExtensionPrefValueMapTestIncognitoTestsInstance,
405 ExtensionPrefValueMapTestIncognitoTests,
406 testing::Values(
[email protected]6c164752014-03-12 00:29:15407 // e.g. (true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7), means:
[email protected]31685742011-05-25 23:01:56408 // ext1 regular is set to "val1", ext2 incognito persistent is set to
[email protected]7d3a0e32012-06-14 22:37:29409 // "val7"
[email protected]9a8c4022011-01-25 14:25:33410 // --> the winning regular value is "val1", the winning incognito
[email protected]7d3a0e32012-06-14 22:37:29411 // value is "val7".
Victor Costan6ab575a002019-02-13 17:30:39412 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1),
413 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1),
414 OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 0, 0, 0, 0, 1, 3),
415 OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 0, 0, 0, 0, 1, 4),
416 OverrideIncognitoTestCase(true, true, 1, 0, 3, 4, 0, 0, 0, 0, 1, 4),
417 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 0, 0, 0, 2, 3),
418 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 5, 0, 0, 0, 5, 5),
419 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 5, 0, 0, 0, 5, 5),
420 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 6, 0, 0, 6, 1),
421 OverrideIncognitoTestCase(true, true, 1, 0, 3, 0, 5, 6, 0, 0, 6, 5),
422 OverrideIncognitoTestCase(true, true, 1, 0, 0, 4, 5, 6, 0, 0, 6, 5),
423 OverrideIncognitoTestCase(true, true, 1, 0, 0, 0, 0, 0, 7, 0, 1, 7),
424 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 0, 5, 7),
425 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 0, 8, 5, 8),
426 OverrideIncognitoTestCase(true, true, 1, 2, 0, 0, 5, 0, 7, 8, 5, 8),
427 OverrideIncognitoTestCase(true, true, 1, 2, 3, 0, 0, 6, 7, 0, 6, 7),
[email protected]6c164752014-03-12 00:29:15428 // Same tests as above but w/o incognito permission.
Victor Costan6ab575a002019-02-13 17:30:39429 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0),
430 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0),
431 OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 0, 0, 0, 0, 1, 0),
432 OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 0, 0, 0, 0, 1, 0),
433 OverrideIncognitoTestCase(false, false, 1, 0, 3, 4, 0, 0, 0, 0, 1, 0),
434 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 0, 0, 0, 2, 0),
435 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 5, 0, 0, 0, 5, 0),
436 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 5, 0, 0, 0, 5, 0),
437 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 6, 0, 0, 6, 0),
438 OverrideIncognitoTestCase(false, false, 1, 0, 3, 0, 5, 6, 0, 0, 6, 0),
439 OverrideIncognitoTestCase(false, false, 1, 0, 0, 4, 5, 6, 0, 0, 6, 0),
440 OverrideIncognitoTestCase(false, false, 1, 0, 0, 0, 0, 0, 7, 0, 1, 0),
441 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 0, 5, 0),
442 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 0, 8, 5, 0),
443 OverrideIncognitoTestCase(false, false, 1, 2, 0, 0, 5, 0, 7, 8, 5, 0),
444 OverrideIncognitoTestCase(false, false, 1, 2, 3, 0, 0, 6, 7, 0, 6, 0)));