Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(198)

Side by Side Diff: chrome/browser/search_engines/template_url_unittest.cc

Issue 10537154: A working implementation of AQS (Assisted Query Stats). (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Addressed comments. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/base_paths.h" 5 #include "base/base_paths.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/rlz/rlz.h" 9 #include "chrome/browser/rlz/rlz.h"
10 #include "chrome/browser/search_engines/search_terms_data.h" 10 #include "chrome/browser/search_engines/search_terms_data.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), 86 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"),
87 "http://en.wikipedia.org/wiki/%3F" } 87 "http://en.wikipedia.org/wiki/%3F" }
88 }; 88 };
89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { 89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) {
90 const SearchTermsCase& value = search_term_cases[i]; 90 const SearchTermsCase& value = search_term_cases[i];
91 TemplateURLData data; 91 TemplateURLData data;
92 data.SetURL(value.url); 92 data.SetURL(value.url);
93 TemplateURL url(NULL, data); 93 TemplateURL url(NULL, data);
94 EXPECT_TRUE(url.url_ref().IsValid()); 94 EXPECT_TRUE(url.url_ref().IsValid());
95 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 95 ASSERT_TRUE(url.url_ref().SupportsReplacement());
96 GURL result(url.url_ref().ReplaceSearchTerms(value.terms, 96 GURL result(url.url_ref().ReplaceSearchTerms(
97 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 97 TemplateURLRef::SearchTermsArgs(value.terms)));
98 ASSERT_TRUE(result.is_valid()); 98 ASSERT_TRUE(result.is_valid());
99 EXPECT_EQ(value.output, result.spec()); 99 EXPECT_EQ(value.output, result.spec());
100 } 100 }
101 } 101 }
102 102
103 TEST_F(TemplateURLTest, URLRefTestCount) { 103 TEST_F(TemplateURLTest, URLRefTestCount) {
104 TemplateURLData data; 104 TemplateURLData data;
105 data.SetURL("http://foo{searchTerms}{count?}"); 105 data.SetURL("http://foo{searchTerms}{count?}");
106 TemplateURL url(NULL, data); 106 TemplateURL url(NULL, data);
107 EXPECT_TRUE(url.url_ref().IsValid()); 107 EXPECT_TRUE(url.url_ref().IsValid());
108 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 108 ASSERT_TRUE(url.url_ref().SupportsReplacement());
109 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 109 GURL result(url.url_ref().ReplaceSearchTerms(
110 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 110 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
111 ASSERT_TRUE(result.is_valid()); 111 ASSERT_TRUE(result.is_valid());
112 EXPECT_EQ("http://foox/", result.spec()); 112 EXPECT_EQ("http://foox/", result.spec());
113 } 113 }
114 114
115 TEST_F(TemplateURLTest, URLRefTestCount2) { 115 TEST_F(TemplateURLTest, URLRefTestCount2) {
116 TemplateURLData data; 116 TemplateURLData data;
117 data.SetURL("http://foo{searchTerms}{count}"); 117 data.SetURL("http://foo{searchTerms}{count}");
118 TemplateURL url(NULL, data); 118 TemplateURL url(NULL, data);
119 EXPECT_TRUE(url.url_ref().IsValid()); 119 EXPECT_TRUE(url.url_ref().IsValid());
120 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 120 ASSERT_TRUE(url.url_ref().SupportsReplacement());
121 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 121 GURL result(url.url_ref().ReplaceSearchTerms(
122 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 122 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
123 ASSERT_TRUE(result.is_valid()); 123 ASSERT_TRUE(result.is_valid());
124 EXPECT_EQ("http://foox10/", result.spec()); 124 EXPECT_EQ("http://foox10/", result.spec());
125 } 125 }
126 126
127 TEST_F(TemplateURLTest, URLRefTestIndices) { 127 TEST_F(TemplateURLTest, URLRefTestIndices) {
128 TemplateURLData data; 128 TemplateURLData data;
129 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); 129 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}");
130 TemplateURL url(NULL, data); 130 TemplateURL url(NULL, data);
131 EXPECT_TRUE(url.url_ref().IsValid()); 131 EXPECT_TRUE(url.url_ref().IsValid());
132 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 132 ASSERT_TRUE(url.url_ref().SupportsReplacement());
133 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 133 GURL result(url.url_ref().ReplaceSearchTerms(
134 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 134 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
135 ASSERT_TRUE(result.is_valid()); 135 ASSERT_TRUE(result.is_valid());
136 EXPECT_EQ("http://fooxxy/", result.spec()); 136 EXPECT_EQ("http://fooxxy/", result.spec());
137 } 137 }
138 138
139 TEST_F(TemplateURLTest, URLRefTestIndices2) { 139 TEST_F(TemplateURLTest, URLRefTestIndices2) {
140 TemplateURLData data; 140 TemplateURLData data;
141 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); 141 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}");
142 TemplateURL url(NULL, data); 142 TemplateURL url(NULL, data);
143 EXPECT_TRUE(url.url_ref().IsValid()); 143 EXPECT_TRUE(url.url_ref().IsValid());
144 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 144 ASSERT_TRUE(url.url_ref().SupportsReplacement());
145 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 145 GURL result(url.url_ref().ReplaceSearchTerms(
146 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 146 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
147 ASSERT_TRUE(result.is_valid()); 147 ASSERT_TRUE(result.is_valid());
148 EXPECT_EQ("http://fooxx1y1/", result.spec()); 148 EXPECT_EQ("http://fooxx1y1/", result.spec());
149 } 149 }
150 150
151 TEST_F(TemplateURLTest, URLRefTestEncoding) { 151 TEST_F(TemplateURLTest, URLRefTestEncoding) {
152 TemplateURLData data; 152 TemplateURLData data;
153 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); 153 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a");
154 TemplateURL url(NULL, data); 154 TemplateURL url(NULL, data);
155 EXPECT_TRUE(url.url_ref().IsValid()); 155 EXPECT_TRUE(url.url_ref().IsValid());
156 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 156 ASSERT_TRUE(url.url_ref().SupportsReplacement());
157 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 157 GURL result(url.url_ref().ReplaceSearchTerms(
158 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 158 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
159 ASSERT_TRUE(result.is_valid()); 159 ASSERT_TRUE(result.is_valid());
160 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); 160 EXPECT_EQ("http://fooxxutf-8ya/", result.spec());
161 } 161 }
162 162
163 // Test that setting the prepopulate ID from TemplateURL causes the stored 163 // Test that setting the prepopulate ID from TemplateURL causes the stored
164 // TemplateURLRef to handle parsing the URL parameters differently. 164 // TemplateURLRef to handle parsing the URL parameters differently.
165 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { 165 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) {
166 TemplateURLData data; 166 TemplateURLData data;
167 data.SetURL("http://foo{fhqwhgads}bar"); 167 data.SetURL("http://foo{fhqwhgads}bar");
168 TemplateURL url(NULL, data); 168 TemplateURL url(NULL, data);
(...skipping 11 matching lines...) Expand all
180 EXPECT_TRUE(replacements.empty()); 180 EXPECT_TRUE(replacements.empty());
181 EXPECT_TRUE(valid); 181 EXPECT_TRUE(valid);
182 } 182 }
183 183
184 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { 184 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) {
185 TemplateURLData data; 185 TemplateURLData data;
186 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); 186 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b");
187 TemplateURL url(NULL, data); 187 TemplateURL url(NULL, data);
188 EXPECT_TRUE(url.url_ref().IsValid()); 188 EXPECT_TRUE(url.url_ref().IsValid());
189 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 189 ASSERT_TRUE(url.url_ref().SupportsReplacement());
190 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 190 GURL result(url.url_ref().ReplaceSearchTerms(
191 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 191 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
192 ASSERT_TRUE(result.is_valid()); 192 ASSERT_TRUE(result.is_valid());
193 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); 193 EXPECT_EQ("http://fooxutf-8axyb/", result.spec());
194 } 194 }
195 195
196 TEST_F(TemplateURLTest, URLRefTestEncoding2) { 196 TEST_F(TemplateURLTest, URLRefTestEncoding2) {
197 TemplateURLData data; 197 TemplateURLData data;
198 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); 198 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a");
199 TemplateURL url(NULL, data); 199 TemplateURL url(NULL, data);
200 EXPECT_TRUE(url.url_ref().IsValid()); 200 EXPECT_TRUE(url.url_ref().IsValid());
201 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 201 ASSERT_TRUE(url.url_ref().SupportsReplacement());
202 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 202 GURL result(url.url_ref().ReplaceSearchTerms(
203 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 203 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
204 ASSERT_TRUE(result.is_valid()); 204 ASSERT_TRUE(result.is_valid());
205 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); 205 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec());
206 } 206 }
207 207
208 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { 208 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) {
209 struct SearchTermsCase { 209 struct SearchTermsCase {
210 const char* url; 210 const char* url;
211 const string16 terms; 211 const string16 terms;
212 const char* output; 212 const char* output;
213 } search_term_cases[] = { 213 } search_term_cases[] = {
214 { "{google:baseURL}{language}{searchTerms}", string16(), 214 { "{google:baseURL}{language}{searchTerms}", string16(),
215 "http://example.com/e/en" }, 215 "http://example.com/e/en" },
216 { "{google:baseSuggestURL}{searchTerms}", string16(), 216 { "{google:baseSuggestURL}{searchTerms}", string16(),
217 "http://example.com/complete/" } 217 "http://example.com/complete/" }
218 }; 218 };
219 219
220 TestSearchTermsData search_terms_data("http://example.com/e/"); 220 TestSearchTermsData search_terms_data("http://example.com/e/");
221 TemplateURLData data; 221 TemplateURLData data;
222 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { 222 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) {
223 const SearchTermsCase& value = search_term_cases[i]; 223 const SearchTermsCase& value = search_term_cases[i];
224 data.SetURL(value.url); 224 data.SetURL(value.url);
225 TemplateURL url(NULL, data); 225 TemplateURL url(NULL, data);
226 EXPECT_TRUE(url.url_ref().IsValid()); 226 EXPECT_TRUE(url.url_ref().IsValid());
227 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 227 ASSERT_TRUE(url.url_ref().SupportsReplacement());
228 GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms, 228 GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(
229 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), 229 TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data));
230 search_terms_data));
231 ASSERT_TRUE(result.is_valid()); 230 ASSERT_TRUE(result.is_valid());
232 EXPECT_EQ(value.output, result.spec()); 231 EXPECT_EQ(value.output, result.spec());
233 } 232 }
234 } 233 }
235 234
236 TEST_F(TemplateURLTest, URLRefTermToWide) { 235 TEST_F(TemplateURLTest, URLRefTermToWide) {
237 struct ToWideCase { 236 struct ToWideCase {
238 const char* encoded_search_term; 237 const char* encoded_search_term;
239 const string16 expected_decoded_term; 238 const string16 expected_decoded_term;
240 } to_wide_cases[] = { 239 } to_wide_cases[] = {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 TemplateURLData data; 323 TemplateURLData data;
325 data.input_encodings.push_back("UTF-8"); 324 data.input_encodings.push_back("UTF-8");
326 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 325 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
327 data.SetURL(test_data[i].url); 326 data.SetURL(test_data[i].url);
328 TemplateURL url(NULL, data); 327 TemplateURL url(NULL, data);
329 EXPECT_TRUE(url.url_ref().IsValid()); 328 EXPECT_TRUE(url.url_ref().IsValid());
330 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 329 ASSERT_TRUE(url.url_ref().SupportsReplacement());
331 std::string expected_result = test_data[i].expected_result; 330 std::string expected_result = test_data[i].expected_result;
332 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", 331 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}",
333 g_browser_process->GetApplicationLocale()); 332 g_browser_process->GetApplicationLocale());
334 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), 333 GURL result(url.url_ref().ReplaceSearchTerms(
335 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 334 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X"))));
336 ASSERT_TRUE(result.is_valid()); 335 ASSERT_TRUE(result.is_valid());
337 EXPECT_EQ(expected_result, result.spec()); 336 EXPECT_EQ(expected_result, result.spec());
338 } 337 }
339 } 338 }
340 339
341 340
342 // Tests replacing search terms in various encodings and making sure the 341 // Tests replacing search terms in various encodings and making sure the
343 // generated URL matches the expected value. 342 // generated URL matches the expected value.
344 TEST_F(TemplateURLTest, ReplaceArbitrarySearchTerms) { 343 TEST_F(TemplateURLTest, ReplaceArbitrarySearchTerms) {
345 struct TestData { 344 struct TestData {
(...skipping 16 matching lines...) Expand all
362 "http://foo/%82%A0%20%82%A2/bar"}, 361 "http://foo/%82%A0%20%82%A2/bar"},
363 }; 362 };
364 TemplateURLData data; 363 TemplateURLData data;
365 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 364 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
366 data.SetURL(test_data[i].url); 365 data.SetURL(test_data[i].url);
367 data.input_encodings.clear(); 366 data.input_encodings.clear();
368 data.input_encodings.push_back(test_data[i].encoding); 367 data.input_encodings.push_back(test_data[i].encoding);
369 TemplateURL url(NULL, data); 368 TemplateURL url(NULL, data);
370 EXPECT_TRUE(url.url_ref().IsValid()); 369 EXPECT_TRUE(url.url_ref().IsValid());
371 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 370 ASSERT_TRUE(url.url_ref().SupportsReplacement());
372 GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term, 371 GURL result(url.url_ref().ReplaceSearchTerms(
373 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 372 TemplateURLRef::SearchTermsArgs(test_data[i].search_term)));
374 ASSERT_TRUE(result.is_valid()); 373 ASSERT_TRUE(result.is_valid());
375 EXPECT_EQ(test_data[i].expected_result, result.spec()); 374 EXPECT_EQ(test_data[i].expected_result, result.spec());
376 } 375 }
376 }
377
378 // Tests replacing assisted query stats (AQS) in various scenarios.
379 TEST_F(TemplateURLTest, ReplaceAssistedQueryStats) {
380 struct TestData {
381 const string16 search_term;
382 const std::string aqs;
383 const std::string base_url;
384 const std::string url;
385 const std::string expected_result;
386 } test_data[] = {
387 // No HTTPS, no AQS.
388 { ASCIIToUTF16("foo"),
389 "chrome.0.0l6",
390 "http://foo/",
391 "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
392 "http://foo/?foo" },
393 // HTTPS available, AQS should be replaced.
394 { ASCIIToUTF16("foo"),
395 "chrome.0.0l6",
396 "https://foo/",
397 "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
398 "https://foo/?fooaqs=chrome.0.0l6&" },
399 // HTTPS available, however AQS is empty.
400 { ASCIIToUTF16("foo"),
401 "",
402 "https://foo/",
403 "{google:baseURL}?{searchTerms}{google:assistedQueryStats}",
404 "https://foo/?foo" },
405 // No {google:baseURL} and protocol is HTTP, we must not substitute AQS.
Peter Kasting 2012/06/22 23:18:11 We should also test that a non-Google base URL _wi
Bart N 2012/06/23 01:06:30 Done.
406 { ASCIIToUTF16("foo"),
407 "chrome.0.0l6",
408 "",
409 "http://foo?{searchTerms}{google:assistedQueryStats}",
410 "http://foo/?foo" },
411 };
412 TemplateURLData data;
413 data.input_encodings.push_back("UTF-8");
414 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
415 data.SetURL(test_data[i].url);
416 TemplateURL url(NULL, data);
417 EXPECT_TRUE(url.url_ref().IsValid());
418 ASSERT_TRUE(url.url_ref().SupportsReplacement());
419 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
420 search_terms_args.assisted_query_stats = test_data[i].aqs;
421 UIThreadSearchTermsData::SetGoogleBaseURL(test_data[i].base_url);
422 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args));
423 ASSERT_TRUE(result.is_valid());
424 EXPECT_EQ(test_data[i].expected_result, result.spec());
425 }
377 } 426 }
378 427
379 TEST_F(TemplateURLTest, Suggestions) { 428 TEST_F(TemplateURLTest, Suggestions) {
380 struct TestData { 429 struct TestData {
381 const int accepted_suggestion; 430 const int accepted_suggestion;
382 const string16 original_query_for_suggestion; 431 const string16 original_query_for_suggestion;
383 const std::string expected_result; 432 const std::string expected_result;
384 } test_data[] = { 433 } test_data[] = {
385 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), 434 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(),
386 "http://bar/foo?q=foobar" }, 435 "http://bar/foo?q=foobar" },
387 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, ASCIIToUTF16("foo"), 436 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, ASCIIToUTF16("foo"),
388 "http://bar/foo?q=foobar" }, 437 "http://bar/foo?q=foobar" },
389 { TemplateURLRef::NO_SUGGESTION_CHOSEN, string16(), 438 { TemplateURLRef::NO_SUGGESTION_CHOSEN, string16(),
390 "http://bar/foo?aq=f&q=foobar" }, 439 "http://bar/foo?aq=f&q=foobar" },
391 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), 440 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"),
392 "http://bar/foo?aq=f&q=foobar" }, 441 "http://bar/foo?aq=f&q=foobar" },
393 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, 442 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" },
394 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, 443 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" },
395 }; 444 };
396 TemplateURLData data; 445 TemplateURLData data;
397 data.SetURL("http://bar/foo?{google:acceptedSuggestion}" 446 data.SetURL("http://bar/foo?{google:acceptedSuggestion}"
398 "{google:originalQueryForSuggestion}q={searchTerms}"); 447 "{google:originalQueryForSuggestion}q={searchTerms}");
399 data.input_encodings.push_back("UTF-8"); 448 data.input_encodings.push_back("UTF-8");
400 TemplateURL url(NULL, data); 449 TemplateURL url(NULL, data);
401 EXPECT_TRUE(url.url_ref().IsValid()); 450 EXPECT_TRUE(url.url_ref().IsValid());
402 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 451 ASSERT_TRUE(url.url_ref().SupportsReplacement());
403 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 452 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
404 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("foobar"), 453 TemplateURLRef::SearchTermsArgs search_terms_args(
405 test_data[i].accepted_suggestion, 454 ASCIIToUTF16("foobar"));
406 test_data[i].original_query_for_suggestion)); 455 search_terms_args.accepted_suggestion = test_data[i].accepted_suggestion;
456 search_terms_args.original_query =
457 test_data[i].original_query_for_suggestion;
458 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args));
407 ASSERT_TRUE(result.is_valid()); 459 ASSERT_TRUE(result.is_valid());
408 EXPECT_EQ(test_data[i].expected_result, result.spec()); 460 EXPECT_EQ(test_data[i].expected_result, result.spec());
409 } 461 }
410 } 462 }
411 463
412 #if defined(OS_WIN) || defined(OS_MACOSX) 464 #if defined(OS_WIN) || defined(OS_MACOSX)
413 TEST_F(TemplateURLTest, RLZ) { 465 TEST_F(TemplateURLTest, RLZ) {
414 string16 rlz_string; 466 string16 rlz_string;
415 #if defined(ENABLE_RLZ) 467 #if defined(ENABLE_RLZ)
416 std::string brand; 468 std::string brand;
417 if (google_util::GetBrand(&brand) && !brand.empty() && 469 if (google_util::GetBrand(&brand) && !brand.empty() &&
418 !google_util::IsOrganic(brand)) { 470 !google_util::IsOrganic(brand)) {
419 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string); 471 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string);
420 } 472 }
421 #endif 473 #endif
422 474
423 TemplateURLData data; 475 TemplateURLData data;
424 data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); 476 data.SetURL("http://bar/?{google:RLZ}{searchTerms}");
425 TemplateURL url(NULL, data); 477 TemplateURL url(NULL, data);
426 EXPECT_TRUE(url.url_ref().IsValid()); 478 EXPECT_TRUE(url.url_ref().IsValid());
427 ASSERT_TRUE(url.url_ref().SupportsReplacement()); 479 ASSERT_TRUE(url.url_ref().SupportsReplacement());
428 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"), 480 GURL result(url.url_ref().ReplaceSearchTerms(
429 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); 481 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("x"))));
430 ASSERT_TRUE(result.is_valid()); 482 ASSERT_TRUE(result.is_valid());
431 std::string expected_url = "http://bar/?"; 483 std::string expected_url = "http://bar/?";
432 if (!rlz_string.empty()) 484 if (!rlz_string.empty())
433 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&"; 485 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&";
434 expected_url += "x"; 486 expected_url += "x";
435 EXPECT_EQ(expected_url, result.spec()); 487 EXPECT_EQ(expected_url, result.spec());
436 } 488 }
437 #endif 489 #endif
438 490
439 TEST_F(TemplateURLTest, HostAndSearchTermKey) { 491 TEST_F(TemplateURLTest, HostAndSearchTermKey) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 TemplateURL url(NULL, data); 628 TemplateURL url(NULL, data);
577 TemplateURLRef::Replacements replacements; 629 TemplateURLRef::Replacements replacements;
578 bool valid = false; 630 bool valid = false;
579 EXPECT_EQ("{", 631 EXPECT_EQ("{",
580 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid)); 632 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid));
581 ASSERT_EQ(1U, replacements.size()); 633 ASSERT_EQ(1U, replacements.size());
582 EXPECT_EQ(1U, replacements[0].index); 634 EXPECT_EQ(1U, replacements[0].index);
583 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); 635 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type);
584 EXPECT_TRUE(valid); 636 EXPECT_TRUE(valid);
585 } 637 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698