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 10 matching lines...) Expand all Loading... |
21 #include "base/strings/utf_string_conversions.h" | 21 #include "base/strings/utf_string_conversions.h" |
22 #include "base/task/cancelable_task_tracker.h" | 22 #include "base/task/cancelable_task_tracker.h" |
23 #include "base/test/simple_test_clock.h" | 23 #include "base/test/simple_test_clock.h" |
24 #include "base/threading/thread.h" | 24 #include "base/threading/thread.h" |
25 #include "base/time/time.h" | 25 #include "base/time/time.h" |
26 #include "chrome/browser/history/history_service_factory.h" | 26 #include "chrome/browser/history/history_service_factory.h" |
27 #include "chrome/browser/search_engines/template_url_service_test_util.h" | 27 #include "chrome/browser/search_engines/template_url_service_test_util.h" |
28 #include "chrome/test/base/testing_profile.h" | 28 #include "chrome/test/base/testing_profile.h" |
29 #include "components/history/core/browser/history_service.h" | 29 #include "components/history/core/browser/history_service.h" |
30 #include "components/search_engines/keyword_web_data_service.h" | 30 #include "components/search_engines/keyword_web_data_service.h" |
| 31 #include "components/search_engines/search_engines_test_util.h" |
31 #include "components/search_engines/search_host_to_urls_map.h" | 32 #include "components/search_engines/search_host_to_urls_map.h" |
32 #include "components/search_engines/search_terms_data.h" | 33 #include "components/search_engines/search_terms_data.h" |
33 #include "components/search_engines/template_url.h" | 34 #include "components/search_engines/template_url.h" |
34 #include "components/search_engines/template_url_prepopulate_data.h" | 35 #include "components/search_engines/template_url_prepopulate_data.h" |
35 #include "content/public/test/test_browser_thread_bundle.h" | 36 #include "content/public/test/test_browser_thread_bundle.h" |
36 #include "testing/gtest/include/gtest/gtest.h" | 37 #include "testing/gtest/include/gtest/gtest.h" |
37 | 38 |
38 using base::ASCIIToUTF16; | 39 using base::ASCIIToUTF16; |
39 using base::Time; | 40 using base::Time; |
40 using base::TimeDelta; | 41 using base::TimeDelta; |
(...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1474 std::move(ext_dse), std::move(extension_info)); | 1475 std::move(ext_dse), std::move(extension_info)); |
1475 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1476 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
1476 | 1477 |
1477 test_util()->ResetModel(true); | 1478 test_util()->ResetModel(true); |
1478 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); | 1479 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); |
1479 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | 1480 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
1480 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1481 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
1481 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | 1482 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); |
1482 } | 1483 } |
1483 | 1484 |
| 1485 // Check that default extension engine and user engines with same keywords are |
| 1486 // handled corrected. |
| 1487 TEST_F(TemplateURLServiceTest, DefaultExtensionAndUserEnginesWithSameKeywords) { |
| 1488 test_util()->VerifyLoad(); |
| 1489 // TemplateURLData used for all engines. |
| 1490 auto turl_data = GenerateDummyTemplateURLData("extension"); |
| 1491 turl_data->safe_for_autoreplace = false; |
| 1492 |
| 1493 // Add non replaceable user engine. |
| 1494 const TemplateURL* user1 = |
| 1495 model()->Add(base::MakeUnique<TemplateURL>(*turl_data)); |
| 1496 |
| 1497 // Add default extension engine with same keyword. |
| 1498 auto ext_dse = base::MakeUnique<TemplateURL>( |
| 1499 *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1500 auto extension_info = |
| 1501 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id"); |
| 1502 extension_info->wants_to_be_default_engine = true; |
| 1503 |
| 1504 const TemplateURL* extension = model()->AddExtensionControlledTURL( |
| 1505 std::move(ext_dse), std::move(extension_info)); |
| 1506 |
| 1507 // Add another non replaceable user engine with same keyword as extension. |
| 1508 const TemplateURL* user2 = |
| 1509 model()->Add(base::MakeUnique<TemplateURL>(*turl_data)); |
| 1510 |
| 1511 // Wait for any saves to finish. |
| 1512 base::RunLoop().RunUntilIdle(); |
| 1513 |
| 1514 // Check extension DSE is set as default and its keyword is not changed. |
| 1515 auto current_dse = model()->GetDefaultSearchProvider(); |
| 1516 EXPECT_EQ(extension, current_dse); |
| 1517 ExpectSimilar(turl_data.get(), ¤t_dse->data()); |
| 1518 |
| 1519 // Expect that both user engine keywords are changed because of conflict |
| 1520 // with extension engine keyword. |
| 1521 EXPECT_NE(turl_data->keyword(), user1->keyword()); |
| 1522 EXPECT_NE(turl_data->keyword(), user2->keyword()); |
| 1523 // Check that user engine keywords are different. |
| 1524 EXPECT_NE(user1->keyword(), user2->keyword()); |
| 1525 } |
| 1526 |
| 1527 // Check that two extensions with same engine are handled corrected. |
| 1528 TEST_F(TemplateURLServiceTest, ExtensionsWithSameKeywords) { |
| 1529 test_util()->VerifyLoad(); |
| 1530 |
| 1531 // TemplateURLData used for all extensions. |
| 1532 auto turl_data = GenerateDummyTemplateURLData("extension"); |
| 1533 turl_data->safe_for_autoreplace = false; |
| 1534 |
| 1535 // Add non default extension engine. |
| 1536 auto ext_dse = base::MakeUnique<TemplateURL>( |
| 1537 *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1538 auto extension_info = |
| 1539 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id1"); |
| 1540 extension_info->wants_to_be_default_engine = false; |
| 1541 |
| 1542 const TemplateURL* extension1 = model()->AddExtensionControlledTURL( |
| 1543 std::move(ext_dse), std::move(extension_info)); |
| 1544 |
| 1545 // Add default extension engine. |
| 1546 ext_dse = base::MakeUnique<TemplateURL>( |
| 1547 *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1548 extension_info = |
| 1549 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id2"); |
| 1550 extension_info->wants_to_be_default_engine = true; |
| 1551 |
| 1552 const TemplateURL* extension2 = model()->AddExtensionControlledTURL( |
| 1553 std::move(ext_dse), std::move(extension_info)); |
| 1554 |
| 1555 // Add another non default extension with same keyword. This action must not |
| 1556 // change default extension keyword due to conflict. |
| 1557 ext_dse = base::MakeUnique<TemplateURL>( |
| 1558 *turl_data, TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
| 1559 extension_info = |
| 1560 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("extension_id3"); |
| 1561 extension_info->wants_to_be_default_engine = false; |
| 1562 |
| 1563 const TemplateURL* extension3 = model()->AddExtensionControlledTURL( |
| 1564 std::move(ext_dse), std::move(extension_info)); |
| 1565 // Wait for any saves to finish. |
| 1566 base::RunLoop().RunUntilIdle(); |
| 1567 |
| 1568 // Check that extension2 is set as default. Its keyword must not be changed. |
| 1569 auto current_dse = model()->GetDefaultSearchProvider(); |
| 1570 EXPECT_EQ(extension2, current_dse); |
| 1571 ExpectSimilar(turl_data.get(), ¤t_dse->data()); |
| 1572 |
| 1573 // Check that non default extensions keywords are updated. |
| 1574 EXPECT_NE(extension1->keyword(), turl_data->keyword()); |
| 1575 EXPECT_NE(extension3->keyword(), turl_data->keyword()); |
| 1576 EXPECT_NE(extension1->keyword(), extension3->keyword()); |
| 1577 } |
| 1578 |
1484 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { | 1579 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { |
1485 // Set a managed preference that establishes a default search provider. | 1580 // Set a managed preference that establishes a default search provider. |
1486 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); | 1581 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); |
1487 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); | 1582 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); |
1488 test_util()->VerifyLoad(); | 1583 test_util()->VerifyLoad(); |
1489 // Verify that the default manager we are getting is the managed one. | 1584 // Verify that the default manager we are getting is the managed one. |
1490 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); | 1585 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); |
1491 EXPECT_TRUE(model()->is_default_search_managed()); | 1586 EXPECT_TRUE(model()->is_default_search_managed()); |
1492 const TemplateURL* actual_managed_default = | 1587 const TemplateURL* actual_managed_default = |
1493 model()->GetDefaultSearchProvider(); | 1588 model()->GetDefaultSearchProvider(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1542 TemplateURL* update_url = | 1637 TemplateURL* update_url = |
1543 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); | 1638 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); |
1544 const base::Time update_last_modified = update_url->last_modified(); | 1639 const base::Time update_last_modified = update_url->last_modified(); |
1545 model()->SetUserSelectedDefaultSearchProvider(update_url); | 1640 model()->SetUserSelectedDefaultSearchProvider(update_url); |
1546 TemplateURL* reloaded_url = | 1641 TemplateURL* reloaded_url = |
1547 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); | 1642 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); |
1548 const base::Time reloaded_last_modified = reloaded_url->last_modified(); | 1643 const base::Time reloaded_last_modified = reloaded_url->last_modified(); |
1549 EXPECT_NE(original_last_modified, reloaded_last_modified); | 1644 EXPECT_NE(original_last_modified, reloaded_last_modified); |
1550 EXPECT_EQ(update_last_modified, reloaded_last_modified); | 1645 EXPECT_EQ(update_last_modified, reloaded_last_modified); |
1551 } | 1646 } |
OLD | NEW |