// 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 = …; // 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 = …; 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_