Commit d638f460 authored by Donn Denman's avatar Donn Denman Committed by Commit Bot

[RSearches] Add a CGI param to Template URL

Adds a new CGI param for Related Searches to Contextual Search
that contains experiment and processing information for offline
logs quality analysis. This param is used for both the Resolve
and Search requests.

BUG=1144916

Change-Id: Ibc8b4ced4831f8c867be2185ed174b7306b248cd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2515225
Auto-Submit: Donn Denman <donnd@chromium.org>
Reviewed-by: default avatarAngela Yoeurng <yoangela@chromium.org>
Commit-Queue: Donn Denman <donnd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823712}
parent 47029a48
...@@ -333,7 +333,7 @@ std::string ContextualSearchDelegate::BuildRequestUrl( ...@@ -333,7 +333,7 @@ std::string ContextualSearchDelegate::BuildRequestUrl(
context->GetExactResolve(), context->GetExactResolve(),
context->GetTranslationLanguages().detected_language, context->GetTranslationLanguages().detected_language,
context->GetTranslationLanguages().target_language, context->GetTranslationLanguages().target_language,
context->GetTranslationLanguages().fluent_languages); context->GetTranslationLanguages().fluent_languages, std::string());
search_terms_args.contextual_search_params = params; search_terms_args.contextual_search_params = params;
......
...@@ -229,7 +229,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( ...@@ -229,7 +229,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
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) std::string fluent_languages,
std::string related_searches_stamp)
: version(version), : version(version),
contextual_cards_version(contextual_cards_version), contextual_cards_version(contextual_cards_version),
home_country(home_country), home_country(home_country),
...@@ -238,7 +239,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( ...@@ -238,7 +239,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
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) {} fluent_languages(fluent_languages),
related_searches_stamp(related_searches_stamp) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams( TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
const ContextualSearchParams& other) = default; const ContextualSearchParams& other) = default;
...@@ -1010,6 +1012,8 @@ std::string TemplateURLRef::HandleReplacements( ...@@ -1010,6 +1012,8 @@ std::string TemplateURLRef::HandleReplacements(
args.push_back("tlitetl=" + params.target_lang); args.push_back("tlitetl=" + params.target_lang);
if (!params.fluent_languages.empty()) if (!params.fluent_languages.empty())
args.push_back("ctxs_fls=" + params.fluent_languages); args.push_back("ctxs_fls=" + params.fluent_languages);
if (!params.related_searches_stamp.empty())
args.push_back("ctxsl_rs=" + params.related_searches_stamp);
HandleReplacement(std::string(), base::JoinString(args, "&"), *i, &url); HandleReplacement(std::string(), base::JoinString(args, "&"), *i, &url);
break; break;
......
...@@ -115,6 +115,10 @@ class TemplateURLRef { ...@@ -115,6 +115,10 @@ class TemplateURLRef {
// is fluent in reading. This acts as an alternate set of languages // is fluent in reading. This acts as an alternate set of languages
// to consider translating into. The languages are ordered by // to consider translating into. The languages are ordered by
// fluency, and encoded as a comma-separated list of BCP 47 languages. // fluency, and encoded as a comma-separated list of BCP 47 languages.
// The |related_searches_stamp| string contains an information that
// indicates experiment status and server processing results so that
// can be logged in GWS Sawmill logs for offline analysis for the
// Related Searches MVP experiment.
ContextualSearchParams(int version, ContextualSearchParams(int version,
int contextual_cards_version, int contextual_cards_version,
std::string home_country, std::string home_country,
...@@ -123,7 +127,8 @@ class TemplateURLRef { ...@@ -123,7 +127,8 @@ class TemplateURLRef {
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); std::string fluent_languages,
std::string related_searches_stamp);
ContextualSearchParams(const ContextualSearchParams& other); ContextualSearchParams(const ContextualSearchParams& other);
~ContextualSearchParams(); ~ContextualSearchParams();
...@@ -164,6 +169,11 @@ class TemplateURLRef { ...@@ -164,6 +169,11 @@ class TemplateURLRef {
// Alternate target languages that the user is fluent in, encoded in a // Alternate target languages that the user is fluent in, encoded in a
// single string. // single string.
std::string fluent_languages; std::string fluent_languages;
// Experiment arm and processing information for the Related Searches
// experiment. The value is an arbitrary string that starts with a
// schema version number.
std::string related_searches_stamp;
}; };
// Estimates dynamic memory usage. // Estimates dynamic memory usage.
......
...@@ -1779,7 +1779,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1779,7 +1779,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// 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()); 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_);
...@@ -1793,7 +1793,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1793,7 +1793,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
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()); 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_);
...@@ -1810,7 +1810,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1810,7 +1810,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
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()); 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.
...@@ -1820,7 +1820,8 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1820,7 +1820,8 @@ 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", std::string()); 2, 1, std::string(), 0, 0, true, "es", "de", 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 params. // Find our params.
...@@ -1833,12 +1834,23 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) { ...@@ -1833,12 +1834,23 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
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(),
"es,de"); "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 param. These may actually be URL encoded. // Find our param. These may actually be URL encoded.
size_t fluent_pos = result.find("&ctxs_fls=es,de"); size_t fluent_pos = result.find("&ctxs_fls=es,de");
EXPECT_NE(fluent_pos, std::string::npos); EXPECT_NE(fluent_pos, std::string::npos);
// Test Related Searches.
search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams(
2, 1, std::string(), 0, 0, true, std::string(), std::string(),
std::string(), "1RbCu");
result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
// Find our param.
size_t ctxsl_rs_pos = result.find("&ctxsl_rs=1RbCu");
EXPECT_NE(ctxsl_rs_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