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

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

Issue 338363004: Remove Profile* from TemplateURL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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/command_line.h" 6 #include "base/command_line.h"
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/autocomplete/autocomplete_input.h" 10 #include "chrome/browser/autocomplete/autocomplete_input.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 TEST_F(TemplateURLTest, Defaults) { 73 TEST_F(TemplateURLTest, Defaults) {
74 TemplateURLData data; 74 TemplateURLData data;
75 EXPECT_FALSE(data.show_in_default_list); 75 EXPECT_FALSE(data.show_in_default_list);
76 EXPECT_FALSE(data.safe_for_autoreplace); 76 EXPECT_FALSE(data.safe_for_autoreplace);
77 EXPECT_EQ(0, data.prepopulate_id); 77 EXPECT_EQ(0, data.prepopulate_id);
78 } 78 }
79 79
80 TEST_F(TemplateURLTest, TestValidWithComplete) { 80 TEST_F(TemplateURLTest, TestValidWithComplete) {
81 TemplateURLData data; 81 TemplateURLData data;
82 data.SetURL("{searchTerms}"); 82 data.SetURL("{searchTerms}");
83 TemplateURL url(NULL, data); 83 TemplateURL url(data);
84 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 84 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
85 } 85 }
86 86
87 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { 87 TEST_F(TemplateURLTest, URLRefTestSearchTerms) {
88 struct SearchTermsCase { 88 struct SearchTermsCase {
89 const char* url; 89 const char* url;
90 const base::string16 terms; 90 const base::string16 terms;
91 const std::string output; 91 const std::string output;
92 } search_term_cases[] = { 92 } search_term_cases[] = {
93 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), 93 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"),
94 "http://foosea%20rch/bar" }, 94 "http://foosea%20rch/bar" },
95 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), 95 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"),
96 "http://foosea%20rch/bar?boo=abc" }, 96 "http://foosea%20rch/bar?boo=abc" },
97 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), 97 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"),
98 "http://foo/?boo=sea+rch%2Fbar" }, 98 "http://foo/?boo=sea+rch%2Fbar" },
99 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), 99 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"),
100 "http://en.wikipedia.org/wiki/%3F" } 100 "http://en.wikipedia.org/wiki/%3F" }
101 }; 101 };
102 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { 102 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) {
103 const SearchTermsCase& value = search_term_cases[i]; 103 const SearchTermsCase& value = search_term_cases[i];
104 TemplateURLData data; 104 TemplateURLData data;
105 data.SetURL(value.url); 105 data.SetURL(value.url);
106 TemplateURL url(NULL, data); 106 TemplateURL url(data);
107 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 107 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
108 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 108 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
109 GURL result(url.url_ref().ReplaceSearchTerms( 109 GURL result(url.url_ref().ReplaceSearchTerms(
110 TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data_)); 110 TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data_));
111 ASSERT_TRUE(result.is_valid()); 111 ASSERT_TRUE(result.is_valid());
112 EXPECT_EQ(value.output, result.spec()); 112 EXPECT_EQ(value.output, result.spec());
113 } 113 }
114 } 114 }
115 115
116 TEST_F(TemplateURLTest, URLRefTestCount) { 116 TEST_F(TemplateURLTest, URLRefTestCount) {
117 TemplateURLData data; 117 TemplateURLData data;
118 data.SetURL("http://foo{searchTerms}{count?}"); 118 data.SetURL("http://foo{searchTerms}{count?}");
119 TemplateURL url(NULL, data); 119 TemplateURL url(data);
120 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 120 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
121 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 121 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
122 GURL result(url.url_ref().ReplaceSearchTerms( 122 GURL result(url.url_ref().ReplaceSearchTerms(
123 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 123 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
124 ASSERT_TRUE(result.is_valid()); 124 ASSERT_TRUE(result.is_valid());
125 EXPECT_EQ("http://foox/", result.spec()); 125 EXPECT_EQ("http://foox/", result.spec());
126 } 126 }
127 127
128 TEST_F(TemplateURLTest, URLRefTestCount2) { 128 TEST_F(TemplateURLTest, URLRefTestCount2) {
129 TemplateURLData data; 129 TemplateURLData data;
130 data.SetURL("http://foo{searchTerms}{count}"); 130 data.SetURL("http://foo{searchTerms}{count}");
131 TemplateURL url(NULL, data); 131 TemplateURL url(data);
132 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 132 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
133 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 133 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
134 GURL result(url.url_ref().ReplaceSearchTerms( 134 GURL result(url.url_ref().ReplaceSearchTerms(
135 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 135 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
136 ASSERT_TRUE(result.is_valid()); 136 ASSERT_TRUE(result.is_valid());
137 EXPECT_EQ("http://foox10/", result.spec()); 137 EXPECT_EQ("http://foox10/", result.spec());
138 } 138 }
139 139
140 TEST_F(TemplateURLTest, URLRefTestIndices) { 140 TEST_F(TemplateURLTest, URLRefTestIndices) {
141 TemplateURLData data; 141 TemplateURLData data;
142 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); 142 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}");
143 TemplateURL url(NULL, data); 143 TemplateURL url(data);
144 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 144 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
145 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 145 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
146 GURL result(url.url_ref().ReplaceSearchTerms( 146 GURL result(url.url_ref().ReplaceSearchTerms(
147 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 147 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
148 ASSERT_TRUE(result.is_valid()); 148 ASSERT_TRUE(result.is_valid());
149 EXPECT_EQ("http://fooxxy/", result.spec()); 149 EXPECT_EQ("http://fooxxy/", result.spec());
150 } 150 }
151 151
152 TEST_F(TemplateURLTest, URLRefTestIndices2) { 152 TEST_F(TemplateURLTest, URLRefTestIndices2) {
153 TemplateURLData data; 153 TemplateURLData data;
154 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); 154 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}");
155 TemplateURL url(NULL, data); 155 TemplateURL url(data);
156 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 156 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
157 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 157 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
158 GURL result(url.url_ref().ReplaceSearchTerms( 158 GURL result(url.url_ref().ReplaceSearchTerms(
159 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 159 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
160 ASSERT_TRUE(result.is_valid()); 160 ASSERT_TRUE(result.is_valid());
161 EXPECT_EQ("http://fooxx1y1/", result.spec()); 161 EXPECT_EQ("http://fooxx1y1/", result.spec());
162 } 162 }
163 163
164 TEST_F(TemplateURLTest, URLRefTestEncoding) { 164 TEST_F(TemplateURLTest, URLRefTestEncoding) {
165 TemplateURLData data; 165 TemplateURLData data;
166 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); 166 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a");
167 TemplateURL url(NULL, data); 167 TemplateURL url(data);
168 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 168 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
169 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 169 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
170 GURL result(url.url_ref().ReplaceSearchTerms( 170 GURL result(url.url_ref().ReplaceSearchTerms(
171 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 171 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
172 ASSERT_TRUE(result.is_valid()); 172 ASSERT_TRUE(result.is_valid());
173 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); 173 EXPECT_EQ("http://fooxxutf-8ya/", result.spec());
174 } 174 }
175 175
176 TEST_F(TemplateURLTest, URLRefTestImageURLWithPOST) { 176 TEST_F(TemplateURLTest, URLRefTestImageURLWithPOST) {
177 const char kInvalidPostParamsString[] = 177 const char kInvalidPostParamsString[] =
178 "unknown_template={UnknownTemplate},bad_value=bad{value}," 178 "unknown_template={UnknownTemplate},bad_value=bad{value},"
179 "{google:sbiSource}"; 179 "{google:sbiSource}";
180 // List all accpectable parameter format in valid_post_params_string. it is 180 // List all accpectable parameter format in valid_post_params_string. it is
181 // expected like: "name0=,name1=value1,name2={template1}" 181 // expected like: "name0=,name1=value1,name2={template1}"
182 const char kValidPostParamsString[] = 182 const char kValidPostParamsString[] =
183 "image_content={google:imageThumbnail},image_url={google:imageURL}," 183 "image_content={google:imageThumbnail},image_url={google:imageURL},"
184 "sbisrc={google:imageSearchSource},language={language},empty_param=," 184 "sbisrc={google:imageSearchSource},language={language},empty_param=,"
185 "constant_param=constant,width={google:imageOriginalWidth}"; 185 "constant_param=constant,width={google:imageOriginalWidth}";
186 const char KImageSearchURL[] = "http://foo.com/sbi"; 186 const char KImageSearchURL[] = "http://foo.com/sbi";
187 187
188 TemplateURLData data; 188 TemplateURLData data;
189 data.image_url = KImageSearchURL; 189 data.image_url = KImageSearchURL;
190 190
191 // Try to parse invalid post parameters. 191 // Try to parse invalid post parameters.
192 data.image_url_post_params = kInvalidPostParamsString; 192 data.image_url_post_params = kInvalidPostParamsString;
193 TemplateURL url_bad(NULL, data); 193 TemplateURL url_bad(data);
194 ASSERT_FALSE(url_bad.image_url_ref().IsValid(search_terms_data_)); 194 ASSERT_FALSE(url_bad.image_url_ref().IsValid(search_terms_data_));
195 const TemplateURLRef::PostParams& bad_post_params = 195 const TemplateURLRef::PostParams& bad_post_params =
196 url_bad.image_url_ref().post_params_; 196 url_bad.image_url_ref().post_params_;
197 ASSERT_EQ(2U, bad_post_params.size()); 197 ASSERT_EQ(2U, bad_post_params.size());
198 EXPECT_EQ("unknown_template", bad_post_params[0].first); 198 EXPECT_EQ("unknown_template", bad_post_params[0].first);
199 EXPECT_EQ("{UnknownTemplate}", bad_post_params[0].second); 199 EXPECT_EQ("{UnknownTemplate}", bad_post_params[0].second);
200 EXPECT_EQ("bad_value", bad_post_params[1].first); 200 EXPECT_EQ("bad_value", bad_post_params[1].first);
201 EXPECT_EQ("bad{value}", bad_post_params[1].second); 201 EXPECT_EQ("bad{value}", bad_post_params[1].second);
202 202
203 // Try to parse valid post parameters. 203 // Try to parse valid post parameters.
204 data.image_url_post_params = kValidPostParamsString; 204 data.image_url_post_params = kValidPostParamsString;
205 TemplateURL url(NULL, data); 205 TemplateURL url(data);
206 ASSERT_TRUE(url.image_url_ref().IsValid(search_terms_data_)); 206 ASSERT_TRUE(url.image_url_ref().IsValid(search_terms_data_));
207 ASSERT_FALSE(url.image_url_ref().SupportsReplacement(search_terms_data_)); 207 ASSERT_FALSE(url.image_url_ref().SupportsReplacement(search_terms_data_));
208 208
209 // Check term replacement. 209 // Check term replacement.
210 TemplateURLRef::SearchTermsArgs search_args(ASCIIToUTF16("X")); 210 TemplateURLRef::SearchTermsArgs search_args(ASCIIToUTF16("X"));
211 search_args.image_thumbnail_content = "dummy-image-thumbnail"; 211 search_args.image_thumbnail_content = "dummy-image-thumbnail";
212 search_args.image_url = GURL("http://dummyimage.com/dummy.jpg"); 212 search_args.image_url = GURL("http://dummyimage.com/dummy.jpg");
213 search_args.image_original_size = gfx::Size(10, 10); 213 search_args.image_original_size = gfx::Size(10, 10);
214 // Replacement operation with no post_data buffer should still return 214 // Replacement operation with no post_data buffer should still return
215 // the parsed URL. 215 // the parsed URL.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 EXPECT_EQ("constant", i->second); 274 EXPECT_EQ("constant", i->second);
275 } 275 }
276 } 276 }
277 } 277 }
278 278
279 // Test that setting the prepopulate ID from TemplateURL causes the stored 279 // Test that setting the prepopulate ID from TemplateURL causes the stored
280 // TemplateURLRef to handle parsing the URL parameters differently. 280 // TemplateURLRef to handle parsing the URL parameters differently.
281 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { 281 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) {
282 TemplateURLData data; 282 TemplateURLData data;
283 data.SetURL("http://foo{fhqwhgads}bar"); 283 data.SetURL("http://foo{fhqwhgads}bar");
284 TemplateURL url(NULL, data); 284 TemplateURL url(data);
285 TemplateURLRef::Replacements replacements; 285 TemplateURLRef::Replacements replacements;
286 bool valid = false; 286 bool valid = false;
287 EXPECT_EQ("http://foo{fhqwhgads}bar", url.url_ref().ParseURL( 287 EXPECT_EQ("http://foo{fhqwhgads}bar", url.url_ref().ParseURL(
288 "http://foo{fhqwhgads}bar", &replacements, NULL, &valid)); 288 "http://foo{fhqwhgads}bar", &replacements, NULL, &valid));
289 EXPECT_TRUE(replacements.empty()); 289 EXPECT_TRUE(replacements.empty());
290 EXPECT_TRUE(valid); 290 EXPECT_TRUE(valid);
291 291
292 data.prepopulate_id = 123; 292 data.prepopulate_id = 123;
293 TemplateURL url2(NULL, data); 293 TemplateURL url2(data);
294 EXPECT_EQ("http://foobar", url2.url_ref().ParseURL("http://foo{fhqwhgads}bar", 294 EXPECT_EQ("http://foobar", url2.url_ref().ParseURL("http://foo{fhqwhgads}bar",
295 &replacements, NULL, 295 &replacements, NULL,
296 &valid)); 296 &valid));
297 EXPECT_TRUE(replacements.empty()); 297 EXPECT_TRUE(replacements.empty());
298 EXPECT_TRUE(valid); 298 EXPECT_TRUE(valid);
299 } 299 }
300 300
301 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { 301 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) {
302 TemplateURLData data; 302 TemplateURLData data;
303 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); 303 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b");
304 TemplateURL url(NULL, data); 304 TemplateURL url(data);
305 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 305 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
306 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 306 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
307 GURL result(url.url_ref().ReplaceSearchTerms( 307 GURL result(url.url_ref().ReplaceSearchTerms(
308 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 308 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
309 ASSERT_TRUE(result.is_valid()); 309 ASSERT_TRUE(result.is_valid());
310 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); 310 EXPECT_EQ("http://fooxutf-8axyb/", result.spec());
311 } 311 }
312 312
313 TEST_F(TemplateURLTest, URLRefTestEncoding2) { 313 TEST_F(TemplateURLTest, URLRefTestEncoding2) {
314 TemplateURLData data; 314 TemplateURLData data;
315 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); 315 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a");
316 TemplateURL url(NULL, data); 316 TemplateURL url(data);
317 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 317 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
318 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 318 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
319 GURL result(url.url_ref().ReplaceSearchTerms( 319 GURL result(url.url_ref().ReplaceSearchTerms(
320 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_)); 320 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), search_terms_data_));
321 ASSERT_TRUE(result.is_valid()); 321 ASSERT_TRUE(result.is_valid());
322 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); 322 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec());
323 } 323 }
324 324
325 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { 325 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) {
326 struct SearchTermsCase { 326 struct SearchTermsCase {
327 const char* url; 327 const char* url;
328 const base::string16 terms; 328 const base::string16 terms;
329 const char* output; 329 const char* output;
330 } search_term_cases[] = { 330 } search_term_cases[] = {
331 { "{google:baseURL}{language}{searchTerms}", base::string16(), 331 { "{google:baseURL}{language}{searchTerms}", base::string16(),
332 "http://example.com/e/en" }, 332 "http://example.com/e/en" },
333 { "{google:baseSuggestURL}{searchTerms}", base::string16(), 333 { "{google:baseSuggestURL}{searchTerms}", base::string16(),
334 "http://example.com/complete/" } 334 "http://example.com/complete/" }
335 }; 335 };
336 336
337 TestSearchTermsData search_terms_data("http://example.com/e/"); 337 TestSearchTermsData search_terms_data("http://example.com/e/");
338 TemplateURLData data; 338 TemplateURLData data;
339 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { 339 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) {
340 const SearchTermsCase& value = search_term_cases[i]; 340 const SearchTermsCase& value = search_term_cases[i];
341 data.SetURL(value.url); 341 data.SetURL(value.url);
342 TemplateURL url(NULL, data); 342 TemplateURL url(data);
343 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data)); 343 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data));
344 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data)); 344 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data));
345 GURL result(url.url_ref().ReplaceSearchTerms( 345 GURL result(url.url_ref().ReplaceSearchTerms(
346 TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data, NULL)); 346 TemplateURLRef::SearchTermsArgs(value.terms), search_terms_data, NULL));
347 ASSERT_TRUE(result.is_valid()); 347 ASSERT_TRUE(result.is_valid());
348 EXPECT_EQ(value.output, result.spec()); 348 EXPECT_EQ(value.output, result.spec());
349 } 349 }
350 } 350 }
351 351
352 TEST_F(TemplateURLTest, URLRefTermToWide) { 352 TEST_F(TemplateURLTest, URLRefTermToWide) {
(...skipping 14 matching lines...) Expand all
367 // Make sure we convert %2B to +. 367 // Make sure we convert %2B to +.
368 {"C%2B%2B", ASCIIToUTF16("C++")}, 368 {"C%2B%2B", ASCIIToUTF16("C++")},
369 // C%2B is escaped as C%252B, make sure we unescape it properly. 369 // C%2B is escaped as C%252B, make sure we unescape it properly.
370 {"C%252B", ASCIIToUTF16("C%2B")}, 370 {"C%252B", ASCIIToUTF16("C%2B")},
371 }; 371 };
372 372
373 // Set one input encoding: big-5. This is so we can test fallback to UTF-8. 373 // Set one input encoding: big-5. This is so we can test fallback to UTF-8.
374 TemplateURLData data; 374 TemplateURLData data;
375 data.SetURL("http://foo?q={searchTerms}"); 375 data.SetURL("http://foo?q={searchTerms}");
376 data.input_encodings.push_back("big-5"); 376 data.input_encodings.push_back("big-5");
377 TemplateURL url(NULL, data); 377 TemplateURL url(data);
378 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 378 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
379 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 379 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
380 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { 380 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) {
381 EXPECT_EQ(to_wide_cases[i].expected_decoded_term, 381 EXPECT_EQ(to_wide_cases[i].expected_decoded_term,
382 url.url_ref().SearchTermToString16( 382 url.url_ref().SearchTermToString16(
383 to_wide_cases[i].encoded_search_term)); 383 to_wide_cases[i].encoded_search_term));
384 } 384 }
385 } 385 }
386 386
387 TEST_F(TemplateURLTest, DisplayURLToURLRef) { 387 TEST_F(TemplateURLTest, DisplayURLToURLRef) {
388 struct TestData { 388 struct TestData {
389 const std::string url; 389 const std::string url;
390 const base::string16 expected_result; 390 const base::string16 expected_result;
391 } test_data[] = { 391 } test_data[] = {
392 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a", 392 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a",
393 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") }, 393 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") },
394 { "http://X", 394 { "http://X",
395 ASCIIToUTF16("http://X") }, 395 ASCIIToUTF16("http://X") },
396 { "http://foo{searchTerms", 396 { "http://foo{searchTerms",
397 ASCIIToUTF16("http://foo{searchTerms") }, 397 ASCIIToUTF16("http://foo{searchTerms") },
398 { "http://foo{searchTerms}{language}", 398 { "http://foo{searchTerms}{language}",
399 ASCIIToUTF16("http://foo%s{language}") }, 399 ASCIIToUTF16("http://foo%s{language}") },
400 }; 400 };
401 TemplateURLData data; 401 TemplateURLData data;
402 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 402 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
403 data.SetURL(test_data[i].url); 403 data.SetURL(test_data[i].url);
404 TemplateURL url(NULL, data); 404 TemplateURL url(data);
405 EXPECT_EQ(test_data[i].expected_result, 405 EXPECT_EQ(test_data[i].expected_result,
406 url.url_ref().DisplayURL(search_terms_data_)); 406 url.url_ref().DisplayURL(search_terms_data_));
407 EXPECT_EQ(test_data[i].url, 407 EXPECT_EQ(test_data[i].url,
408 TemplateURLRef::DisplayURLToURLRef( 408 TemplateURLRef::DisplayURLToURLRef(
409 url.url_ref().DisplayURL(search_terms_data_))); 409 url.url_ref().DisplayURL(search_terms_data_)));
410 } 410 }
411 } 411 }
412 412
413 TEST_F(TemplateURLTest, ReplaceSearchTerms) { 413 TEST_F(TemplateURLTest, ReplaceSearchTerms) {
414 struct TestData { 414 struct TestData {
(...skipping 22 matching lines...) Expand all
437 "http://foo/XaUTF-8a{language}a" }, 437 "http://foo/XaUTF-8a{language}a" },
438 { "http://foo/{inputEncoding}a{searchTerms}a{language}a", 438 { "http://foo/{inputEncoding}a{searchTerms}a{language}a",
439 "http://foo/UTF-8aXa{language}a" }, 439 "http://foo/UTF-8aXa{language}a" },
440 { "http://foo/{inputEncoding}a{language}a{searchTerms}a", 440 { "http://foo/{inputEncoding}a{language}a{searchTerms}a",
441 "http://foo/UTF-8a{language}aXa" }, 441 "http://foo/UTF-8a{language}aXa" },
442 }; 442 };
443 TemplateURLData data; 443 TemplateURLData data;
444 data.input_encodings.push_back("UTF-8"); 444 data.input_encodings.push_back("UTF-8");
445 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 445 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
446 data.SetURL(test_data[i].url); 446 data.SetURL(test_data[i].url);
447 TemplateURL url(NULL, data); 447 TemplateURL url(data);
448 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 448 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
449 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 449 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
450 std::string expected_result = test_data[i].expected_result; 450 std::string expected_result = test_data[i].expected_result;
451 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", 451 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}",
452 g_browser_process->GetApplicationLocale()); 452 g_browser_process->GetApplicationLocale());
453 GURL result(url.url_ref().ReplaceSearchTerms( 453 GURL result(url.url_ref().ReplaceSearchTerms(
454 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")), 454 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("X")),
455 search_terms_data_)); 455 search_terms_data_));
456 ASSERT_TRUE(result.is_valid()); 456 ASSERT_TRUE(result.is_valid());
457 EXPECT_EQ(expected_result, result.spec()); 457 EXPECT_EQ(expected_result, result.spec());
(...skipping 21 matching lines...) Expand all
479 "http://foo/%82%A0/bar"}, 479 "http://foo/%82%A0/bar"},
480 { "Shift_JIS", base::UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"), 480 { "Shift_JIS", base::UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"),
481 "http://foo/{searchTerms}/bar", 481 "http://foo/{searchTerms}/bar",
482 "http://foo/%82%A0%20%82%A2/bar"}, 482 "http://foo/%82%A0%20%82%A2/bar"},
483 }; 483 };
484 TemplateURLData data; 484 TemplateURLData data;
485 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 485 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
486 data.SetURL(test_data[i].url); 486 data.SetURL(test_data[i].url);
487 data.input_encodings.clear(); 487 data.input_encodings.clear();
488 data.input_encodings.push_back(test_data[i].encoding); 488 data.input_encodings.push_back(test_data[i].encoding);
489 TemplateURL url(NULL, data); 489 TemplateURL url(data);
490 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 490 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
491 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 491 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
492 GURL result(url.url_ref().ReplaceSearchTerms( 492 GURL result(url.url_ref().ReplaceSearchTerms(
493 TemplateURLRef::SearchTermsArgs(test_data[i].search_term), 493 TemplateURLRef::SearchTermsArgs(test_data[i].search_term),
494 search_terms_data_)); 494 search_terms_data_));
495 ASSERT_TRUE(result.is_valid()); 495 ASSERT_TRUE(result.is_valid());
496 EXPECT_EQ(test_data[i].expected_result, result.spec()); 496 EXPECT_EQ(test_data[i].expected_result, result.spec());
497 } 497 }
498 } 498 }
499 499
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 { ASCIIToUTF16("foo"), 534 { ASCIIToUTF16("foo"),
535 "chrome.0.0l6", 535 "chrome.0.0l6",
536 "", 536 "",
537 "https://foo?{searchTerms}{google:assistedQueryStats}", 537 "https://foo?{searchTerms}{google:assistedQueryStats}",
538 "https://foo/?fooaqs=chrome.0.0l6&" }, 538 "https://foo/?fooaqs=chrome.0.0l6&" },
539 }; 539 };
540 TemplateURLData data; 540 TemplateURLData data;
541 data.input_encodings.push_back("UTF-8"); 541 data.input_encodings.push_back("UTF-8");
542 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 542 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
543 data.SetURL(test_data[i].url); 543 data.SetURL(test_data[i].url);
544 TemplateURL url(NULL, data); 544 TemplateURL url(data);
545 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 545 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
546 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 546 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
547 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term); 547 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
548 search_terms_args.assisted_query_stats = test_data[i].aqs; 548 search_terms_args.assisted_query_stats = test_data[i].aqs;
549 UIThreadSearchTermsData::SetGoogleBaseURL(test_data[i].base_url); 549 UIThreadSearchTermsData::SetGoogleBaseURL(test_data[i].base_url);
550 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 550 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
551 search_terms_data_)); 551 search_terms_data_));
552 ASSERT_TRUE(result.is_valid()); 552 ASSERT_TRUE(result.is_valid());
553 EXPECT_EQ(test_data[i].expected_result, result.spec()); 553 EXPECT_EQ(test_data[i].expected_result, result.spec());
554 } 554 }
(...skipping 18 matching lines...) Expand all
573 { ASCIIToUTF16("foo"), 573 { ASCIIToUTF16("foo"),
574 15, 574 15,
575 "{google:baseURL}?{searchTerms}&{google:cursorPosition}", 575 "{google:baseURL}?{searchTerms}&{google:cursorPosition}",
576 "http://www.google.com/?foo&cp=15&" }, 576 "http://www.google.com/?foo&cp=15&" },
577 }; 577 };
578 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 578 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
579 TemplateURLData data; 579 TemplateURLData data;
580 data.input_encodings.push_back("UTF-8"); 580 data.input_encodings.push_back("UTF-8");
581 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 581 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
582 data.SetURL(test_data[i].url); 582 data.SetURL(test_data[i].url);
583 TemplateURL url(NULL, data); 583 TemplateURL url(data);
584 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 584 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
585 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 585 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
586 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term); 586 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
587 search_terms_args.cursor_position = test_data[i].cursor_position; 587 search_terms_args.cursor_position = test_data[i].cursor_position;
588 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 588 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
589 search_terms_data_)); 589 search_terms_data_));
590 ASSERT_TRUE(result.is_valid()); 590 ASSERT_TRUE(result.is_valid());
591 EXPECT_EQ(test_data[i].expected_result, result.spec()); 591 EXPECT_EQ(test_data[i].expected_result, result.spec());
592 } 592 }
593 } 593 }
(...skipping 17 matching lines...) Expand all
611 { ASCIIToUTF16("foo"), 611 { ASCIIToUTF16("foo"),
612 metrics::OmniboxInputType::FORCED_QUERY, 612 metrics::OmniboxInputType::FORCED_QUERY,
613 "{google:baseURL}?{searchTerms}&{google:inputType}", 613 "{google:baseURL}?{searchTerms}&{google:inputType}",
614 "http://www.google.com/?foo&oit=5&" }, 614 "http://www.google.com/?foo&oit=5&" },
615 }; 615 };
616 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 616 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
617 TemplateURLData data; 617 TemplateURLData data;
618 data.input_encodings.push_back("UTF-8"); 618 data.input_encodings.push_back("UTF-8");
619 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 619 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
620 data.SetURL(test_data[i].url); 620 data.SetURL(test_data[i].url);
621 TemplateURL url(NULL, data); 621 TemplateURL url(data);
622 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 622 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
623 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 623 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
624 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term); 624 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
625 search_terms_args.input_type = test_data[i].input_type; 625 search_terms_args.input_type = test_data[i].input_type;
626 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 626 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
627 search_terms_data_)); 627 search_terms_data_));
628 ASSERT_TRUE(result.is_valid()); 628 ASSERT_TRUE(result.is_valid());
629 EXPECT_EQ(test_data[i].expected_result, result.spec()); 629 EXPECT_EQ(test_data[i].expected_result, result.spec());
630 } 630 }
631 } 631 }
(...skipping 17 matching lines...) Expand all
649 { ASCIIToUTF16("foo"), 649 { ASCIIToUTF16("foo"),
650 "http://g.com/+-/*&=", 650 "http://g.com/+-/*&=",
651 "{google:baseURL}?{searchTerms}&{google:currentPageUrl}", 651 "{google:baseURL}?{searchTerms}&{google:currentPageUrl}",
652 "http://www.google.com/?foo&url=http%3A%2F%2Fg.com%2F%2B-%2F*%26%3D&" }, 652 "http://www.google.com/?foo&url=http%3A%2F%2Fg.com%2F%2B-%2F*%26%3D&" },
653 }; 653 };
654 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 654 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
655 TemplateURLData data; 655 TemplateURLData data;
656 data.input_encodings.push_back("UTF-8"); 656 data.input_encodings.push_back("UTF-8");
657 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 657 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
658 data.SetURL(test_data[i].url); 658 data.SetURL(test_data[i].url);
659 TemplateURL url(NULL, data); 659 TemplateURL url(data);
660 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 660 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
661 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 661 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
662 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term); 662 TemplateURLRef::SearchTermsArgs search_terms_args(test_data[i].search_term);
663 search_terms_args.current_page_url = test_data[i].current_page_url; 663 search_terms_args.current_page_url = test_data[i].current_page_url;
664 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 664 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
665 search_terms_data_)); 665 search_terms_data_));
666 ASSERT_TRUE(result.is_valid()); 666 ASSERT_TRUE(result.is_valid());
667 EXPECT_EQ(test_data[i].expected_result, result.spec()); 667 EXPECT_EQ(test_data[i].expected_result, result.spec());
668 } 668 }
669 } 669 }
(...skipping 12 matching lines...) Expand all
682 "http://bar/foo?q=foobar" }, 682 "http://bar/foo?q=foobar" },
683 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), 683 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"),
684 "http://bar/foo?q=foobar" }, 684 "http://bar/foo?q=foobar" },
685 { 0, base::string16(), "http://bar/foo?oq=&q=foobar" }, 685 { 0, base::string16(), "http://bar/foo?oq=&q=foobar" },
686 { 1, ASCIIToUTF16("foo"), "http://bar/foo?oq=foo&q=foobar" }, 686 { 1, ASCIIToUTF16("foo"), "http://bar/foo?oq=foo&q=foobar" },
687 }; 687 };
688 TemplateURLData data; 688 TemplateURLData data;
689 data.SetURL("http://bar/foo?{google:originalQueryForSuggestion}" 689 data.SetURL("http://bar/foo?{google:originalQueryForSuggestion}"
690 "q={searchTerms}"); 690 "q={searchTerms}");
691 data.input_encodings.push_back("UTF-8"); 691 data.input_encodings.push_back("UTF-8");
692 TemplateURL url(NULL, data); 692 TemplateURL url(data);
693 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 693 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
694 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 694 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
695 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 695 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
696 TemplateURLRef::SearchTermsArgs search_terms_args( 696 TemplateURLRef::SearchTermsArgs search_terms_args(
697 ASCIIToUTF16("foobar")); 697 ASCIIToUTF16("foobar"));
698 search_terms_args.accepted_suggestion = test_data[i].accepted_suggestion; 698 search_terms_args.accepted_suggestion = test_data[i].accepted_suggestion;
699 search_terms_args.original_query = 699 search_terms_args.original_query =
700 test_data[i].original_query_for_suggestion; 700 test_data[i].original_query_for_suggestion;
701 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 701 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
702 search_terms_data_)); 702 search_terms_data_));
(...skipping 11 matching lines...) Expand all
714 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz_string); 714 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz_string);
715 } 715 }
716 #elif defined(OS_ANDROID) 716 #elif defined(OS_ANDROID)
717 SearchTermsDataAndroid::rlz_parameter_value_.Get() = 717 SearchTermsDataAndroid::rlz_parameter_value_.Get() =
718 ASCIIToUTF16("android_test"); 718 ASCIIToUTF16("android_test");
719 rlz_string = SearchTermsDataAndroid::rlz_parameter_value_.Get(); 719 rlz_string = SearchTermsDataAndroid::rlz_parameter_value_.Get();
720 #endif 720 #endif
721 721
722 TemplateURLData data; 722 TemplateURLData data;
723 data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); 723 data.SetURL("http://bar/?{google:RLZ}{searchTerms}");
724 TemplateURL url(NULL, data); 724 TemplateURL url(data);
725 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 725 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
726 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 726 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
727 GURL result(url.url_ref().ReplaceSearchTerms( 727 GURL result(url.url_ref().ReplaceSearchTerms(
728 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("x")), search_terms_data_)); 728 TemplateURLRef::SearchTermsArgs(ASCIIToUTF16("x")), search_terms_data_));
729 ASSERT_TRUE(result.is_valid()); 729 ASSERT_TRUE(result.is_valid());
730 std::string expected_url = "http://bar/?"; 730 std::string expected_url = "http://bar/?";
731 if (!rlz_string.empty()) 731 if (!rlz_string.empty())
732 expected_url += "rlz=" + base::UTF16ToUTF8(rlz_string) + "&"; 732 expected_url += "rlz=" + base::UTF16ToUTF8(rlz_string) + "&";
733 expected_url += "x"; 733 expected_url += "x";
734 EXPECT_EQ(expected_url, result.spec()); 734 EXPECT_EQ(expected_url, result.spec());
735 } 735 }
736 736
737 #if !defined(OS_ANDROID) && !defined(OS_IOS) 737 #if !defined(OS_ANDROID) && !defined(OS_IOS)
738 TEST_F(TemplateURLTest, RLZFromAppList) { 738 TEST_F(TemplateURLTest, RLZFromAppList) {
739 base::string16 rlz_string; 739 base::string16 rlz_string;
740 #if defined(ENABLE_RLZ) 740 #if defined(ENABLE_RLZ)
741 std::string brand; 741 std::string brand;
742 if (google_brand::GetBrand(&brand) && !brand.empty() && 742 if (google_brand::GetBrand(&brand) && !brand.empty() &&
743 !google_brand::IsOrganic(brand)) { 743 !google_brand::IsOrganic(brand)) {
744 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz_string); 744 RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz_string);
745 } 745 }
746 #endif 746 #endif
747 747
748 TemplateURLData data; 748 TemplateURLData data;
749 data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); 749 data.SetURL("http://bar/?{google:RLZ}{searchTerms}");
750 TemplateURL url(NULL, data); 750 TemplateURL url(data);
751 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 751 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
752 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 752 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
753 TemplateURLRef::SearchTermsArgs args(ASCIIToUTF16("x")); 753 TemplateURLRef::SearchTermsArgs args(ASCIIToUTF16("x"));
754 args.from_app_list = true; 754 args.from_app_list = true;
755 GURL result(url.url_ref().ReplaceSearchTerms(args, search_terms_data_)); 755 GURL result(url.url_ref().ReplaceSearchTerms(args, search_terms_data_));
756 ASSERT_TRUE(result.is_valid()); 756 ASSERT_TRUE(result.is_valid());
757 std::string expected_url = "http://bar/?"; 757 std::string expected_url = "http://bar/?";
758 if (!rlz_string.empty()) 758 if (!rlz_string.empty())
759 expected_url += "rlz=" + base::UTF16ToUTF8(rlz_string) + "&"; 759 expected_url += "rlz=" + base::UTF16ToUTF8(rlz_string) + "&";
760 expected_url += "x"; 760 expected_url += "x";
(...skipping 25 matching lines...) Expand all
786 { "http://blah/?q={searchTerms}", "blah", "/", "q"}, 786 { "http://blah/?q={searchTerms}", "blah", "/", "q"},
787 { "https://blah/?q={searchTerms}", "blah", "/", "q"}, 787 { "https://blah/?q={searchTerms}", "blah", "/", "q"},
788 788
789 // Single term with extra chars in value should match. 789 // Single term with extra chars in value should match.
790 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, 790 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"},
791 }; 791 };
792 792
793 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { 793 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
794 TemplateURLData data; 794 TemplateURLData data;
795 data.SetURL(test_data[i].url); 795 data.SetURL(test_data[i].url);
796 TemplateURL url(NULL, data); 796 TemplateURL url(data);
797 EXPECT_EQ(test_data[i].host, url.url_ref().GetHost(search_terms_data_)); 797 EXPECT_EQ(test_data[i].host, url.url_ref().GetHost(search_terms_data_));
798 EXPECT_EQ(test_data[i].path, url.url_ref().GetPath(search_terms_data_)); 798 EXPECT_EQ(test_data[i].path, url.url_ref().GetPath(search_terms_data_));
799 EXPECT_EQ(test_data[i].search_term_key, 799 EXPECT_EQ(test_data[i].search_term_key,
800 url.url_ref().GetSearchTermKey(search_terms_data_)); 800 url.url_ref().GetSearchTermKey(search_terms_data_));
801 } 801 }
802 } 802 }
803 803
804 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) { 804 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) {
805 static const struct { 805 static const struct {
806 const char* const base_url; 806 const char* const base_url;
807 const char* const base_suggest_url; 807 const char* const base_suggest_url;
808 } data[] = { 808 } data[] = {
809 { "http://google.com/", "http://google.com/complete/", }, 809 { "http://google.com/", "http://google.com/complete/", },
810 { "http://www.google.com/", "http://www.google.com/complete/", }, 810 { "http://www.google.com/", "http://www.google.com/complete/", },
811 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", }, 811 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", },
812 { "http://www.google.com.by/", "http://www.google.com.by/complete/", }, 812 { "http://www.google.com.by/", "http://www.google.com.by/complete/", },
813 { "http://google.com/intl/xx/", "http://google.com/complete/", }, 813 { "http://google.com/intl/xx/", "http://google.com/complete/", },
814 }; 814 };
815 815
816 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) 816 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i)
817 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url); 817 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url);
818 } 818 }
819 819
820 TEST_F(TemplateURLTest, ParseParameterKnown) { 820 TEST_F(TemplateURLTest, ParseParameterKnown) {
821 std::string parsed_url("{searchTerms}"); 821 std::string parsed_url("{searchTerms}");
822 TemplateURLData data; 822 TemplateURLData data;
823 data.SetURL(parsed_url); 823 data.SetURL(parsed_url);
824 TemplateURL url(NULL, data); 824 TemplateURL url(data);
825 TemplateURLRef::Replacements replacements; 825 TemplateURLRef::Replacements replacements;
826 EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements)); 826 EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements));
827 EXPECT_EQ(std::string(), parsed_url); 827 EXPECT_EQ(std::string(), parsed_url);
828 ASSERT_EQ(1U, replacements.size()); 828 ASSERT_EQ(1U, replacements.size());
829 EXPECT_EQ(0U, replacements[0].index); 829 EXPECT_EQ(0U, replacements[0].index);
830 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); 830 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type);
831 } 831 }
832 832
833 TEST_F(TemplateURLTest, ParseParameterUnknown) { 833 TEST_F(TemplateURLTest, ParseParameterUnknown) {
834 std::string parsed_url("{fhqwhgads}abc"); 834 std::string parsed_url("{fhqwhgads}abc");
835 TemplateURLData data; 835 TemplateURLData data;
836 data.SetURL(parsed_url); 836 data.SetURL(parsed_url);
837 TemplateURL url(NULL, data); 837 TemplateURL url(data);
838 TemplateURLRef::Replacements replacements; 838 TemplateURLRef::Replacements replacements;
839 839
840 // By default, TemplateURLRef should not consider itself prepopulated. 840 // By default, TemplateURLRef should not consider itself prepopulated.
841 // Therefore we should not replace the unknown parameter. 841 // Therefore we should not replace the unknown parameter.
842 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); 842 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements));
843 EXPECT_EQ("{fhqwhgads}abc", parsed_url); 843 EXPECT_EQ("{fhqwhgads}abc", parsed_url);
844 EXPECT_TRUE(replacements.empty()); 844 EXPECT_TRUE(replacements.empty());
845 845
846 // If the TemplateURLRef is prepopulated, we should remove unknown parameters. 846 // If the TemplateURLRef is prepopulated, we should remove unknown parameters.
847 parsed_url = "{fhqwhgads}abc"; 847 parsed_url = "{fhqwhgads}abc";
848 data.prepopulate_id = 1; 848 data.prepopulate_id = 1;
849 TemplateURL url2(NULL, data); 849 TemplateURL url2(data);
850 EXPECT_TRUE(url2.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); 850 EXPECT_TRUE(url2.url_ref().ParseParameter(0, 10, &parsed_url, &replacements));
851 EXPECT_EQ("abc", parsed_url); 851 EXPECT_EQ("abc", parsed_url);
852 EXPECT_TRUE(replacements.empty()); 852 EXPECT_TRUE(replacements.empty());
853 } 853 }
854 854
855 TEST_F(TemplateURLTest, ParseURLEmpty) { 855 TEST_F(TemplateURLTest, ParseURLEmpty) {
856 TemplateURL url(NULL, TemplateURLData()); 856 TemplateURLData data;
857 TemplateURL url(data);
Peter Kasting 2014/06/17 21:07:55 Nit: Why not just do this?: TemplateURL url(Tem
hashimoto 2014/06/17 21:58:03 Done. Please note that the additional parenthesis
857 TemplateURLRef::Replacements replacements; 858 TemplateURLRef::Replacements replacements;
858 bool valid = false; 859 bool valid = false;
859 EXPECT_EQ(std::string(), 860 EXPECT_EQ(std::string(),
860 url.url_ref().ParseURL(std::string(), &replacements, NULL, &valid)); 861 url.url_ref().ParseURL(std::string(), &replacements, NULL, &valid));
861 EXPECT_TRUE(replacements.empty()); 862 EXPECT_TRUE(replacements.empty());
862 EXPECT_TRUE(valid); 863 EXPECT_TRUE(valid);
863 } 864 }
864 865
865 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { 866 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) {
866 TemplateURLData data; 867 TemplateURLData data;
867 data.SetURL("{"); 868 data.SetURL("{");
868 TemplateURL url(NULL, data); 869 TemplateURL url(data);
869 TemplateURLRef::Replacements replacements; 870 TemplateURLRef::Replacements replacements;
870 bool valid = false; 871 bool valid = false;
871 EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, NULL, 872 EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, NULL,
872 &valid)); 873 &valid));
873 EXPECT_TRUE(replacements.empty()); 874 EXPECT_TRUE(replacements.empty());
874 EXPECT_FALSE(valid); 875 EXPECT_FALSE(valid);
875 } 876 }
876 877
877 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { 878 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) {
878 TemplateURLData data; 879 TemplateURLData data;
879 data.SetURL("{}"); 880 data.SetURL("{}");
880 TemplateURL url(NULL, data); 881 TemplateURL url(data);
881 TemplateURLRef::Replacements replacements; 882 TemplateURLRef::Replacements replacements;
882 bool valid = false; 883 bool valid = false;
883 EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, NULL, &valid)); 884 EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, NULL, &valid));
884 EXPECT_TRUE(replacements.empty()); 885 EXPECT_TRUE(replacements.empty());
885 EXPECT_TRUE(valid); 886 EXPECT_TRUE(valid);
886 } 887 }
887 888
888 TEST_F(TemplateURLTest, ParseURLTwoParameters) { 889 TEST_F(TemplateURLTest, ParseURLTwoParameters) {
889 TemplateURLData data; 890 TemplateURLData data;
890 data.SetURL("{}{{%s}}"); 891 data.SetURL("{}{{%s}}");
891 TemplateURL url(NULL, data); 892 TemplateURL url(data);
892 TemplateURLRef::Replacements replacements; 893 TemplateURLRef::Replacements replacements;
893 bool valid = false; 894 bool valid = false;
894 EXPECT_EQ("{}{}", 895 EXPECT_EQ("{}{}",
895 url.url_ref().ParseURL("{}{{searchTerms}}", &replacements, NULL, 896 url.url_ref().ParseURL("{}{{searchTerms}}", &replacements, NULL,
896 &valid)); 897 &valid));
897 ASSERT_EQ(1U, replacements.size()); 898 ASSERT_EQ(1U, replacements.size());
898 EXPECT_EQ(3U, replacements[0].index); 899 EXPECT_EQ(3U, replacements[0].index);
899 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); 900 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type);
900 EXPECT_TRUE(valid); 901 EXPECT_TRUE(valid);
901 } 902 }
902 903
903 TEST_F(TemplateURLTest, ParseURLNestedParameter) { 904 TEST_F(TemplateURLTest, ParseURLNestedParameter) {
904 TemplateURLData data; 905 TemplateURLData data;
905 data.SetURL("{%s"); 906 data.SetURL("{%s");
906 TemplateURL url(NULL, data); 907 TemplateURL url(data);
907 TemplateURLRef::Replacements replacements; 908 TemplateURLRef::Replacements replacements;
908 bool valid = false; 909 bool valid = false;
909 EXPECT_EQ("{", 910 EXPECT_EQ("{",
910 url.url_ref().ParseURL("{{searchTerms}", &replacements, NULL, 911 url.url_ref().ParseURL("{{searchTerms}", &replacements, NULL,
911 &valid)); 912 &valid));
912 ASSERT_EQ(1U, replacements.size()); 913 ASSERT_EQ(1U, replacements.size());
913 EXPECT_EQ(1U, replacements[0].index); 914 EXPECT_EQ(1U, replacements[0].index);
914 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); 915 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type);
915 EXPECT_TRUE(valid); 916 EXPECT_TRUE(valid);
916 } 917 }
917 918
918 #if defined(OS_ANDROID) 919 #if defined(OS_ANDROID)
919 TEST_F(TemplateURLTest, SearchClient) { 920 TEST_F(TemplateURLTest, SearchClient) {
920 const std::string base_url_str("http://google.com/?"); 921 const std::string base_url_str("http://google.com/?");
921 const std::string terms_str("{searchTerms}&{google:searchClient}"); 922 const std::string terms_str("{searchTerms}&{google:searchClient}");
922 const std::string full_url_str = base_url_str + terms_str; 923 const std::string full_url_str = base_url_str + terms_str;
923 const base::string16 terms(ASCIIToUTF16(terms_str)); 924 const base::string16 terms(ASCIIToUTF16(terms_str));
924 UIThreadSearchTermsData::SetGoogleBaseURL(base_url_str); 925 UIThreadSearchTermsData::SetGoogleBaseURL(base_url_str);
925 926
926 TemplateURLData data; 927 TemplateURLData data;
927 data.SetURL(full_url_str); 928 data.SetURL(full_url_str);
928 TemplateURL url(NULL, data); 929 TemplateURL url(data);
929 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 930 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
930 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 931 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
931 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foobar")); 932 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foobar"));
932 933
933 // Check that the URL is correct when a client is not present. 934 // Check that the URL is correct when a client is not present.
934 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args, 935 GURL result(url.url_ref().ReplaceSearchTerms(search_terms_args,
935 search_terms_data_)); 936 search_terms_data_));
936 ASSERT_TRUE(result.is_valid()); 937 ASSERT_TRUE(result.is_valid());
937 EXPECT_EQ("http://google.com/?foobar&", result.spec()); 938 EXPECT_EQ("http://google.com/?foobar&", result.spec());
938 939
939 // Check that the URL is correct when a client is present. 940 // Check that the URL is correct when a client is present.
940 SearchTermsDataAndroid::search_client_.Get() = "android_test"; 941 SearchTermsDataAndroid::search_client_.Get() = "android_test";
941 GURL result_2(url.url_ref().ReplaceSearchTerms(search_terms_args, 942 GURL result_2(url.url_ref().ReplaceSearchTerms(search_terms_args,
942 search_terms_data_)); 943 search_terms_data_));
943 ASSERT_TRUE(result_2.is_valid()); 944 ASSERT_TRUE(result_2.is_valid());
944 EXPECT_EQ("http://google.com/?foobar&client=android_test&", result_2.spec()); 945 EXPECT_EQ("http://google.com/?foobar&client=android_test&", result_2.spec());
945 } 946 }
946 #endif 947 #endif
947 948
948 TEST_F(TemplateURLTest, GetURLNoInstantURL) { 949 TEST_F(TemplateURLTest, GetURLNoInstantURL) {
949 TemplateURLData data; 950 TemplateURLData data;
950 data.SetURL("http://google.com/?q={searchTerms}"); 951 data.SetURL("http://google.com/?q={searchTerms}");
951 data.suggestions_url = "http://google.com/suggest?q={searchTerms}"; 952 data.suggestions_url = "http://google.com/suggest?q={searchTerms}";
952 data.alternate_urls.push_back("http://google.com/alt?q={searchTerms}"); 953 data.alternate_urls.push_back("http://google.com/alt?q={searchTerms}");
953 data.alternate_urls.push_back("{google:baseURL}/alt/#q={searchTerms}"); 954 data.alternate_urls.push_back("{google:baseURL}/alt/#q={searchTerms}");
954 TemplateURL url(NULL, data); 955 TemplateURL url(data);
955 ASSERT_EQ(3U, url.URLCount()); 956 ASSERT_EQ(3U, url.URLCount());
956 EXPECT_EQ("http://google.com/alt?q={searchTerms}", url.GetURL(0)); 957 EXPECT_EQ("http://google.com/alt?q={searchTerms}", url.GetURL(0));
957 EXPECT_EQ("{google:baseURL}/alt/#q={searchTerms}", url.GetURL(1)); 958 EXPECT_EQ("{google:baseURL}/alt/#q={searchTerms}", url.GetURL(1));
958 EXPECT_EQ("http://google.com/?q={searchTerms}", url.GetURL(2)); 959 EXPECT_EQ("http://google.com/?q={searchTerms}", url.GetURL(2));
959 } 960 }
960 961
961 TEST_F(TemplateURLTest, GetURLNoSuggestionsURL) { 962 TEST_F(TemplateURLTest, GetURLNoSuggestionsURL) {
962 TemplateURLData data; 963 TemplateURLData data;
963 data.SetURL("http://google.com/?q={searchTerms}"); 964 data.SetURL("http://google.com/?q={searchTerms}");
964 data.instant_url = "http://google.com/instant#q={searchTerms}"; 965 data.instant_url = "http://google.com/instant#q={searchTerms}";
965 data.alternate_urls.push_back("http://google.com/alt?q={searchTerms}"); 966 data.alternate_urls.push_back("http://google.com/alt?q={searchTerms}");
966 data.alternate_urls.push_back("{google:baseURL}/alt/#q={searchTerms}"); 967 data.alternate_urls.push_back("{google:baseURL}/alt/#q={searchTerms}");
967 TemplateURL url(NULL, data); 968 TemplateURL url(data);
968 ASSERT_EQ(3U, url.URLCount()); 969 ASSERT_EQ(3U, url.URLCount());
969 EXPECT_EQ("http://google.com/alt?q={searchTerms}", url.GetURL(0)); 970 EXPECT_EQ("http://google.com/alt?q={searchTerms}", url.GetURL(0));
970 EXPECT_EQ("{google:baseURL}/alt/#q={searchTerms}", url.GetURL(1)); 971 EXPECT_EQ("{google:baseURL}/alt/#q={searchTerms}", url.GetURL(1));
971 EXPECT_EQ("http://google.com/?q={searchTerms}", url.GetURL(2)); 972 EXPECT_EQ("http://google.com/?q={searchTerms}", url.GetURL(2));
972 } 973 }
973 974
974 TEST_F(TemplateURLTest, GetURLOnlyOneURL) { 975 TEST_F(TemplateURLTest, GetURLOnlyOneURL) {
975 TemplateURLData data; 976 TemplateURLData data;
976 data.SetURL("http://www.google.co.uk/"); 977 data.SetURL("http://www.google.co.uk/");
977 TemplateURL url(NULL, data); 978 TemplateURL url(data);
978 ASSERT_EQ(1U, url.URLCount()); 979 ASSERT_EQ(1U, url.URLCount());
979 EXPECT_EQ("http://www.google.co.uk/", url.GetURL(0)); 980 EXPECT_EQ("http://www.google.co.uk/", url.GetURL(0));
980 } 981 }
981 982
982 TEST_F(TemplateURLTest, ExtractSearchTermsFromURL) { 983 TEST_F(TemplateURLTest, ExtractSearchTermsFromURL) {
983 TemplateURLData data; 984 TemplateURLData data;
984 data.SetURL("http://google.com/?q={searchTerms}"); 985 data.SetURL("http://google.com/?q={searchTerms}");
985 data.instant_url = "http://google.com/instant#q={searchTerms}"; 986 data.instant_url = "http://google.com/instant#q={searchTerms}";
986 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}"); 987 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}");
987 data.alternate_urls.push_back( 988 data.alternate_urls.push_back(
988 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar"); 989 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar");
989 TemplateURL url(NULL, data); 990 TemplateURL url(data);
990 base::string16 result; 991 base::string16 result;
991 992
992 EXPECT_TRUE(url.ExtractSearchTermsFromURL( 993 EXPECT_TRUE(url.ExtractSearchTermsFromURL(
993 GURL("http://google.com/?q=something"), search_terms_data_, &result)); 994 GURL("http://google.com/?q=something"), search_terms_data_, &result));
994 EXPECT_EQ(ASCIIToUTF16("something"), result); 995 EXPECT_EQ(ASCIIToUTF16("something"), result);
995 996
996 EXPECT_TRUE(url.ExtractSearchTermsFromURL( 997 EXPECT_TRUE(url.ExtractSearchTermsFromURL(
997 GURL("http://google.com/?espv&q=something"), 998 GURL("http://google.com/?espv&q=something"),
998 search_terms_data_, &result)); 999 search_terms_data_, &result));
999 EXPECT_EQ(ASCIIToUTF16("something"), result); 1000 EXPECT_EQ(ASCIIToUTF16("something"), result);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 } 1091 }
1091 1092
1092 TEST_F(TemplateURLTest, HasSearchTermsReplacementKey) { 1093 TEST_F(TemplateURLTest, HasSearchTermsReplacementKey) {
1093 TemplateURLData data; 1094 TemplateURLData data;
1094 data.SetURL("http://google.com/?q={searchTerms}"); 1095 data.SetURL("http://google.com/?q={searchTerms}");
1095 data.instant_url = "http://google.com/instant#q={searchTerms}"; 1096 data.instant_url = "http://google.com/instant#q={searchTerms}";
1096 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}"); 1097 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}");
1097 data.alternate_urls.push_back( 1098 data.alternate_urls.push_back(
1098 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar"); 1099 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar");
1099 data.search_terms_replacement_key = "espv"; 1100 data.search_terms_replacement_key = "espv";
1100 TemplateURL url(NULL, data); 1101 TemplateURL url(data);
1101 1102
1102 // Test with instant enabled required. 1103 // Test with instant enabled required.
1103 EXPECT_FALSE(url.HasSearchTermsReplacementKey( 1104 EXPECT_FALSE(url.HasSearchTermsReplacementKey(
1104 GURL("http://google.com/"))); 1105 GURL("http://google.com/")));
1105 1106
1106 EXPECT_TRUE(url.HasSearchTermsReplacementKey( 1107 EXPECT_TRUE(url.HasSearchTermsReplacementKey(
1107 GURL("http://google.com/?espv"))); 1108 GURL("http://google.com/?espv")));
1108 1109
1109 EXPECT_TRUE(url.HasSearchTermsReplacementKey( 1110 EXPECT_TRUE(url.HasSearchTermsReplacementKey(
1110 GURL("http://google.com/#espv"))); 1111 GURL("http://google.com/#espv")));
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1171 GURL("http://bing.com/#espv"))); 1172 GURL("http://bing.com/#espv")));
1172 } 1173 }
1173 1174
1174 TEST_F(TemplateURLTest, ReplaceSearchTermsInURL) { 1175 TEST_F(TemplateURLTest, ReplaceSearchTermsInURL) {
1175 TemplateURLData data; 1176 TemplateURLData data;
1176 data.SetURL("http://google.com/?q={searchTerms}"); 1177 data.SetURL("http://google.com/?q={searchTerms}");
1177 data.instant_url = "http://google.com/instant#q={searchTerms}"; 1178 data.instant_url = "http://google.com/instant#q={searchTerms}";
1178 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}"); 1179 data.alternate_urls.push_back("http://google.com/alt/#q={searchTerms}");
1179 data.alternate_urls.push_back( 1180 data.alternate_urls.push_back(
1180 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar"); 1181 "http://google.com/alt/?ext=foo&q={searchTerms}#ref=bar");
1181 TemplateURL url(NULL, data); 1182 TemplateURL url(data);
1182 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane")); 1183 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("Bob Morane"));
1183 GURL result; 1184 GURL result;
1184 1185
1185 EXPECT_TRUE(url.ReplaceSearchTermsInURL( 1186 EXPECT_TRUE(url.ReplaceSearchTermsInURL(
1186 GURL("http://google.com/?q=something"), search_terms, 1187 GURL("http://google.com/?q=something"), search_terms,
1187 search_terms_data_, &result)); 1188 search_terms_data_, &result));
1188 EXPECT_EQ(GURL("http://google.com/?q=Bob%20Morane"), result); 1189 EXPECT_EQ(GURL("http://google.com/?q=Bob%20Morane"), result);
1189 1190
1190 result = GURL("http://should.not.change.com"); 1191 result = GURL("http://should.not.change.com");
1191 EXPECT_FALSE(url.ReplaceSearchTermsInURL( 1192 EXPECT_FALSE(url.ReplaceSearchTermsInURL(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 } 1254 }
1254 1255
1255 // Test the |suggest_query_params| field of SearchTermsArgs. 1256 // Test the |suggest_query_params| field of SearchTermsArgs.
1256 TEST_F(TemplateURLTest, SuggestQueryParams) { 1257 TEST_F(TemplateURLTest, SuggestQueryParams) {
1257 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 1258 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
1258 TemplateURLData data; 1259 TemplateURLData data;
1259 // Pick a URL with replacements before, during, and after the query, to ensure 1260 // Pick a URL with replacements before, during, and after the query, to ensure
1260 // we don't goof up any of them. 1261 // we don't goof up any of them.
1261 data.SetURL("{google:baseURL}search?q={searchTerms}" 1262 data.SetURL("{google:baseURL}search?q={searchTerms}"
1262 "#{google:originalQueryForSuggestion}x"); 1263 "#{google:originalQueryForSuggestion}x");
1263 TemplateURL url(NULL, data); 1264 TemplateURL url(data);
1264 1265
1265 // Baseline: no |suggest_query_params| field. 1266 // Baseline: no |suggest_query_params| field.
1266 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("abc")); 1267 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("abc"));
1267 search_terms.original_query = ASCIIToUTF16("def"); 1268 search_terms.original_query = ASCIIToUTF16("def");
1268 search_terms.accepted_suggestion = 0; 1269 search_terms.accepted_suggestion = 0;
1269 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x", 1270 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x",
1270 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_)); 1271 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_));
1271 1272
1272 // Set the suggest_query_params. 1273 // Set the suggest_query_params.
1273 search_terms.suggest_query_params = "pq=xyz"; 1274 search_terms.suggest_query_params = "pq=xyz";
1274 EXPECT_EQ("http://www.google.com/search?pq=xyz&q=abc#oq=def&x", 1275 EXPECT_EQ("http://www.google.com/search?pq=xyz&q=abc#oq=def&x",
1275 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_)); 1276 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_));
1276 1277
1277 // Add extra_query_params in the mix, and ensure it works. 1278 // Add extra_query_params in the mix, and ensure it works.
1278 search_terms.append_extra_query_params = true; 1279 search_terms.append_extra_query_params = true;
1279 CommandLine::ForCurrentProcess()->AppendSwitchASCII( 1280 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
1280 switches::kExtraSearchQueryParams, "a=b"); 1281 switches::kExtraSearchQueryParams, "a=b");
1281 EXPECT_EQ("http://www.google.com/search?a=b&pq=xyz&q=abc#oq=def&x", 1282 EXPECT_EQ("http://www.google.com/search?a=b&pq=xyz&q=abc#oq=def&x",
1282 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_)); 1283 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_));
1283 } 1284 }
1284 1285
1285 // Test the |append_extra_query_params| field of SearchTermsArgs. 1286 // Test the |append_extra_query_params| field of SearchTermsArgs.
1286 TEST_F(TemplateURLTest, ExtraQueryParams) { 1287 TEST_F(TemplateURLTest, ExtraQueryParams) {
1287 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 1288 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
1288 TemplateURLData data; 1289 TemplateURLData data;
1289 // Pick a URL with replacements before, during, and after the query, to ensure 1290 // Pick a URL with replacements before, during, and after the query, to ensure
1290 // we don't goof up any of them. 1291 // we don't goof up any of them.
1291 data.SetURL("{google:baseURL}search?q={searchTerms}" 1292 data.SetURL("{google:baseURL}search?q={searchTerms}"
1292 "#{google:originalQueryForSuggestion}x"); 1293 "#{google:originalQueryForSuggestion}x");
1293 TemplateURL url(NULL, data); 1294 TemplateURL url(data);
1294 1295
1295 // Baseline: no command-line args, no |append_extra_query_params| flag. 1296 // Baseline: no command-line args, no |append_extra_query_params| flag.
1296 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("abc")); 1297 TemplateURLRef::SearchTermsArgs search_terms(ASCIIToUTF16("abc"));
1297 search_terms.original_query = ASCIIToUTF16("def"); 1298 search_terms.original_query = ASCIIToUTF16("def");
1298 search_terms.accepted_suggestion = 0; 1299 search_terms.accepted_suggestion = 0;
1299 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x", 1300 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x",
1300 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_)); 1301 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_));
1301 1302
1302 // Set the flag. Since there are no command-line args, this should have no 1303 // Set the flag. Since there are no command-line args, this should have no
1303 // effect. 1304 // effect.
(...skipping 12 matching lines...) Expand all
1316 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x", 1317 EXPECT_EQ("http://www.google.com/search?q=abc#oq=def&x",
1317 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_)); 1318 url.url_ref().ReplaceSearchTerms(search_terms, search_terms_data_));
1318 } 1319 }
1319 1320
1320 // Tests replacing pageClassification. 1321 // Tests replacing pageClassification.
1321 TEST_F(TemplateURLTest, ReplacePageClassification) { 1322 TEST_F(TemplateURLTest, ReplacePageClassification) {
1322 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 1323 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
1323 TemplateURLData data; 1324 TemplateURLData data;
1324 data.input_encodings.push_back("UTF-8"); 1325 data.input_encodings.push_back("UTF-8");
1325 data.SetURL("{google:baseURL}?{google:pageClassification}q={searchTerms}"); 1326 data.SetURL("{google:baseURL}?{google:pageClassification}q={searchTerms}");
1326 TemplateURL url(NULL, data); 1327 TemplateURL url(data);
1327 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 1328 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
1328 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 1329 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
1329 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo")); 1330 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
1330 1331
1331 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1332 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1332 search_terms_data_); 1333 search_terms_data_);
1333 EXPECT_EQ("http://www.google.com/?q=foo", result); 1334 EXPECT_EQ("http://www.google.com/?q=foo", result);
1334 1335
1335 search_terms_args.page_classification = AutocompleteInput::NTP; 1336 search_terms_args.page_classification = AutocompleteInput::NTP;
1336 result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1337 result = url.url_ref().ReplaceSearchTerms(search_terms_args,
(...skipping 10 matching lines...) Expand all
1347 // Test the IsSearchResults function. 1348 // Test the IsSearchResults function.
1348 TEST_F(TemplateURLTest, IsSearchResults) { 1349 TEST_F(TemplateURLTest, IsSearchResults) {
1349 TemplateURLData data; 1350 TemplateURLData data;
1350 data.SetURL("http://bar/search?q={searchTerms}"); 1351 data.SetURL("http://bar/search?q={searchTerms}");
1351 data.instant_url = "http://bar/instant#q={searchTerms}"; 1352 data.instant_url = "http://bar/instant#q={searchTerms}";
1352 data.new_tab_url = "http://bar/newtab"; 1353 data.new_tab_url = "http://bar/newtab";
1353 data.alternate_urls.push_back("http://bar/?q={searchTerms}"); 1354 data.alternate_urls.push_back("http://bar/?q={searchTerms}");
1354 data.alternate_urls.push_back("http://bar/#q={searchTerms}"); 1355 data.alternate_urls.push_back("http://bar/#q={searchTerms}");
1355 data.alternate_urls.push_back("http://bar/search#q{searchTerms}"); 1356 data.alternate_urls.push_back("http://bar/search#q{searchTerms}");
1356 data.alternate_urls.push_back("http://bar/webhp#q={searchTerms}"); 1357 data.alternate_urls.push_back("http://bar/webhp#q={searchTerms}");
1357 TemplateURL search_provider(NULL, data); 1358 TemplateURL search_provider(data);
1358 1359
1359 const struct { 1360 const struct {
1360 const char* const url; 1361 const char* const url;
1361 bool result; 1362 bool result;
1362 } url_data[] = { 1363 } url_data[] = {
1363 { "http://bar/search?q=foo&oq=foo", true, }, 1364 { "http://bar/search?q=foo&oq=foo", true, },
1364 { "http://bar/?q=foo&oq=foo", true, }, 1365 { "http://bar/?q=foo&oq=foo", true, },
1365 { "http://bar/#output=search&q=foo&oq=foo", true, }, 1366 { "http://bar/#output=search&q=foo&oq=foo", true, },
1366 { "http://bar/webhp#q=foo&oq=foo", true, }, 1367 { "http://bar/webhp#q=foo&oq=foo", true, },
1367 { "http://bar/#q=foo&oq=foo", true, }, 1368 { "http://bar/#q=foo&oq=foo", true, },
1368 { "http://bar/?ext=foo&q=foo#ref=bar", true, }, 1369 { "http://bar/?ext=foo&q=foo#ref=bar", true, },
1369 { "http://bar/url?url=http://www.foo.com/&q=foo#ref=bar", false, }, 1370 { "http://bar/url?url=http://www.foo.com/&q=foo#ref=bar", false, },
1370 { "http://bar/", false, }, 1371 { "http://bar/", false, },
1371 { "http://foo/", false, }, 1372 { "http://foo/", false, },
1372 { "http://bar/newtab", false, }, 1373 { "http://bar/newtab", false, },
1373 }; 1374 };
1374 1375
1375 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_data); ++i) { 1376 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_data); ++i) {
1376 EXPECT_EQ(url_data[i].result, 1377 EXPECT_EQ(url_data[i].result,
1377 search_provider.IsSearchURL(GURL(url_data[i].url), 1378 search_provider.IsSearchURL(GURL(url_data[i].url),
1378 search_terms_data_)); 1379 search_terms_data_));
1379 } 1380 }
1380 } 1381 }
1381 1382
1382 TEST_F(TemplateURLTest, ReflectsBookmarkBarPinned) { 1383 TEST_F(TemplateURLTest, ReflectsBookmarkBarPinned) {
1383 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/"); 1384 UIThreadSearchTermsData::SetGoogleBaseURL("http://www.google.com/");
1384 TemplateURLData data; 1385 TemplateURLData data;
1385 data.input_encodings.push_back("UTF-8"); 1386 data.input_encodings.push_back("UTF-8");
1386 data.SetURL("{google:baseURL}?{google:bookmarkBarPinned}q={searchTerms}"); 1387 data.SetURL("{google:baseURL}?{google:bookmarkBarPinned}q={searchTerms}");
1387 TemplateURL url(NULL, data); 1388 TemplateURL url(data);
1388 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_)); 1389 EXPECT_TRUE(url.url_ref().IsValid(search_terms_data_));
1389 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_)); 1390 ASSERT_TRUE(url.url_ref().SupportsReplacement(search_terms_data_));
1390 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo")); 1391 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
1391 1392
1392 // Do not add the param when InstantExtended is suppressed on SRPs. 1393 // Do not add the param when InstantExtended is suppressed on SRPs.
1393 url.url_ref_.showing_search_terms_ = false; 1394 url.url_ref_.showing_search_terms_ = false;
1394 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1395 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1395 search_terms_data_); 1396 search_terms_data_);
1396 EXPECT_EQ("http://www.google.com/?q=foo", result); 1397 EXPECT_EQ("http://www.google.com/?q=foo", result);
1397 1398
1398 // Add the param when InstantExtended is not suppressed on SRPs. 1399 // Add the param when InstantExtended is not suppressed on SRPs.
1399 url.url_ref_.showing_search_terms_ = true; 1400 url.url_ref_.showing_search_terms_ = true;
1400 search_terms_args.bookmark_bar_pinned = false; 1401 search_terms_args.bookmark_bar_pinned = false;
1401 result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1402 result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1402 search_terms_data_); 1403 search_terms_data_);
1403 EXPECT_EQ("http://www.google.com/?bmbp=0&q=foo", result); 1404 EXPECT_EQ("http://www.google.com/?bmbp=0&q=foo", result);
1404 1405
1405 url.url_ref_.showing_search_terms_ = true; 1406 url.url_ref_.showing_search_terms_ = true;
1406 search_terms_args.bookmark_bar_pinned = true; 1407 search_terms_args.bookmark_bar_pinned = true;
1407 result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1408 result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1408 search_terms_data_); 1409 search_terms_data_);
1409 EXPECT_EQ("http://www.google.com/?bmbp=1&q=foo", result); 1410 EXPECT_EQ("http://www.google.com/?bmbp=1&q=foo", result);
1410 } 1411 }
1411 1412
1412 TEST_F(TemplateURLTest, AnswersHasVersion) { 1413 TEST_F(TemplateURLTest, AnswersHasVersion) {
1413 TemplateURLData data; 1414 TemplateURLData data;
1414 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/"); 1415 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/");
1415 data.SetURL("http://bar/search?q={searchTerms}&{google:searchVersion}xssi=t"); 1416 data.SetURL("http://bar/search?q={searchTerms}&{google:searchVersion}xssi=t");
1416 1417
1417 TemplateURL url(NULL, data); 1418 TemplateURL url(data);
1418 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo")); 1419 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
1419 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1420 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1420 search_terms_data_); 1421 search_terms_data_);
1421 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result); 1422 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result);
1422 1423
1423 CommandLine::ForCurrentProcess()->AppendSwitch( 1424 CommandLine::ForCurrentProcess()->AppendSwitch(
1424 switches::kEnableAnswersInSuggest); 1425 switches::kEnableAnswersInSuggest);
1425 TemplateURL url2(NULL, data); 1426 TemplateURL url2(data);
1426 result = url2.url_ref().ReplaceSearchTerms(search_terms_args, 1427 result = url2.url_ref().ReplaceSearchTerms(search_terms_args,
1427 search_terms_data_); 1428 search_terms_data_);
1428 EXPECT_EQ("http://bar/search?q=foo&gs_rn=42&xssi=t", result); 1429 EXPECT_EQ("http://bar/search?q=foo&gs_rn=42&xssi=t", result);
1429 } 1430 }
1430 1431
1431 TEST_F(TemplateURLTest, SessionToken) { 1432 TEST_F(TemplateURLTest, SessionToken) {
1432 TemplateURLData data; 1433 TemplateURLData data;
1433 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/"); 1434 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/");
1434 data.SetURL("http://bar/search?q={searchTerms}&{google:sessionToken}xssi=t"); 1435 data.SetURL("http://bar/search?q={searchTerms}&{google:sessionToken}xssi=t");
1435 1436
1436 TemplateURL url(NULL, data); 1437 TemplateURL url(data);
1437 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo")); 1438 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
1438 search_terms_args.session_token = "SESSIONTOKENGOESHERE"; 1439 search_terms_args.session_token = "SESSIONTOKENGOESHERE";
1439 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1440 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1440 search_terms_data_); 1441 search_terms_data_);
1441 EXPECT_EQ("http://bar/search?q=foo&psi=SESSIONTOKENGOESHERE&xssi=t", result); 1442 EXPECT_EQ("http://bar/search?q=foo&psi=SESSIONTOKENGOESHERE&xssi=t", result);
1442 1443
1443 TemplateURL url2(NULL, data); 1444 TemplateURL url2(data);
1444 search_terms_args.session_token = ""; 1445 search_terms_args.session_token = "";
1445 result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1446 result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1446 search_terms_data_); 1447 search_terms_data_);
1447 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result); 1448 EXPECT_EQ("http://bar/search?q=foo&xssi=t", result);
1448 } 1449 }
1449 1450
1450 TEST_F(TemplateURLTest, ContextualSearchParameters) { 1451 TEST_F(TemplateURLTest, ContextualSearchParameters) {
1451 TemplateURLData data; 1452 TemplateURLData data;
1452 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/"); 1453 UIThreadSearchTermsData::SetGoogleBaseURL("http://bar/");
1453 data.SetURL("http://bar/_/contextualsearch?" 1454 data.SetURL("http://bar/_/contextualsearch?"
1454 "{google:contextualSearchVersion}" 1455 "{google:contextualSearchVersion}"
1455 "{google:contextualSearchContextData}"); 1456 "{google:contextualSearchContextData}");
1456 1457
1457 TemplateURL url(NULL, data); 1458 TemplateURL url(data);
1458 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo")); 1459 TemplateURLRef::SearchTermsArgs search_terms_args(ASCIIToUTF16("foo"));
1459 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1460 std::string result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1460 search_terms_data_); 1461 search_terms_data_);
1461 EXPECT_EQ("http://bar/_/contextualsearch?", result); 1462 EXPECT_EQ("http://bar/_/contextualsearch?", result);
1462 1463
1463 TemplateURLRef::SearchTermsArgs::ContextualSearchParams params( 1464 TemplateURLRef::SearchTermsArgs::ContextualSearchParams params(
1464 1, 6, 11, "allen", "woody+allen+movies", "www.wikipedia.org", 1465 1, 6, 11, "allen", "woody+allen+movies", "www.wikipedia.org",
1465 "utf-8"); 1466 "utf-8");
1466 search_terms_args.contextual_search_params = params; 1467 search_terms_args.contextual_search_params = params;
1467 result = url.url_ref().ReplaceSearchTerms(search_terms_args, 1468 result = url.url_ref().ReplaceSearchTerms(search_terms_args,
1468 search_terms_data_); 1469 search_terms_data_);
1469 EXPECT_EQ("http://bar/_/contextualsearch?" 1470 EXPECT_EQ("http://bar/_/contextualsearch?"
1470 "ctxs=1&" 1471 "ctxs=1&"
1471 "ctxs_start=6&" 1472 "ctxs_start=6&"
1472 "ctxs_end=11&" 1473 "ctxs_end=11&"
1473 "q=allen&" 1474 "q=allen&"
1474 "ctxs_content=woody+allen+movies&" 1475 "ctxs_content=woody+allen+movies&"
1475 "ctxs_url=www.wikipedia.org&" 1476 "ctxs_url=www.wikipedia.org&"
1476 "ctxs_encoding=utf-8&", result); 1477 "ctxs_encoding=utf-8&", result);
1477 } 1478 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698