search_engines_helper.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
18ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh// Copyright (c) 2012 The Chromium Authors. All rights reserved. 28ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh// Use of this source code is governed by a BSD-style license that can be 38ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh// found in the LICENSE file. 48ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 58ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/sync/test/integration/search_engines_helper.h" 68ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 78ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include <vector> 88ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 98ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "base/strings/string_util.h" 108ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "base/strings/stringprintf.h" 118ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "base/strings/utf_string_conversions.h" 128ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "base/time/time.h" 138ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/profiles/profile.h" 148ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/search_engines/template_url.h" 158ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/search_engines/template_url_service.h" 168ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/search_engines/template_url_service_factory.h" 178ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/sync/profile_sync_service_harness.h" 188ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/sync/test/integration/sync_datatype_helper.h" 198ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh#include "chrome/browser/sync/test/integration/sync_test.h" 208ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 210682809ad08db284d7110aab44108d5e9c310e6bdestradaausing sync_datatype_helper::test; 228ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 238ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshnamespace { 248ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 25da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar GaneshGUIDToTURLMap CreateGUIDToTURLMap(TemplateURLService* service) { 264cc80a758c3e4f044c2e53b6210df0e515536a1bZhentao Sun CHECK(service); 278ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 288ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh GUIDToTURLMap map; 298ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService::TemplateURLVector turls = service->GetTemplateURLs(); 308ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh for (TemplateURLService::TemplateURLVector::iterator it = turls.begin(); 318ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh it != turls.end(); ++it) { 328ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(*it); 338ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(map.find((*it)->sync_guid()) == map.end()); 344cc80a758c3e4f044c2e53b6210df0e515536a1bZhentao Sun map[(*it)->sync_guid()] = *it; 358ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 368ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 378ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return map; 388ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 398ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 408ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshstd::string GetTURLInfoString(const TemplateURL* turl) { 418ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh DCHECK(turl); 428ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return "TemplateURL: shortname: " + UTF16ToASCII(turl->short_name()) + 438ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh " keyword: " + UTF16ToASCII(turl->keyword()) + " url: " + turl->url(); 448ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 458ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 468ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshbool TURLsMatch(const TemplateURL* turl1, const TemplateURL* turl2) { 478ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(turl1); 48f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun CHECK(turl2); 498ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh bool result = (turl1->url() == turl2->url()) && 50f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun (turl1->keyword() == turl2->keyword()) && 518ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh (turl1->short_name() == turl2->short_name()); 52f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun 538ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh // Print some useful debug info. 540682809ad08db284d7110aab44108d5e9c310e6bdestradaa if (!result) { 558ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(ERROR) << "TemplateURLs did not match: " << GetTURLInfoString(turl1) 568ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << " vs " << GetTURLInfoString(turl2); 578ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 588ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 598ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return result; 608ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 618ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 628ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshbool ServicesMatch(int profile_a, int profile_b) { 638ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* service_a = 648ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh search_engines_helper::GetServiceForBrowserContext(profile_a); 65f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun TemplateURLService* service_b = 668ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh search_engines_helper::GetServiceForBrowserContext(profile_b); 678ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(service_a); 680682809ad08db284d7110aab44108d5e9c310e6bdestradaa CHECK(service_b); 698ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 708ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh // Services that have synced should have identical TURLs, including the GUIDs. 71da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh // Make sure we compare those fields in addition to the user-visible fields. 72da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh GUIDToTURLMap a_turls = CreateGUIDToTURLMap(service_a); 73da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh GUIDToTURLMap b_turls = CreateGUIDToTURLMap(service_b); 74da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh 75da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh if (a_turls.size() != b_turls.size()) { 76da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh LOG(ERROR) << "Service a and b do not match in size: " << a_turls.size() 778ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << " vs " << b_turls.size() << " respectively."; 788ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 798ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 808ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 818ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh for (GUIDToTURLMap::iterator it = a_turls.begin(); 828ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh it != a_turls.end(); ++it) { 838ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (b_turls.find(it->first) == b_turls.end()) { 848ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(ERROR) << "TURL GUID from a not found in b's TURLs: " << it->first; 858ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 868ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 878ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (!TURLsMatch(b_turls[it->first], it->second)) 888ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 898ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 908ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 918ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh const TemplateURL* default_a = service_a->GetDefaultSearchProvider(); 928ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh const TemplateURL* default_b = service_b->GetDefaultSearchProvider(); 938ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(default_a); 948ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(default_b); 958ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (!TURLsMatch(default_a, default_b)) { 968ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(ERROR) << "Default search providers do not match: A's default: " 978ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << default_a->keyword() << " B's default: " 988ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << default_b->keyword(); 998ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 1008ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } else { 1018ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(INFO) << "A had default with URL: " << default_a->url() 1028ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << " and keyword: " << default_a->keyword(); 1038ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 1040682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1050682809ad08db284d7110aab44108d5e9c310e6bdestradaa return true; 1060682809ad08db284d7110aab44108d5e9c310e6bdestradaa} 1078ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1088ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh// Convenience helper for consistently generating the same keyword for a given 1098ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh// seed. 1108ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshstring16 CreateKeyword(int seed) { 1118ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return ASCIIToUTF16(base::StringPrintf("test%d", seed)); 1128ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 1138ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1148ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} // namespace 1158ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1168ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshnamespace search_engines_helper { 1178ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1188ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar GaneshTemplateURLService* GetServiceForBrowserContext(int profile_index) { 1198ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return TemplateURLServiceFactory::GetForProfile( 1208ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh test()->GetProfile(profile_index)); 1218ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 1228ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1238ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar GaneshTemplateURLService* GetVerifierService() { 1248ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return TemplateURLServiceFactory::GetForProfile(test()->verifier()); 1258ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 1268ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1278ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshbool ServiceMatchesVerifier(int profile_index) { 1288ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* verifier = GetVerifierService(); 1298ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* other = GetServiceForBrowserContext(profile_index); 1308ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1318ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(verifier); 1328ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CHECK(other); 1338ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1348ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService::TemplateURLVector verifier_turls = 1358ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh verifier->GetTemplateURLs(); 1368ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (verifier_turls.size() != other->GetTemplateURLs().size()) { 1378ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(ERROR) << "Verifier and other service have a different count of TURLs: " 1388ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << verifier_turls.size() << " vs " 1398ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh << other->GetTemplateURLs().size() << " respectively."; 1408ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 1410682809ad08db284d7110aab44108d5e9c310e6bdestradaa } 1420682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1430682809ad08db284d7110aab44108d5e9c310e6bdestradaa for (size_t i = 0; i < verifier_turls.size(); ++i) { 144c2b74b73a11b0a9aa4f29b28554292cc0947464bWonsik Kim const TemplateURL* verifier_turl = verifier_turls.at(i); 145c2b74b73a11b0a9aa4f29b28554292cc0947464bWonsik Kim CHECK(verifier_turl); 1460682809ad08db284d7110aab44108d5e9c310e6bdestradaa const TemplateURL* other_turl = other->GetTemplateURLForKeyword( 1470682809ad08db284d7110aab44108d5e9c310e6bdestradaa verifier_turl->keyword()); 1480682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1490682809ad08db284d7110aab44108d5e9c310e6bdestradaa if (!other_turl) { 1500682809ad08db284d7110aab44108d5e9c310e6bdestradaa LOG(ERROR) << "The other service did not contain a TURL with keyword: " 1510682809ad08db284d7110aab44108d5e9c310e6bdestradaa << verifier_turl->keyword(); 1520682809ad08db284d7110aab44108d5e9c310e6bdestradaa return false; 1530682809ad08db284d7110aab44108d5e9c310e6bdestradaa } 1540682809ad08db284d7110aab44108d5e9c310e6bdestradaa if (!TURLsMatch(verifier_turl, other_turl)) 1550682809ad08db284d7110aab44108d5e9c310e6bdestradaa return false; 1560682809ad08db284d7110aab44108d5e9c310e6bdestradaa } 1578ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1588ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return true; 1598ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh} 1608ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1618ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshbool AllServicesMatch() { 1628ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh // Use 0 as the baseline. 1638ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (test()->use_verifier() && !ServiceMatchesVerifier(0)) { 1648ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh LOG(ERROR) << "TemplateURLService 0 does not match verifier."; 1658ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh return false; 1668ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh } 1678ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh 1688ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh for (int it = 1; it < test()->num_clients(); ++it) { 1690682809ad08db284d7110aab44108d5e9c310e6bdestradaa if (!ServicesMatch(0, it)) { 1700682809ad08db284d7110aab44108d5e9c310e6bdestradaa LOG(ERROR) << "TemplateURLService " << it << " does not match with " 1710682809ad08db284d7110aab44108d5e9c310e6bdestradaa << "service 0."; 1720682809ad08db284d7110aab44108d5e9c310e6bdestradaa return false; 1730682809ad08db284d7110aab44108d5e9c310e6bdestradaa } 1740682809ad08db284d7110aab44108d5e9c310e6bdestradaa } 1750682809ad08db284d7110aab44108d5e9c310e6bdestradaa return true; 1760682809ad08db284d7110aab44108d5e9c310e6bdestradaa} 1770682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1780682809ad08db284d7110aab44108d5e9c310e6bdestradaaTemplateURL* CreateTestTemplateURL(Profile* profile, int seed) { 1790682809ad08db284d7110aab44108d5e9c310e6bdestradaa return CreateTestTemplateURL(profile, seed, CreateKeyword(seed), 1800682809ad08db284d7110aab44108d5e9c310e6bdestradaa base::StringPrintf("0000-0000-0000-%04d", seed)); 181da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh} 1820682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1830682809ad08db284d7110aab44108d5e9c310e6bdestradaaTemplateURL* CreateTestTemplateURL(Profile* profile, 1848ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh int seed, 1850682809ad08db284d7110aab44108d5e9c310e6bdestradaa const string16& keyword, 1860682809ad08db284d7110aab44108d5e9c310e6bdestradaa const std::string& sync_guid) { 1870682809ad08db284d7110aab44108d5e9c310e6bdestradaa return CreateTestTemplateURL(profile, seed, keyword, 1880682809ad08db284d7110aab44108d5e9c310e6bdestradaa base::StringPrintf("http://www.test%d.com/", seed), sync_guid); 1890682809ad08db284d7110aab44108d5e9c310e6bdestradaa} 1900682809ad08db284d7110aab44108d5e9c310e6bdestradaa 1910682809ad08db284d7110aab44108d5e9c310e6bdestradaaTemplateURL* CreateTestTemplateURL(Profile* profile, 1920682809ad08db284d7110aab44108d5e9c310e6bdestradaa int seed, 1930682809ad08db284d7110aab44108d5e9c310e6bdestradaa const string16& keyword, 1940682809ad08db284d7110aab44108d5e9c310e6bdestradaa const std::string& url, 1950682809ad08db284d7110aab44108d5e9c310e6bdestradaa const std::string& sync_guid) { 1960682809ad08db284d7110aab44108d5e9c310e6bdestradaa TemplateURLData data; 1970682809ad08db284d7110aab44108d5e9c310e6bdestradaa data.short_name = CreateKeyword(seed); 198da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh data.SetKeyword(keyword); 1990682809ad08db284d7110aab44108d5e9c310e6bdestradaa data.SetURL(url); 2000682809ad08db284d7110aab44108d5e9c310e6bdestradaa data.favicon_url = GURL("http://favicon.url"); 2010682809ad08db284d7110aab44108d5e9c310e6bdestradaa data.safe_for_autoreplace = true; 202da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh data.date_created = base::Time::FromTimeT(100); 203da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh data.last_modified = base::Time::FromTimeT(100); 204da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh data.prepopulate_id = 999999; 205da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh data.sync_guid = sync_guid; 206da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh return new TemplateURL(profile, data); 207da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh} 208da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh 209da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganeshvoid AddSearchEngine(int profile_index, int seed) { 210da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh Profile* profile = test()->GetProfile(profile_index); 211da6508954a492f3dd4397e70e4fa08ee54bd2741Jaikumar Ganesh TemplateURLServiceFactory::GetForProfile(profile)->Add( 2128ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh CreateTestTemplateURL(profile, seed)); 2138ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (test()->use_verifier()) 2148ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh GetVerifierService()->Add(CreateTestTemplateURL(profile, seed)); 215f9a274c9b8578dda6afeda422bff18b1577028b9destradaa} 216f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 217f9a274c9b8578dda6afeda422bff18b1577028b9destradaavoid EditSearchEngine(int profile_index, 218f9a274c9b8578dda6afeda422bff18b1577028b9destradaa const string16& keyword, 219f9a274c9b8578dda6afeda422bff18b1577028b9destradaa const string16& short_name, 220f9a274c9b8578dda6afeda422bff18b1577028b9destradaa const string16& new_keyword, 2218ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh const std::string& url) { 2228ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh DCHECK(!url.empty()); 2238ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* service = GetServiceForBrowserContext(profile_index); 224f9a274c9b8578dda6afeda422bff18b1577028b9destradaa TemplateURL* turl = service->GetTemplateURLForKeyword(keyword); 225f9a274c9b8578dda6afeda422bff18b1577028b9destradaa EXPECT_TRUE(turl); 226f9a274c9b8578dda6afeda422bff18b1577028b9destradaa ASSERT_FALSE(new_keyword.empty()); 227f9a274c9b8578dda6afeda422bff18b1577028b9destradaa service->ResetTemplateURL(turl, short_name, new_keyword, url); 228f9a274c9b8578dda6afeda422bff18b1577028b9destradaa // Make sure we do the same on the verifier. 2298ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh if (test()->use_verifier()) { 2308ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURL* verifier_turl = 231f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun GetVerifierService()->GetTemplateURLForKeyword(keyword); 232f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun EXPECT_TRUE(verifier_turl); 233f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun GetVerifierService()->ResetTemplateURL(verifier_turl, short_name, 234f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun new_keyword, url); 235f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun } 236f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun} 237f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sun 238f8f085c51b5f8b180ad964d0385b34f8fa97cd32Zhentao Sunvoid DeleteSearchEngineBySeed(int profile_index, int seed) { 2398ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* service = GetServiceForBrowserContext(profile_index); 2408ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh string16 keyword(CreateKeyword(seed)); 2418ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURL* turl = service->GetTemplateURLForKeyword(keyword); 2428ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh EXPECT_TRUE(turl); 2438ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh service->Remove(turl); 244f9a274c9b8578dda6afeda422bff18b1577028b9destradaa // Make sure we do the same on the verifier. 245f9a274c9b8578dda6afeda422bff18b1577028b9destradaa if (test()->use_verifier()) { 246f9a274c9b8578dda6afeda422bff18b1577028b9destradaa TemplateURL* verifier_turl = 247f9a274c9b8578dda6afeda422bff18b1577028b9destradaa GetVerifierService()->GetTemplateURLForKeyword(keyword); 248f9a274c9b8578dda6afeda422bff18b1577028b9destradaa EXPECT_TRUE(verifier_turl); 249f9a274c9b8578dda6afeda422bff18b1577028b9destradaa GetVerifierService()->Remove(verifier_turl); 250f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 251f9a274c9b8578dda6afeda422bff18b1577028b9destradaa} 252f9a274c9b8578dda6afeda422bff18b1577028b9destradaa 2538ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganeshvoid ChangeDefaultSearchProvider(int profile_index, int seed) { 2548ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURLService* service = GetServiceForBrowserContext(profile_index); 2558ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh ASSERT_TRUE(service); 2568ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh TemplateURL* turl = service->GetTemplateURLForKeyword(CreateKeyword(seed)); 2578ce470dd4ba0608abb6b5eae117cefca927af96bJaikumar Ganesh ASSERT_TRUE(turl); 2580682809ad08db284d7110aab44108d5e9c310e6bdestradaa service->SetDefaultSearchProvider(turl); 2590682809ad08db284d7110aab44108d5e9c310e6bdestradaa if (test()->use_verifier()) { 2600682809ad08db284d7110aab44108d5e9c310e6bdestradaa TemplateURL* verifier_turl = 2610682809ad08db284d7110aab44108d5e9c310e6bdestradaa GetVerifierService()->GetTemplateURLForKeyword(CreateKeyword(seed)); 2620682809ad08db284d7110aab44108d5e9c310e6bdestradaa ASSERT_TRUE(verifier_turl); 2630682809ad08db284d7110aab44108d5e9c310e6bdestradaa GetVerifierService()->SetDefaultSearchProvider(verifier_turl); 264f9a274c9b8578dda6afeda422bff18b1577028b9destradaa } 2650682809ad08db284d7110aab44108d5e9c310e6bdestradaa} 2660682809ad08db284d7110aab44108d5e9c310e6bdestradaa 2670682809ad08db284d7110aab44108d5e9c310e6bdestradaa} // namespace search_engines_helper 2680682809ad08db284d7110aab44108d5e9c310e6bdestradaa