summaryrefslogtreecommitdiff
path: root/chromium/components/search_engines
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/search_engines')
-rw-r--r--chromium/components/search_engines/android/template_url_service_android.cc1
-rw-r--r--chromium/components/search_engines/default_search_policy_handler.cc25
-rw-r--r--chromium/components/search_engines/search_engines_pref_names.cc4
-rw-r--r--chromium/components/search_engines/search_engines_pref_names.h1
-rw-r--r--chromium/components/search_engines/template_url.cc8
-rw-r--r--chromium/components/search_engines/template_url.h11
-rw-r--r--chromium/components/search_engines/template_url_service.cc2
-rw-r--r--chromium/components/search_engines/template_url_unittest.cc22
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) {