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

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 5 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.
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(
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.
1458 // Check it persists before template url service loaded.
1459 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext2")));
1460 TemplateURL* current_dse = model()->GetDefaultSearchProvider();
1461 ExpectSimilar(cloned_ext_dse.get(), current_dse);
1462
1463 // Emulate extension system loaded and extension registers itself to template
vasilii 2016/12/20 16:50:26 Wouldn't it be better to split the test into two h
Alexander Yashkin 2016/12/20 18:44:54 Done
1464 // url service, this is always done before TemplateURLService is loaded.
1465 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 extension_info.reset(new TemplateURL::AssociatedExtensionInfo("ext2"));
1471 extension_info->wants_to_be_default_engine = true;
1472
1473 test_util()->AddExtensionControlledTURL(std::move(ext_dse),
1474 std::move(extension_info));
1475 // Load template url service.
1476 test_util()->VerifyLoad();
1477 current_dse = model()->GetDefaultSearchProvider();
1478 ExpectSimilar(cloned_ext_dse.get(), current_dse);
1479
1480 current_dse = model()->GetDefaultSearchProvider();
1481 ExpectSimilar(cloned_ext_dse.get(), current_dse);
1453 } 1482 }
1454 1483
1455 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) { 1484 TEST_F(TemplateURLServiceTest, ExtensionEngineVsPolicy) {
1456 // Set a managed preference that establishes a default search provider. 1485 // Set a managed preference that establishes a default search provider.
1457 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine(); 1486 std::unique_ptr<TemplateURLData> managed = CreateTestSearchEngine();
1458 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile()); 1487 SetManagedDefaultSearchPreferences(*managed, true, test_util()->profile());
1459 test_util()->VerifyLoad(); 1488 test_util()->VerifyLoad();
1460 // Verify that the default manager we are getting is the managed one. 1489 // Verify that the default manager we are getting is the managed one.
1461 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed); 1490 auto expected_managed_default = base::MakeUnique<TemplateURL>(*managed);
1462 EXPECT_TRUE(model()->is_default_search_managed()); 1491 EXPECT_TRUE(model()->is_default_search_managed());
1463 const TemplateURL* actual_managed_default = 1492 const TemplateURL* actual_managed_default =
1464 model()->GetDefaultSearchProvider(); 1493 model()->GetDefaultSearchProvider();
1465 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1494 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1466 1495
1467 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate( 1496 std::unique_ptr<TemplateURL> ext_dse = CreateKeywordWithDate(
1468 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}", 1497 model(), "ext1", "ext1", "http://www.ext1.com/s?q={searchTerms}",
1469 std::string(), std::string(), std::string(), true, kPrepopulatedId, 1498 std::string(), std::string(), std::string(), true, kPrepopulatedId,
1470 "UTF-8", Time(), Time(), Time(), 1499 "UTF-8", Time(), Time(), Time(),
1471 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION); 1500 TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION);
1472 auto extension_info = 1501 auto extension_info =
1473 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1"); 1502 base::MakeUnique<TemplateURL::AssociatedExtensionInfo>("ext1");
1474 extension_info->wants_to_be_default_engine = true; 1503 extension_info->wants_to_be_default_engine = true;
1475 TemplateURL* ext_dse_ptr = model()->AddExtensionControlledTURL( 1504 TemplateURL* ext_dse_ptr = test_util()->AddExtensionControlledTURL(
1476 std::move(ext_dse), std::move(extension_info)); 1505 std::move(ext_dse), std::move(extension_info));
1477 EXPECT_EQ(ext_dse_ptr, 1506 EXPECT_EQ(ext_dse_ptr,
1478 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1"))); 1507 model()->GetTemplateURLForKeyword(ASCIIToUTF16("ext1")));
1479 EXPECT_TRUE(model()->is_default_search_managed()); 1508 EXPECT_TRUE(model()->is_default_search_managed());
1480 actual_managed_default = model()->GetDefaultSearchProvider(); 1509 actual_managed_default = model()->GetDefaultSearchProvider();
1481 ExpectSimilar(expected_managed_default.get(), actual_managed_default); 1510 ExpectSimilar(expected_managed_default.get(), actual_managed_default);
1482 } 1511 }
1483 1512
1484 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) { 1513 TEST_F(TemplateURLServiceTest, LastVisitedTimeUpdate) {
1485 test_util()->VerifyLoad(); 1514 test_util()->VerifyLoad();
(...skipping 27 matching lines...) Expand all
1513 TemplateURL* update_url = 1542 TemplateURL* update_url =
1514 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); 1543 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword"));
1515 const base::Time update_last_modified = update_url->last_modified(); 1544 const base::Time update_last_modified = update_url->last_modified();
1516 model()->SetUserSelectedDefaultSearchProvider(update_url); 1545 model()->SetUserSelectedDefaultSearchProvider(update_url);
1517 TemplateURL* reloaded_url = 1546 TemplateURL* reloaded_url =
1518 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword")); 1547 model()->GetTemplateURLForKeyword(ASCIIToUTF16("engine_keyword"));
1519 const base::Time reloaded_last_modified = reloaded_url->last_modified(); 1548 const base::Time reloaded_last_modified = reloaded_url->last_modified();
1520 EXPECT_NE(original_last_modified, reloaded_last_modified); 1549 EXPECT_NE(original_last_modified, reloaded_last_modified);
1521 EXPECT_EQ(update_last_modified, reloaded_last_modified); 1550 EXPECT_EQ(update_last_modified, reloaded_last_modified);
1522 } 1551 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698