1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 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) 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stddef.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/scoped_ptr.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/memory/scoped_vector.h" 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/search_engines/search_engine_type.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile; 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class SearchTermsData; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURL; 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct TemplateURLData; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class PrefRegistrySyncable; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace TemplateURLPrepopulateData { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const int kMaxPrepopulatedEngineID; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This must be called early only once. |country_code| is the country code at 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// install following the ISO-3166 specification. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void InitCountryCode(const std::string& country_code); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the current version of the prepopulate data, so callers can know when 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// they need to re-merge. If the prepopulate data comes from the preferences 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// file then it returns the version specified there. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int GetDataVersion(PrefService* prefs); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Loads the set of TemplateURLs from the prepopulate data. On return, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |default_search_provider_index| is set to the index of the default search 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// provider. 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuScopedVector<TemplateURLData> GetPrepopulatedEngines( 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu PrefService* prefs, 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) size_t* default_search_provider_index); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Removes prepopulated engines and their version stored in user prefs. 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid ClearPrepopulatedEnginesInPrefs(PrefService* prefs); 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Returns the default search provider specified by the prepopulate data, which 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// may be NULL. 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// If |prefs| is NULL, any search provider overrides from the preferences are 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// not used. 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuscoped_ptr<TemplateURLData> GetPrepopulatedDefaultSearch(PrefService* prefs); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Returns the type of the provided engine, or SEARCH_ENGINE_OTHER if no engines 623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// match. This checks the TLD+1 for the most part, but will report the type as 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// SEARCH_ENGINE_GOOGLE for any hostname that causes 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// google_util::IsGoogleHostname() to return true. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: Must be called on the UI thread. 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)SearchEngineType GetEngineType(const TemplateURL& template_url, 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const SearchTermsData& search_terms_data); 693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Like the above, but takes a GURL which is expected to represent a search URL. 713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This may be called on any thread. 723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)SearchEngineType GetEngineType(const GURL& url); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace TemplateURLPrepopulateData 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ 77