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

Side by Side Diff: chrome/browser/search_engines/template_url_service_unittest.cc

Issue 2479113002: Make extensions DSE persistent in browser prefs (Closed)
Patch Set: Updated after review, round 6 Created 4 years 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "components/search_engines/template_url_service.h" 5 #include "components/search_engines/template_url_service.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1398 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1399 1399
1400 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( 1400 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
1401 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", 1401 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}",
1402 std::string(), std::string(), std::string(), true, kPrepopulatedId, 1402 std::string(), std::string(), std::string(), true, kPrepopulatedId,
1403 "UTF-8", Time(), Time(), Time(), 1403 "UTF-8", Time(), Time(), Time(),
1404 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1404 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1405 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( 1405 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
1406 new TemplateURL::AssociatedExtensionInfo("ext")); 1406 new TemplateURL::AssociatedExtensionInfo("ext"));
1407 extension_info->wants_to_be_default_engine = true; 1407 extension_info->wants_to_be_default_engine = true;
1408 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( 1408 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL(
1409 std::move(ext_dse), std::move(extension_info)); 1409 std::move(ext_dse), std::move(extension_info));
1410 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); 1410 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider());
1411 1411
1412 model()->RemoveExtensionControlledTURL( 1412 test_util()->RemoveExtensionControlledTURL("ext");
1413 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1414 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); 1413 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider());
1415 } 1414 }
1416 1415
1417 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { 1416 TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersist) {
1418 test_util()->VerifyLoad(); 1417 test_util()->VerifyLoad();
1419 // Add third-party default search engine. 1418 // Add third-party default search engine.
1420 TemplateURL* user_dse = AddKeywordWithDate( 1419 TemplateURL* user_dse = AddKeywordWithDate(
1421 "user", "user", "http://www.goo.com/s?q={searchTerms}", std::string(), 1420 "user", "user", "http://www.goo.com/s?q={searchTerms}", std::string(),
1422 std::string(), std::string(), true, "UTF-8", Time(), Time(), Time()); 1421 std::string(), std::string(), true, "UTF-8", Time(), Time(), Time());
1423 model()->SetUserSelectedDefaultSearchProvider(user_dse); 1422 model()->SetUserSelectedDefaultSearchProvider(user_dse);
1424 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1423 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1425 1424
1425 // Create non default extension search engine.
1426 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( 1426 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
1427 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1427 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1428 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), 1428 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(),
1429 Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1429 Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1430 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( 1430 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info(
1431 new TemplateURL::AssociatedExtensionInfo("ext1")); 1431 new TemplateURL::AssociatedExtensionInfo("ext1"));
1432 extension_info->wants_to_be_default_engine = false; 1432 extension_info->wants_to_be_default_engine = false;
1433 model()->AddExtensionControlledTURL(std::move(ext_dse), 1433
1434 std::move(extension_info)); 1434 test_util()->AddExtensionControlledTURL(std::move(ext_dse),
1435 std::move(extension_info));
1435 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); 1436 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider());
1436 1437 // Create default extension search engine.
Peter Kasting 2016/12/22 20:49:03 Nit: Blank line above this
Alexander Yashkin 2016/12/23 19:44:08 Done
1437 ext_dse = CreateKeywordWithDate( 1438 ext_dse = CreateKeywordWithDate(
1438 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", 1439 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}",
1439 std::string(), std::string(), std::string(), true, kPrepopulatedId, 1440 std::string(), std::string(), std::string(), true, kPrepopulatedId,
1440 "UTF-8", Time(), Time(), Time(), 1441 "UTF-8", Time(), Time(), Time(),
1441 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1442 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1442 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); 1443 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2"));
1443 extension_info->wants_to_be_default_engine = true; 1444 extension_info->wants_to_be_default_engine = true;
1444 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( 1445
1446 std::unique_ptr<TemplateURL> cloned_ext_dse(
Peter Kasting 2016/12/22 20:49:03 Nit: Prefer = to () for this "copy-like" initializ
Alexander Yashkin 2016/12/23 19:44:08 Done
1447 base::MakeUnique<TemplateURL>(ext_dse->data()));
1448 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL(
1445 std::move(ext_dse), std::move(extension_info)); 1449 std::move(ext_dse), std::move(extension_info));
1446 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); 1450 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider());
1447 1451
1448 test_util()->ResetModel(true); 1452 test_util()->ResetModel(false);
1449 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); 1453 // Non default extension engines are not persisted.
1450 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider());
1451 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1454 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1452 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); 1455
1456 // Default search engine from extension must be persisted between browser
1457 // restarts, until extension is unloaded/disabled. Check it persists.
Peter Kasting 2016/12/22 20:49:03 Nit: Last sentence unnecessary (restates the code)
Alexander Yashkin 2016/12/23 19:44:08 Done
1458 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2")));
1459 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider());
1460 }
1461
1462 TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersistsBeforeLoad) {
1463 // Emulate extension system loaded and extension registers itself to template
1464 // url service, this is always done before TemplateURLService is loaded.
Peter Kasting 2016/12/22 20:49:03 Nit: The meaning of this is unclear. Do you mean:
Alexander Yashkin 2016/12/23 19:44:08 Done, thanks.
1465 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
1466 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}",
1467 std::string(), std::string(), std::string(), true, kPrepopulatedId,
1468 "UTF-8", Time(), Time(), Time(),
1469 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1470 auto extension_info =
1471 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1");
1472 extension_info->wants_to_be_default_engine = true;
1473
1474 auto cloned_ext_dse = base::MakeUnique<TemplateURL>(ext_dse->data());
1475 test_util()->AddExtensionControlledTURL(std::move(ext_dse),
1476 std::move(extension_info));
1477
1478 // Default search engine from extension must be persisted between browser
1479 // restarts, and is available before TemplateURLService load.
1480 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2")));
1481 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider());
1482
1483 // Load template url service.
1484 test_util()->VerifyLoad();
1485 // Check extension DSE is the same after service load.
1486 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider());
1453 } 1487 }
1454 1488
1455 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { 1489 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) {
1456 // Set a managed preference that establishes a default search provider. 1490 // Set a managed preference that establishes a default search provider.
1457 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); 1491 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine();
1458 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); 1492 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile());
1459 test_util()->VerifyLoad(); 1493 test_util()->VerifyLoad();
1460 // Verify that the default manager we are getting is the managed one. 1494 // Verify that the default manager we are getting is the managed one.
1461 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); 1495 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed);
1462 EXPECT_TRUE(model()->is_default_search_managed()); 1496 EXPECT_TRUE(model()->is_default_search_managed());
1463 const TemplateURL* actual_managed_default = 1497 const TemplateURL* actual_managed_default =
1464 model()->GetDefaultSearchProvider(); 1498 model()->GetDefaultSearchProvider();
1465 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1499 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1466 1500
1467 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( 1501 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
1468 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1502 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1469 std::string(), std::string(), std::string(), true, kPrepopulatedId, 1503 std::string(), std::string(), std::string(), true, kPrepopulatedId,
1470 "UTF-8", Time(), Time(), Time(), 1504 "UTF-8", Time(), Time(), Time(),
1471 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1505 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1472 auto extension_info = 1506 auto extension_info =
1473 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); 1507 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1");
1474 extension_info->wants_to_be_default_engine = true; 1508 extension_info->wants_to_be_default_engine = true;
1475 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( 1509 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL(
1476 std::move(ext_dse), std::move(extension_info)); 1510 std::move(ext_dse), std::move(extension_info));
1477 EXPECT_EQ(ext_dse_ptr, 1511 EXPECT_EQ(ext_dse_ptr,
1478 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1512 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1479 EXPECT_TRUE(model()->is_default_search_managed()); 1513 EXPECT_TRUE(model()->is_default_search_managed());
1480 actual_managed_default = model()->GetDefaultSearchProvider(); 1514 actual_managed_default = model()->GetDefaultSearchProvider();
1481 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1515 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1482 } 1516 }
1483 1517
1484 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) { 1518 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) {
1485 test_util()->VerifyLoad(); 1519 test_util()->VerifyLoad();
(...skipping 27 matching lines...) Expand all
1513 TemplateURL* update_url = 1547 TemplateURL* update_url =
1514 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); 1548 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword"));
1515 const base::Time update_last_modified = update_url->last_modified(); 1549 const base::Time update_last_modified = update_url->last_modified();
1516 model()->SetUserSelectedDefaultSearchProvider(update_url); 1550 model()->SetUserSelectedDefaultSearchProvider(update_url);
1517 TemplateURL* reloaded_url = 1551 TemplateURL* reloaded_url =
1518 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); 1552 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword"));
1519 const base::Time reloaded_last_modified = reloaded_url->last_modified(); 1553 const base::Time reloaded_last_modified = reloaded_url->last_modified();
1520 EXPECT_NE(original_last_modified, reloaded_last_modified); 1554 EXPECT_NE(original_last_modified, reloaded_last_modified);
1521 EXPECT_EQ(update_last_modified, reloaded_last_modified); 1555 EXPECT_EQ(update_last_modified, reloaded_last_modified);
1522 } 1556 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698