template_url_prepopulate_data_unittest.cc revision ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/command_line.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/search_engines/prepopulated_engines.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/search_terms_data.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_prepopulate_data.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/chrome_switches.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/testing_pref_service_syncable.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef testing::Test TemplateURLPrepopulateDataTest; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kCountryIds[] = { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'A'<<8|'D', 'A'<<8|'E', 'A'<<8|'F', 'A'<<8|'G', 'A'<<8|'I', 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'A'<<8|'L', 'A'<<8|'M', 'A'<<8|'N', 'A'<<8|'O', 'A'<<8|'Q', 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'A'<<8|'R', 'A'<<8|'S', 'A'<<8|'T', 'A'<<8|'U', 'A'<<8|'W', 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'A'<<8|'X', 'A'<<8|'Z', 'B'<<8|'A', 'B'<<8|'B', 'B'<<8|'D', 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'B'<<8|'E', 'B'<<8|'F', 'B'<<8|'G', 'B'<<8|'H', 'B'<<8|'I', 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'B'<<8|'J', 'B'<<8|'M', 'B'<<8|'N', 'B'<<8|'O', 'B'<<8|'R', 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'B'<<8|'S', 'B'<<8|'T', 'B'<<8|'V', 'B'<<8|'W', 'B'<<8|'Y', 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'B'<<8|'Z', 'C'<<8|'A', 'C'<<8|'C', 'C'<<8|'D', 'C'<<8|'F', 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'C'<<8|'G', 'C'<<8|'H', 'C'<<8|'I', 'C'<<8|'K', 'C'<<8|'L', 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'C'<<8|'M', 'C'<<8|'N', 'C'<<8|'O', 'C'<<8|'R', 'C'<<8|'U', 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'C'<<8|'V', 'C'<<8|'X', 'C'<<8|'Y', 'C'<<8|'Z', 'D'<<8|'E', 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'D'<<8|'J', 'D'<<8|'K', 'D'<<8|'M', 'D'<<8|'O', 'D'<<8|'Z', 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'E'<<8|'C', 'E'<<8|'E', 'E'<<8|'G', 'E'<<8|'R', 'E'<<8|'S', 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'E'<<8|'T', 'F'<<8|'I', 'F'<<8|'J', 'F'<<8|'K', 'F'<<8|'M', 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'F'<<8|'O', 'F'<<8|'R', 'G'<<8|'A', 'G'<<8|'B', 'G'<<8|'D', 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'G'<<8|'E', 'G'<<8|'F', 'G'<<8|'G', 'G'<<8|'H', 'G'<<8|'I', 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'G'<<8|'L', 'G'<<8|'M', 'G'<<8|'N', 'G'<<8|'P', 'G'<<8|'Q', 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'G'<<8|'R', 'G'<<8|'S', 'G'<<8|'T', 'G'<<8|'U', 'G'<<8|'W', 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'G'<<8|'Y', 'H'<<8|'K', 'H'<<8|'M', 'H'<<8|'N', 'H'<<8|'R', 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'H'<<8|'T', 'H'<<8|'U', 'I'<<8|'D', 'I'<<8|'E', 'I'<<8|'L', 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'I'<<8|'M', 'I'<<8|'N', 'I'<<8|'O', 'I'<<8|'P', 'I'<<8|'Q', 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'I'<<8|'R', 'I'<<8|'S', 'I'<<8|'T', 'J'<<8|'E', 'J'<<8|'M', 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'J'<<8|'O', 'J'<<8|'P', 'K'<<8|'E', 'K'<<8|'G', 'K'<<8|'H', 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'K'<<8|'I', 'K'<<8|'M', 'K'<<8|'N', 'K'<<8|'P', 'K'<<8|'R', 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'K'<<8|'W', 'K'<<8|'Y', 'K'<<8|'Z', 'L'<<8|'A', 'L'<<8|'B', 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'L'<<8|'C', 'L'<<8|'I', 'L'<<8|'K', 'L'<<8|'R', 'L'<<8|'S', 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'L'<<8|'T', 'L'<<8|'U', 'L'<<8|'V', 'L'<<8|'Y', 'M'<<8|'A', 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'M'<<8|'C', 'M'<<8|'D', 'M'<<8|'E', 'M'<<8|'G', 'M'<<8|'H', 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'M'<<8|'K', 'M'<<8|'L', 'M'<<8|'M', 'M'<<8|'N', 'M'<<8|'O', 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'M'<<8|'P', 'M'<<8|'Q', 'M'<<8|'R', 'M'<<8|'S', 'M'<<8|'T', 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'M'<<8|'U', 'M'<<8|'V', 'M'<<8|'W', 'M'<<8|'X', 'M'<<8|'Y', 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'M'<<8|'Z', 'N'<<8|'A', 'N'<<8|'C', 'N'<<8|'E', 'N'<<8|'F', 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'N'<<8|'G', 'N'<<8|'I', 'N'<<8|'L', 'N'<<8|'O', 'N'<<8|'P', 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'N'<<8|'R', 'N'<<8|'U', 'N'<<8|'Z', 'O'<<8|'M', 'P'<<8|'A', 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'P'<<8|'E', 'P'<<8|'F', 'P'<<8|'G', 'P'<<8|'H', 'P'<<8|'K', 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'P'<<8|'L', 'P'<<8|'M', 'P'<<8|'N', 'P'<<8|'R', 'P'<<8|'S', 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'P'<<8|'T', 'P'<<8|'W', 'P'<<8|'Y', 'Q'<<8|'A', 'R'<<8|'E', 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'R'<<8|'O', 'R'<<8|'S', 'R'<<8|'U', 'R'<<8|'W', 'S'<<8|'A', 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'S'<<8|'B', 'S'<<8|'C', 'S'<<8|'D', 'S'<<8|'E', 'S'<<8|'G', 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'S'<<8|'H', 'S'<<8|'I', 'S'<<8|'J', 'S'<<8|'K', 'S'<<8|'L', 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'S'<<8|'M', 'S'<<8|'N', 'S'<<8|'O', 'S'<<8|'R', 'S'<<8|'T', 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'S'<<8|'V', 'S'<<8|'Y', 'S'<<8|'Z', 'T'<<8|'C', 'T'<<8|'D', 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'T'<<8|'F', 'T'<<8|'G', 'T'<<8|'H', 'T'<<8|'J', 'T'<<8|'K', 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'T'<<8|'L', 'T'<<8|'M', 'T'<<8|'N', 'T'<<8|'O', 'T'<<8|'R', 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'T'<<8|'T', 'T'<<8|'V', 'T'<<8|'W', 'T'<<8|'Z', 'U'<<8|'A', 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'U'<<8|'G', 'U'<<8|'M', 'U'<<8|'S', 'U'<<8|'Y', 'U'<<8|'Z', 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'V'<<8|'A', 'V'<<8|'C', 'V'<<8|'E', 'V'<<8|'G', 'V'<<8|'I', 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'V'<<8|'N', 'V'<<8|'U', 'W'<<8|'F', 'W'<<8|'S', 'Y'<<8|'E', 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'Y'<<8|'T', 'Z'<<8|'A', 'Z'<<8|'M', 'Z'<<8|'W', -1 }; 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Verifies the set of prepopulate data doesn't contain entries with duplicate 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ids. 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, UniqueIDs) { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kCountryIds); ++i) { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile.GetPrefs()->SetInteger(prefs::kCountryIDAtInstall, kCountryIds[i]); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScopedVector<TemplateURL> urls; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t default_index; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &urls.get(), 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &default_index); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<int> unique_ids; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t turl_i = 0; turl_i < urls.size(); ++turl_i) { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(unique_ids.find(urls[turl_i]->prepopulate_id()) == 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unique_ids.end()); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unique_ids.insert(urls[turl_i]->prepopulate_id()); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Verifies that default search providers from the preferences file 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// override the built-in ones. 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, ProvidersFromPrefs) { 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile; 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverridesVersion, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Value::CreateIntegerValue(1)); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* overrides = new ListValue; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<DictionaryValue> entry(new DictionaryValue); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set only the minimal required settings for a search provider configuration. 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("name", "foo"); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("keyword", "fook"); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("search_url", "http://foo.com/s?q={searchTerms}"); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("favicon_url", "http://foi.com/favicon.ico"); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("encoding", "UTF-8"); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetInteger("id", 1001); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides->Append(entry->DeepCopy()); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int version = TemplateURLPrepopulateData::GetDataVersion(prefs); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1, version); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScopedVector<TemplateURL> t_urls; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t default_index; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &t_urls.get(), 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &default_index); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1u, t_urls.size()); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), t_urls[0]->short_name()); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("fook"), t_urls[0]->keyword()); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("foo.com", t_urls[0]->url_ref().GetHost()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("foi.com", t_urls[0]->favicon_url().host()); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1u, t_urls[0]->input_encodings().size()); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1001, t_urls[0]->prepopulate_id()); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(t_urls[0]->suggestions_url().empty()); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(t_urls[0]->instant_url().empty()); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, t_urls[0]->alternate_urls().size()); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(t_urls[0]->search_terms_replacement_key().empty()); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test the optional settings too. 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("suggest_url", "http://foo.com/suggest?q={searchTerms}"); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("instant_url", "http://foo.com/instant?q={searchTerms}"); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* alternate_urls = new ListValue; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) alternate_urls->AppendString("http://foo.com/alternate?q={searchTerms}"); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->Set("alternate_urls", alternate_urls); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) entry->SetString("search_terms_replacement_key", "espv"); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides = new ListValue; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides->Append(entry->DeepCopy()); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) t_urls.clear(); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &t_urls.get(), 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &default_index); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1u, t_urls.size()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("foo"), t_urls[0]->short_name()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("fook"), t_urls[0]->keyword()); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("foo.com", t_urls[0]->url_ref().GetHost()); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("foi.com", t_urls[0]->favicon_url().host()); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1u, t_urls[0]->input_encodings().size()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1001, t_urls[0]->prepopulate_id()); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://foo.com/suggest?q={searchTerms}", 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) t_urls[0]->suggestions_url()); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://foo.com/instant?q={searchTerms}", 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) t_urls[0]->instant_url()); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_EQ(1u, t_urls[0]->alternate_urls().size()); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("http://foo.com/alternate?q={searchTerms}", 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) t_urls[0]->alternate_urls()[0]); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("espv", t_urls[0]->search_terms_replacement_key()); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test that subsequent providers are loaded even if an intermediate 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // provider has an incomplete configuration. 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides = new ListValue; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides->Append(entry->DeepCopy()); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetInteger("id", 1002); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("name", "bar"); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("keyword", "bark"); 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) entry->SetString("encoding", std::string()); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides->Append(entry->DeepCopy()); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetInteger("id", 1003); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("name", "baz"); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("keyword", "bazk"); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) entry->SetString("encoding", "UTF-8"); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) overrides->Append(entry->DeepCopy()); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) t_urls.clear(); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &t_urls.get(), 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) &default_index); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2u, t_urls.size()); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, ClearProvidersFromPrefs) { 186868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TestingProfile profile; 187868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TestingPrefServiceSyncable* prefs = profile.GetTestingPrefService(); 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverridesVersion, 189868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Value::CreateIntegerValue(1)); 190868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ListValue* overrides = new ListValue; 191868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DictionaryValue* entry(new DictionaryValue); 192868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Set only the minimal required settings for a search provider configuration. 193868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetString("name", "foo"); 194868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetString("keyword", "fook"); 195868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetString("search_url", "http://foo.com/s?q={searchTerms}"); 196868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetString("favicon_url", "http://foi.com/favicon.ico"); 197868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetString("encoding", "UTF-8"); 198868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) entry->SetInteger("id", 1001); 199868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) overrides->Append(entry); 200868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) prefs->SetUserPref(prefs::kSearchProviderOverrides, overrides); 201868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int version = TemplateURLPrepopulateData::GetDataVersion(prefs); 203868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(1, version); 204868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 205868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // This call removes the above search engine. 206868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TemplateURLPrepopulateData::ClearPrepopulatedEnginesInPrefs(&profile); 207868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 208868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) version = TemplateURLPrepopulateData::GetDataVersion(prefs); 209868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(TemplateURLPrepopulateData::kCurrentDataVersion, version); 210868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 211868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ScopedVector<TemplateURL> t_urls; 212868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) size_t default_index; 213868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &t_urls.get(), 214868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) &default_index); 215868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) ASSERT_FALSE(t_urls.empty()); 216868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) for (size_t i = 0; i < t_urls.size(); ++i) { 217868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_NE(ASCIIToUTF16("foo"), t_urls[i]->short_name()); 218868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_NE(ASCIIToUTF16("fook"), t_urls[i]->keyword()); 219868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_NE("foi.com", t_urls[i]->favicon_url().host()); 220868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_NE("foo.com", t_urls[i]->url_ref().GetHost()); 221868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_NE(1001, t_urls[i]->prepopulate_id()); 222868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 223868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // Ensures the default URL is Google and has the optional fields filled. 224868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Google"), t_urls[default_index]->short_name()); 225868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->suggestions_url().empty()); 226868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->instant_url().empty()); 2277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(t_urls[default_index]->image_url().empty()); 2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(t_urls[default_index]->image_url_post_params().empty()); 229ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 230ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SEARCH_ENGINE_GOOGLE, 231868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType(t_urls[default_index]->url())); 232868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 233868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verifies that built-in search providers are processed correctly. 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, ProvidersFromPrepopulated) { 2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Use United States. 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CommandLine::ForCurrentProcess()->AppendSwitchASCII( 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) switches::kCountry, "US"); 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfile profile; 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ScopedVector<TemplateURL> t_urls; 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t default_index; 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TemplateURLPrepopulateData::GetPrepopulatedEngines(&profile, &t_urls.get(), 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &default_index); 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Ensure all the URLs have the required fields populated. 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls.empty()); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < t_urls.size(); ++i) { 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls[i]->short_name().empty()); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls[i]->keyword().empty()); 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls[i]->favicon_url().host().empty()); 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls[i]->url_ref().GetHost().empty()); 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_FALSE(t_urls[i]->input_encodings().empty()); 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_GT(t_urls[i]->prepopulate_id(), 0); 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Ensures the default URL is Google and has the optional fields filled. 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Google"), t_urls[default_index]->short_name()); 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->suggestions_url().empty()); 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->instant_url().empty()); 2607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(t_urls[default_index]->image_url().empty()); 2617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch EXPECT_FALSE(t_urls[default_index]->image_url_post_params().empty()); 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Expect at least 2 alternate_urls. 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This caught a bug with static initialization of arrays, so leave this in. 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_GT(t_urls[default_index]->alternate_urls().size(), 1u); 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < t_urls[default_index]->alternate_urls().size(); ++i) 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->alternate_urls()[i].empty()); 267ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ( 268ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SEARCH_ENGINE_GOOGLE, 2692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TemplateURLPrepopulateData::GetEngineType(t_urls[default_index]->url())); 2702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(t_urls[default_index]->search_terms_replacement_key().empty()); 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, GetEngineTypeBasic) { 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_OTHER, 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType("http://example.com/")); 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_ASK, 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType("http://www.ask.com/")); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_OTHER, 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType("http://search.atlas.cz/")); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_GOOGLE, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType("http://www.google.com/")); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(TemplateURLPrepopulateDataTest, GetEngineTypeAdvanced) { 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Google URLs in different forms. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* kGoogleURLs[] = { 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Original with google:baseURL: 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{google:baseURL}search?q={searchTerms}&{google:RLZ}" 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "{google:originalQueryForSuggestion}{google:searchFieldtrialParameter}" 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "sourceid=chrome&ie={inputEncoding}", 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Custom with google.com and reordered query params: 2922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "http://google.com/search?{google:RLZ}{google:originalQueryForSuggestion}" 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "{google:searchFieldtrialParameter}" 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "sourceid=chrome&ie={inputEncoding}&q={searchTerms}", 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Custom with a country TLD and almost no query params: 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "http://www.google.ru/search?q={searchTerms}" 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kGoogleURLs); ++i) { 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_GOOGLE, 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType(kGoogleURLs[i])); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 302ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Non-Google URLs. 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* kYahooURLs[] = { 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "http://search.yahoo.com/search?" 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "ei={inputEncoding}&fr=crmas&p={searchTerms}", 307ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "http://search.yahoo.com/search?p={searchTerms}", 308ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Aggressively match types by checking just TLD+1. 309ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "http://someothersite.yahoo.com/", 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kYahooURLs); ++i) { 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_YAHOO, 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType(kYahooURLs[i])); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 315ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // URLs for engines not present in country-specific lists. 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_NIGMA, 318eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TemplateURLPrepopulateData::GetEngineType( 319ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "http://nigma.ru/?s={searchTerms}&arg1=value1")); 320ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Also test matching against alternate URLs (and TLD+1 matching). 321ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch EXPECT_EQ(SEARCH_ENGINE_SOFTONIC, 322ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch TemplateURLPrepopulateData::GetEngineType( 323ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch "http://test.softonic.com.br/?{searchTerms}")); 324ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Search URL for which no prepopulated search provider exists. 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_OTHER, 327eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TemplateURLPrepopulateData::GetEngineType( 328eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "http://example.net/search?q={searchTerms}")); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(SEARCH_ENGINE_OTHER, 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLPrepopulateData::GetEngineType("invalid:search:url")); 331eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 332eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // URL that doesn't look Google-related, but matches a Google base URL 333eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // specified on the command line. 334eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string foo_url("http://www.foo.com/search?q={searchTerms}"); 335eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(SEARCH_ENGINE_OTHER, 336eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TemplateURLPrepopulateData::GetEngineType(foo_url)); 337eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL, 338eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "http://www.foo.com/"); 339eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXPECT_EQ(SEARCH_ENGINE_GOOGLE, 340eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch TemplateURLPrepopulateData::GetEngineType(foo_url)); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, GetLogoURLGoogle) { 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLData data; 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data.SetURL("http://www.google.com/"); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURL turl(NULL, data); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL logo_100_url = TemplateURLPrepopulateData::GetLogoURL( 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) turl, TemplateURLPrepopulateData::LOGO_100_PERCENT); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL logo_200_url = TemplateURLPrepopulateData::GetLogoURL( 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) turl, TemplateURLPrepopulateData::LOGO_200_PERCENT); 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("www.google.com", logo_100_url.host()); 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("www.google.com", logo_200_url.host()); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(logo_100_url, logo_200_url); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, GetLogoURLUnknown) { 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLData data; 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data.SetURL("http://webalta.ru/"); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURL turl(NULL, data); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL logo_url = TemplateURLPrepopulateData::GetLogoURL( 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) turl, TemplateURLPrepopulateData::LOGO_100_PERCENT); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(logo_url.is_empty()); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(TemplateURLPrepopulateDataTest, GetLogoURLInvalid) { 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURLData data; 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data.SetURL("http://invalid:search:url/"); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TemplateURL turl(NULL, data); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL logo_url = TemplateURLPrepopulateData::GetLogoURL( 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) turl, TemplateURLPrepopulateData::LOGO_100_PERCENT); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(logo_url.is_empty()); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 376