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

Side by Side Diff: chrome/browser/search_engines/template_url_service_sync_unittest.cc

Issue 268643002: Use the DefaultSearchManager as the exclusive authority on DSE, ignoring Web Data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: D'oh. Created 6 years, 7 months 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 | Annotate | Revision Log
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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/memory/scoped_vector.h" 6 #include "base/memory/scoped_vector.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 223
224 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceSyncTest); 224 DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceSyncTest);
225 }; 225 };
226 226
227 TemplateURLServiceSyncTest::TemplateURLServiceSyncTest() 227 TemplateURLServiceSyncTest::TemplateURLServiceSyncTest()
228 : sync_processor_(new TestChangeProcessor), 228 : sync_processor_(new TestChangeProcessor),
229 sync_processor_wrapper_(new syncer::SyncChangeProcessorWrapperForTest( 229 sync_processor_wrapper_(new syncer::SyncChangeProcessorWrapperForTest(
230 sync_processor_.get())) {} 230 sync_processor_.get())) {}
231 231
232 void TemplateURLServiceSyncTest::SetUp() { 232 void TemplateURLServiceSyncTest::SetUp() {
233 TemplateURLService::DisableFallbackSearchEngines();
233 test_util_a_.SetUp(); 234 test_util_a_.SetUp();
234 // Use ChangeToLoadState() instead of VerifyLoad() so we don't actually pull 235 // Use ChangeToLoadState() instead of VerifyLoad() so we don't actually pull
235 // in the prepopulate data, which the sync tests don't care about (and would 236 // in the prepopulate data, which the sync tests don't care about (and would
236 // just foul them up). 237 // just foul them up).
237 test_util_a_.ChangeModelToLoadState(); 238 test_util_a_.ChangeModelToLoadState();
238 profile_b_.reset(new TestingProfile); 239 profile_b_.reset(new TestingProfile);
239 TemplateURLServiceFactory::GetInstance()-> 240 TemplateURLServiceFactory::GetInstance()->
240 RegisterUserPrefsOnBrowserContextForTest(profile_b_.get()); 241 RegisterUserPrefsOnBrowserContextForTest(profile_b_.get());
241 model_b_.reset(new TemplateURLService(profile_b_.get())); 242 model_b_.reset(new TemplateURLService(profile_b_.get()));
242 model_b_->Load(); 243 model_b_->Load();
(...skipping 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 PassProcessor(), 1438 PassProcessor(),
1438 CreateAndPassSyncErrorFactory()).error(); 1439 CreateAndPassSyncErrorFactory()).error();
1439 ASSERT_FALSE(error.IsSet()); 1440 ASSERT_FALSE(error.IsSet());
1440 1441
1441 // Check that the TemplateURL was not modified. 1442 // Check that the TemplateURL was not modified.
1442 const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("key1"); 1443 const TemplateURL* reupdated_turl = model()->GetTemplateURLForGUID("key1");
1443 ASSERT_TRUE(reupdated_turl); 1444 ASSERT_TRUE(reupdated_turl);
1444 AssertEquals(*updated_turl, *reupdated_turl); 1445 AssertEquals(*updated_turl, *reupdated_turl);
1445 } 1446 }
1446 1447
1447 TEST_F(TemplateURLServiceSyncTest, SyncedDefaultGUIDArrivesFirst) {
1448 syncer::SyncDataList initial_data = CreateInitialSyncData();
1449 // The default search provider should support replacement.
1450 scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
1451 "http://key2.com/{searchTerms}", "key2", 90));
1452 initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
1453 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1454 PassProcessor(), CreateAndPassSyncErrorFactory());
1455 model()->SetUserSelectedDefaultSearchProvider(
1456 model()->GetTemplateURLForGUID("key2"));
1457
1458 EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1459 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1460 ASSERT_TRUE(default_search);
1461
1462 // Change kSyncedDefaultSearchProviderGUID to a GUID that does not exist in
1463 // the model yet. Ensure that the default has not changed in any way.
1464 profile_a()->GetTestingPrefService()->SetString(
1465 prefs::kSyncedDefaultSearchProviderGUID, "newdefault");
1466
1467 ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
1468
1469 // Bring in a random new search engine with a different GUID. Ensure that
1470 // it doesn't change the default.
1471 syncer::SyncChangeList changes1;
1472 changes1.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
1473 CreateTestTemplateURL(ASCIIToUTF16("random"), "http://random.com",
1474 "random")));
1475 model()->ProcessSyncChanges(FROM_HERE, changes1);
1476
1477 EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1478 ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
1479
1480 // Finally, bring in the expected entry with the right GUID. Ensure that
1481 // the default has changed to the new search engine.
1482 syncer::SyncChangeList changes2;
1483 changes2.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
1484 CreateTestTemplateURL(ASCIIToUTF16("new"), "http://new.com/{searchTerms}",
1485 "newdefault")));
1486 model()->ProcessSyncChanges(FROM_HERE, changes2);
1487
1488 EXPECT_EQ(5U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1489 ASSERT_NE(default_search, model()->GetDefaultSearchProvider());
1490 ASSERT_EQ("newdefault", model()->GetDefaultSearchProvider()->sync_guid());
1491 }
1492
1493 TEST_F(TemplateURLServiceSyncTest, DefaultGuidDeletedBeforeNewDSPArrives) {
1494 syncer::SyncDataList initial_data;
1495 // The default search provider should support replacement.
1496 scoped_ptr<TemplateURL> turl1(CreateTestTemplateURL(ASCIIToUTF16("key1"),
1497 "http://key1.com/{searchTerms}", "key1", 90));
1498 // Create a second default search provider for the
1499 // FindNewDefaultSearchProvider method to find.
1500 TemplateURLData data;
1501 data.short_name = ASCIIToUTF16("unittest");
1502 data.SetKeyword(ASCIIToUTF16("key2"));
1503 data.SetURL("http://key2.com/{searchTerms}");
1504 data.favicon_url = GURL("http://favicon.url");
1505 data.safe_for_autoreplace = false;
1506 data.date_created = Time::FromTimeT(100);
1507 data.last_modified = Time::FromTimeT(100);
1508 data.created_by_policy = false;
1509 data.prepopulate_id = 999999;
1510 data.sync_guid = "key2";
1511 data.show_in_default_list = true;
1512 scoped_ptr<TemplateURL> turl2(new TemplateURL(NULL, data));
1513 initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
1514 *turl1));
1515 initial_data.push_back(TemplateURLService::CreateSyncDataFromTemplateURL(
1516 *turl2));
1517 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1518 PassProcessor(), CreateAndPassSyncErrorFactory());
1519 model()->SetUserSelectedDefaultSearchProvider(
1520 model()->GetTemplateURLForGUID("key1"));
1521 ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
1522
1523 EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1524 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1525 ASSERT_TRUE(default_search);
1526
1527 // Change kSyncedDefaultSearchProviderGUID to a GUID that does not exist in
1528 // the model yet. Ensure that the default has not changed in any way.
1529 profile_a()->GetTestingPrefService()->SetString(
1530 prefs::kSyncedDefaultSearchProviderGUID, "newdefault");
1531
1532 ASSERT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
1533 EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
1534 prefs::kSyncedDefaultSearchProviderGUID));
1535
1536 // Simulate a situation where an ACTION_DELETE on the default arrives before
1537 // the new default search provider entry. This should fail to delete the
1538 // target entry, and instead send up an "undelete" to the server, after
1539 // further uniquifying the keyword to avoid infinite sync loops. The synced
1540 // default GUID should not be changed so that when the expected default entry
1541 // arrives, it can still be set as the default.
1542 syncer::SyncChangeList changes1;
1543 changes1.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_DELETE,
1544 turl1.release()));
1545 model()->ProcessSyncChanges(FROM_HERE, changes1);
1546
1547 EXPECT_TRUE(model()->GetTemplateURLForKeyword(ASCIIToUTF16("key1_")));
1548 EXPECT_EQ(2U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1549 EXPECT_EQ("key1", model()->GetDefaultSearchProvider()->sync_guid());
1550 EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
1551 prefs::kSyncedDefaultSearchProviderGUID));
1552 syncer::SyncChange undelete = processor()->change_for_guid("key1");
1553 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, undelete.change_type());
1554 EXPECT_EQ("key1_",
1555 undelete.sync_data().GetSpecifics().search_engine().keyword());
1556
1557 // Finally, bring in the expected entry with the right GUID. Ensure that
1558 // the default has changed to the new search engine.
1559 syncer::SyncChangeList changes2;
1560 changes2.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
1561 CreateTestTemplateURL(ASCIIToUTF16("new"), "http://new.com/{searchTerms}",
1562 "newdefault")));
1563 model()->ProcessSyncChanges(FROM_HERE, changes2);
1564
1565 EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1566 EXPECT_EQ("newdefault", model()->GetDefaultSearchProvider()->sync_guid());
1567 EXPECT_EQ("newdefault", profile_a()->GetTestingPrefService()->GetString(
1568 prefs::kSyncedDefaultSearchProviderGUID));
1569 }
1570
1571 TEST_F(TemplateURLServiceSyncTest, SyncedDefaultArrivesAfterStartup) {
1572 // Start with the default set to something in the model before we start
1573 // syncing.
1574 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
1575 "http://thewhat.com/{searchTerms}",
1576 "initdefault"));
1577 model()->SetUserSelectedDefaultSearchProvider(
1578 model()->GetTemplateURLForGUID("initdefault"));
1579
1580 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1581 ASSERT_TRUE(default_search);
1582
1583 // Set kSyncedDefaultSearchProviderGUID to something that is not yet in
1584 // the model but is expected in the initial sync. Ensure that this doesn't
1585 // change our default since we're not quite syncing yet.
1586 profile_a()->GetTestingPrefService()->SetString(
1587 prefs::kSyncedDefaultSearchProviderGUID, "key2");
1588
1589 EXPECT_EQ(default_search, model()->GetDefaultSearchProvider());
1590
1591 // Now sync the initial data, which will include the search engine entry
1592 // destined to become the new default.
1593 syncer::SyncDataList initial_data = CreateInitialSyncData();
1594 // The default search provider should support replacement.
1595 scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
1596 "http://key2.com/{searchTerms}", "key2", 90));
1597 initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
1598
1599 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1600 PassProcessor(), CreateAndPassSyncErrorFactory());
1601
1602 // Ensure that the new default has been set.
1603 EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1604 ASSERT_NE(default_search, model()->GetDefaultSearchProvider());
1605 ASSERT_EQ("key2", model()->GetDefaultSearchProvider()->sync_guid());
1606 }
1607
1608 TEST_F(TemplateURLServiceSyncTest, SyncedDefaultAlreadySetOnStartup) {
1609 // Start with the default set to something in the model before we start
1610 // syncing.
1611 const char kGUID[] = "initdefault";
1612 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
1613 "http://thewhat.com/{searchTerms}",
1614 kGUID));
1615 model()->SetUserSelectedDefaultSearchProvider(
1616 model()->GetTemplateURLForGUID(kGUID));
1617
1618 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1619 ASSERT_TRUE(default_search);
1620
1621 // Set kSyncedDefaultSearchProviderGUID to the current default.
1622 profile_a()->GetTestingPrefService()->SetString(
1623 prefs::kSyncedDefaultSearchProviderGUID, kGUID);
1624
1625 EXPECT_EQ(default_search, model()->GetDefaultSearchProvider());
1626
1627 // Now sync the initial data.
1628 syncer::SyncDataList initial_data = CreateInitialSyncData();
1629 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1630 PassProcessor(), CreateAndPassSyncErrorFactory());
1631
1632 // Ensure that the new entries were added and the default has not changed.
1633 EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1634 ASSERT_EQ(default_search, model()->GetDefaultSearchProvider());
1635 }
1636
1637 TEST_F(TemplateURLServiceSyncTest, NewDefaultIsAlreadySynced) {
1638 // Ensure that if the synced DSP pref changed to another synced entry (as
1639 // opposed to coming in as a new entry), it gets reset correctly.
1640 // Start by setting kSyncedDefaultSearchProviderGUID to the entry that should
1641 // end up as the default. Note that this must be done before the initial
1642 // entries are added as otherwise this call will set the DSP immediately.
1643 profile_a()->GetTestingPrefService()->SetString(
1644 prefs::kSyncedDefaultSearchProviderGUID, "key2");
1645
1646 syncer::SyncDataList initial_data = CreateInitialSyncData();
1647 // Ensure that our candidate default supports replacement.
1648 scoped_ptr<TemplateURL> turl(CreateTestTemplateURL(ASCIIToUTF16("key2"),
1649 "http://key2.com/{searchTerms}", "key2", 90));
1650 initial_data[1] = TemplateURLService::CreateSyncDataFromTemplateURL(*turl);
1651 for (syncer::SyncDataList::const_iterator iter = initial_data.begin();
1652 iter != initial_data.end(); ++iter) {
1653 TemplateURL* converted = Deserialize(*iter);
1654 model()->Add(converted);
1655 }
1656
1657 // Set the initial default to something other than the desired default.
1658 model()->SetUserSelectedDefaultSearchProvider(
1659 model()->GetTemplateURLForGUID("key1"));
1660
1661 // Merge in the same data (i.e. already synced entries).
1662 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1663 PassProcessor(), CreateAndPassSyncErrorFactory());
1664
1665 EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1666 TemplateURL* current_default = model()->GetDefaultSearchProvider();
1667 ASSERT_TRUE(current_default);
1668 EXPECT_EQ("key2", current_default->sync_guid());
1669 EXPECT_EQ(ASCIIToUTF16("key2"), current_default->keyword());
1670 }
1671
1672 TEST_F(TemplateURLServiceSyncTest, SyncWithManagedDefaultSearch) {
1673 // First start off with a few entries and make sure we can set an unmanaged
1674 // default search provider.
1675 syncer::SyncDataList initial_data = CreateInitialSyncData();
1676 model()->MergeDataAndStartSyncing(syncer::SEARCH_ENGINES, initial_data,
1677 PassProcessor(), CreateAndPassSyncErrorFactory());
1678 model()->SetUserSelectedDefaultSearchProvider(
1679 model()->GetTemplateURLForGUID("key2"));
1680
1681 EXPECT_EQ(3U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1682 ASSERT_FALSE(model()->is_default_search_managed());
1683 ASSERT_TRUE(model()->GetDefaultSearchProvider());
1684
1685 // Change the default search provider to a managed one.
1686 const char kName[] = "manageddefault";
1687 const char kSearchURL[] = "http://manageddefault.com/search?t={searchTerms}";
1688 const char kIconURL[] = "http://manageddefault.com/icon.jpg";
1689 const char kEncodings[] = "UTF-16;UTF-32";
1690 const char kAlternateURL[] =
1691 "http://manageddefault.com/search#t={searchTerms}";
1692 const char kSearchTermsReplacementKey[] = "espv";
1693 test_util_a_.SetManagedDefaultSearchPreferences(true, kName, kName,
1694 kSearchURL, std::string(), kIconURL, kEncodings, kAlternateURL,
1695 kSearchTermsReplacementKey);
1696 const TemplateURL* dsp_turl = model()->GetDefaultSearchProvider();
1697
1698 EXPECT_TRUE(model()->is_default_search_managed());
1699
1700 // Add a new entry from Sync. It should still sync in despite the default
1701 // being managed.
1702 syncer::SyncChangeList changes;
1703 changes.push_back(CreateTestSyncChange(syncer::SyncChange::ACTION_ADD,
1704 CreateTestTemplateURL(ASCIIToUTF16("newkeyword"),
1705 "http://new.com/{searchTerms}",
1706 "newdefault")));
1707 model()->ProcessSyncChanges(FROM_HERE, changes);
1708
1709 EXPECT_EQ(4U, model()->GetAllSyncData(syncer::SEARCH_ENGINES).size());
1710
1711 // Change kSyncedDefaultSearchProviderGUID to point to the new entry and
1712 // ensure that the DSP remains managed.
1713 profile_a()->GetTestingPrefService()->SetString(
1714 prefs::kSyncedDefaultSearchProviderGUID,
1715 "newdefault");
1716
1717 EXPECT_EQ(dsp_turl, model()->GetDefaultSearchProvider());
1718 EXPECT_TRUE(model()->is_default_search_managed());
1719
1720 // Go unmanaged. Ensure that the DSP changes to the expected pending entry
1721 // from Sync.
1722 const TemplateURL* expected_default =
1723 model()->GetTemplateURLForGUID("newdefault");
1724 test_util_a_.RemoveManagedDefaultSearchPreferences();
1725
1726 EXPECT_EQ(expected_default, model()->GetDefaultSearchProvider());
1727 }
1728
1729 TEST_F(TemplateURLServiceSyncTest, SyncMergeDeletesDefault) { 1448 TEST_F(TemplateURLServiceSyncTest, SyncMergeDeletesDefault) {
1730 // If the value from Sync is a duplicate of the local default and is newer, it 1449 // If the value from Sync is a duplicate of the local default and is newer, it
1731 // should safely replace the local value and set as the new default. 1450 // should safely replace the local value and set as the new default.
1732 TemplateURL* default_turl = CreateTestTemplateURL(ASCIIToUTF16("key1"), 1451 TemplateURL* default_turl = CreateTestTemplateURL(ASCIIToUTF16("key1"),
1733 "http://key1.com/{searchTerms}", "whateverguid", 10); 1452 "http://key1.com/{searchTerms}", "whateverguid", 10);
1734 model()->Add(default_turl); 1453 model()->Add(default_turl);
1735 model()->SetUserSelectedDefaultSearchProvider(default_turl); 1454 model()->SetUserSelectedDefaultSearchProvider(default_turl);
1736 1455
1737 syncer::SyncDataList initial_data = CreateInitialSyncData(); 1456 syncer::SyncDataList initial_data = CreateInitialSyncData();
1738 // The key1 entry should be a duplicate of the default. 1457 // The key1 entry should be a duplicate of the default.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1874 1593
1875 // Merge the prepopulate search engines. 1594 // Merge the prepopulate search engines.
1876 base::Time pre_merge_time = base::Time::Now(); 1595 base::Time pre_merge_time = base::Time::Now();
1877 base::RunLoop().RunUntilIdle(); 1596 base::RunLoop().RunUntilIdle();
1878 test_util_a_.ResetModel(true); 1597 test_util_a_.ResetModel(true);
1879 1598
1880 // The newly added search engine should have been safely merged, with an 1599 // The newly added search engine should have been safely merged, with an
1881 // updated time. 1600 // updated time.
1882 TemplateURL* added_turl = model()->GetTemplateURLForKeyword( 1601 TemplateURL* added_turl = model()->GetTemplateURLForKeyword(
1883 ASCIIToUTF16(kNewKeyword)); 1602 ASCIIToUTF16(kNewKeyword));
1603 ASSERT_TRUE(added_turl);
1884 base::Time new_timestamp = added_turl->last_modified(); 1604 base::Time new_timestamp = added_turl->last_modified();
1885 EXPECT_GE(new_timestamp, pre_merge_time); 1605 EXPECT_GE(new_timestamp, pre_merge_time);
1886 ASSERT_TRUE(added_turl);
1887 std::string sync_guid = added_turl->sync_guid(); 1606 std::string sync_guid = added_turl->sync_guid();
1888 1607
1889 // Bring down a copy of the prepopulate engine from Sync with the old values, 1608 // Bring down a copy of the prepopulate engine from Sync with the old values,
1890 // including the old timestamp and the same GUID. Ensure that it loses 1609 // including the old timestamp and the same GUID. Ensure that it loses
1891 // conflict resolution against the local value, and an update is sent to the 1610 // conflict resolution against the local value, and an update is sent to the
1892 // server. The new timestamp should be preserved. 1611 // server. The new timestamp should be preserved.
1893 syncer::SyncDataList initial_data; 1612 syncer::SyncDataList initial_data;
1894 data_copy.SetKeyword(original_keyword); 1613 data_copy.SetKeyword(original_keyword);
1895 data_copy.sync_guid = sync_guid; 1614 data_copy.sync_guid = sync_guid;
1896 scoped_ptr<TemplateURL> sync_turl(new TemplateURL(profile_a(), data_copy)); 1615 scoped_ptr<TemplateURL> sync_turl(new TemplateURL(profile_a(), data_copy));
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
2242 syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing( 1961 syncer::SyncMergeResult merge_result = model()->MergeDataAndStartSyncing(
2243 syncer::SEARCH_ENGINES, list, PassProcessor(), 1962 syncer::SEARCH_ENGINES, list, PassProcessor(),
2244 CreateAndPassSyncErrorFactory()); 1963 CreateAndPassSyncErrorFactory());
2245 1964
2246 const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default"); 1965 const TemplateURL* result_turl = model()->GetTemplateURLForGUID("default");
2247 EXPECT_TRUE(result_turl); 1966 EXPECT_TRUE(result_turl);
2248 EXPECT_EQ(default_turl->keyword(), result_turl->keyword()); 1967 EXPECT_EQ(default_turl->keyword(), result_turl->keyword());
2249 EXPECT_EQ(default_turl->short_name, result_turl->short_name()); 1968 EXPECT_EQ(default_turl->short_name, result_turl->short_name());
2250 EXPECT_EQ(default_turl->url(), result_turl->url()); 1969 EXPECT_EQ(default_turl->url(), result_turl->url());
2251 } 1970 }
1971
1972 TEST_F(TemplateURLServiceSyncTest, GUIDUpdatedOnDefaultSearchChange) {
1973 const char kGUID[] = "initdefault";
1974 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
1975 "http://thewhat.com/{searchTerms}",
1976 kGUID));
1977 model()->SetUserSelectedDefaultSearchProvider(
1978 model()->GetTemplateURLForGUID(kGUID));
1979
1980 const TemplateURL* default_search = model()->GetDefaultSearchProvider();
1981 ASSERT_TRUE(default_search);
1982
1983 const char kNewGUID[] = "newdefault";
1984 model()->Add(CreateTestTemplateURL(ASCIIToUTF16("what"),
1985 "http://thewhat.com/{searchTerms}",
1986 kNewGUID));
1987 model()->SetUserSelectedDefaultSearchProvider(
1988 model()->GetTemplateURLForGUID(kNewGUID));
1989
1990 EXPECT_EQ(kNewGUID, profile_a()->GetTestingPrefService()->GetString(
1991 prefs::kSyncedDefaultSearchProviderGUID));
1992 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698