OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |