diff options
Diffstat (limited to 'chromium/components/search_engines')
8 files changed, 66 insertions, 8 deletions
diff --git a/chromium/components/search_engines/android/template_url_service_android.cc b/chromium/components/search_engines/android/template_url_service_android.cc index dfe512ae2cf..3f986b9404a 100644 --- a/chromium/components/search_engines/android/template_url_service_android.cc +++ b/chromium/components/search_engines/android/template_url_service_android.cc @@ -15,6 +15,7 @@ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/metrics/field_trial_params.h" +#include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/google/core/common/google_util.h" #include "components/search_engines/android/jni_headers/TemplateUrlService_jni.h" diff --git a/chromium/components/search_engines/default_search_policy_handler.cc b/chromium/components/search_engines/default_search_policy_handler.cc index e521899cb1e..a39fe271eed 100644 --- a/chromium/components/search_engines/default_search_policy_handler.cc +++ b/chromium/components/search_engines/default_search_policy_handler.cc @@ -54,6 +54,19 @@ void SetStringInPref(const PolicyMap& policies, dict->SetString(key, str); } +void SetBooleanInPref(const PolicyMap& policies, + const char* policy_name, + const char* key, + base::DictionaryValue* dict) { + DCHECK(dict); + const base::Value* policy_value = policies.GetValue(policy_name); + bool bool_value = false; + if (policy_value) { + DCHECK(policy_value->GetAsBoolean(&bool_value)); + } + dict->SetBoolean(key, bool_value); +} + } // namespace // List of policy types to preference names, for policies affecting the default @@ -86,6 +99,9 @@ const PolicyToPreferenceMapEntry kDefaultSearchPolicyDataMap[] = { base::Value::Type::STRING}, {key::kDefaultSearchProviderImageURLPostParams, DefaultSearchManager::kImageURLPostParams, base::Value::Type::STRING}, + {key::kDefaultSearchProviderContextMenuAccessAllowed, + prefs::kDefaultSearchProviderContextMenuAccessAllowed, + base::Value::Type::BOOLEAN}, }; // DefaultSearchPolicyHandler implementation ----------------------------------- @@ -102,11 +118,13 @@ bool DefaultSearchPolicyHandler::CheckPolicySettings(const PolicyMap& policies, if (!DefaultSearchProviderPolicyIsSet(policies) || DefaultSearchProviderIsDisabled(policies)) { // Add an error for all specified default search policies except - // DefaultSearchProviderEnabled. + // DefaultSearchProviderEnabled and + // DefaultSearchProviderContextMenuAccessAllowed. for (const auto& policy_map_entry : kDefaultSearchPolicyDataMap) { const char* policy_name = policy_map_entry.policy_name; if (policy_name != key::kDefaultSearchProviderEnabled && + policy_name != key::kDefaultSearchProviderContextMenuAccessAllowed && HasDefaultSearchPolicy(policies, policy_name)) { errors->AddError(policy_name, IDS_POLICY_DEFAULT_SEARCH_DISABLED); } @@ -165,6 +183,11 @@ void DefaultSearchPolicyHandler::ApplyPolicySettings(const PolicyMap& policies, kDefaultSearchPolicyDataMap[i].preference_path, dict.get()); break; + case base::Value::Type::BOOLEAN: + SetBooleanInPref(policies, policy_name, + kDefaultSearchPolicyDataMap[i].preference_path, + dict.get()); + break; default: NOTREACHED(); break; diff --git a/chromium/components/search_engines/search_engines_pref_names.cc b/chromium/components/search_engines/search_engines_pref_names.cc index d9cca1892f3..0735405125c 100644 --- a/chromium/components/search_engines/search_engines_pref_names.cc +++ b/chromium/components/search_engines/search_engines_pref_names.cc @@ -14,6 +14,10 @@ namespace prefs { const char kSyncedDefaultSearchProviderGUID[] = "default_search_provider.synced_guid"; +// Whether a search context menu item is allowed. +const char kDefaultSearchProviderContextMenuAccessAllowed[] = + "default_search_provider.context_menu_access_allowed"; + // Whether having a default search provider is enabled. const char kDefaultSearchProviderEnabled[] = "default_search_provider.enabled"; diff --git a/chromium/components/search_engines/search_engines_pref_names.h b/chromium/components/search_engines/search_engines_pref_names.h index 3cc34797cc9..d98105afa71 100644 --- a/chromium/components/search_engines/search_engines_pref_names.h +++ b/chromium/components/search_engines/search_engines_pref_names.h @@ -8,6 +8,7 @@ namespace prefs { extern const char kSyncedDefaultSearchProviderGUID[]; +extern const char kDefaultSearchProviderContextMenuAccessAllowed[]; extern const char kDefaultSearchProviderEnabled[]; extern const char kSearchProviderOverrides[]; extern const char kSearchProviderOverridesVersion[]; diff --git a/chromium/components/search_engines/template_url.cc b/chromium/components/search_engines/template_url.cc index 74e2ce977fa..08ee376cc13 100644 --- a/chromium/components/search_engines/template_url.cc +++ b/chromium/components/search_engines/template_url.cc @@ -227,7 +227,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( int previous_event_results, bool is_exact_search, std::string source_lang, - std::string target_lang) + std::string target_lang, + std::string fluent_languages) : version(version), contextual_cards_version(contextual_cards_version), home_country(home_country), @@ -235,7 +236,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( previous_event_results(previous_event_results), is_exact_search(is_exact_search), source_lang(source_lang), - target_lang(target_lang) {} + target_lang(target_lang), + fluent_languages(fluent_languages) {} TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( const ContextualSearchParams& other) = default; @@ -1004,6 +1006,8 @@ std::string TemplateURLRef::HandleReplacements( args.push_back("tlitesl=" + params.source_lang); if (!params.target_lang.empty()) args.push_back("tlitetl=" + params.target_lang); + if (!params.fluent_languages.empty()) + args.push_back("ctxs_fls=" + params.fluent_languages); HandleReplacement(std::string(), base::JoinString(args, "&"), *i, &url); break; diff --git a/chromium/components/search_engines/template_url.h b/chromium/components/search_engines/template_url.h index 8bffdf35dbf..7980083499e 100644 --- a/chromium/components/search_engines/template_url.h +++ b/chromium/components/search_engines/template_url.h @@ -118,6 +118,10 @@ class TemplateURLRef { // The |target_lang| specifies the best language to translate into for // the user, which also indicates when translation is appropriate or // helpful. This comes from the Chrome Language Model. + // The |fluent_languages| string specifies the languages the user + // is fluent in reading. This acts as an alternate set of languages + // to consider translating into. The languages are ordered by + // fluency, and encoded as a comma-separated list of BCP 47 languages. ContextualSearchParams(int version, int contextual_cards_version, std::string home_country, @@ -125,7 +129,8 @@ class TemplateURLRef { int previous_event_results, bool is_exact_search, std::string source_lang, - std::string target_lang); + std::string target_lang, + std::string fluent_languages); ContextualSearchParams(const ContextualSearchParams& other); ~ContextualSearchParams(); @@ -162,6 +167,10 @@ class TemplateURLRef { // Target language string to be translated into. std::string target_lang; + + // Alternate target languages that the user is fluent in, encoded in a + // single string. + std::string fluent_languages; }; // Estimates dynamic memory usage. diff --git a/chromium/components/search_engines/template_url_service.cc b/chromium/components/search_engines/template_url_service.cc index 8c0924267b2..65cbba22618 100644 --- a/chromium/components/search_engines/template_url_service.cc +++ b/chromium/components/search_engines/template_url_service.cc @@ -323,6 +323,8 @@ void TemplateURLService::RegisterProfilePrefs( std::string(), flags); registry->RegisterBooleanPref(prefs::kDefaultSearchProviderEnabled, true); + registry->RegisterBooleanPref( + prefs::kDefaultSearchProviderContextMenuAccessAllowed, true); } #if defined(OS_ANDROID) diff --git a/chromium/components/search_engines/template_url_unittest.cc b/chromium/components/search_engines/template_url_unittest.cc index d2514a07e91..78be72107fa 100644 --- a/chromium/components/search_engines/template_url_unittest.cc +++ b/chromium/components/search_engines/template_url_unittest.cc @@ -1741,7 +1741,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { // Test the current common case, which uses no home country or previous // event. TemplateURLRef::SearchTermsArgs::ContextualSearchParams params( - 2, 1, std::string(), 0, 0, false, std::string(), std::string()); + 2, 1, std::string(), 0, 0, false, std::string(), std::string(), + std::string()); search_terms_args.contextual_search_params = params; result = url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); @@ -1754,7 +1755,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { // Test the home country and non-zero event data case. search_terms_args.contextual_search_params = TemplateURLRef::SearchTermsArgs::ContextualSearchParams( - 2, 2, "CH", 1657713458, 5, false, std::string(), std::string()); + 2, 2, "CH", 1657713458, 5, false, std::string(), std::string(), + std::string()); result = url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); @@ -1770,7 +1772,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { // Test exact-search. search_terms_args.contextual_search_params = TemplateURLRef::SearchTermsArgs::ContextualSearchParams( - 2, 1, std::string(), 0, 0, true, std::string(), std::string()); + 2, 1, std::string(), 0, 0, true, std::string(), std::string(), + std::string()); result = url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); // Find our param. @@ -1780,7 +1783,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { // Test source and target languages. search_terms_args.contextual_search_params = TemplateURLRef::SearchTermsArgs::ContextualSearchParams( - 2, 1, std::string(), 0, 0, true, "es", "de"); + 2, 1, std::string(), 0, 0, true, "es", "de", std::string()); result = url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); // Find our params. @@ -1788,6 +1791,17 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { EXPECT_NE(source_pos, std::string::npos); size_t target_pos = result.find("tlitetl=de"); EXPECT_NE(target_pos, std::string::npos); + + // Test fluent languages. + search_terms_args.contextual_search_params = + TemplateURLRef::SearchTermsArgs::ContextualSearchParams( + 2, 1, std::string(), 0, 0, true, std::string(), std::string(), + "es,de"); + result = + url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); + // Find our param. These may actually be URL encoded. + size_t fluent_pos = result.find("&ctxs_fls=es,de"); + EXPECT_NE(fluent_pos, std::string::npos); } TEST_F(TemplateURLTest, GenerateKeyword) { |