Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 1416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1427 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1427 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1428 | 1428 |
| 1429 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1429 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1430 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", | 1430 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", |
| 1431 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1431 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1432 "UTF-8", Time(), Time(), Time(), | 1432 "UTF-8", Time(), Time(), Time(), |
| 1433 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1433 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1434 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1434 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
| 1435 new TemplateURL::AssociatedExtensionInfo("ext")); | 1435 new TemplateURL::AssociatedExtensionInfo("ext")); |
| 1436 extension_info->wants_to_be_default_engine = true; | 1436 extension_info->wants_to_be_default_engine = true; |
| 1437 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1437 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
| 1438 std::move(ext_dse), std::move(extension_info)); | 1438 std::move(ext_dse), std::move(extension_info)); |
| 1439 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1439 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
| 1440 | 1440 |
| 1441 model()->RemoveExtensionControlledTURL( | 1441 test_util()->RemoveExtensionControlledTURL("ext"); |
| 1442 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | |
| 1443 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | 1442 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
| 1444 } | 1443 } |
| 1445 | 1444 |
| 1446 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { | 1445 TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersist) { |
| 1447 test_util()->VerifyLoad(); | 1446 test_util()->VerifyLoad(); |
| 1448 // Add third-party default search engine. | 1447 // Add third-party default search engine. |
| 1449 TemplateURL* user_dse = AddKeywordWithDate( | 1448 TemplateURL* user_dse = AddKeywordWithDate( |
| 1450 "user", "user", "http://www.goo.com/s?q={searchTerms}", std::string(), | 1449 "user", "user", "http://www.goo.com/s?q={searchTerms}", std::string(), |
| 1451 std::string(), std::string(), true, "UTF-8", Time(), Time(), Time()); | 1450 std::string(), std::string(), true, "UTF-8", Time(), Time(), Time()); |
| 1452 model()->SetUserSelectedDefaultSearchProvider(user_dse); | 1451 model()->SetUserSelectedDefaultSearchProvider(user_dse); |
| 1453 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1452 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1454 | 1453 |
| 1454 // Create non default extension search engine. | |
|
Peter Kasting
2017/01/06 01:44:57
Nit: non-default
Alexander Yashkin
2017/01/07 12:55:59
Fixed. Thanks.
| |
| 1455 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1455 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1456 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1456 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
| 1457 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), | 1457 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), |
| 1458 Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1458 Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1459 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1459 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
| 1460 new TemplateURL::AssociatedExtensionInfo("ext1")); | 1460 new TemplateURL::AssociatedExtensionInfo("ext1")); |
| 1461 extension_info->wants_to_be_default_engine = false; | 1461 extension_info->wants_to_be_default_engine = false; |
| 1462 model()->AddExtensionControlledTURL(std::move(ext_dse), | 1462 |
| 1463 std::move(extension_info)); | 1463 test_util()->AddExtensionControlledTURL(std::move(ext_dse), |
| 1464 std::move(extension_info)); | |
| 1464 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1465 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
| 1465 | 1466 |
| 1467 // Create default extension search engine. | |
| 1466 ext_dse = CreateKeywordWithDate( | 1468 ext_dse = CreateKeywordWithDate( |
| 1467 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", | 1469 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", |
| 1468 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1470 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1469 "UTF-8", Time(), Time(), Time(), | 1471 "UTF-8", Time(), Time(), Time(), |
| 1470 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1472 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1471 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); | 1473 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); |
| 1472 extension_info->wants_to_be_default_engine = true; | 1474 extension_info->wants_to_be_default_engine = true; |
| 1473 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1475 |
| 1476 auto cloned_ext_dse = base::MakeUnique<TemplateURL>(ext_dse->data()); | |
| 1477 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( | |
| 1474 std::move(ext_dse), std::move(extension_info)); | 1478 std::move(ext_dse), std::move(extension_info)); |
| 1475 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1479 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
| 1476 | 1480 |
| 1477 test_util()->ResetModel(true); | 1481 test_util()->ResetModel(false); |
|
Peter Kasting
2017/01/06 01:44:57
Nit: Given the longer comment below about DSE pers
Alexander Yashkin
2017/01/07 12:55:59
Fixed, as understood.
| |
| 1478 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); | 1482 // Non default extension engines are not persisted. |
| 1479 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | |
| 1480 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1483 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
| 1481 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | 1484 |
| 1485 // Default search engine from extension must be persisted between browser | |
| 1486 // restarts, until extension is unloaded/disabled. | |
|
Peter Kasting
2017/01/06 01:44:57
Nit: How about "A default search engine set by an
Alexander Yashkin
2017/01/07 12:55:59
Fixed, thanks.
| |
| 1487 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | |
| 1488 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); | |
| 1489 } | |
| 1490 | |
| 1491 TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersistsBeforeLoad) { | |
| 1492 // Chrome will load the extension system before the TemplateURLService, so | |
| 1493 // extensions controlling the default search engine may be registered before | |
| 1494 // the service has loaded. | |
| 1495 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | |
| 1496 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", | |
| 1497 std::string(), std::string(), std::string(), true, kPrepopulatedId, | |
| 1498 "UTF-8", Time(), Time(), Time(), | |
| 1499 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | |
| 1500 auto extension_info = | |
| 1501 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); | |
| 1502 extension_info->wants_to_be_default_engine = true; | |
| 1503 | |
| 1504 auto cloned_ext_dse = base::MakeUnique<TemplateURL>(ext_dse->data()); | |
| 1505 test_util()->AddExtensionControlledTURL(std::move(ext_dse), | |
| 1506 std::move(extension_info)); | |
| 1507 | |
| 1508 // Default search engine from extension must be persisted between browser | |
| 1509 // restarts, and is available before TemplateURLService load. | |
|
Peter Kasting
2017/01/06 01:44:57
Nit: is available before TemplateURLService load -
Alexander Yashkin
2017/01/07 12:55:59
Done.
| |
| 1510 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | |
| 1511 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); | |
| 1512 | |
| 1513 // Load template url service. | |
|
Peter Kasting
2017/01/06 01:44:57
Nit: This comment restates the code. I'd replace
Alexander Yashkin
2017/01/07 12:55:59
Done.
| |
| 1514 test_util()->VerifyLoad(); | |
| 1515 // Check extension DSE is the same after service load. | |
| 1516 ExpectSimilar(cloned_ext_dse.get(), model()->GetDefaultSearchProvider()); | |
| 1482 } | 1517 } |
| 1483 | 1518 |
| 1484 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { | 1519 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { |
| 1485 // Set a managed preference that establishes a default search provider. | 1520 // Set a managed preference that establishes a default search provider. |
| 1486 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); | 1521 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); |
| 1487 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); | 1522 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); |
| 1488 test_util()->VerifyLoad(); | 1523 test_util()->VerifyLoad(); |
| 1489 // Verify that the default manager we are getting is the managed one. | 1524 // Verify that the default manager we are getting is the managed one. |
| 1490 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); | 1525 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); |
| 1491 EXPECT_TRUE(model()->is_default_search_managed()); | 1526 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1492 const TemplateURL* actual_managed_default = | 1527 const TemplateURL* actual_managed_default = |
| 1493 model()->GetDefaultSearchProvider(); | 1528 model()->GetDefaultSearchProvider(); |
| 1494 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1529 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
| 1495 | 1530 |
| 1496 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1531 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
| 1497 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1532 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
| 1498 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1533 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
| 1499 "UTF-8", Time(), Time(), Time(), | 1534 "UTF-8", Time(), Time(), Time(), |
| 1500 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1535 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1501 auto extension_info = | 1536 auto extension_info = |
| 1502 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); | 1537 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); |
| 1503 extension_info->wants_to_be_default_engine = true; | 1538 extension_info->wants_to_be_default_engine = true; |
| 1504 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1539 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
| 1505 std::move(ext_dse), std::move(extension_info)); | 1540 std::move(ext_dse), std::move(extension_info)); |
| 1506 EXPECT_EQ(ext_dse_ptr, | 1541 EXPECT_EQ(ext_dse_ptr, |
| 1507 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1542 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
| 1508 EXPECT_TRUE(model()->is_default_search_managed()); | 1543 EXPECT_TRUE(model()->is_default_search_managed()); |
| 1509 actual_managed_default = model()->GetDefaultSearchProvider(); | 1544 actual_managed_default = model()->GetDefaultSearchProvider(); |
| 1510 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1545 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
| 1511 } | 1546 } |
| 1512 | 1547 |
| 1513 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) { | 1548 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) { |
| 1514 test_util()->VerifyLoad(); | 1549 test_util()->VerifyLoad(); |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 1542 TemplateURL* update_url = | 1577 TemplateURL* update_url = |
| 1543 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); | 1578 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); |
| 1544 const base::Time update_last_modified = update_url->last_modified(); | 1579 const base::Time update_last_modified = update_url->last_modified(); |
| 1545 model()->SetUserSelectedDefaultSearchProvider(update_url); | 1580 model()->SetUserSelectedDefaultSearchProvider(update_url); |
| 1546 TemplateURL* reloaded_url = | 1581 TemplateURL* reloaded_url = |
| 1547 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); | 1582 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); |
| 1548 const base::Time reloaded_last_modified = reloaded_url->last_modified(); | 1583 const base::Time reloaded_last_modified = reloaded_url->last_modified(); |
| 1549 EXPECT_NE(original_last_modified, reloaded_last_modified); | 1584 EXPECT_NE(original_last_modified, reloaded_last_modified); |
| 1550 EXPECT_EQ(update_last_modified, reloaded_last_modified); | 1585 EXPECT_EQ(update_last_modified, reloaded_last_modified); |
| 1551 } | 1586 } |
| OLD | NEW |