| // Copyright 2014 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ |
| #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ |
| |
| #include <stddef.h> |
| |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "base/memory/raw_ptr.h" |
| #include "build/build_config.h" |
| |
| class PrefService; |
| struct TemplateURLData; |
| |
| namespace search_engines { |
| class SearchEngineChoiceService; |
| } |
| |
| namespace user_prefs { |
| class PrefRegistrySyncable; |
| } |
| |
| namespace TemplateURLPrepopulateData { |
| |
| struct PrepopulatedEngine; |
| |
| extern const int kMaxPrepopulatedEngineID; |
| |
| // The maximum number of prepopulated search engines that can be returned in |
| // any of the EEA countries by `GetPrepopulatedEngines()`. |
| // |
| // Note: If this is increased, please also increase the declared variant count |
| // for the `Search.ChoiceScreenShowedEngineAt.Index{Index}` histogram. |
| inline constexpr size_t kMaxEeaPrepopulatedEngines = 8; |
| |
| // The maximum number of prepopulated search engines that can be returned in |
| // in the rest of the world by `GetPrepopulatedEngines()`. |
| inline constexpr size_t kMaxRowPrepopulatedEngines = 5; |
| |
| void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); |
| |
| // Returns the current version of the prepopulate data, so callers can know when |
| // they need to re-merge. If the prepopulate data comes from the preferences |
| // file then it returns the version specified there. |
| int GetDataVersion(PrefService* prefs); |
| |
| // Returns the prepopulated URLs for the current country. |
| // `search_engine_choice_service` is used for obtaining the country code and |
| // shouldn't be null outside of tests. |
| std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines( |
| PrefService* prefs, |
| search_engines::SearchEngineChoiceService* search_engine_choice_service); |
| |
| // Returns the prepopulated search engine with the given |prepopulated_id| |
| // from the profile country's known prepopulated search engines, or `nullptr` |
| // if it's not known there. |
| // `search_engine_choice_service` is used for obtaining the country code and |
| // shouldn't be null outside of tests. |
| std::unique_ptr<TemplateURLData> GetPrepopulatedEngine( |
| PrefService* prefs, |
| search_engines::SearchEngineChoiceService* search_engine_choice_service, |
| int prepopulated_id); |
| |
| // Returns the prepopulated search engine with the given |prepopulated_id| |
| // from the full list of known prepopulated search engines, or `nullptr` if |
| // it's not known there. |
| // `search_engine_choice_service` is used for obtaining the country code and |
| // shouldn't be null outside of tests. |
| std::unique_ptr<TemplateURLData> GetPrepopulatedEngineFromFullList( |
| PrefService* prefs, |
| search_engines::SearchEngineChoiceService* search_engine_choice_service, |
| int prepopulated_id); |
| |
| #if BUILDFLAG(IS_ANDROID) |
| // Returns the prepopulated URLs associated with `country_code`. |
| // `country_code` is a two-character uppercase ISO 3166-1 country code. |
| // `prefs` is the main profile's preferences. |
| std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines( |
| const std::string& country_code, |
| PrefService& prefs); |
| #endif |
| |
| // Removes prepopulated engines and their version stored in user prefs. |
| void ClearPrepopulatedEnginesInPrefs(PrefService* prefs); |
| |
| // Returns the fallback default search provider, currently hardcoded to be |
| // Google, or whichever one is the first of the list if Google is not in the |
| // list of prepopulated search engines. |
| // Search provider overrides are read from `prefs`, so they won't be used if |
| // it's null. |
| // `search_engine_choice_service` is used for obtaining the country code and |
| // shouldn't be null outside of tests. |
| // May return `nullptr` if for some reason there are no prepopulated search |
| // engines available. |
| std::unique_ptr<TemplateURLData> GetPrepopulatedFallbackSearch( |
| PrefService* prefs, |
| search_engines::SearchEngineChoiceService* search_engine_choice_service); |
| |
| // Returns all prepopulated engines for all locales. |
| std::vector<const PrepopulatedEngine*> GetAllPrepopulatedEngines(); |
| |
| // Returns all the prepopulated engines that are used in the EEA region. |
| std::vector<std::unique_ptr<TemplateURLData>> |
| GetAllEeaRegionPrepopulatedEngines(); |
| |
| // Returns the set of search engines that is used when the country is unknown. |
| std::vector<std::unique_ptr<TemplateURLData>> GetDefaultPrepopulatedEngines(); |
| |
| // Test Utilities ------------------------------------------------------------- |
| |
| const std::vector<raw_ptr<const PrepopulatedEngine>> |
| GetPrepopulationSetFromCountryIDForTesting(int country_id); |
| |
| } // namespace TemplateURLPrepopulateData |
| |
| #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_PREPOPULATE_DATA_H_ |