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

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

Issue 1257093002: Remove the migration code from content_settings::PrefProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed the tests. Created 5 years, 4 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.
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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/prefs/scoped_user_pref_update.h" 6 #include "base/prefs/scoped_user_pref_update.h"
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/prefs/pref_model_associator.h" 8 #include "chrome/browser/prefs/pref_model_associator.h"
9 #include "chrome/common/pref_names.h" 9 #include "chrome/common/pref_names.h"
10 #include "chrome/test/base/testing_profile.h" 10 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/test/test_browser_thread_bundle.h" 11 #include "content/public/test/test_browser_thread_bundle.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 class AbstractPreferenceMergeTest : public testing::Test { 14 class AbstractPreferenceMergeTest : public testing::Test {
15 protected: 15 protected:
16 void SetUp() override { pref_service_ = profile_.GetPrefs(); } 16 void SetUp() override { pref_service_ = profile_.GetPrefs(); }
17 17
18 void SetContentPattern(base::DictionaryValue* patterns_dict, 18 void SetContentPattern(base::DictionaryValue* patterns_dict,
19 const std::string& expression, 19 const std::string& expression,
20 const std::string& content_type,
21 int setting) { 20 int setting) {
22 base::DictionaryValue* expression_dict; 21 base::DictionaryValue* expression_dict;
23 bool found = 22 bool found =
24 patterns_dict->GetDictionaryWithoutPathExpansion(expression, 23 patterns_dict->GetDictionaryWithoutPathExpansion(expression,
25 &expression_dict); 24 &expression_dict);
26 if (!found) { 25 if (!found) {
27 expression_dict = new base::DictionaryValue; 26 expression_dict = new base::DictionaryValue;
28 patterns_dict->SetWithoutPathExpansion(expression, expression_dict); 27 patterns_dict->SetWithoutPathExpansion(expression, expression_dict);
29 } 28 }
30 expression_dict->SetWithoutPathExpansion( 29 expression_dict->SetWithoutPathExpansion(
31 content_type, new base::FundamentalValue(setting)); 30 "setting", new base::FundamentalValue(setting));
32 } 31 }
33 32
34 void SetPrefToEmpty(const std::string& pref_name) { 33 void SetPrefToEmpty(const std::string& pref_name) {
35 scoped_ptr<base::Value> empty_value; 34 scoped_ptr<base::Value> empty_value;
36 const PrefService::Preference* pref = 35 const PrefService::Preference* pref =
37 pref_service_->FindPreference(pref_name.c_str()); 36 pref_service_->FindPreference(pref_name.c_str());
38 ASSERT_TRUE(pref); 37 ASSERT_TRUE(pref);
39 base::Value::Type type = pref->GetType(); 38 base::Value::Type type = pref->GetType();
40 if (type == base::Value::TYPE_DICTIONARY) 39 if (type == base::Value::TYPE_DICTIONARY)
41 empty_value.reset(new base::DictionaryValue); 40 empty_value.reset(new base::DictionaryValue);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 server_url_list_)); 195 server_url_list_));
197 EXPECT_TRUE(merged_value->Equals(original.get())); 196 EXPECT_TRUE(merged_value->Equals(original.get()));
198 } 197 }
199 198
200 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest { 199 class DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest {
201 protected: 200 protected:
202 DictionaryPreferenceMergeTest() : 201 DictionaryPreferenceMergeTest() :
203 expression0_("expression0"), 202 expression0_("expression0"),
204 expression1_("expression1"), 203 expression1_("expression1"),
205 expression2_("expression2"), 204 expression2_("expression2"),
206 content_type0_("content_type0"), 205 expression3_("expression3"),
207 content_type1_("content_type1") {} 206 expression4_("expression4") {}
208 207
209 void SetUp() override { 208 void SetUp() override {
210 AbstractPreferenceMergeTest::SetUp(); 209 AbstractPreferenceMergeTest::SetUp();
211 SetContentPattern(&server_patterns_, expression0_, content_type0_, 1); 210 SetContentPattern(&server_patterns_, expression0_, 1);
212 SetContentPattern(&server_patterns_, expression0_, content_type1_, 2); 211 SetContentPattern(&server_patterns_, expression1_, 2);
213 SetContentPattern(&server_patterns_, expression1_, content_type0_, 1); 212 SetContentPattern(&server_patterns_, expression2_, 1);
214 } 213 }
215 214
216 std::string expression0_; 215 std::string expression0_;
217 std::string expression1_; 216 std::string expression1_;
218 std::string expression2_; 217 std::string expression2_;
219 std::string content_type0_; 218 std::string expression3_;
220 std::string content_type1_; 219 std::string expression4_;
221 base::DictionaryValue server_patterns_; 220 base::DictionaryValue server_patterns_;
222 }; 221 };
223 222
224 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) { 223 TEST_F(DictionaryPreferenceMergeTest, LocalEmpty) {
225 SetPrefToEmpty(prefs::kContentSettingsPatternPairs); 224 SetPrefToEmpty(prefs::kContentSettingsImagesPatternPairs);
226 const PrefService::Preference* pref = 225 const PrefService::Preference* pref =
227 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); 226 pref_service_->FindPreference(prefs::kContentSettingsImagesPatternPairs);
228 scoped_ptr<base::Value> merged_value( 227 scoped_ptr<base::Value> merged_value(
229 PrefModelAssociator::MergePreference(pref->name(), 228 PrefModelAssociator::MergePreference(pref->name(),
230 *pref->GetValue(), 229 *pref->GetValue(),
231 server_patterns_)); 230 server_patterns_));
232 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 231 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
233 } 232 }
234 233
235 TEST_F(DictionaryPreferenceMergeTest, ServerNull) { 234 TEST_F(DictionaryPreferenceMergeTest, ServerNull) {
236 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue(); 235 scoped_ptr<base::Value> null_value = base::Value::CreateNullValue();
237 { 236 {
238 DictionaryPrefUpdate update(pref_service_, 237 DictionaryPrefUpdate update(pref_service_,
239 prefs::kContentSettingsPatternPairs); 238 prefs::kContentSettingsCookiesPatternPairs);
240 base::DictionaryValue* local_dict_value = update.Get(); 239 base::DictionaryValue* local_dict_value = update.Get();
241 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); 240 SetContentPattern(local_dict_value, expression3_, 1);
242 } 241 }
243 242
244 const PrefService::Preference* pref = 243 const PrefService::Preference* pref =
245 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); 244 pref_service_->FindPreference(prefs::kContentSettingsCookiesPatternPairs);
246 scoped_ptr<base::Value> merged_value( 245 scoped_ptr<base::Value> merged_value(
247 PrefModelAssociator::MergePreference(pref->name(), 246 PrefModelAssociator::MergePreference(pref->name(),
248 *pref->GetValue(), 247 *pref->GetValue(),
249 *null_value)); 248 *null_value));
250 const base::DictionaryValue* local_dict_value = 249 const base::DictionaryValue* local_dict_value =
251 pref_service_->GetDictionary(prefs::kContentSettingsPatternPairs); 250 pref_service_->GetDictionary(prefs::kContentSettingsCookiesPatternPairs);
252 EXPECT_TRUE(merged_value->Equals(local_dict_value)); 251 EXPECT_TRUE(merged_value->Equals(local_dict_value));
253 } 252 }
254 253
255 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) { 254 TEST_F(DictionaryPreferenceMergeTest, ServerEmpty) {
256 scoped_ptr<base::Value> empty_value(new base::DictionaryValue); 255 scoped_ptr<base::Value> empty_value(new base::DictionaryValue);
257 { 256 {
258 DictionaryPrefUpdate update(pref_service_, 257 DictionaryPrefUpdate update(pref_service_,
259 prefs::kContentSettingsPatternPairs); 258 prefs::kContentSettingsPluginsPatternPairs);
260 base::DictionaryValue* local_dict_value = update.Get(); 259 base::DictionaryValue* local_dict_value = update.Get();
261 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); 260 SetContentPattern(local_dict_value, expression3_, 1);
262 } 261 }
263 262
264 const PrefService::Preference* pref = 263 const PrefService::Preference* pref =
265 pref_service_->FindPreference(prefs::kContentSettingsPatternPairs); 264 pref_service_->FindPreference(
265 prefs::kContentSettingsPluginsPatternPairs);
266 scoped_ptr<base::Value> merged_value( 266 scoped_ptr<base::Value> merged_value(
267 PrefModelAssociator::MergePreference(pref->name(), 267 PrefModelAssociator::MergePreference(pref->name(),
268 *pref->GetValue(), 268 *pref->GetValue(),
269 *empty_value)); 269 *empty_value));
270 const base::DictionaryValue* local_dict_value = 270 const base::DictionaryValue* local_dict_value =
271 pref_service_->GetDictionary(prefs::kContentSettingsPatternPairs); 271 pref_service_->GetDictionary(
272 prefs::kContentSettingsPluginsPatternPairs);
272 EXPECT_TRUE(merged_value->Equals(local_dict_value)); 273 EXPECT_TRUE(merged_value->Equals(local_dict_value));
273 } 274 }
274 275
275 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) { 276 TEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) {
276 { 277 {
277 DictionaryPrefUpdate update(pref_service_, 278 DictionaryPrefUpdate update(pref_service_,
278 prefs::kContentSettingsPatternPairs); 279 prefs::kContentSettingsJavaScriptPatternPairs);
279 base::DictionaryValue* local_dict_value = update.Get(); 280 base::DictionaryValue* local_dict_value = update.Get();
280 SetContentPattern(local_dict_value, expression2_, content_type0_, 1); 281 SetContentPattern(local_dict_value, expression3_, 1);
281 } 282 }
282 283
283 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 284 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
284 prefs::kContentSettingsPatternPairs, 285 prefs::kContentSettingsJavaScriptPatternPairs,
285 *pref_service_->FindPreference(prefs::kContentSettingsPatternPairs)-> 286 *pref_service_->FindPreference(
286 GetValue(), 287 prefs::kContentSettingsJavaScriptPatternPairs)->GetValue(),
287 server_patterns_)); 288 server_patterns_));
288 289
289 base::DictionaryValue expected; 290 base::DictionaryValue expected;
290 SetContentPattern(&expected, expression0_, content_type0_, 1); 291 SetContentPattern(&expected, expression0_, 1);
291 SetContentPattern(&expected, expression0_, content_type1_, 2); 292 SetContentPattern(&expected, expression1_, 2);
292 SetContentPattern(&expected, expression1_, content_type0_, 1); 293 SetContentPattern(&expected, expression2_, 1);
293 SetContentPattern(&expected, expression2_, content_type0_, 1); 294 SetContentPattern(&expected, expression3_, 1);
294 EXPECT_TRUE(merged_value->Equals(&expected)); 295 EXPECT_TRUE(merged_value->Equals(&expected));
295 } 296 }
296 297
297 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) { 298 TEST_F(DictionaryPreferenceMergeTest, MergeConflicts) {
298 { 299 {
299 DictionaryPrefUpdate update(pref_service_, 300 DictionaryPrefUpdate update(pref_service_,
300 prefs::kContentSettingsPatternPairs); 301 prefs::kContentSettingsPopupsPatternPairs);
301 base::DictionaryValue* local_dict_value = update.Get(); 302 base::DictionaryValue* local_dict_value = update.Get();
302 SetContentPattern(local_dict_value, expression0_, content_type0_, 2); 303 SetContentPattern(local_dict_value, expression0_, 2);
303 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); 304 SetContentPattern(local_dict_value, expression2_, 1);
304 SetContentPattern(local_dict_value, expression1_, content_type1_, 1); 305 SetContentPattern(local_dict_value, expression3_, 1);
305 SetContentPattern(local_dict_value, expression2_, content_type0_, 2); 306 SetContentPattern(local_dict_value, expression4_, 2);
306 } 307 }
307 308
308 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 309 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
309 prefs::kContentSettingsPatternPairs, 310 prefs::kContentSettingsPopupsPatternPairs,
310 *pref_service_->FindPreference(prefs::kContentSettingsPatternPairs)-> 311 *pref_service_->FindPreference(
311 GetValue(), 312 prefs::kContentSettingsPopupsPatternPairs)->GetValue(),
312 server_patterns_)); 313 server_patterns_));
313 314
314 base::DictionaryValue expected; 315 base::DictionaryValue expected;
315 SetContentPattern(&expected, expression0_, content_type0_, 1); 316 SetContentPattern(&expected, expression0_, 1);
316 SetContentPattern(&expected, expression0_, content_type1_, 2); 317 SetContentPattern(&expected, expression1_, 2);
317 SetContentPattern(&expected, expression1_, content_type0_, 1); 318 SetContentPattern(&expected, expression2_, 1);
318 SetContentPattern(&expected, expression1_, content_type1_, 1); 319 SetContentPattern(&expected, expression3_, 1);
319 SetContentPattern(&expected, expression2_, content_type0_, 2); 320 SetContentPattern(&expected, expression4_, 2);
320 EXPECT_TRUE(merged_value->Equals(&expected)); 321 EXPECT_TRUE(merged_value->Equals(&expected));
321 } 322 }
322 323
323 TEST_F(DictionaryPreferenceMergeTest, Equal) { 324 TEST_F(DictionaryPreferenceMergeTest, Equal) {
324 { 325 {
325 DictionaryPrefUpdate update(pref_service_, 326 DictionaryPrefUpdate update(pref_service_,
326 prefs::kContentSettingsPatternPairs); 327 prefs::kContentSettingsMouseLockPatternPairs);
327 base::DictionaryValue* local_dict_value = update.Get(); 328 base::DictionaryValue* local_dict_value = update.Get();
328 SetContentPattern(local_dict_value, expression0_, content_type0_, 1); 329 SetContentPattern(local_dict_value, expression0_, 1);
329 SetContentPattern(local_dict_value, expression0_, content_type1_, 2); 330 SetContentPattern(local_dict_value, expression1_, 2);
330 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); 331 SetContentPattern(local_dict_value, expression2_, 1);
331 } 332 }
332 333
333 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 334 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
334 prefs::kContentSettingsPatternPairs, 335 prefs::kContentSettingsMouseLockPatternPairs,
335 *pref_service_-> 336 *pref_service_->FindPreference(
336 FindPreference(prefs::kContentSettingsPatternPairs)->GetValue(), 337 prefs::kContentSettingsMouseLockPatternPairs)->GetValue(),
337 server_patterns_)); 338 server_patterns_));
338 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 339 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
339 } 340 }
340 341
341 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) { 342 TEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) {
342 { 343 {
343 DictionaryPrefUpdate update(pref_service_, 344 DictionaryPrefUpdate update(pref_service_,
344 prefs::kContentSettingsPatternPairs); 345 prefs::kContentSettingsFullScreenPatternPairs);
345 base::DictionaryValue* local_dict_value = update.Get(); 346 base::DictionaryValue* local_dict_value = update.Get();
346 SetContentPattern(local_dict_value, expression0_, content_type0_, 2); 347 SetContentPattern(local_dict_value, expression0_, 2);
347 SetContentPattern(local_dict_value, expression0_, content_type1_, 2); 348 SetContentPattern(local_dict_value, expression1_, 2);
348 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); 349 SetContentPattern(local_dict_value, expression2_, 1);
349 } 350 }
350 351
351 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 352 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
352 prefs::kContentSettingsPatternPairs, 353 prefs::kContentSettingsFullScreenPatternPairs,
353 *pref_service_-> 354 *pref_service_->FindPreference(
354 FindPreference(prefs::kContentSettingsPatternPairs)->GetValue(), 355 prefs::kContentSettingsFullScreenPatternPairs)->GetValue(),
355 server_patterns_)); 356 server_patterns_));
356 EXPECT_TRUE(merged_value->Equals(&server_patterns_)); 357 EXPECT_TRUE(merged_value->Equals(&server_patterns_));
357 } 358 }
358 359
359 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest { 360 class IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest {
360 protected: 361 protected:
361 IndividualPreferenceMergeTest() : 362 IndividualPreferenceMergeTest() :
362 url0_("http://example.com/server0"), 363 url0_("http://example.com/server0"),
363 url1_("http://example.com/server1"), 364 url1_("http://example.com/server1"),
364 expression0_("expression0"), 365 expression0_("expression0"),
365 expression1_("expression1"), 366 expression1_("expression1") {}
366 content_type0_("content_type0") {}
367 367
368 void SetUp() override { 368 void SetUp() override {
369 AbstractPreferenceMergeTest::SetUp(); 369 AbstractPreferenceMergeTest::SetUp();
370 server_url_list_.Append(new base::StringValue(url0_)); 370 server_url_list_.Append(new base::StringValue(url0_));
371 SetContentPattern(&server_patterns_, expression0_, content_type0_, 1); 371 SetContentPattern(&server_patterns_, expression0_, 1);
372 } 372 }
373 373
374 bool MergeListPreference(const char* pref) { 374 bool MergeListPreference(const char* pref) {
375 { 375 {
376 ListPrefUpdate update(pref_service_, pref); 376 ListPrefUpdate update(pref_service_, pref);
377 base::ListValue* local_list_value = update.Get(); 377 base::ListValue* local_list_value = update.Get();
378 local_list_value->Append(new base::StringValue(url1_)); 378 local_list_value->Append(new base::StringValue(url1_));
379 } 379 }
380 380
381 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 381 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
382 pref, 382 pref,
383 *pref_service_->GetUserPrefValue(pref), 383 *pref_service_->GetUserPrefValue(pref),
384 server_url_list_)); 384 server_url_list_));
385 385
386 base::ListValue expected; 386 base::ListValue expected;
387 expected.Append(new base::StringValue(url0_)); 387 expected.Append(new base::StringValue(url0_));
388 expected.Append(new base::StringValue(url1_)); 388 expected.Append(new base::StringValue(url1_));
389 return merged_value->Equals(&expected); 389 return merged_value->Equals(&expected);
390 } 390 }
391 391
392 bool MergeDictionaryPreference(const char* pref) { 392 bool MergeDictionaryPreference(const char* pref) {
393 { 393 {
394 DictionaryPrefUpdate update(pref_service_, pref); 394 DictionaryPrefUpdate update(pref_service_, pref);
395 base::DictionaryValue* local_dict_value = update.Get(); 395 base::DictionaryValue* local_dict_value = update.Get();
396 SetContentPattern(local_dict_value, expression1_, content_type0_, 1); 396 SetContentPattern(local_dict_value, expression1_, 1);
397 } 397 }
398 398
399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference( 399 scoped_ptr<base::Value> merged_value(PrefModelAssociator::MergePreference(
400 pref, 400 pref,
401 *pref_service_->GetUserPrefValue(pref), 401 *pref_service_->GetUserPrefValue(pref),
402 server_patterns_)); 402 server_patterns_));
403 403
404 base::DictionaryValue expected; 404 base::DictionaryValue expected;
405 SetContentPattern(&expected, expression0_, content_type0_, 1); 405 SetContentPattern(&expected, expression0_, 1);
406 SetContentPattern(&expected, expression1_, content_type0_, 1); 406 SetContentPattern(&expected, expression1_, 1);
407 return merged_value->Equals(&expected); 407 return merged_value->Equals(&expected);
408 } 408 }
409 409
410 std::string url0_; 410 std::string url0_;
411 std::string url1_; 411 std::string url1_;
412 std::string expression0_; 412 std::string expression0_;
413 std::string expression1_; 413 std::string expression1_;
414 std::string content_type0_; 414 std::string content_type0_;
415 base::ListValue server_url_list_; 415 base::ListValue server_url_list_;
416 base::DictionaryValue server_patterns_; 416 base::DictionaryValue server_patterns_;
417 }; 417 };
418 418
419 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) { 419 TEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) {
420 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup)); 420 EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup));
421 } 421 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698