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 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1382 model()->SetUserSelectedDefaultSearchProvider(user_dse); | 1382 model()->SetUserSelectedDefaultSearchProvider(user_dse); |
1383 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1383 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
1384 | 1384 |
1385 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1385 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
1386 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", | 1386 model(), "ext", "ext", "http://www.search.com/s?q={searchTerms}", |
1387 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1387 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
1388 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1388 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
1389 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1389 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
1390 new TemplateURL::AssociatedExtensionInfo("ext")); | 1390 new TemplateURL::AssociatedExtensionInfo("ext")); |
1391 extension_info->wants_to_be_default_engine = true; | 1391 extension_info->wants_to_be_default_engine = true; |
1392 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1392 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
1393 std::move(ext_dse), std::move(extension_info)); | 1393 std::move(ext_dse), std::move(extension_info)); |
1394 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1394 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
1395 | 1395 |
1396 model()->RemoveExtensionControlledTURL( | 1396 test_util()->RemoveExtensionControlledTURL("ext"); |
1397 "ext", TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | |
1398 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | 1397 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); |
1399 } | 1398 } |
1400 | 1399 |
1401 TEST_F(TemplateURLServiceTest, ExtensionEnginesNotPersist) { | 1400 TEST_F(TemplateURLServiceTest, DefaultExtensionEnginePersist) { |
1402 test_util()->VerifyLoad(); | 1401 test_util()->VerifyLoad(); |
1403 // Add third-party default search engine. | 1402 // Add third-party default search engine. |
1404 TemplateURL* user_dse = AddKeywordWithDate( | 1403 TemplateURL* user_dse = AddKeywordWithDate( |
1405 "user", "user", "http://www.goo.com/s?q={searchTerms}", | 1404 "user", "user", "http://www.goo.com/s?q={searchTerms}", |
1406 std::string(), std::string(), std::string(), | 1405 std::string(), std::string(), std::string(), |
1407 true, "UTF-8", Time(), Time()); | 1406 true, "UTF-8", Time(), Time()); |
1408 model()->SetUserSelectedDefaultSearchProvider(user_dse); | 1407 model()->SetUserSelectedDefaultSearchProvider(user_dse); |
1409 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1408 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
1410 | 1409 |
1410 // Create non default extension search engine. | |
1411 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1411 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
1412 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1412 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
1413 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), | 1413 std::string(), std::string(), std::string(), true, 0, "UTF-8", Time(), |
1414 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1414 Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
1415 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( | 1415 std::unique_ptr<TemplateURL::AssociatedExtensionInfo> extension_info( |
1416 new TemplateURL::AssociatedExtensionInfo("ext1")); | 1416 new TemplateURL::AssociatedExtensionInfo("ext1")); |
1417 extension_info->wants_to_be_default_engine = false; | 1417 extension_info->wants_to_be_default_engine = false; |
1418 model()->AddExtensionControlledTURL(std::move(ext_dse), | 1418 |
1419 std::move(extension_info)); | 1419 test_util()->AddExtensionControlledTURL(std::move(ext_dse), |
1420 std::move(extension_info)); | |
1420 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); | 1421 EXPECT_EQ(user_dse, model()->GetDefaultSearchProvider()); |
1421 | 1422 // Create default extension search engine. |
1422 ext_dse = CreateKeywordWithDate( | 1423 ext_dse = CreateKeywordWithDate( |
1423 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", | 1424 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", |
1424 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1425 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
1425 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1426 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
1426 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); | 1427 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); |
1427 extension_info->wants_to_be_default_engine = true; | 1428 extension_info->wants_to_be_default_engine = true; |
1428 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1429 |
1430 std::unique_ptr<TemplateURL> cloned_ext_dse( | |
1431 base::MakeUnique<TemplateURL>(ext_dse->data())); | |
1432 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( | |
1429 std::move(ext_dse), std::move(extension_info)); | 1433 std::move(ext_dse), std::move(extension_info)); |
1430 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); | 1434 EXPECT_EQ(ext_dse_ptr, model()->GetDefaultSearchProvider()); |
1431 | 1435 |
1432 test_util()->ResetModel(true); | 1436 test_util()->ResetModel(false); |
1433 user_dse = model()->GetTemplateURLForKeyword(ASCIIToUTF16("user")); | 1437 // Non default extension engines are not persisted. |
1434 ExpectSimilar(user_dse, model()->GetDefaultSearchProvider()); | |
1435 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1438 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
1436 EXPECT_FALSE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | 1439 // Default search engine from extension must be persisted between browser |
1440 // restarts, until extension is unloaded/disabled. | |
1441 // Check it persists before template url service loaded. | |
1442 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2"))); | |
1443 TemplateURL* current_dse = model()->GetDefaultSearchProvider(); | |
1444 ExpectSimilar(cloned_ext_dse.get(), current_dse); | |
1445 | |
1446 // Load template url service, but extensions are not loaded and not registered | |
1447 // yet. Still extension default search. | |
1448 test_util()->VerifyLoad(); | |
1449 current_dse = model()->GetDefaultSearchProvider(); | |
1450 ExpectSimilar(cloned_ext_dse.get(), current_dse); | |
1451 | |
1452 // Emulate extension system loaded and extension registers itself to template | |
1453 // url service, still same extension engine is default. | |
vasilii
2016/12/06 19:16:42
Can you explain why this is true?
Alexander Yashkin
2016/12/09 08:19:52
Thats how I think it should work.
How TemplateURL
vasilii
2016/12/13 17:16:39
Acknowledged.
| |
1454 ext_dse = CreateKeywordWithDate( | |
1455 model(), "ext2", "ext2", "http://www.ext2.com/s?q={searchTerms}", | |
1456 std::string(), std::string(), std::string(), true, kPrepopulatedId, | |
1457 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | |
1458 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2")); | |
1459 extension_info->wants_to_be_default_engine = true; | |
1460 | |
1461 test_util()->AddExtensionControlledTURL(std::move(ext_dse), | |
1462 std::move(extension_info)); | |
1463 current_dse = model()->GetDefaultSearchProvider(); | |
1464 ExpectSimilar(cloned_ext_dse.get(), current_dse); | |
1437 } | 1465 } |
1438 | 1466 |
1439 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { | 1467 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { |
1440 // Set a managed preference that establishes a default search provider. | 1468 // Set a managed preference that establishes a default search provider. |
1441 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); | 1469 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); |
1442 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); | 1470 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); |
1443 test_util()->VerifyLoad(); | 1471 test_util()->VerifyLoad(); |
1444 // Verify that the default manager we are getting is the managed one. | 1472 // Verify that the default manager we are getting is the managed one. |
1445 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); | 1473 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); |
1446 EXPECT_TRUE(model()->is_default_search_managed()); | 1474 EXPECT_TRUE(model()->is_default_search_managed()); |
1447 const TemplateURL* actual_managed_default = | 1475 const TemplateURL* actual_managed_default = |
1448 model()->GetDefaultSearchProvider(); | 1476 model()->GetDefaultSearchProvider(); |
1449 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1477 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
1450 | 1478 |
1451 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( | 1479 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( |
1452 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", | 1480 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", |
1453 std::string(), std::string(), std::string(), true, kPrepopulatedId, | 1481 std::string(), std::string(), std::string(), true, kPrepopulatedId, |
1454 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); | 1482 "UTF-8", Time(), Time(), TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); |
1455 auto extension_info = | 1483 auto extension_info = |
1456 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); | 1484 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); |
1457 extension_info->wants_to_be_default_engine = true; | 1485 extension_info->wants_to_be_default_engine = true; |
1458 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( | 1486 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL( |
1459 std::move(ext_dse), std::move(extension_info)); | 1487 std::move(ext_dse), std::move(extension_info)); |
1460 EXPECT_EQ(ext_dse_ptr, | 1488 EXPECT_EQ(ext_dse_ptr, |
1461 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); | 1489 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); |
1462 EXPECT_TRUE(model()->is_default_search_managed()); | 1490 EXPECT_TRUE(model()->is_default_search_managed()); |
1463 actual_managed_default = model()->GetDefaultSearchProvider(); | 1491 actual_managed_default = model()->GetDefaultSearchProvider(); |
1464 ExpectSimilar(expected_managed_default.get(), actual_managed_default); | 1492 ExpectSimilar(expected_managed_default.get(), actual_managed_default); |
1465 } | 1493 } |
OLD | NEW |