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 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 |