Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: chrome/browser/prefs/pref_model_associator_unittest.cc

Issue 1326353002: Remove dependency of PrefSyncableService on Profile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pref_model_associator
Patch Set: Move files back to //chrome/browser/prefs & //chrome/test/base Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
gab 2015/09/10 14:15:09 Not sure why this file is marked 'D' by reitveld?!
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/macros.h"
6 #include "base/memory/ref_counted.h"
5 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
6 #include "base/prefs/scoped_user_pref_update.h" 8 #include "base/prefs/scoped_user_pref_update.h"
7 #include "base/values.h" 9 #include "base/values.h"
8 #include "chrome/browser/prefs/pref_model_associator.h" 10 #include "chrome/browser/prefs/pref_model_associator.h"
9 #include "chrome/common/pref_names.h" 11 #include "chrome/browser/prefs/pref_model_associator_client.h"
10 #include "chrome/test/base/testing_profile.h" 12 #include "chrome/browser/prefs/pref_service_mock_factory.h"
11 #include "content/public/test/test_browser_thread_bundle.h" 13 #include "chrome/browser/prefs/pref_service_syncable.h"
14 #include "chrome/browser/prefs/pref_service_syncable_factory.h"
15 #include "components/pref_registry/pref_registry_syncable.h"
12 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
13 17
14 // Any content settings pref name should do for these tests. 18 namespace {
15 const char* kContentSettingsPrefName = 19
16 "profile.content_settings.exceptions.cookies"; 20 const char kStringPrefName[] = "string_pref";
21 const char kListPrefName[] = "list_pref";
22 const char kDictionaryPrefName[] = "dictionary_pref";
23
24 } // namespace
17 25
18 class AbstractPreferenceMergeTest : public testing::Test { 26 class AbstractPreferenceMergeTest : public testing::Test {
19 protected: 27 protected:
20 void SetUp() override { pref_service_ = profile_.GetPrefs(); } 28 AbstractPreferenceMergeTest() {
29 pref_model_associator_client_.RegisterPreference(
30 kListPrefName, PREF_MODEL_PREFERENCE_TYPE_LIST);
31 pref_model_associator_client_.RegisterPreference(
32 kDictionaryPrefName, PREF_MODEL_PREFERENCE_TYPE_DICT);
33
34 PrefServiceMockFactory factory;
35 factory.SetPrefModelAssociatorClient(&pref_model_associator_client_);
36 scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry(
37 new user_prefs::PrefRegistrySyncable);
38 pref_service_ = factory.CreateSyncable(pref_registry.get());
gab 2015/09/10 14:15:09 We're trying to move towards a world where all reg
39
40 pref_registry->RegisterStringPref(
41 kStringPrefName, std::string(),
42 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
43 pref_registry->RegisterListPref(
44 kListPrefName,
45 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
46 pref_registry->RegisterDictionaryPref(
47 kDictionaryPrefName,
48 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
49 }
21 50
22 void SetContentPattern(base::DictionaryValue* patterns_dict, 51 void SetContentPattern(base::DictionaryValue* patterns_dict,
23 const std::string& expression, 52 const std::string& expression,
24 int setting) { 53 int setting) {
25 base::DictionaryValue* expression_dict; 54 base::DictionaryValue* expression_dict;
26 bool found = 55 bool found = patterns_dict->GetDictionaryWithoutPathExpansion(
27 patterns_dict->GetDictionaryWithoutPathExpansion(expression, 56 expression, &expression_dict);
28 &expression_dict);
29 if (!found) { 57 if (!found) {
30 expression_dict = new base::DictionaryValue; 58 expression_dict = new base::DictionaryValue;
31 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); 59 patterns_dict->SetWithoutPathExpansion(expression, expression_dict);
32 } 60 }
33 expression_dict->SetWithoutPathExpansion( 61 expression_dict->SetWithoutPathExpansion(
34 "setting", new base::FundamentalValue(setting)); 62 "setting", new base::FundamentalValue(setting));
35 } 63 }
36 64
37 void SetPrefToEmpty(const std::string& pref_name) { 65 void SetPrefToEmpty(const std::string& pref_name) {
38 scoped_ptr<base::Value> empty_value; 66 scoped_ptr<base::Value> empty_value;
39 const PrefService::Preference* pref = 67 const PrefService::Preference* pref =
40 pref_service_->FindPreference(pref_name.c_str()); 68 pref_service_->FindPreference(pref_name.c_str());
41 ASSERT_TRUE(pref); 69 ASSERT_TRUE(pref);
42 base::Value::Type type = pref->GetType(); 70 base::Value::Type type = pref->GetType();
43 if (type == base::Value::TYPE_DICTIONARY) 71 if (type == base::Value::TYPE_DICTIONARY)
44 empty_value.reset(new base::DictionaryValue); 72 empty_value.reset(new base::DictionaryValue);
45 else if (type == base::Value::TYPE_LIST) 73 else if (type == base::Value::TYPE_LIST)
46 empty_value.reset(new base::ListValue); 74 empty_value.reset(new base::ListValue);
47 else 75 else
48 FAIL(); 76 FAIL();
49 pref_service_->Set(pref_name.c_str(), *empty_value); 77 pref_service_->Set(pref_name.c_str(), *empty_value);
50 } 78 }
51 79
52 content::TestBrowserThreadBundle thread_bundle_; 80 PrefModelAssociatorClient pref_model_associator_client_;
53 TestingProfile profile_; 81 scoped_ptr<PrefServiceSyncable> pref_service_;
54 PrefService* pref_service_;
55 }; 82 };
56 83
57 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest { 84 class ListPreferenceMergeTest : public AbstractPreferenceMergeTest {
58 protected: 85 protected:
59 ListPreferenceMergeTest() : 86 ListPreferenceMergeTest()
60 server_url0_("http://example.com/server0"), 87 : server_url0_("http://example.com/server0"),
61 server_url1_("http://example.com/server1"), 88 server_url1_("http://example.com/server1"),
62 local_url0_("http://example.com/local0"), 89 local_url0_("http://example.com/local0"),
63 local_url1_("http://example.com/local1") {} 90 local_url1_("http://example.com/local1") {}
64 91
65 void SetUp() override { 92 void SetUp() override {
66 AbstractPreferenceMergeTest::SetUp(); 93 AbstractPreferenceMergeTest::SetUp();
67 server_url_list_.Append(new base::StringValue(server_url0_)); 94 server_url_list_.Append(new base::StringValue(server_url0_));
68 server_url_list_.Append(new base::StringValue(server_url1_)); 95 server_url_list_.Append(new base::StringValue(server_url1_));
69 } 96 }
70 97
71 std::string server_url0_; 98 std::string server_url0_;
72 std::string server_url1_; 99 std::string server_url1_;
73 std::string local_url0_; 100 std::string local_url0_;
74 std::string local_url1_; 101 std::string local_url1_;
75 base::ListValue server_url_list_; 102 base::ListValue server_url_list_;
76 }; 103 };
77 104
78 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) { 105 TEST_F(ListPreferenceMergeTest, NotListOrDictionary) {
79 pref_service_->SetString(prefs::kHomePage, local_url0_); 106 pref_service_->SetString(kStringPrefName, local_url0_);
80 const PrefService::Preference* pref = 107 const PrefService::Preference* pref =
81 pref_service_->FindPreference(prefs::kHomePage); 108 pref_service_->FindPreference(kStringPrefName);
82 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_)); 109 scoped_ptr<base::Value> server_value(new base::StringValue(server_url0_));
83 scoped_ptr<base::Value> merged_value( 110 scoped_ptr<base::Value> merged_value(
84 PrefModelAssociator::MergePreference(pref->name(), 111 PrefModelAssociator::MergePreference(pref->name(),
85 *pref->GetValue(), 112 *pref->GetValue(),
86 *server_value)); 113 *server_value,
114 &pref_model_associator_client_));
87 EXPECT_TRUE(merged_value->Equals(server_value.get())); 115 EXPECT_TRUE(merged_value->Equals(server_value.get()));
88 } 116 }
89 117
90 TEST_F(ListPreferenceMergeTest, LocalEmpty) { 118 TEST_F(ListPreferenceMergeTest, LocalEmpty) {
91 SetPrefToEmpty(prefs::kURLsToRestoreOnStartup); 119 SetPrefToEmpty(kListPrefName);
92 const PrefService::Preference* pref = 120 const PrefService::Preference* pref =
93 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 121 pref_service_->FindPreference(kListPrefName);
94 scoped_ptr<base::Value> merged_value( 122 scoped_ptr<base::Value> merged_value(
95 PrefModelAssociator::MergePreference(pref->name(), 123 PrefModelAssociator::MergePreference(pref->name(),
96 *pref->GetValue(), 124 *pref->GetValue(),
97 server_url_list_)); 125 server_url_list_,
126 &pref_model_associator_client_));
98 EXPECT_TRUE(merged_value->Equals(&server_url_list_)); 127 EXPECT_TRUE(merged_value->Equals(&server_url_list_));
99 } 128 }
100 129
101 TEST_F(ListPreferenceMergeTest, ServerNull) { 130 TEST_F(ListPreferenceMergeTest, ServerNull) {
102 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); 131 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue();
103 { 132 {
104 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); 133 ListPrefUpdate update(pref_service_.get(), kListPrefName);
105 base::ListValue* local_list_value = update.Get(); 134 base::ListValue* local_list_value = update.Get();
106 local_list_value->Append(new base::StringValue(local_url0_)); 135 local_list_value->Append(new base::StringValue(local_url0_));
107 } 136 }
108 137
109 const PrefService::Preference* pref = 138 const PrefService::Preference* pref =
110 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 139 pref_service_->FindPreference(kListPrefName);
111 scoped_ptr<base::Value> merged_value( 140 scoped_ptr<base::Value> merged_value(
112 PrefModelAssociator::MergePreference(pref->name(), 141 PrefModelAssociator::MergePreference(pref->name(),
113 *pref->GetValue(), 142 *pref->GetValue(),
114 *null_value)); 143 *null_value,
144 &pref_model_associator_client_));
115 const base::ListValue* local_list_value = 145 const base::ListValue* local_list_value =
116 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); 146 pref_service_->GetList(kListPrefName);
117 EXPECT_TRUE(merged_value->Equals(local_list_value)); 147 EXPECT_TRUE(merged_value->Equals(local_list_value));
118 } 148 }
119 149
120 TEST_F(ListPreferenceMergeTest, ServerEmpty) { 150 TEST_F(ListPreferenceMergeTest, ServerEmpty) {
121 scoped_ptr<base::Value> empty_value(new base::ListValue); 151 scoped_ptr<base::Value> empty_value(new base::ListValue);
122 { 152 {
123 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); 153 ListPrefUpdate update(pref_service_.get(), kListPrefName);
124 base::ListValue* local_list_value = update.Get(); 154 base::ListValue* local_list_value = update.Get();
125 local_list_value->Append(new base::StringValue(local_url0_)); 155 local_list_value->Append(new base::StringValue(local_url0_));
126 } 156 }
127 157
128 const PrefService::Preference* pref = 158 const PrefService::Preference* pref =
129 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 159 pref_service_->FindPreference(kListPrefName);
130 scoped_ptr<base::Value> merged_value( 160 scoped_ptr<base::Value> merged_value(
131 PrefModelAssociator::MergePreference(pref->name(), 161 PrefModelAssociator::MergePreference(pref->name(),
132 *pref->GetValue(), 162 *pref->GetValue(),
133 *empty_value)); 163 *empty_value,
164 &pref_model_associator_client_));
134 const base::ListValue* local_list_value = 165 const base::ListValue* local_list_value =
135 pref_service_->GetList(prefs::kURLsToRestoreOnStartup); 166 pref_service_->GetList(kListPrefName);
136 EXPECT_TRUE(merged_value->Equals(local_list_value)); 167 EXPECT_TRUE(merged_value->Equals(local_list_value));
137 } 168 }
138 169
139 TEST_F(ListPreferenceMergeTest, Merge) { 170 TEST_F(ListPreferenceMergeTest, Merge) {
140 { 171 {
141 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); 172 ListPrefUpdate update(pref_service_.get(), kListPrefName);
142 base::ListValue* local_list_value = update.Get(); 173 base::ListValue* local_list_value = update.Get();
143 local_list_value->Append(new base::StringValue(local_url0_)); 174 local_list_value->Append(new base::StringValue(local_url0_));
144 local_list_value->Append(new base::StringValue(local_url1_)); 175 local_list_value->Append(new base::StringValue(local_url1_));
145 } 176 }
146 177
147 const PrefService::Preference* pref = 178 const PrefService::Preference* pref =
148 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 179 pref_service_->FindPreference(kListPrefName);
149 scoped_ptr<base::Value> merged_value( 180 scoped_ptr<base::Value> merged_value(
150 PrefModelAssociator::MergePreference(pref->name(), 181 PrefModelAssociator::MergePreference(pref->name(),
151 *pref->GetValue(), 182 *pref->GetValue(),
152 server_url_list_)); 183 server_url_list_,
184 &pref_model_associator_client_));
153 185
154 base::ListValue expected; 186 base::ListValue expected;
155 expected.Append(new base::StringValue(server_url0_)); 187 expected.Append(new base::StringValue(server_url0_));
156 expected.Append(new base::StringValue(server_url1_)); 188 expected.Append(new base::StringValue(server_url1_));
157 expected.Append(new base::StringValue(local_url0_)); 189 expected.Append(new base::StringValue(local_url0_));
158 expected.Append(new base::StringValue(local_url1_)); 190 expected.Append(new base::StringValue(local_url1_));
159 EXPECT_TRUE(merged_value->Equals(&expected)); 191 EXPECT_TRUE(merged_value->Equals(&expected));
160 } 192 }
161 193
162 TEST_F(ListPreferenceMergeTest, Duplicates) { 194 TEST_F(ListPreferenceMergeTest, Duplicates) {
163 { 195 {
164 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); 196 ListPrefUpdate update(pref_service_.get(), kListPrefName);
165 base::ListValue* local_list_value = update.Get(); 197 base::ListValue* local_list_value = update.Get();
166 local_list_value->Append(new base::StringValue(local_url0_)); 198 local_list_value->Append(new base::StringValue(local_url0_));
167 local_list_value->Append(new base::StringValue(server_url0_)); 199 local_list_value->Append(new base::StringValue(server_url0_));
168 local_list_value->Append(new base::StringValue(server_url1_)); 200 local_list_value->Append(new base::StringValue(server_url1_));
169 } 201 }
170 202
171 const PrefService::Preference* pref = 203 const PrefService::Preference* pref =
172 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 204 pref_service_->FindPreference(kListPrefName);
173 scoped_ptr<base::Value> merged_value( 205 scoped_ptr<base::Value> merged_value(
174 PrefModelAssociator::MergePreference(pref->name(), 206 PrefModelAssociator::MergePreference(pref->name(),
175 *pref->GetValue(), 207 *pref->GetValue(),
176 server_url_list_)); 208 server_url_list_,
209 &pref_model_associator_client_));
177 210
178 base::ListValue expected; 211 base::ListValue expected;
179 expected.Append(new base::StringValue(server_url0_)); 212 expected.Append(new base::StringValue(server_url0_));
180 expected.Append(new base::StringValue(server_url1_)); 213 expected.Append(new base::StringValue(server_url1_));
181 expected.Append(new base::StringValue(local_url0_)); 214 expected.Append(new base::StringValue(local_url0_));
182 EXPECT_TRUE(merged_value->Equals(&expected)); 215 EXPECT_TRUE(merged_value->Equals(&expected));
183 } 216 }
184 217
185 TEST_F(ListPreferenceMergeTest, Equals) { 218 TEST_F(ListPreferenceMergeTest, Equals) {
186 { 219 {
187 ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup); 220 ListPrefUpdate update(pref_service_.get(), kListPrefName);
188 base::ListValue* local_list_value = update.Get(); 221 base::ListValue* local_list_value = update.Get();
189 local_list_value->Append(new base::StringValue(server_url0_)); 222 local_list_value->Append(new base::StringValue(server_url0_));
190 local_list_value->Append(new base::StringValue(server_url1_)); 223 local_list_value->Append(new base::StringValue(server_url1_));
191 } 224 }
192 225
193 scoped_ptr<base::Value> original(server_url_list_.DeepCopy()); 226 scoped_ptr<base::Value> original(server_url_list_.DeepCopy());
194 const PrefService::Preference* pref = 227 const PrefService::Preference* pref =
195 pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup); 228 pref_service_->FindPreference(kListPrefName);
196 scoped_ptr<base::Value> merged_value( 229 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
197 PrefModelAssociator::MergePreference(pref->name(), 230 pref->name(), *pref->GetValue(), server_url_list_,
198 *pref->GetValue(), 231 &pref_model_associator_client_));
199 server_url_list_));
200 EXPECT_TRUE(merged_value->Equals(original.get())); 232 EXPECT_TRUE(merged_value->Equals(original.get()));
201 } 233 }
202 234
203 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { 235 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest {
204 protected: 236 protected:
205 DictionaryPreferenceMergeTest() : 237 DictionaryPreferenceMergeTest()
206 expression0_("expression0"), 238 : expression0_("expression0"),
207 expression1_("expression1"), 239 expression1_("expression1"),
208 expression2_("expression2"), 240 expression2_("expression2"),
209 expression3_("expression3"), 241 expression3_("expression3"),
210 expression4_("expression4") {} 242 expression4_("expression4") {}
211 243
212 void SetUp() override { 244 void SetUp() override {
213 AbstractPreferenceMergeTest::SetUp(); 245 AbstractPreferenceMergeTest::SetUp();
214 SetContentPattern(&server_patterns_, expression0_, 1); 246 SetContentPattern(&server_patterns_, expression0_, 1);
215 SetContentPattern(&server_patterns_, expression1_, 2); 247 SetContentPattern(&server_patterns_, expression1_, 2);
216 SetContentPattern(&server_patterns_, expression2_, 1); 248 SetContentPattern(&server_patterns_, expression2_, 1);
217 } 249 }
218 250
219 std::string expression0_; 251 std::string expression0_;
220 std::string expression1_; 252 std::string expression1_;
221 std::string expression2_; 253 std::string expression2_;
222 std::string expression3_; 254 std::string expression3_;
223 std::string expression4_; 255 std::string expression4_;
224 base::DictionaryValue server_patterns_; 256 base::DictionaryValue server_patterns_;
225 }; 257 };
226 258
227 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { 259 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) {
228 SetPrefToEmpty(kContentSettingsPrefName); 260 SetPrefToEmpty(kDictionaryPrefName);
229 const PrefService::Preference* pref = 261 const PrefService::Preference* pref =
230 pref_service_->FindPreference(kContentSettingsPrefName); 262 pref_service_->FindPreference(kDictionaryPrefName);
231 scoped_ptr<base::Value> merged_value( 263 scoped_ptr<base::Value> merged_value(
232 PrefModelAssociator::MergePreference(pref->name(), 264 PrefModelAssociator::MergePreference(pref->name(),
233 *pref->GetValue(), 265 *pref->GetValue(),
234 server_patterns_)); 266 server_patterns_,
267 &pref_model_associator_client_));
235 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 268 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
236 } 269 }
237 270
238 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { 271 TEST_F(DictionaryPreferenceMergeTest, ServerNull) {
239 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); 272 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue();
240 { 273 {
241 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 274 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
242 base::DictionaryValue* local_dict_value = update.Get(); 275 base::DictionaryValue* local_dict_value = update.Get();
243 SetContentPattern(local_dict_value, expression3_, 1); 276 SetContentPattern(local_dict_value, expression3_, 1);
244 } 277 }
245 278
246 const PrefService::Preference* pref = 279 const PrefService::Preference* pref =
247 pref_service_->FindPreference(kContentSettingsPrefName); 280 pref_service_->FindPreference(kDictionaryPrefName);
248 scoped_ptr<base::Value> merged_value( 281 scoped_ptr<base::Value> merged_value(
249 PrefModelAssociator::MergePreference(pref->name(), 282 PrefModelAssociator::MergePreference(pref->name(),
250 *pref->GetValue(), 283 *pref->GetValue(),
251 *null_value)); 284 *null_value,
285 &pref_model_associator_client_));
252 const base::DictionaryValue* local_dict_value = 286 const base::DictionaryValue* local_dict_value =
253 pref_service_->GetDictionary(kContentSettingsPrefName); 287 pref_service_->GetDictionary(kDictionaryPrefName);
254 EXPECT_TRUE(merged_value->Equals(local_dict_value)); 288 EXPECT_TRUE(merged_value->Equals(local_dict_value));
255 } 289 }
256 290
257 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { 291 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) {
258 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); 292 scoped_ptr<base::Value> empty_value(new base::DictionaryValue);
259 { 293 {
260 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 294 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
261 base::DictionaryValue* local_dict_value = update.Get(); 295 base::DictionaryValue* local_dict_value = update.Get();
262 SetContentPattern(local_dict_value, expression3_, 1); 296 SetContentPattern(local_dict_value, expression3_, 1);
263 } 297 }
264 298
265 const PrefService::Preference* pref = 299 const PrefService::Preference* pref =
266 pref_service_->FindPreference(kContentSettingsPrefName); 300 pref_service_->FindPreference(kDictionaryPrefName);
267 scoped_ptr<base::Value> merged_value( 301 scoped_ptr<base::Value> merged_value(
268 PrefModelAssociator::MergePreference(pref->name(), 302 PrefModelAssociator::MergePreference(pref->name(),
269 *pref->GetValue(), 303 *pref->GetValue(),
270 *empty_value)); 304 *empty_value,
305 &pref_model_associator_client_));
271 const base::DictionaryValue* local_dict_value = 306 const base::DictionaryValue* local_dict_value =
272 pref_service_->GetDictionary(kContentSettingsPrefName); 307 pref_service_->GetDictionary(kDictionaryPrefName);
273 EXPECT_TRUE(merged_value->Equals(local_dict_value)); 308 EXPECT_TRUE(merged_value->Equals(local_dict_value));
274 } 309 }
275 310
276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { 311 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) {
277 { 312 {
278 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 313 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
279 base::DictionaryValue* local_dict_value = update.Get(); 314 base::DictionaryValue* local_dict_value = update.Get();
280 SetContentPattern(local_dict_value, expression3_, 1); 315 SetContentPattern(local_dict_value, expression3_, 1);
281 } 316 }
282 317
283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 318 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
284 kContentSettingsPrefName, 319 kDictionaryPrefName,
285 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), 320 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(),
286 server_patterns_)); 321 server_patterns_,
322 &pref_model_associator_client_));
287 323
288 base::DictionaryValue expected; 324 base::DictionaryValue expected;
289 SetContentPattern(&expected, expression0_, 1); 325 SetContentPattern(&expected, expression0_, 1);
290 SetContentPattern(&expected, expression1_, 2); 326 SetContentPattern(&expected, expression1_, 2);
291 SetContentPattern(&expected, expression2_, 1); 327 SetContentPattern(&expected, expression2_, 1);
292 SetContentPattern(&expected, expression3_, 1); 328 SetContentPattern(&expected, expression3_, 1);
293 EXPECT_TRUE(merged_value->Equals(&expected)); 329 EXPECT_TRUE(merged_value->Equals(&expected));
294 } 330 }
295 331
296 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { 332 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) {
297 { 333 {
298 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 334 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
299 base::DictionaryValue* local_dict_value = update.Get(); 335 base::DictionaryValue* local_dict_value = update.Get();
300 SetContentPattern(local_dict_value, expression0_, 2); 336 SetContentPattern(local_dict_value, expression0_, 2);
301 SetContentPattern(local_dict_value, expression2_, 1); 337 SetContentPattern(local_dict_value, expression2_, 1);
302 SetContentPattern(local_dict_value, expression3_, 1); 338 SetContentPattern(local_dict_value, expression3_, 1);
303 SetContentPattern(local_dict_value, expression4_, 2); 339 SetContentPattern(local_dict_value, expression4_, 2);
304 } 340 }
305 341
306 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 342 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
307 kContentSettingsPrefName, 343 kDictionaryPrefName,
308 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), 344 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(),
309 server_patterns_)); 345 server_patterns_,
346 &pref_model_associator_client_));
310 347
311 base::DictionaryValue expected; 348 base::DictionaryValue expected;
312 SetContentPattern(&expected, expression0_, 1); 349 SetContentPattern(&expected, expression0_, 1);
313 SetContentPattern(&expected, expression1_, 2); 350 SetContentPattern(&expected, expression1_, 2);
314 SetContentPattern(&expected, expression2_, 1); 351 SetContentPattern(&expected, expression2_, 1);
315 SetContentPattern(&expected, expression3_, 1); 352 SetContentPattern(&expected, expression3_, 1);
316 SetContentPattern(&expected, expression4_, 2); 353 SetContentPattern(&expected, expression4_, 2);
317 EXPECT_TRUE(merged_value->Equals(&expected)); 354 EXPECT_TRUE(merged_value->Equals(&expected));
318 } 355 }
319 356
320 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) { 357 TEST_F(DictionaryPreferenceMergeTest, MergeValueToDictionary) {
321 base::DictionaryValue local_dict_value; 358 base::DictionaryValue local_dict_value;
322 local_dict_value.SetInteger("key", 0); 359 local_dict_value.SetInteger("key", 0);
323 360
324 base::DictionaryValue server_dict_value; 361 base::DictionaryValue server_dict_value;
325 server_dict_value.SetInteger("key.subkey", 0); 362 server_dict_value.SetInteger("key.subkey", 0);
326 363
327 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 364 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
328 kContentSettingsPrefName, 365 kDictionaryPrefName,
329 local_dict_value, 366 local_dict_value,
330 server_dict_value)); 367 server_dict_value,
368 &pref_model_associator_client_));
331 369
332 EXPECT_TRUE(merged_value->Equals(&server_dict_value)); 370 EXPECT_TRUE(merged_value->Equals(&server_dict_value));
333 } 371 }
334 372
335 TEST_F(DictionaryPreferenceMergeTest, Equal) { 373 TEST_F(DictionaryPreferenceMergeTest, Equal) {
336 { 374 {
337 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 375 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
338 base::DictionaryValue* local_dict_value = update.Get(); 376 base::DictionaryValue* local_dict_value = update.Get();
339 SetContentPattern(local_dict_value, expression0_, 1); 377 SetContentPattern(local_dict_value, expression0_, 1);
340 SetContentPattern(local_dict_value, expression1_, 2); 378 SetContentPattern(local_dict_value, expression1_, 2);
341 SetContentPattern(local_dict_value, expression2_, 1); 379 SetContentPattern(local_dict_value, expression2_, 1);
342 } 380 }
343 381
344 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 382 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
345 kContentSettingsPrefName, 383 kDictionaryPrefName,
346 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), 384 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(),
347 server_patterns_)); 385 server_patterns_,
386 &pref_model_associator_client_));
348 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 387 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
349 } 388 }
350 389
351 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { 390 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) {
352 { 391 {
353 DictionaryPrefUpdate update(pref_service_, kContentSettingsPrefName); 392 DictionaryPrefUpdate update(pref_service_.get(), kDictionaryPrefName);
354 base::DictionaryValue* local_dict_value = update.Get(); 393 base::DictionaryValue* local_dict_value = update.Get();
355 SetContentPattern(local_dict_value, expression0_, 2); 394 SetContentPattern(local_dict_value, expression0_, 2);
356 SetContentPattern(local_dict_value, expression1_, 2); 395 SetContentPattern(local_dict_value, expression1_, 2);
357 SetContentPattern(local_dict_value, expression2_, 1); 396 SetContentPattern(local_dict_value, expression2_, 1);
358 } 397 }
359 398
360 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
361 kContentSettingsPrefName, 400 kDictionaryPrefName,
362 *pref_service_->FindPreference(kContentSettingsPrefName)->GetValue(), 401 *pref_service_->FindPreference(kDictionaryPrefName)->GetValue(),
363 server_patterns_)); 402 server_patterns_,
403 &pref_model_associator_client_));
364 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 404 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
365 } 405 }
366 406
367 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { 407 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest {
368 protected: 408 protected:
369 IndividualPreferenceMergeTest() : 409 IndividualPreferenceMergeTest()
370 url0_("http://example.com/server0"), 410 : url0_("http://example.com/server0"),
371 url1_("http://example.com/server1"), 411 url1_("http://example.com/server1"),
372 expression0_("expression0"), 412 expression0_("expression0"),
373 expression1_("expression1") {} 413 expression1_("expression1") {}
374 414
375 void SetUp() override { 415 void SetUp() override {
376 AbstractPreferenceMergeTest::SetUp(); 416 AbstractPreferenceMergeTest::SetUp();
377 server_url_list_.Append(new base::StringValue(url0_)); 417 server_url_list_.Append(new base::StringValue(url0_));
378 SetContentPattern(&server_patterns_, expression0_, 1); 418 SetContentPattern(&server_patterns_, expression0_, 1);
379 } 419 }
380 420
381 bool MergeListPreference(const char* pref) { 421 bool MergeListPreference(const char* pref) {
382 { 422 {
383 ListPrefUpdate update(pref_service_, pref); 423 ListPrefUpdate update(pref_service_.get(), pref);
384 base::ListValue* local_list_value = update.Get(); 424 base::ListValue* local_list_value = update.Get();
385 local_list_value->Append(new base::StringValue(url1_)); 425 local_list_value->Append(new base::StringValue(url1_));
386 } 426 }
387 427
388 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 428 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
389 pref, 429 pref,
390 *pref_service_->GetUserPrefValue(pref), 430 *pref_service_->GetUserPrefValue(pref),
391 server_url_list_)); 431 server_url_list_,
432 &pref_model_associator_client_));
392 433
393 base::ListValue expected; 434 base::ListValue expected;
394 expected.Append(new base::StringValue(url0_)); 435 expected.Append(new base::StringValue(url0_));
395 expected.Append(new base::StringValue(url1_)); 436 expected.Append(new base::StringValue(url1_));
396 return merged_value->Equals(&expected); 437 return merged_value->Equals(&expected);
397 } 438 }
398 439
399 bool MergeDictionaryPreference(const char* pref) { 440 bool MergeDictionaryPreference(const char* pref) {
400 { 441 {
401 DictionaryPrefUpdate update(pref_service_, pref); 442 DictionaryPrefUpdate update(pref_service_.get(), pref);
402 base::DictionaryValue* local_dict_value = update.Get(); 443 base::DictionaryValue* local_dict_value = update.Get();
403 SetContentPattern(local_dict_value, expression1_, 1); 444 SetContentPattern(local_dict_value, expression1_, 1);
404 } 445 }
405 446
406 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 447 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
407 pref, 448 pref,
408 *pref_service_->GetUserPrefValue(pref), 449 *pref_service_->GetUserPrefValue(pref),
409 server_patterns_)); 450 server_patterns_,
451 &pref_model_associator_client_));
410 452
411 base::DictionaryValue expected; 453 base::DictionaryValue expected;
412 SetContentPattern(&expected, expression0_, 1); 454 SetContentPattern(&expected, expression0_, 1);
413 SetContentPattern(&expected, expression1_, 1); 455 SetContentPattern(&expected, expression1_, 1);
414 return merged_value->Equals(&expected); 456 return merged_value->Equals(&expected);
415 } 457 }
416 458
417 std::string url0_; 459 std::string url0_;
418 std::string url1_; 460 std::string url1_;
419 std::string expression0_; 461 std::string expression0_;
420 std::string expression1_; 462 std::string expression1_;
421 std::string content_type0_; 463 std::string content_type0_;
422 base::ListValue server_url_list_; 464 base::ListValue server_url_list_;
423 base::DictionaryValue server_patterns_; 465 base::DictionaryValue server_patterns_;
424 }; 466 };
425 467
426 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { 468 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) {
gab 2015/09/10 14:15:09 Change name of this test to reflect its new generi
427 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); 469 EXPECT_TRUE(MergeListPreference(kListPrefName));
428 } 470 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698