| Index: chrome/browser/search_engines/template_url_unittest.cc
|
| diff --git a/chrome/browser/search_engines/template_url_unittest.cc b/chrome/browser/search_engines/template_url_unittest.cc
|
| index 42aa1723c5f38ce6b42a363189889fa238151edf..089c1a1dab00494425ae7a3afceb7df39a2337a2 100644
|
| --- a/chrome/browser/search_engines/template_url_unittest.cc
|
| +++ b/chrome/browser/search_engines/template_url_unittest.cc
|
| @@ -93,8 +93,8 @@ TEST_F(TemplateURLTest, URLRefTestSearchTerms) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(value.terms,
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(value.terms)));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ(value.output, result.spec());
|
| }
|
| @@ -106,8 +106,8 @@ TEST_F(TemplateURLTest, URLRefTestCount) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://foox/", result.spec());
|
| }
|
| @@ -118,8 +118,8 @@ TEST_F(TemplateURLTest, URLRefTestCount2) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://foox10/", result.spec());
|
| }
|
| @@ -130,8 +130,8 @@ TEST_F(TemplateURLTest, URLRefTestIndices) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://fooxxy/", result.spec());
|
| }
|
| @@ -142,8 +142,8 @@ TEST_F(TemplateURLTest, URLRefTestIndices2) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://fooxx1y1/", result.spec());
|
| }
|
| @@ -154,8 +154,8 @@ TEST_F(TemplateURLTest, URLRefTestEncoding) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://fooxxutf-8ya/", result.spec());
|
| }
|
| @@ -187,8 +187,8 @@ TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://fooxutf-8axyb/", result.spec());
|
| }
|
| @@ -199,8 +199,8 @@ TEST_F(TemplateURLTest, URLRefTestEncoding2) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec());
|
| }
|
| @@ -225,9 +225,8 @@ TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms,
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(),
|
| - search_terms_data));
|
| + GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(
|
| + TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ(value.output, result.spec());
|
| }
|
| @@ -331,8 +330,8 @@ TEST_F(TemplateURLTest, ReplaceSearchTerms) {
|
| std::string expected_result = test_data[i].expected_result;
|
| ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}",
|
| g_browser_process->GetApplicationLocale());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ(expected_result, result.spec());
|
| }
|
| @@ -369,8 +368,64 @@ TEST_F(TemplateURLTest, ReplaceArbitrarySearchTerms) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term,
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(test_data[i].search_term)));
|
| + ASSERT_TRUE(result.is_valid());
|
| + EXPECT_EQ(test_data[i].expected_result, result.spec());
|
| + }
|
| +}
|
| +
|
| +// Tests replacing assisted query stats (AQS) in various scenarios.
|
| +TEST_F(TemplateURLTest, ReplaceAssistedQueryStats) {
|
| + struct TestData {
|
| + const string16 search_term;
|
| + const std::string aqs;
|
| + const std::string base_url;
|
| + const std::string url;
|
| + const std::string expected_result;
|
| + } test_data[] = {
|
| + // No HTTPS, no AQS.
|
| + { ASCIIToUTF16("foo"),
|
| + "chrome.0.0l6",
|
| + "http://foo/",
|
| + "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
|
| + "http://foo/?foo" },
|
| + // HTTPS available, AQS should be replaced.
|
| + { ASCIIToUTF16("foo"),
|
| + "chrome.0.0l6",
|
| + "https://foo/",
|
| + "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
|
| + "https://foo/?fooaqs=chrome.0.0l6&" },
|
| + // HTTPS available, however AQS is empty.
|
| + { ASCIIToUTF16("foo"),
|
| + "",
|
| + "https://foo/",
|
| + "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
|
| + "https://foo/?foo" },
|
| + // No {google:baseURL} and protocol is HTTP, we must not substitute AQS.
|
| + { ASCIIToUTF16("foo"),
|
| + "chrome.0.0l6",
|
| + "",
|
| + "http://foo?{searchTerms}{google:assistedQueryStats}",
|
| + "http://foo/?foo" },
|
| + // A non-Google search provider with HTTPS should allow AQS.
|
| + { ASCIIToUTF16("foo"),
|
| + "chrome.0.0l6",
|
| + "",
|
| + "https://foo?{searchTerms}{google:assistedQueryStats}",
|
| + "https://foo/?fooaqs=chrome.0.0l6&" },
|
| + };
|
| + TemplateURLData data;
|
| + data.input_encodings.push_back("UTF-8");
|
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
|
| + data.SetURL(test_data[i].url);
|
| + TemplateURL url(NULL, data);
|
| + EXPECT_TRUE(url.url_ref().IsValid());
|
| + ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| + TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
|
| + search_terms_args.assisted_query_stats = test_data[i].aqs;
|
| + UIThreadSearchTermsData::SetGoogleBaseURL(test_data[i].base_url);
|
| + GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ(test_data[i].expected_result, result.spec());
|
| }
|
| @@ -401,9 +456,12 @@ TEST_F(TemplateURLTest, Suggestions) {
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("foobar"),
|
| - test_data[i].accepted_suggestion,
|
| - test_data[i].original_query_for_suggestion));
|
| + TemplateURLRef::SearchTermsArgs search_terms_args(
|
| + ASCIIToUTF16("foobar"));
|
| + search_terms_args.accepted_suggestion = test_data[i].accepted_suggestion;
|
| + search_terms_args.original_query =
|
| + test_data[i].original_query_for_suggestion;
|
| + GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args));
|
| ASSERT_TRUE(result.is_valid());
|
| EXPECT_EQ(test_data[i].expected_result, result.spec());
|
| }
|
| @@ -425,8 +483,8 @@ TEST_F(TemplateURLTest, RLZ) {
|
| TemplateURL url(NULL, data);
|
| EXPECT_TRUE(url.url_ref().IsValid());
|
| ASSERT_TRUE(url.url_ref().SupportsReplacement());
|
| - GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"),
|
| - TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()));
|
| + GURL result(url.url_ref().ReplaceSearchTerms(
|
| + TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("x"))));
|
| ASSERT_TRUE(result.is_valid());
|
| std::string expected_url = "http://bar/?";
|
| if (!rlz_string.empty())
|
|
|