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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 TEST_F(TemplateURLTest, Defaults) { | 60 TEST_F(TemplateURLTest, Defaults) { |
61 TemplateURLData data; | 61 TemplateURLData data; |
62 EXPECT_FALSE(data.show_in_default_list); | 62 EXPECT_FALSE(data.show_in_default_list); |
63 EXPECT_FALSE(data.safe_for_autoreplace); | 63 EXPECT_FALSE(data.safe_for_autoreplace); |
64 EXPECT_EQ(0, data.prepopulate_id); | 64 EXPECT_EQ(0, data.prepopulate_id); |
65 } | 65 } |
66 | 66 |
67 TEST_F(TemplateURLTest, TestValidWithComplete) { | 67 TEST_F(TemplateURLTest, TestValidWithComplete) { |
68 TemplateURLData data; | 68 TemplateURLData data; |
69 data.SetURL("{searchTerms}"); | 69 data.SetURL("{searchTerms}"); |
70 TemplateURL url(data); | 70 TemplateURL url(NULL, data); |
71 EXPECT_TRUE(url.url_ref().IsValid()); | 71 EXPECT_TRUE(url.url_ref().IsValid()); |
72 } | 72 } |
73 | 73 |
74 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { | 74 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { |
75 struct SearchTermsCase { | 75 struct SearchTermsCase { |
76 const char* url; | 76 const char* url; |
77 const string16 terms; | 77 const string16 terms; |
78 const std::string output; | 78 const std::string output; |
79 bool valid_url; | 79 bool valid_url; |
80 } search_term_cases[] = { | 80 } search_term_cases[] = { |
81 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), | 81 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), |
82 "http://foosea%20rch%2Fbar", false }, | 82 "http://foosea%20rch%2Fbar", false }, |
83 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), | 83 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), |
84 "http://foosea%20rch%2Fbar?boo=abc", false }, | 84 "http://foosea%20rch%2Fbar?boo=abc", false }, |
85 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), | 85 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), |
86 "http://foo/?boo=sea+rch%2Fbar", true }, | 86 "http://foo/?boo=sea+rch%2Fbar", true }, |
87 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), | 87 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), |
88 "http://en.wikipedia.org/wiki%2F%3F", true } | 88 "http://en.wikipedia.org/wiki%2F%3F", true } |
89 }; | 89 }; |
90 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { | 90 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
91 const SearchTermsCase& value = search_term_cases[i]; | 91 const SearchTermsCase& value = search_term_cases[i]; |
92 TemplateURLData data; | 92 TemplateURLData data; |
93 data.SetURL(value.url); | 93 data.SetURL(value.url); |
94 TemplateURL url(data); | 94 TemplateURL url(NULL, data); |
95 EXPECT_TRUE(url.url_ref().IsValid()); | 95 EXPECT_TRUE(url.url_ref().IsValid()); |
96 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 96 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
97 std::string result = url.url_ref().ReplaceSearchTerms(value.terms, | 97 std::string result = url.url_ref().ReplaceSearchTerms(value.terms, |
98 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()); | 98 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()); |
99 EXPECT_EQ(value.output, result); | 99 EXPECT_EQ(value.output, result); |
100 GURL result_url(result); | 100 GURL result_url(result); |
101 EXPECT_EQ(value.valid_url, result_url.is_valid()); | 101 EXPECT_EQ(value.valid_url, result_url.is_valid()); |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 TEST_F(TemplateURLTest, URLRefTestCount) { | 105 TEST_F(TemplateURLTest, URLRefTestCount) { |
106 TemplateURLData data; | 106 TemplateURLData data; |
107 data.SetURL("http://foo{searchTerms}{count?}"); | 107 data.SetURL("http://foo{searchTerms}{count?}"); |
108 TemplateURL url(data); | 108 TemplateURL url(NULL, data); |
109 EXPECT_TRUE(url.url_ref().IsValid()); | 109 EXPECT_TRUE(url.url_ref().IsValid()); |
110 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 110 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
111 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 111 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
112 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 112 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
113 ASSERT_TRUE(result.is_valid()); | 113 ASSERT_TRUE(result.is_valid()); |
114 EXPECT_EQ("http://foox/", result.spec()); | 114 EXPECT_EQ("http://foox/", result.spec()); |
115 } | 115 } |
116 | 116 |
117 TEST_F(TemplateURLTest, URLRefTestCount2) { | 117 TEST_F(TemplateURLTest, URLRefTestCount2) { |
118 TemplateURLData data; | 118 TemplateURLData data; |
119 data.SetURL("http://foo{searchTerms}{count}"); | 119 data.SetURL("http://foo{searchTerms}{count}"); |
120 TemplateURL url(data); | 120 TemplateURL url(NULL, data); |
121 EXPECT_TRUE(url.url_ref().IsValid()); | 121 EXPECT_TRUE(url.url_ref().IsValid()); |
122 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 122 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
123 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 123 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
124 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 124 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
125 ASSERT_TRUE(result.is_valid()); | 125 ASSERT_TRUE(result.is_valid()); |
126 EXPECT_EQ("http://foox10/", result.spec()); | 126 EXPECT_EQ("http://foox10/", result.spec()); |
127 } | 127 } |
128 | 128 |
129 TEST_F(TemplateURLTest, URLRefTestIndices) { | 129 TEST_F(TemplateURLTest, URLRefTestIndices) { |
130 TemplateURLData data; | 130 TemplateURLData data; |
131 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); | 131 data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); |
132 TemplateURL url(data); | 132 TemplateURL url(NULL, data); |
133 EXPECT_TRUE(url.url_ref().IsValid()); | 133 EXPECT_TRUE(url.url_ref().IsValid()); |
134 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 134 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
135 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 135 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
136 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 136 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
137 ASSERT_TRUE(result.is_valid()); | 137 ASSERT_TRUE(result.is_valid()); |
138 EXPECT_EQ("http://fooxxy/", result.spec()); | 138 EXPECT_EQ("http://fooxxy/", result.spec()); |
139 } | 139 } |
140 | 140 |
141 TEST_F(TemplateURLTest, URLRefTestIndices2) { | 141 TEST_F(TemplateURLTest, URLRefTestIndices2) { |
142 TemplateURLData data; | 142 TemplateURLData data; |
143 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); | 143 data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); |
144 TemplateURL url(data); | 144 TemplateURL url(NULL, data); |
145 EXPECT_TRUE(url.url_ref().IsValid()); | 145 EXPECT_TRUE(url.url_ref().IsValid()); |
146 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 146 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
147 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 147 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
148 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 148 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
149 ASSERT_TRUE(result.is_valid()); | 149 ASSERT_TRUE(result.is_valid()); |
150 EXPECT_EQ("http://fooxx1y1/", result.spec()); | 150 EXPECT_EQ("http://fooxx1y1/", result.spec()); |
151 } | 151 } |
152 | 152 |
153 TEST_F(TemplateURLTest, URLRefTestEncoding) { | 153 TEST_F(TemplateURLTest, URLRefTestEncoding) { |
154 TemplateURLData data; | 154 TemplateURLData data; |
155 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); | 155 data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); |
156 TemplateURL url(data); | 156 TemplateURL url(NULL, data); |
157 EXPECT_TRUE(url.url_ref().IsValid()); | 157 EXPECT_TRUE(url.url_ref().IsValid()); |
158 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 158 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
159 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 159 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
160 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 160 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
161 ASSERT_TRUE(result.is_valid()); | 161 ASSERT_TRUE(result.is_valid()); |
162 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); | 162 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); |
163 } | 163 } |
164 | 164 |
165 // Test that setting the prepopulate ID from TemplateURL causes the stored | 165 // Test that setting the prepopulate ID from TemplateURL causes the stored |
166 // TemplateURLRef to handle parsing the URL parameters differently. | 166 // TemplateURLRef to handle parsing the URL parameters differently. |
167 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { | 167 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { |
168 TemplateURLData data; | 168 TemplateURLData data; |
169 data.SetURL("http://foo{fhqwhgads}"); | 169 data.SetURL("http://foo{fhqwhgads}"); |
170 TemplateURL url(data); | 170 TemplateURL url(NULL, data); |
171 TemplateURLRef::Replacements replacements; | 171 TemplateURLRef::Replacements replacements; |
172 bool valid = false; | 172 bool valid = false; |
173 EXPECT_EQ("http://foo{fhqwhgads}", | 173 EXPECT_EQ("http://foo{fhqwhgads}", |
174 url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); | 174 url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); |
175 EXPECT_TRUE(replacements.empty()); | 175 EXPECT_TRUE(replacements.empty()); |
176 EXPECT_TRUE(valid); | 176 EXPECT_TRUE(valid); |
177 | 177 |
178 data.prepopulate_id = 123; | 178 data.prepopulate_id = 123; |
179 TemplateURL url2(data); | 179 TemplateURL url2(NULL, data); |
180 EXPECT_EQ("http://foo", url2.url_ref().ParseURL("http://foo{fhqwhgads}", | 180 EXPECT_EQ("http://foo", url2.url_ref().ParseURL("http://foo{fhqwhgads}", |
181 &replacements, &valid)); | 181 &replacements, &valid)); |
182 EXPECT_TRUE(replacements.empty()); | 182 EXPECT_TRUE(replacements.empty()); |
183 EXPECT_TRUE(valid); | 183 EXPECT_TRUE(valid); |
184 } | 184 } |
185 | 185 |
186 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { | 186 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { |
187 TemplateURLData data; | 187 TemplateURLData data; |
188 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); | 188 data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); |
189 TemplateURL url(data); | 189 TemplateURL url(NULL, data); |
190 EXPECT_TRUE(url.url_ref().IsValid()); | 190 EXPECT_TRUE(url.url_ref().IsValid()); |
191 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 191 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
192 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 192 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
193 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 193 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
194 ASSERT_TRUE(result.is_valid()); | 194 ASSERT_TRUE(result.is_valid()); |
195 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); | 195 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); |
196 } | 196 } |
197 | 197 |
198 TEST_F(TemplateURLTest, URLRefTestEncoding2) { | 198 TEST_F(TemplateURLTest, URLRefTestEncoding2) { |
199 TemplateURLData data; | 199 TemplateURLData data; |
200 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); | 200 data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); |
201 TemplateURL url(data); | 201 TemplateURL url(NULL, data); |
202 EXPECT_TRUE(url.url_ref().IsValid()); | 202 EXPECT_TRUE(url.url_ref().IsValid()); |
203 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 203 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
204 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 204 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
205 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 205 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
206 ASSERT_TRUE(result.is_valid()); | 206 ASSERT_TRUE(result.is_valid()); |
207 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); | 207 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); |
208 } | 208 } |
209 | 209 |
210 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { | 210 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { |
211 struct SearchTermsCase { | 211 struct SearchTermsCase { |
212 const char* url; | 212 const char* url; |
213 const string16 terms; | 213 const string16 terms; |
214 const char* output; | 214 const char* output; |
215 } search_term_cases[] = { | 215 } search_term_cases[] = { |
216 { "{google:baseURL}{language}{searchTerms}", string16(), | 216 { "{google:baseURL}{language}{searchTerms}", string16(), |
217 "http://example.com/e/en" }, | 217 "http://example.com/e/en" }, |
218 { "{google:baseSuggestURL}{searchTerms}", string16(), | 218 { "{google:baseSuggestURL}{searchTerms}", string16(), |
219 "http://example.com/complete/" } | 219 "http://example.com/complete/" } |
220 }; | 220 }; |
221 | 221 |
222 TestSearchTermsData search_terms_data("http://example.com/e/"); | 222 TestSearchTermsData search_terms_data("http://example.com/e/"); |
223 TemplateURLData data; | 223 TemplateURLData data; |
224 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { | 224 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
225 const SearchTermsCase& value = search_term_cases[i]; | 225 const SearchTermsCase& value = search_term_cases[i]; |
226 data.SetURL(value.url); | 226 data.SetURL(value.url); |
227 TemplateURL url(data); | 227 TemplateURL url(NULL, data); |
228 EXPECT_TRUE(url.url_ref().IsValid()); | 228 EXPECT_TRUE(url.url_ref().IsValid()); |
229 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 229 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
230 GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms, | 230 GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms, |
231 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), | 231 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), |
232 search_terms_data)); | 232 search_terms_data)); |
233 ASSERT_TRUE(result.is_valid()); | 233 ASSERT_TRUE(result.is_valid()); |
234 EXPECT_EQ(value.output, result.spec()); | 234 EXPECT_EQ(value.output, result.spec()); |
235 } | 235 } |
236 } | 236 } |
237 | 237 |
(...skipping 14 matching lines...) Expand all Loading... |
252 // Make sure we convert %2B to +. | 252 // Make sure we convert %2B to +. |
253 {"C%2B%2B", ASCIIToUTF16("C++")}, | 253 {"C%2B%2B", ASCIIToUTF16("C++")}, |
254 // C%2B is escaped as C%252B, make sure we unescape it properly. | 254 // C%2B is escaped as C%252B, make sure we unescape it properly. |
255 {"C%252B", ASCIIToUTF16("C%2B")}, | 255 {"C%252B", ASCIIToUTF16("C%2B")}, |
256 }; | 256 }; |
257 | 257 |
258 // Set one input encoding: big-5. This is so we can test fallback to UTF-8. | 258 // Set one input encoding: big-5. This is so we can test fallback to UTF-8. |
259 TemplateURLData data; | 259 TemplateURLData data; |
260 data.SetURL("http://foo?q={searchTerms}"); | 260 data.SetURL("http://foo?q={searchTerms}"); |
261 data.input_encodings.push_back("big-5"); | 261 data.input_encodings.push_back("big-5"); |
262 TemplateURL url(data); | 262 TemplateURL url(NULL, data); |
263 EXPECT_TRUE(url.url_ref().IsValid()); | 263 EXPECT_TRUE(url.url_ref().IsValid()); |
264 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 264 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
265 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { | 265 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { |
266 EXPECT_EQ(to_wide_cases[i].expected_decoded_term, | 266 EXPECT_EQ(to_wide_cases[i].expected_decoded_term, |
267 url.url_ref().SearchTermToString16( | 267 url.url_ref().SearchTermToString16( |
268 to_wide_cases[i].encoded_search_term)); | 268 to_wide_cases[i].encoded_search_term)); |
269 } | 269 } |
270 } | 270 } |
271 | 271 |
272 TEST_F(TemplateURLTest, DisplayURLToURLRef) { | 272 TEST_F(TemplateURLTest, DisplayURLToURLRef) { |
273 struct TestData { | 273 struct TestData { |
274 const std::string url; | 274 const std::string url; |
275 const string16 expected_result; | 275 const string16 expected_result; |
276 } test_data[] = { | 276 } test_data[] = { |
277 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a", | 277 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a", |
278 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") }, | 278 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") }, |
279 { "http://X", | 279 { "http://X", |
280 ASCIIToUTF16("http://X") }, | 280 ASCIIToUTF16("http://X") }, |
281 { "http://foo{searchTerms", | 281 { "http://foo{searchTerms", |
282 ASCIIToUTF16("http://foo{searchTerms") }, | 282 ASCIIToUTF16("http://foo{searchTerms") }, |
283 { "http://foo{searchTerms}{language}", | 283 { "http://foo{searchTerms}{language}", |
284 ASCIIToUTF16("http://foo%s{language}") }, | 284 ASCIIToUTF16("http://foo%s{language}") }, |
285 }; | 285 }; |
286 TemplateURLData data; | 286 TemplateURLData data; |
287 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 287 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
288 data.SetURL(test_data[i].url); | 288 data.SetURL(test_data[i].url); |
289 TemplateURL url(data); | 289 TemplateURL url(NULL, data); |
290 EXPECT_EQ(test_data[i].expected_result, url.url_ref().DisplayURL()); | 290 EXPECT_EQ(test_data[i].expected_result, url.url_ref().DisplayURL()); |
291 EXPECT_EQ(test_data[i].url, | 291 EXPECT_EQ(test_data[i].url, |
292 TemplateURLRef::DisplayURLToURLRef(url.url_ref().DisplayURL())); | 292 TemplateURLRef::DisplayURLToURLRef(url.url_ref().DisplayURL())); |
293 } | 293 } |
294 } | 294 } |
295 | 295 |
296 TEST_F(TemplateURLTest, ReplaceSearchTerms) { | 296 TEST_F(TemplateURLTest, ReplaceSearchTerms) { |
297 struct TestData { | 297 struct TestData { |
298 const std::string url; | 298 const std::string url; |
299 const std::string expected_result; | 299 const std::string expected_result; |
(...skipping 20 matching lines...) Expand all Loading... |
320 "http://foo/XaUTF-8a{language}a" }, | 320 "http://foo/XaUTF-8a{language}a" }, |
321 { "http://foo/{inputEncoding}a{searchTerms}a{language}a", | 321 { "http://foo/{inputEncoding}a{searchTerms}a{language}a", |
322 "http://foo/UTF-8aXa{language}a" }, | 322 "http://foo/UTF-8aXa{language}a" }, |
323 { "http://foo/{inputEncoding}a{language}a{searchTerms}a", | 323 { "http://foo/{inputEncoding}a{language}a{searchTerms}a", |
324 "http://foo/UTF-8a{language}aXa" }, | 324 "http://foo/UTF-8a{language}aXa" }, |
325 }; | 325 }; |
326 TemplateURLData data; | 326 TemplateURLData data; |
327 data.input_encodings.push_back("UTF-8"); | 327 data.input_encodings.push_back("UTF-8"); |
328 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 328 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
329 data.SetURL(test_data[i].url); | 329 data.SetURL(test_data[i].url); |
330 TemplateURL url(data); | 330 TemplateURL url(NULL, data); |
331 EXPECT_TRUE(url.url_ref().IsValid()); | 331 EXPECT_TRUE(url.url_ref().IsValid()); |
332 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 332 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
333 std::string expected_result = test_data[i].expected_result; | 333 std::string expected_result = test_data[i].expected_result; |
334 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", | 334 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", |
335 g_browser_process->GetApplicationLocale()); | 335 g_browser_process->GetApplicationLocale()); |
336 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), | 336 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
337 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 337 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
338 ASSERT_TRUE(result.is_valid()); | 338 ASSERT_TRUE(result.is_valid()); |
339 EXPECT_EQ(expected_result, result.spec()); | 339 EXPECT_EQ(expected_result, result.spec()); |
340 } | 340 } |
(...skipping 20 matching lines...) Expand all Loading... |
361 "http://foo/%82%A0/bar"}, | 361 "http://foo/%82%A0/bar"}, |
362 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"), | 362 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"), |
363 "http://foo/{searchTerms}/bar", | 363 "http://foo/{searchTerms}/bar", |
364 "http://foo/%82%A0%20%82%A2/bar"}, | 364 "http://foo/%82%A0%20%82%A2/bar"}, |
365 }; | 365 }; |
366 TemplateURLData data; | 366 TemplateURLData data; |
367 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 367 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
368 data.SetURL(test_data[i].url); | 368 data.SetURL(test_data[i].url); |
369 data.input_encodings.clear(); | 369 data.input_encodings.clear(); |
370 data.input_encodings.push_back(test_data[i].encoding); | 370 data.input_encodings.push_back(test_data[i].encoding); |
371 TemplateURL url(data); | 371 TemplateURL url(NULL, data); |
372 EXPECT_TRUE(url.url_ref().IsValid()); | 372 EXPECT_TRUE(url.url_ref().IsValid()); |
373 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 373 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
374 GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term, | 374 GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term, |
375 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 375 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
376 ASSERT_TRUE(result.is_valid()); | 376 ASSERT_TRUE(result.is_valid()); |
377 EXPECT_EQ(test_data[i].expected_result, result.spec()); | 377 EXPECT_EQ(test_data[i].expected_result, result.spec()); |
378 } | 378 } |
379 } | 379 } |
380 | 380 |
381 TEST_F(TemplateURLTest, Suggestions) { | 381 TEST_F(TemplateURLTest, Suggestions) { |
(...skipping 10 matching lines...) Expand all Loading... |
392 "http://bar/foo?aq=f&q=foobar" }, | 392 "http://bar/foo?aq=f&q=foobar" }, |
393 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), | 393 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), |
394 "http://bar/foo?aq=f&q=foobar" }, | 394 "http://bar/foo?aq=f&q=foobar" }, |
395 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, | 395 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, |
396 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, | 396 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, |
397 }; | 397 }; |
398 TemplateURLData data; | 398 TemplateURLData data; |
399 data.SetURL("http://bar/foo?{google:acceptedSuggestion}" | 399 data.SetURL("http://bar/foo?{google:acceptedSuggestion}" |
400 "{google:originalQueryForSuggestion}q={searchTerms}"); | 400 "{google:originalQueryForSuggestion}q={searchTerms}"); |
401 data.input_encodings.push_back("UTF-8"); | 401 data.input_encodings.push_back("UTF-8"); |
402 TemplateURL url(data); | 402 TemplateURL url(NULL, data); |
403 EXPECT_TRUE(url.url_ref().IsValid()); | 403 EXPECT_TRUE(url.url_ref().IsValid()); |
404 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 404 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
405 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 405 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
406 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("foobar"), | 406 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("foobar"), |
407 test_data[i].accepted_suggestion, | 407 test_data[i].accepted_suggestion, |
408 test_data[i].original_query_for_suggestion)); | 408 test_data[i].original_query_for_suggestion)); |
409 ASSERT_TRUE(result.is_valid()); | 409 ASSERT_TRUE(result.is_valid()); |
410 EXPECT_EQ(test_data[i].expected_result, result.spec()); | 410 EXPECT_EQ(test_data[i].expected_result, result.spec()); |
411 } | 411 } |
412 } | 412 } |
413 | 413 |
414 #if defined(OS_WIN) || defined(OS_MACOSX) | 414 #if defined(OS_WIN) || defined(OS_MACOSX) |
415 TEST_F(TemplateURLTest, RLZ) { | 415 TEST_F(TemplateURLTest, RLZ) { |
416 string16 rlz_string; | 416 string16 rlz_string; |
417 #if defined(ENABLE_RLZ) | 417 #if defined(ENABLE_RLZ) |
418 std::string brand; | 418 std::string brand; |
419 if (google_util::GetBrand(&brand) && !brand.empty() && | 419 if (google_util::GetBrand(&brand) && !brand.empty() && |
420 !google_util::IsOrganic(brand)) { | 420 !google_util::IsOrganic(brand)) { |
421 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string); | 421 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string); |
422 } | 422 } |
423 #endif | 423 #endif |
424 | 424 |
425 TemplateURLData data; | 425 TemplateURLData data; |
426 data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); | 426 data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); |
427 TemplateURL url(data); | 427 TemplateURL url(NULL, data); |
428 EXPECT_TRUE(url.url_ref().IsValid()); | 428 EXPECT_TRUE(url.url_ref().IsValid()); |
429 ASSERT_TRUE(url.url_ref().SupportsReplacement()); | 429 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
430 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"), | 430 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"), |
431 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 431 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
432 ASSERT_TRUE(result.is_valid()); | 432 ASSERT_TRUE(result.is_valid()); |
433 std::string expected_url = "http://bar/?"; | 433 std::string expected_url = "http://bar/?"; |
434 if (!rlz_string.empty()) | 434 if (!rlz_string.empty()) |
435 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&"; | 435 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&"; |
436 expected_url += "x"; | 436 expected_url += "x"; |
437 EXPECT_EQ(expected_url, result.spec()); | 437 EXPECT_EQ(expected_url, result.spec()); |
(...skipping 23 matching lines...) Expand all Loading... |
461 | 461 |
462 { "http://blah/?q={searchTerms}", "blah", "/", "q"}, | 462 { "http://blah/?q={searchTerms}", "blah", "/", "q"}, |
463 | 463 |
464 // Single term with extra chars in value should match. | 464 // Single term with extra chars in value should match. |
465 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, | 465 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, |
466 }; | 466 }; |
467 | 467 |
468 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 468 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
469 TemplateURLData data; | 469 TemplateURLData data; |
470 data.SetURL(test_data[i].url); | 470 data.SetURL(test_data[i].url); |
471 TemplateURL url(data); | 471 TemplateURL url(NULL, data); |
472 EXPECT_EQ(test_data[i].host, url.url_ref().GetHost()); | 472 EXPECT_EQ(test_data[i].host, url.url_ref().GetHost()); |
473 EXPECT_EQ(test_data[i].path, url.url_ref().GetPath()); | 473 EXPECT_EQ(test_data[i].path, url.url_ref().GetPath()); |
474 EXPECT_EQ(test_data[i].search_term_key, url.url_ref().GetSearchTermKey()); | 474 EXPECT_EQ(test_data[i].search_term_key, url.url_ref().GetSearchTermKey()); |
475 } | 475 } |
476 } | 476 } |
477 | 477 |
478 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) { | 478 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) { |
479 static const struct { | 479 static const struct { |
480 const char* const base_url; | 480 const char* const base_url; |
481 const char* const base_suggest_url; | 481 const char* const base_suggest_url; |
482 } data[] = { | 482 } data[] = { |
483 { "http://google.com/", "http://google.com/complete/", }, | 483 { "http://google.com/", "http://google.com/complete/", }, |
484 { "http://www.google.com/", "http://www.google.com/complete/", }, | 484 { "http://www.google.com/", "http://www.google.com/complete/", }, |
485 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", }, | 485 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", }, |
486 { "http://www.google.com.by/", "http://www.google.com.by/complete/", }, | 486 { "http://www.google.com.by/", "http://www.google.com.by/complete/", }, |
487 { "http://google.com/intl/xx/", "http://google.com/complete/", }, | 487 { "http://google.com/intl/xx/", "http://google.com/complete/", }, |
488 }; | 488 }; |
489 | 489 |
490 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) | 490 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) |
491 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url); | 491 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url); |
492 } | 492 } |
493 | 493 |
494 TEST_F(TemplateURLTest, Keyword) { | 494 TEST_F(TemplateURLTest, Keyword) { |
495 TemplateURLData data; | 495 TemplateURLData data; |
496 data.SetURL("http://www.google.com/search"); | 496 data.SetURL("http://www.google.com/search"); |
497 EXPECT_FALSE(data.autogenerate_keyword()); | 497 EXPECT_FALSE(data.autogenerate_keyword()); |
498 data.SetKeyword(ASCIIToUTF16("foo")); | 498 data.SetKeyword(ASCIIToUTF16("foo")); |
499 EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(data).keyword()); | 499 EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(NULL, data).keyword()); |
500 data.SetAutogenerateKeyword(true); | 500 data.SetAutogenerateKeyword(true); |
501 EXPECT_TRUE(data.autogenerate_keyword()); | 501 EXPECT_TRUE(data.autogenerate_keyword()); |
502 EXPECT_EQ(ASCIIToUTF16("google.com"), TemplateURL(data).keyword()); | 502 EXPECT_EQ(ASCIIToUTF16("google.com"), TemplateURL(NULL, data).keyword()); |
503 data.SetKeyword(ASCIIToUTF16("foo")); | 503 data.SetKeyword(ASCIIToUTF16("foo")); |
504 EXPECT_FALSE(data.autogenerate_keyword()); | 504 EXPECT_FALSE(data.autogenerate_keyword()); |
505 EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(data).keyword()); | 505 EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(NULL, data).keyword()); |
506 } | 506 } |
507 | 507 |
508 TEST_F(TemplateURLTest, ParseParameterKnown) { | 508 TEST_F(TemplateURLTest, ParseParameterKnown) { |
509 std::string parsed_url("{searchTerms}"); | 509 std::string parsed_url("{searchTerms}"); |
510 TemplateURLData data; | 510 TemplateURLData data; |
511 data.SetURL(parsed_url); | 511 data.SetURL(parsed_url); |
512 TemplateURL url(data); | 512 TemplateURL url(NULL, data); |
513 TemplateURLRef::Replacements replacements; | 513 TemplateURLRef::Replacements replacements; |
514 EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements)); | 514 EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements)); |
515 EXPECT_EQ(std::string(), parsed_url); | 515 EXPECT_EQ(std::string(), parsed_url); |
516 ASSERT_EQ(1U, replacements.size()); | 516 ASSERT_EQ(1U, replacements.size()); |
517 EXPECT_EQ(0U, replacements[0].index); | 517 EXPECT_EQ(0U, replacements[0].index); |
518 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 518 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
519 } | 519 } |
520 | 520 |
521 TEST_F(TemplateURLTest, ParseParameterUnknown) { | 521 TEST_F(TemplateURLTest, ParseParameterUnknown) { |
522 std::string parsed_url("{fhqwhgads}"); | 522 std::string parsed_url("{fhqwhgads}"); |
523 TemplateURLData data; | 523 TemplateURLData data; |
524 data.SetURL(parsed_url); | 524 data.SetURL(parsed_url); |
525 TemplateURL url(data); | 525 TemplateURL url(NULL, data); |
526 TemplateURLRef::Replacements replacements; | 526 TemplateURLRef::Replacements replacements; |
527 | 527 |
528 // By default, TemplateURLRef should not consider itself prepopulated. | 528 // By default, TemplateURLRef should not consider itself prepopulated. |
529 // Therefore we should not replace the unknown parameter. | 529 // Therefore we should not replace the unknown parameter. |
530 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); | 530 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); |
531 EXPECT_EQ("{fhqwhgads}", parsed_url); | 531 EXPECT_EQ("{fhqwhgads}", parsed_url); |
532 EXPECT_TRUE(replacements.empty()); | 532 EXPECT_TRUE(replacements.empty()); |
533 | 533 |
534 // If the TemplateURLRef is prepopulated, we should remove unknown parameters. | 534 // If the TemplateURLRef is prepopulated, we should remove unknown parameters. |
535 parsed_url = "{fhqwhgads}"; | 535 parsed_url = "{fhqwhgads}"; |
536 data.prepopulate_id = 1; | 536 data.prepopulate_id = 1; |
537 TemplateURL url2(data); | 537 TemplateURL url2(NULL, data); |
538 EXPECT_FALSE(url2.url_ref().ParseParameter(0, 10, &parsed_url, | 538 EXPECT_FALSE(url2.url_ref().ParseParameter(0, 10, &parsed_url, |
539 &replacements)); | 539 &replacements)); |
540 EXPECT_EQ(std::string(), parsed_url); | 540 EXPECT_EQ(std::string(), parsed_url); |
541 EXPECT_TRUE(replacements.empty()); | 541 EXPECT_TRUE(replacements.empty()); |
542 } | 542 } |
543 | 543 |
544 TEST_F(TemplateURLTest, ParseURLEmpty) { | 544 TEST_F(TemplateURLTest, ParseURLEmpty) { |
545 TemplateURLData data; | 545 TemplateURL url(NULL, TemplateURLData()); |
546 TemplateURL url(data); | |
547 TemplateURLRef::Replacements replacements; | 546 TemplateURLRef::Replacements replacements; |
548 bool valid = false; | 547 bool valid = false; |
549 EXPECT_EQ(std::string(), | 548 EXPECT_EQ(std::string(), |
550 url.url_ref().ParseURL(std::string(), &replacements, &valid)); | 549 url.url_ref().ParseURL(std::string(), &replacements, &valid)); |
551 EXPECT_TRUE(replacements.empty()); | 550 EXPECT_TRUE(replacements.empty()); |
552 EXPECT_TRUE(valid); | 551 EXPECT_TRUE(valid); |
553 } | 552 } |
554 | 553 |
555 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { | 554 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { |
556 TemplateURLData data; | 555 TemplateURLData data; |
557 data.SetURL("{"); | 556 data.SetURL("{"); |
558 TemplateURL url(data); | 557 TemplateURL url(NULL, data); |
559 TemplateURLRef::Replacements replacements; | 558 TemplateURLRef::Replacements replacements; |
560 bool valid = false; | 559 bool valid = false; |
561 EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, &valid)); | 560 EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, &valid)); |
562 EXPECT_TRUE(replacements.empty()); | 561 EXPECT_TRUE(replacements.empty()); |
563 EXPECT_FALSE(valid); | 562 EXPECT_FALSE(valid); |
564 } | 563 } |
565 | 564 |
566 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { | 565 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { |
567 TemplateURLData data; | 566 TemplateURLData data; |
568 data.SetURL("{}"); | 567 data.SetURL("{}"); |
569 TemplateURL url(data); | 568 TemplateURL url(NULL, data); |
570 TemplateURLRef::Replacements replacements; | 569 TemplateURLRef::Replacements replacements; |
571 bool valid = false; | 570 bool valid = false; |
572 EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, &valid)); | 571 EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, &valid)); |
573 EXPECT_TRUE(replacements.empty()); | 572 EXPECT_TRUE(replacements.empty()); |
574 EXPECT_TRUE(valid); | 573 EXPECT_TRUE(valid); |
575 } | 574 } |
576 | 575 |
577 TEST_F(TemplateURLTest, ParseURLTwoParameters) { | 576 TEST_F(TemplateURLTest, ParseURLTwoParameters) { |
578 TemplateURLData data; | 577 TemplateURLData data; |
579 data.SetURL("{}{{%s}}"); | 578 data.SetURL("{}{{%s}}"); |
580 TemplateURL url(data); | 579 TemplateURL url(NULL, data); |
581 TemplateURLRef::Replacements replacements; | 580 TemplateURLRef::Replacements replacements; |
582 bool valid = false; | 581 bool valid = false; |
583 EXPECT_EQ("{}{}", | 582 EXPECT_EQ("{}{}", |
584 url.url_ref().ParseURL("{}{{searchTerms}}", &replacements, &valid)); | 583 url.url_ref().ParseURL("{}{{searchTerms}}", &replacements, &valid)); |
585 ASSERT_EQ(1U, replacements.size()); | 584 ASSERT_EQ(1U, replacements.size()); |
586 EXPECT_EQ(3U, replacements[0].index); | 585 EXPECT_EQ(3U, replacements[0].index); |
587 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 586 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
588 EXPECT_TRUE(valid); | 587 EXPECT_TRUE(valid); |
589 } | 588 } |
590 | 589 |
591 TEST_F(TemplateURLTest, ParseURLNestedParameter) { | 590 TEST_F(TemplateURLTest, ParseURLNestedParameter) { |
592 TemplateURLData data; | 591 TemplateURLData data; |
593 data.SetURL("{%s"); | 592 data.SetURL("{%s"); |
594 TemplateURL url(data); | 593 TemplateURL url(NULL, data); |
595 TemplateURLRef::Replacements replacements; | 594 TemplateURLRef::Replacements replacements; |
596 bool valid = false; | 595 bool valid = false; |
597 EXPECT_EQ("{", | 596 EXPECT_EQ("{", |
598 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid)); | 597 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid)); |
599 ASSERT_EQ(1U, replacements.size()); | 598 ASSERT_EQ(1U, replacements.size()); |
600 EXPECT_EQ(1U, replacements[0].index); | 599 EXPECT_EQ(1U, replacements[0].index); |
601 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 600 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
602 EXPECT_TRUE(valid); | 601 EXPECT_TRUE(valid); |
603 } | 602 } |
OLD | NEW |