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