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(
context->GetExactResolve(),
context->GetTranslationLanguages().detected_language,
context->GetTranslationLanguages().target_language,
context->GetTranslationLanguages().fluent_languages);
context->GetTranslationLanguages().fluent_languages, std::string());
search_terms_args.contextual_search_params = params;
......
......@@ -229,7 +229,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
bool is_exact_search,
std::string source_lang,
std::string target_lang,
std::string fluent_languages)
std::string fluent_languages,
std::string related_searches_stamp)
: version(version),
contextual_cards_version(contextual_cards_version),
home_country(home_country),
......@@ -238,7 +239,8 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
is_exact_search(is_exact_search),
source_lang(source_lang),
target_lang(target_lang),
fluent_languages(fluent_languages) {}
fluent_languages(fluent_languages),
related_searches_stamp(related_searches_stamp) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
const ContextualSearchParams& other) = default;
......@@ -1010,6 +1012,8 @@ std::string TemplateURLRef::HandleReplacements(
args.push_back("tlitetl=" + params.target_lang);
if (!params.fluent_languages.empty())
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);
break;
......
......@@ -115,6 +115,10 @@ class TemplateURLRef {
// 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.
// 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,
int contextual_cards_version,
std::string home_country,
......@@ -123,7 +127,8 @@ class TemplateURLRef {
bool is_exact_search,
std::string source_lang,
std::string target_lang,
std::string fluent_languages);
std::string fluent_languages,
std::string related_searches_stamp);
ContextualSearchParams(const ContextualSearchParams& other);
~ContextualSearchParams();
......@@ -164,6 +169,11 @@ class TemplateURLRef {
// Alternate target languages that the user is fluent in, encoded in a
// single string.
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.
......
......@@ -1779,7 +1779,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
// event.
TemplateURLRef::SearchTermsArgs::ContextualSearchParams params(
2, 1, std::string(), 0, 0, false, std::string(), std::string(),
std::string());
std::string(), std::string());
search_terms_args.contextual_search_params = params;
result = url.url_ref().ReplaceSearchTerms(search_terms_args,
search_terms_data_);
......@@ -1793,7 +1793,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams(
2, 2, "CH", 1657713458, 5, false, std::string(), std::string(),
std::string());
std::string(), std::string());
result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
......@@ -1810,7 +1810,7 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams(
2, 1, std::string(), 0, 0, true, std::string(), std::string(),
std::string());
std::string(), std::string());
result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
// Find our param.
......@@ -1820,7 +1820,8 @@ 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", std::string());
2, 1, std::string(), 0, 0, true, "es", "de", std::string(),
std::string());
result =
url.url_ref().ReplaceSearchTerms(search_terms_args, search_terms_data_);
// Find our params.
......@@ -1833,12 +1834,23 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
search_terms_args.contextual_search_params =
TemplateURLRef::SearchTermsArgs::ContextualSearchParams(
2, 1, std::string(), 0, 0, true, std::string(), std::string(),
"es,de");
"es,de", std::string());
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 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) {
......
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