Commit d9fc4d9e authored by donnd's avatar donnd Committed by Commit bot

[TTS] Request Now on Tap data in the Resolve request.

Updates TemplateURL to know how to request Now on Tap data for Contextual Search.
Also remove the old unused flag about whether to resolve or not.

BUG=646664,641543

Review-Url: https://codereview.chromium.org/2343523002
Cr-Commit-Position: refs/heads/master@{#419054}
parent 6068e9d8
......@@ -55,6 +55,9 @@ const char kDoPreventPreloadValue[] = "1";
// The number of characters that should be shown after the selected expression.
const int kSurroundingSizeForUI = 60;
// The version of the Now on Tap API that we want to invoke.
const int kNowOnTapVersion = 1;
} // namespace
// URLFetcher ID, only used for tests: we only have one kind of fetcher.
......@@ -207,8 +210,12 @@ std::string ContextualSearchDelegate::BuildRequestUrl(std::string selection) {
TemplateURLRef::SearchTermsArgs search_terms_args =
TemplateURLRef::SearchTermsArgs(base::string16());
int now_on_tap_version =
field_trial_->IsNowOnTapBarIntegrationEnabled() ? kNowOnTapVersion : 0;
TemplateURLRef::SearchTermsArgs::ContextualSearchParams params(
kContextualSearchRequestVersion, selected_text, "", true);
kContextualSearchRequestVersion, selected_text, std::string(),
now_on_tap_version);
search_terms_args.contextual_search_params = params;
......
......@@ -188,33 +188,29 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::
: version(-1),
start(base::string16::npos),
end(base::string16::npos),
resolve(true) {
}
now_on_tap_version(0) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::
ContextualSearchParams(
const int version,
const std::string& selection,
const std::string& base_page_url,
const bool resolve)
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
int version,
const std::string& selection,
const std::string& base_page_url,
int now_on_tap_version)
: version(version),
start(base::string16::npos),
end(base::string16::npos),
selection(selection),
base_page_url(base_page_url),
resolve(resolve) {
}
now_on_tap_version(now_on_tap_version) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::
ContextualSearchParams(
const int version,
const size_t start,
const size_t end,
const std::string& selection,
const std::string& content,
const std::string& base_page_url,
const std::string& encoding,
const bool resolve)
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
int version,
size_t start,
size_t end,
const std::string& selection,
const std::string& content,
const std::string& base_page_url,
const std::string& encoding,
int now_on_tap_version)
: version(version),
start(start),
end(end),
......@@ -222,8 +218,7 @@ TemplateURLRef::SearchTermsArgs::ContextualSearchParams::
content(content),
base_page_url(base_page_url),
encoding(encoding),
resolve(resolve) {
}
now_on_tap_version(now_on_tap_version) {}
TemplateURLRef::SearchTermsArgs::ContextualSearchParams::ContextualSearchParams(
const ContextualSearchParams& other) = default;
......@@ -1020,8 +1015,10 @@ std::string TemplateURLRef::HandleReplacements(
context_data.append("ctxs_encoding=" + params.encoding + "&");
}
context_data.append(
params.resolve ? "ctxsl_resolve=1" : "ctxsl_resolve=0");
// The above parameters all add a trailing "&" so there must be one last
// parameter that's always added at the end.
context_data.append("ctxsl_coca=" +
base::IntToString(params.now_on_tap_version));
HandleReplacement(std::string(), context_data, *i, &url);
break;
......
......@@ -83,20 +83,20 @@ class TemplateURLRef {
// parameters.
// TODO(donnd): Remove base_page_url and selection parameters once
// they are logged from the HTTP header.
ContextualSearchParams(const int version,
ContextualSearchParams(int version,
const std::string& selection,
const std::string& base_page_url,
const bool resolve);
int now_on_tap_version);
// TODO(donnd): Delete constructor once Clank, iOS, and tests no
// longer depend on it.
ContextualSearchParams(const int version,
const size_t start,
const size_t end,
ContextualSearchParams(int version,
size_t start,
size_t end,
const std::string& selection,
const std::string& content,
const std::string& base_page_url,
const std::string& encoding,
const bool resolve);
int now_on_tap_version);
ContextualSearchParams(const ContextualSearchParams& other);
~ContextualSearchParams();
......@@ -121,10 +121,9 @@ class TemplateURLRef {
// The encoding of content.
std::string encoding;
// If true, the server will generate a search term based on the user
// selection and context. Otherwise the user selection will be used as-is
// as the search term.
bool resolve;
// The version of Now on Tap data to request.
// A value of 0 indicates no data needed.
int now_on_tap_version;
};
// The search terms (query).
......
......@@ -1690,24 +1690,24 @@ TEST_F(TemplateURLTest, ContextualSearchParameters) {
TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
search_terms_data_);
EXPECT_EQ("http://bar/_/contextualsearch?ctxsl_resolve=1", result);
EXPECT_EQ("http://bar/_/contextualsearch?ctxsl_coca=0", result);
TemplateURLRef::SearchTermsArgs::ContextualSearchParams params(
1, 6, 11, "allen", "woody+allen+movies", "www.wikipedia.org",
"utf-8", true);
1, 6, 11, "allen", "woody+allen+movies", "www.wikipedia.org", "utf-8", 1);
search_terms_args.contextual_search_params = params;
result = url.url_ref().ReplaceSearchTerms(search_terms_args,
search_terms_data_);
EXPECT_EQ("http://bar/_/contextualsearch?"
"ctxs=1&"
"ctxs_start=6&"
"ctxs_end=11&"
"q=allen&"
"ctxs_content=woody+allen+movies&"
"ctxsl_url=www.wikipedia.org&"
"ctxs_encoding=utf-8&"
"ctxsl_resolve=1",
result);
EXPECT_EQ(
"http://bar/_/contextualsearch?"
"ctxs=1&"
"ctxs_start=6&"
"ctxs_end=11&"
"q=allen&"
"ctxs_content=woody+allen+movies&"
"ctxsl_url=www.wikipedia.org&"
"ctxs_encoding=utf-8&"
"ctxsl_coca=1",
result);
}
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