Commit 97be51df authored by Donn Denman's avatar Donn Denman Committed by Commit Bot

[TTS][Template URL] Add fluent languages support.

Adds support for a new Contextual Search Resolve-request parameter
to provide a list of fluent languages.  The server can use these
as additional hints from the Chrome Language Model for the
user's preferred languages to translate into.

BUG= 1084600, 1093833, 1095090

Change-Id: Ieece911ca84854effcd830f4d0d7ec64e088f700
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2261422
Commit-Queue: Donn Denman <donnd@chromium.org>
Reviewed-by: default avatarmanuk hovanesian <manukh@chromium.org>
Auto-Submit: Donn Denman <donnd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#781650}
parent b1b83daf
...@@ -308,7 +308,7 @@ std::string ContextualSearchDelegate::BuildRequestUrl( ...@@ -308,7 +308,7 @@ std::string ContextualSearchDelegate::BuildRequestUrl(
context->GetPreviousEventId(), context->GetPreviousEventResults(), context->GetPreviousEventId(), context->GetPreviousEventResults(),
context->GetExactResolve(), context->GetExactResolve(),
context->GetTranslationLanguages().detected_language, context->GetTranslationLanguages().detected_language,
context->GetTranslationLanguages().target_language); context->GetTranslationLanguages().target_language, std::string());
search_terms_args.contextual_search_params = params; search_terms_args.contextual_search_params = params;
......
...@@ -227,7 +227,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( ...@@ -227,7 +227,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
int previous_event_results, int previous_event_results,
bool is_exact_search, bool is_exact_search,
std::string source_lang, std::string source_lang,
std::string target_lang) std::string target_lang,
std::string fluent_languages)
: version(version), : version(version),
contextual_cards_version(contextual_cards_version), contextual_cards_version(contextual_cards_version),
home_country(home_country), home_country(home_country),
...@@ -235,7 +236,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( ...@@ -235,7 +236,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
previous_event_results(previous_event_results), previous_event_results(previous_event_results),
is_exact_search(is_exact_search), is_exact_search(is_exact_search),
source_lang(source_lang), source_lang(source_lang),
target_lang(target_lang) {} target_lang(target_lang),
fluent_languages(fluent_languages) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
const ContextualSearchParams& other) = default; const ContextualSearchParams& other) = default;
...@@ -1004,6 +1006,8 @@ std::string TemplateURLRef::HandleReplacements( ...@@ -1004,6 +1006,8 @@ std::string TemplateURLRef::HandleReplacements(
args.push_back("tlitesl=" + params.source_lang); args.push_back("tlitesl=" + params.source_lang);
if (!params.target_lang.empty()) if (!params.target_lang.empty())
args.push_back("tlitetl=" + params.target_lang); 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); HandleReplacement(std::string(), base::JoinString(args, "&"), *i, &url);
break; break;
......
...@@ -118,6 +118,10 @@ class TemplateURLRef { ...@@ -118,6 +118,10 @@ class TemplateURLRef {
// The |target_lang| specifies the best language to translate into for // The |target_lang| specifies the best language to translate into for
// the user, which also indicates when translation is appropriate or // the user, which also indicates when translation is appropriate or
// helpful. This comes from the Chrome Language Model. // 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, ContextualSearchParams(int version,
int contextual_cards_version, int contextual_cards_version,
std::string home_country, std::string home_country,
...@@ -125,7 +129,8 @@ class TemplateURLRef { ...@@ -125,7 +129,8 @@ class TemplateURLRef {
int previous_event_results, int previous_event_results,
bool is_exact_search, bool is_exact_search,
std::string source_lang, std::string source_lang,
std::string target_lang); std::string target_lang,
std::string fluent_languages);
ContextualSearchParams(const ContextualSearchParams& other); ContextualSearchParams(const ContextualSearchParams& other);
~ContextualSearchParams(); ~ContextualSearchParams();
...@@ -162,6 +167,10 @@ class TemplateURLRef { ...@@ -162,6 +167,10 @@ class TemplateURLRef {
// Target language string to be translated into. // Target language string to be translated into.
std::string target_lang; 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. // Estimates dynamic memory usage.
......
...@@ -1741,7 +1741,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1741,7 +1741,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// Test the current common case, which uses no home country or previous // Test the current common case, which uses no home country or previous
// event. // event.
TemplateURLRef::SearchTermsArgs::ContextualSearchParams params( 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; search_terms_args.contextual_search_params = params;
result = url.url_ref().ReplaceSearchTerms(search_terms_args, result = url.url_ref().ReplaceSearchTerms(search_terms_args,
search_terms_data_); search_terms_data_);
...@@ -1754,7 +1755,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1754,7 +1755,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// Test the home country and non-zero event data case. // Test the home country and non-zero event data case.
search_terms_args.contextual_search_params = search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams( 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 = result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
...@@ -1770,7 +1772,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1770,7 +1772,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// Test exact-search. // Test exact-search.
search_terms_args.contextual_search_params = search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams( 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 = result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
// Find our param. // Find our param.
...@@ -1780,7 +1783,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1780,7 +1783,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// Test source and target languages. // Test source and target languages.
search_terms_args.contextual_search_params = search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams( TemplateURLRef::SearchTermsArgs::ContextualSearchParams(
2, 1, std::string(), 0, 0, true, "es", "de"); 2, 1, std::string(), 0, 0, true, "es", "de", std::string());
result = result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_); url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
// Find our params. // Find our params.
...@@ -1788,6 +1791,17 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1788,6 +1791,17 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
EXPECT_NE(source_pos, std::string::npos); EXPECT_NE(source_pos, std::string::npos);
size_t target_pos = result.find("tlitetl=de"); size_t target_pos = result.find("tlitetl=de");
EXPECT_NE(target_pos, std::string::npos); 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) { TEST_F(TemplateURLTest, GenerateKeyword) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment