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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 // Actual tests --------------------------------------------------------------- | 58 // Actual tests --------------------------------------------------------------- |
59 | 59 |
60 TEST_F(TemplateURLTest, Defaults) { | 60 TEST_F(TemplateURLTest, Defaults) { |
61 TemplateURL url; | 61 TemplateURL url; |
62 EXPECT_FALSE(url.show_in_default_list()); | 62 EXPECT_FALSE(url.show_in_default_list()); |
63 EXPECT_FALSE(url.safe_for_autoreplace()); | 63 EXPECT_FALSE(url.safe_for_autoreplace()); |
64 EXPECT_EQ(0, url.prepopulate_id()); | 64 EXPECT_EQ(0, url.prepopulate_id()); |
65 } | 65 } |
66 | 66 |
67 TEST_F(TemplateURLTest, TestValidWithComplete) { | 67 TEST_F(TemplateURLTest, TestValidWithComplete) { |
68 TemplateURL t_url; | 68 TemplateURL url; |
69 TemplateURLRef ref(&t_url, "{searchTerms}"); | 69 url.SetURL("{searchTerms}"); |
70 EXPECT_TRUE(ref.IsValid()); | 70 EXPECT_TRUE(url.url_ref().IsValid()); |
71 } | 71 } |
72 | 72 |
73 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { | 73 TEST_F(TemplateURLTest, URLRefTestSearchTerms) { |
74 struct SearchTermsCase { | 74 struct SearchTermsCase { |
75 const char* url; | 75 const char* url; |
76 const string16 terms; | 76 const string16 terms; |
77 const std::string output; | 77 const std::string output; |
78 bool valid_url; | 78 bool valid_url; |
79 } search_term_cases[] = { | 79 } search_term_cases[] = { |
80 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), | 80 { "http://foo{searchTerms}", ASCIIToUTF16("sea rch/bar"), |
81 "http://foosea%20rch%2Fbar", false }, | 81 "http://foosea%20rch%2Fbar", false }, |
82 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), | 82 { "http://foo{searchTerms}?boo=abc", ASCIIToUTF16("sea rch/bar"), |
83 "http://foosea%20rch%2Fbar?boo=abc", false }, | 83 "http://foosea%20rch%2Fbar?boo=abc", false }, |
84 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), | 84 { "http://foo/?boo={searchTerms}", ASCIIToUTF16("sea rch/bar"), |
85 "http://foo/?boo=sea+rch%2Fbar", true }, | 85 "http://foo/?boo=sea+rch%2Fbar", true }, |
86 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), | 86 { "http://en.wikipedia.org/{searchTerms}", ASCIIToUTF16("wiki/?"), |
87 "http://en.wikipedia.org/wiki%2F%3F", true } | 87 "http://en.wikipedia.org/wiki%2F%3F", true } |
88 }; | 88 }; |
89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { | 89 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
90 const SearchTermsCase& value = search_term_cases[i]; | 90 const SearchTermsCase& value = search_term_cases[i]; |
91 TemplateURL t_url; | 91 TemplateURL url; |
92 TemplateURLRef ref(&t_url, value.url); | 92 url.SetURL(value.url); |
93 ASSERT_TRUE(ref.IsValid()); | 93 EXPECT_TRUE(url.url_ref().IsValid()); |
94 | 94 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
95 ASSERT_TRUE(ref.SupportsReplacement()); | 95 std::string result = url.url_ref().ReplaceSearchTerms(value.terms, |
96 std::string result = ref.ReplaceSearchTerms(value.terms, | |
97 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()); | 96 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16()); |
98 ASSERT_EQ(value.output, result); | 97 EXPECT_EQ(value.output, result); |
99 GURL result_url(result); | 98 GURL result_url(result); |
100 ASSERT_EQ(value.valid_url, result_url.is_valid()); | 99 EXPECT_EQ(value.valid_url, result_url.is_valid()); |
101 } | 100 } |
102 } | 101 } |
103 | 102 |
104 TEST_F(TemplateURLTest, URLRefTestCount) { | 103 TEST_F(TemplateURLTest, URLRefTestCount) { |
105 TemplateURL t_url; | 104 TemplateURL url; |
106 TemplateURLRef ref(&t_url, "http://foo{searchTerms}{count?}"); | 105 url.SetURL("http://foo{searchTerms}{count?}"); |
107 ASSERT_TRUE(ref.IsValid()); | 106 EXPECT_TRUE(url.url_ref().IsValid()); |
108 ASSERT_TRUE(ref.SupportsReplacement()); | 107 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
109 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | 108 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
110 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 109 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
111 ASSERT_TRUE(result.is_valid()); | 110 ASSERT_TRUE(result.is_valid()); |
112 EXPECT_EQ("http://foox/", result.spec()); | 111 EXPECT_EQ("http://foox/", result.spec()); |
113 } | 112 } |
114 | 113 |
115 TEST_F(TemplateURLTest, URLRefTestCount2) { | 114 TEST_F(TemplateURLTest, URLRefTestCount2) { |
116 TemplateURL t_url; | 115 TemplateURL url; |
117 TemplateURLRef ref(&t_url, "http://foo{searchTerms}{count}"); | 116 url.SetURL("http://foo{searchTerms}{count}"); |
118 ASSERT_TRUE(ref.IsValid()); | 117 EXPECT_TRUE(url.url_ref().IsValid()); |
119 ASSERT_TRUE(ref.SupportsReplacement()); | 118 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
120 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | 119 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
121 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 120 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
122 ASSERT_TRUE(result.is_valid()); | 121 ASSERT_TRUE(result.is_valid()); |
123 EXPECT_EQ("http://foox10/", result.spec()); | 122 EXPECT_EQ("http://foox10/", result.spec()); |
124 } | 123 } |
125 | 124 |
126 TEST_F(TemplateURLTest, URLRefTestIndices) { | 125 TEST_F(TemplateURLTest, URLRefTestIndices) { |
127 TemplateURL t_url; | 126 TemplateURL url; |
128 TemplateURLRef ref(&t_url, | 127 url.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); |
129 "http://foo{searchTerms}x{startIndex?}y{startPage?}"); | 128 EXPECT_TRUE(url.url_ref().IsValid()); |
130 ASSERT_TRUE(ref.IsValid()); | 129 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
131 ASSERT_TRUE(ref.SupportsReplacement()); | 130 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
132 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | |
133 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 131 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
134 ASSERT_TRUE(result.is_valid()); | 132 ASSERT_TRUE(result.is_valid()); |
135 EXPECT_EQ("http://fooxxy/", result.spec()); | 133 EXPECT_EQ("http://fooxxy/", result.spec()); |
136 } | 134 } |
137 | 135 |
138 TEST_F(TemplateURLTest, URLRefTestIndices2) { | 136 TEST_F(TemplateURLTest, URLRefTestIndices2) { |
139 TemplateURL t_url; | 137 TemplateURL url; |
140 TemplateURLRef ref(&t_url, | 138 url.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); |
141 "http://foo{searchTerms}x{startIndex}y{startPage}"); | 139 EXPECT_TRUE(url.url_ref().IsValid()); |
142 ASSERT_TRUE(ref.IsValid()); | 140 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
143 ASSERT_TRUE(ref.SupportsReplacement()); | 141 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
144 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | |
145 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 142 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
146 ASSERT_TRUE(result.is_valid()); | 143 ASSERT_TRUE(result.is_valid()); |
147 EXPECT_EQ("http://fooxx1y1/", result.spec()); | 144 EXPECT_EQ("http://fooxx1y1/", result.spec()); |
148 } | 145 } |
149 | 146 |
150 TEST_F(TemplateURLTest, URLRefTestEncoding) { | 147 TEST_F(TemplateURLTest, URLRefTestEncoding) { |
151 TemplateURL t_url; | 148 TemplateURL url; |
152 TemplateURLRef ref(&t_url, | 149 url.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); |
153 "http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); | 150 EXPECT_TRUE(url.url_ref().IsValid()); |
154 ASSERT_TRUE(ref.IsValid()); | 151 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
155 ASSERT_TRUE(ref.SupportsReplacement()); | 152 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
156 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | |
157 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 153 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
158 ASSERT_TRUE(result.is_valid()); | 154 ASSERT_TRUE(result.is_valid()); |
159 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); | 155 EXPECT_EQ("http://fooxxutf-8ya/", result.spec()); |
160 } | 156 } |
161 | 157 |
162 // Test that setting the prepopulate ID from TemplateURL causes the stored | 158 // Test that setting the prepopulate ID from TemplateURL causes the stored |
163 // TemplateURLRef to handle parsing the URL parameters differently. | 159 // TemplateURLRef to handle parsing the URL parameters differently. |
164 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { | 160 TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { |
165 TemplateURL t_url; | 161 TemplateURL url; |
166 t_url.SetURL("http://foo{fhqwhgads}"); | 162 url.SetURL("http://foo{fhqwhgads}"); |
167 TemplateURLRef::Replacements replacements; | 163 TemplateURLRef::Replacements replacements; |
168 bool valid = false; | 164 bool valid = false; |
169 EXPECT_EQ("http://foo{fhqwhgads}", | 165 EXPECT_EQ("http://foo{fhqwhgads}", |
170 t_url.url()->ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); | 166 url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); |
171 EXPECT_TRUE(replacements.empty()); | 167 EXPECT_TRUE(replacements.empty()); |
172 EXPECT_TRUE(valid); | 168 EXPECT_TRUE(valid); |
173 | 169 |
174 t_url.SetPrepopulateId(123); | 170 url.SetPrepopulateId(123); |
175 EXPECT_EQ("http://foo", | 171 EXPECT_EQ("http://foo", |
176 t_url.url()->ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); | 172 url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); |
177 EXPECT_TRUE(replacements.empty()); | 173 EXPECT_TRUE(replacements.empty()); |
178 EXPECT_TRUE(valid); | 174 EXPECT_TRUE(valid); |
179 } | 175 } |
180 | 176 |
181 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { | 177 TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { |
182 TemplateURL t_url; | 178 TemplateURL url; |
183 TemplateURLRef ref(&t_url, | 179 url.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); |
184 "http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); | 180 EXPECT_TRUE(url.url_ref().IsValid()); |
185 ASSERT_TRUE(ref.IsValid()); | 181 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
186 ASSERT_TRUE(ref.SupportsReplacement()); | 182 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
187 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | |
188 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 183 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
189 ASSERT_TRUE(result.is_valid()); | 184 ASSERT_TRUE(result.is_valid()); |
190 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); | 185 EXPECT_EQ("http://fooxutf-8axyb/", result.spec()); |
191 } | 186 } |
192 | 187 |
193 TEST_F(TemplateURLTest, URLRefTestEncoding2) { | 188 TEST_F(TemplateURLTest, URLRefTestEncoding2) { |
194 TemplateURL t_url; | 189 TemplateURL url; |
195 TemplateURLRef ref(&t_url, | 190 url.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); |
196 "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); | 191 EXPECT_TRUE(url.url_ref().IsValid()); |
197 ASSERT_TRUE(ref.IsValid()); | 192 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
198 ASSERT_TRUE(ref.SupportsReplacement()); | 193 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
199 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | |
200 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 194 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
201 ASSERT_TRUE(result.is_valid()); | 195 ASSERT_TRUE(result.is_valid()); |
202 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); | 196 EXPECT_EQ("http://fooxxutf-8yutf-8a/", result.spec()); |
203 } | 197 } |
204 | 198 |
205 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { | 199 TEST_F(TemplateURLTest, URLRefTestSearchTermsUsingTermsData) { |
206 struct SearchTermsCase { | 200 struct SearchTermsCase { |
207 const char* url; | 201 const char* url; |
208 const string16 terms; | 202 const string16 terms; |
209 const char* output; | 203 const char* output; |
210 } search_term_cases[] = { | 204 } search_term_cases[] = { |
211 { "{google:baseURL}{language}{searchTerms}", string16(), | 205 { "{google:baseURL}{language}{searchTerms}", string16(), |
212 "http://example.com/e/en" }, | 206 "http://example.com/e/en" }, |
213 { "{google:baseSuggestURL}{searchTerms}", string16(), | 207 { "{google:baseSuggestURL}{searchTerms}", string16(), |
214 "http://example.com/complete/" } | 208 "http://example.com/complete/" } |
215 }; | 209 }; |
216 | 210 |
217 TestSearchTermsData search_terms_data("http://example.com/e/"); | 211 TestSearchTermsData search_terms_data("http://example.com/e/"); |
218 TemplateURL t_url; | 212 TemplateURL url; |
219 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { | 213 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
220 const SearchTermsCase& value = search_term_cases[i]; | 214 const SearchTermsCase& value = search_term_cases[i]; |
221 TemplateURLRef ref(&t_url, value.url); | 215 url.SetURL(value.url); |
222 ASSERT_TRUE(ref.IsValid()); | 216 EXPECT_TRUE(url.url_ref().IsValid()); |
223 | 217 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
224 ASSERT_TRUE(ref.SupportsReplacement()); | 218 GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms, |
225 GURL result(ref.ReplaceSearchTermsUsingTermsData(value.terms, | |
226 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), | 219 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), |
227 search_terms_data)); | 220 search_terms_data)); |
228 ASSERT_TRUE(result.is_valid()); | 221 ASSERT_TRUE(result.is_valid()); |
229 EXPECT_EQ(value.output, result.spec()); | 222 EXPECT_EQ(value.output, result.spec()); |
230 } | 223 } |
231 } | 224 } |
232 | 225 |
233 TEST_F(TemplateURLTest, URLRefTermToWide) { | 226 TEST_F(TemplateURLTest, URLRefTermToWide) { |
234 struct ToWideCase { | 227 struct ToWideCase { |
235 const char* encoded_search_term; | 228 const char* encoded_search_term; |
236 const string16 expected_decoded_term; | 229 const string16 expected_decoded_term; |
237 } to_wide_cases[] = { | 230 } to_wide_cases[] = { |
238 {"hello+world", ASCIIToUTF16("hello world")}, | 231 {"hello+world", ASCIIToUTF16("hello world")}, |
239 // Test some big-5 input. | 232 // Test some big-5 input. |
240 {"%a7A%A6%6e+to+you", WideToUTF16(L"\x4f60\x597d to you")}, | 233 {"%a7A%A6%6e+to+you", WideToUTF16(L"\x4f60\x597d to you")}, |
241 // Test some UTF-8 input. We should fall back to this when the encoding | 234 // Test some UTF-8 input. We should fall back to this when the encoding |
242 // doesn't look like big-5. We have a '5' in the middle, which is an invalid | 235 // doesn't look like big-5. We have a '5' in the middle, which is an invalid |
243 // Big-5 trailing byte. | 236 // Big-5 trailing byte. |
244 {"%e4%bd%a05%e5%a5%bd+to+you", WideToUTF16(L"\x4f60\x35\x597d to you")}, | 237 {"%e4%bd%a05%e5%a5%bd+to+you", WideToUTF16(L"\x4f60\x35\x597d to you")}, |
245 // Undecodable input should stay escaped. | 238 // Undecodable input should stay escaped. |
246 {"%91%01+abcd", WideToUTF16(L"%91%01 abcd")}, | 239 {"%91%01+abcd", WideToUTF16(L"%91%01 abcd")}, |
247 // Make sure we convert %2B to +. | 240 // Make sure we convert %2B to +. |
248 {"C%2B%2B", ASCIIToUTF16("C++")}, | 241 {"C%2B%2B", ASCIIToUTF16("C++")}, |
249 // C%2B is escaped as C%252B, make sure we unescape it properly. | 242 // C%2B is escaped as C%252B, make sure we unescape it properly. |
250 {"C%252B", ASCIIToUTF16("C%2B")}, | 243 {"C%252B", ASCIIToUTF16("C%2B")}, |
251 }; | 244 }; |
252 | 245 |
253 // Set one input encoding: big-5. This is so we can test fallback to UTF-8. | 246 // Set one input encoding: big-5. This is so we can test fallback to UTF-8. |
254 TemplateURL t_url; | 247 TemplateURL url; |
255 std::vector<std::string> encodings; | 248 url.SetURL("http://foo?q={searchTerms}"); |
256 encodings.push_back("big-5"); | 249 url.add_input_encoding("big-5"); |
257 t_url.set_input_encodings(encodings); | 250 EXPECT_TRUE(url.url_ref().IsValid()); |
258 | 251 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
259 TemplateURLRef ref(&t_url, "http://foo?q={searchTerms}"); | |
260 ASSERT_TRUE(ref.IsValid()); | |
261 ASSERT_TRUE(ref.SupportsReplacement()); | |
262 | |
263 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { | 252 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { |
264 EXPECT_EQ(to_wide_cases[i].expected_decoded_term, | 253 EXPECT_EQ(to_wide_cases[i].expected_decoded_term, |
265 ref.SearchTermToString16(to_wide_cases[i].encoded_search_term)); | 254 url.url_ref().SearchTermToString16( |
| 255 to_wide_cases[i].encoded_search_term)); |
266 } | 256 } |
267 } | 257 } |
268 | 258 |
269 TEST_F(TemplateURLTest, DisplayURLToURLRef) { | 259 TEST_F(TemplateURLTest, DisplayURLToURLRef) { |
270 struct TestData { | 260 struct TestData { |
271 const std::string url; | 261 const std::string url; |
272 const string16 expected_result; | 262 const string16 expected_result; |
273 } test_data[] = { | 263 } test_data[] = { |
274 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a", | 264 { "http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a", |
275 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") }, | 265 ASCIIToUTF16("http://foo%sx{inputEncoding}y{outputEncoding}a") }, |
276 { "http://X", | 266 { "http://X", |
277 ASCIIToUTF16("http://X") }, | 267 ASCIIToUTF16("http://X") }, |
278 { "http://foo{searchTerms", | 268 { "http://foo{searchTerms", |
279 ASCIIToUTF16("http://foo{searchTerms") }, | 269 ASCIIToUTF16("http://foo{searchTerms") }, |
280 { "http://foo{searchTerms}{language}", | 270 { "http://foo{searchTerms}{language}", |
281 ASCIIToUTF16("http://foo%s{language}") }, | 271 ASCIIToUTF16("http://foo%s{language}") }, |
282 }; | 272 }; |
283 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 273 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
284 TemplateURL t_url; | 274 TemplateURL url; |
285 TemplateURLRef ref(&t_url, test_data[i].url); | 275 url.SetURL(test_data[i].url); |
286 EXPECT_EQ(test_data[i].expected_result, ref.DisplayURL()); | 276 EXPECT_EQ(test_data[i].expected_result, url.url_ref().DisplayURL()); |
287 EXPECT_EQ(test_data[i].url, | 277 EXPECT_EQ(test_data[i].url, |
288 TemplateURLRef::DisplayURLToURLRef(ref.DisplayURL())); | 278 TemplateURLRef::DisplayURLToURLRef(url.url_ref().DisplayURL())); |
289 } | 279 } |
290 } | 280 } |
291 | 281 |
292 TEST_F(TemplateURLTest, ReplaceSearchTerms) { | 282 TEST_F(TemplateURLTest, ReplaceSearchTerms) { |
293 struct TestData { | 283 struct TestData { |
294 const std::string url; | 284 const std::string url; |
295 const std::string expected_result; | 285 const std::string expected_result; |
296 } test_data[] = { | 286 } test_data[] = { |
297 { "http://foo/{language}{searchTerms}{inputEncoding}", | 287 { "http://foo/{language}{searchTerms}{inputEncoding}", |
298 "http://foo/{language}XUTF-8" }, | 288 "http://foo/{language}XUTF-8" }, |
(...skipping 13 matching lines...) Expand all Loading... |
312 "http://foo/{language}aUTF-8aXa" }, | 302 "http://foo/{language}aUTF-8aXa" }, |
313 { "http://foo/{searchTerms}a{language}a{inputEncoding}a", | 303 { "http://foo/{searchTerms}a{language}a{inputEncoding}a", |
314 "http://foo/Xa{language}aUTF-8a" }, | 304 "http://foo/Xa{language}aUTF-8a" }, |
315 { "http://foo/{searchTerms}a{inputEncoding}a{language}a", | 305 { "http://foo/{searchTerms}a{inputEncoding}a{language}a", |
316 "http://foo/XaUTF-8a{language}a" }, | 306 "http://foo/XaUTF-8a{language}a" }, |
317 { "http://foo/{inputEncoding}a{searchTerms}a{language}a", | 307 { "http://foo/{inputEncoding}a{searchTerms}a{language}a", |
318 "http://foo/UTF-8aXa{language}a" }, | 308 "http://foo/UTF-8aXa{language}a" }, |
319 { "http://foo/{inputEncoding}a{language}a{searchTerms}a", | 309 { "http://foo/{inputEncoding}a{language}a{searchTerms}a", |
320 "http://foo/UTF-8a{language}aXa" }, | 310 "http://foo/UTF-8a{language}aXa" }, |
321 }; | 311 }; |
322 TemplateURL turl; | 312 TemplateURL url; |
323 turl.add_input_encoding("UTF-8"); | 313 url.add_input_encoding("UTF-8"); |
324 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 314 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
325 TemplateURLRef ref(&turl, test_data[i].url); | 315 url.SetURL(test_data[i].url); |
326 EXPECT_TRUE(ref.IsValid()); | 316 EXPECT_TRUE(url.url_ref().IsValid()); |
327 EXPECT_TRUE(ref.SupportsReplacement()); | 317 EXPECT_TRUE(url.url_ref().SupportsReplacement()); |
328 std::string expected_result = test_data[i].expected_result; | 318 std::string expected_result = test_data[i].expected_result; |
329 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", | 319 ReplaceSubstringsAfterOffset(&expected_result, 0, "{language}", |
330 g_browser_process->GetApplicationLocale()); | 320 g_browser_process->GetApplicationLocale()); |
331 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("X"), | 321 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
332 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 322 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
333 ASSERT_TRUE(result.is_valid()); | 323 ASSERT_TRUE(result.is_valid()); |
334 EXPECT_EQ(expected_result, result.spec()); | 324 EXPECT_EQ(expected_result, result.spec()); |
335 } | 325 } |
336 } | 326 } |
337 | 327 |
338 | 328 |
339 // Tests replacing search terms in various encodings and making sure the | 329 // Tests replacing search terms in various encodings and making sure the |
340 // generated URL matches the expected value. | 330 // generated URL matches the expected value. |
341 TEST_F(TemplateURLTest, ReplaceArbitrarySearchTerms) { | 331 TEST_F(TemplateURLTest, ReplaceArbitrarySearchTerms) { |
(...skipping 10 matching lines...) Expand all Loading... |
352 "http://foo/?{searchTerms}{inputEncoding}", | 342 "http://foo/?{searchTerms}{inputEncoding}", |
353 "http://foo/?blahUTF-8" }, | 343 "http://foo/?blahUTF-8" }, |
354 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82"), | 344 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82"), |
355 "http://foo/{searchTerms}/bar", | 345 "http://foo/{searchTerms}/bar", |
356 "http://foo/%82%A0/bar"}, | 346 "http://foo/%82%A0/bar"}, |
357 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"), | 347 { "Shift_JIS", UTF8ToUTF16("\xe3\x81\x82 \xe3\x81\x84"), |
358 "http://foo/{searchTerms}/bar", | 348 "http://foo/{searchTerms}/bar", |
359 "http://foo/%82%A0%20%82%A2/bar"}, | 349 "http://foo/%82%A0%20%82%A2/bar"}, |
360 }; | 350 }; |
361 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 351 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
362 TemplateURL turl; | 352 TemplateURL url; |
363 turl.add_input_encoding(test_data[i].encoding); | 353 url.SetURL(test_data[i].url); |
364 TemplateURLRef ref(&turl, test_data[i].url); | 354 url.add_input_encoding(test_data[i].encoding); |
365 GURL result(ref.ReplaceSearchTerms(test_data[i].search_term, | 355 GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term, |
366 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 356 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
367 ASSERT_TRUE(result.is_valid()); | 357 ASSERT_TRUE(result.is_valid()); |
368 EXPECT_EQ(test_data[i].expected_result, result.spec()); | 358 EXPECT_EQ(test_data[i].expected_result, result.spec()); |
369 } | 359 } |
370 } | 360 } |
371 | 361 |
372 TEST_F(TemplateURLTest, Suggestions) { | 362 TEST_F(TemplateURLTest, Suggestions) { |
373 struct TestData { | 363 struct TestData { |
374 const int accepted_suggestion; | 364 const int accepted_suggestion; |
375 const string16 original_query_for_suggestion; | 365 const string16 original_query_for_suggestion; |
376 const std::string expected_result; | 366 const std::string expected_result; |
377 } test_data[] = { | 367 } test_data[] = { |
378 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), | 368 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16(), |
379 "http://bar/foo?q=foobar" }, | 369 "http://bar/foo?q=foobar" }, |
380 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, ASCIIToUTF16("foo"), | 370 { TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, ASCIIToUTF16("foo"), |
381 "http://bar/foo?q=foobar" }, | 371 "http://bar/foo?q=foobar" }, |
382 { TemplateURLRef::NO_SUGGESTION_CHOSEN, string16(), | 372 { TemplateURLRef::NO_SUGGESTION_CHOSEN, string16(), |
383 "http://bar/foo?aq=f&q=foobar" }, | 373 "http://bar/foo?aq=f&q=foobar" }, |
384 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), | 374 { TemplateURLRef::NO_SUGGESTION_CHOSEN, ASCIIToUTF16("foo"), |
385 "http://bar/foo?aq=f&q=foobar" }, | 375 "http://bar/foo?aq=f&q=foobar" }, |
386 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, | 376 { 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, |
387 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, | 377 { 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, |
388 }; | 378 }; |
389 TemplateURL turl; | 379 TemplateURL url; |
390 turl.add_input_encoding("UTF-8"); | 380 url.add_input_encoding("UTF-8"); |
391 TemplateURLRef ref(&turl, "http://bar/foo?{google:acceptedSuggestion}" | 381 url.SetURL("http://bar/foo?{google:acceptedSuggestion}" |
392 "{google:originalQueryForSuggestion}q={searchTerms}"); | 382 "{google:originalQueryForSuggestion}q={searchTerms}"); |
393 ASSERT_TRUE(ref.IsValid()); | 383 ASSERT_TRUE(url.url_ref().IsValid()); |
394 ASSERT_TRUE(ref.SupportsReplacement()); | 384 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
395 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { | 385 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
396 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("foobar"), | 386 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("foobar"), |
397 test_data[i].accepted_suggestion, | 387 test_data[i].accepted_suggestion, |
398 test_data[i].original_query_for_suggestion)); | 388 test_data[i].original_query_for_suggestion)); |
399 ASSERT_TRUE(result.is_valid()); | 389 ASSERT_TRUE(result.is_valid()); |
400 EXPECT_EQ(test_data[i].expected_result, result.spec()); | 390 EXPECT_EQ(test_data[i].expected_result, result.spec()); |
401 } | 391 } |
402 } | 392 } |
403 | 393 |
404 #if defined(OS_WIN) || defined(OS_MACOSX) | 394 #if defined(OS_WIN) || defined(OS_MACOSX) |
405 TEST_F(TemplateURLTest, RLZ) { | 395 TEST_F(TemplateURLTest, RLZ) { |
406 string16 rlz_string; | 396 string16 rlz_string; |
407 #if defined(ENABLE_RLZ) | 397 #if defined(ENABLE_RLZ) |
408 std::string brand; | 398 std::string brand; |
409 if (google_util::GetBrand(&brand) && !brand.empty() && | 399 if (google_util::GetBrand(&brand) && !brand.empty() && |
410 !google_util::IsOrganic(brand)) { | 400 !google_util::IsOrganic(brand)) { |
411 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string); | 401 RLZTracker::GetAccessPointRlz(rlz_lib::CHROME_OMNIBOX, &rlz_string); |
412 } | 402 } |
413 #endif | 403 #endif |
414 | 404 |
415 TemplateURL t_url; | 405 TemplateURL url; |
416 TemplateURLRef ref(&t_url, "http://bar/?{google:RLZ}{searchTerms}"); | 406 url.SetURL("http://bar/?{google:RLZ}{searchTerms}"); |
417 ASSERT_TRUE(ref.IsValid()); | 407 EXPECT_TRUE(url.url_ref().IsValid()); |
418 ASSERT_TRUE(ref.SupportsReplacement()); | 408 ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
419 GURL result(ref.ReplaceSearchTerms(ASCIIToUTF16("x"), | 409 GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"), |
420 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); | 410 TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
421 ASSERT_TRUE(result.is_valid()); | 411 ASSERT_TRUE(result.is_valid()); |
422 std::string expected_url = "http://bar/?"; | 412 std::string expected_url = "http://bar/?"; |
423 if (!rlz_string.empty()) | 413 if (!rlz_string.empty()) |
424 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&"; | 414 expected_url += "rlz=" + UTF16ToUTF8(rlz_string) + "&"; |
425 expected_url += "x"; | 415 expected_url += "x"; |
426 EXPECT_EQ(expected_url, result.spec()); | 416 EXPECT_EQ(expected_url, result.spec()); |
427 } | 417 } |
428 #endif | 418 #endif |
429 | 419 |
(...skipping 18 matching lines...) Expand all Loading... |
448 // Term in the host shouldn't match. | 438 // Term in the host shouldn't match. |
449 { "http://{searchTerms}", "", "", ""}, | 439 { "http://{searchTerms}", "", "", ""}, |
450 | 440 |
451 { "http://blah/?q={searchTerms}", "blah", "/", "q"}, | 441 { "http://blah/?q={searchTerms}", "blah", "/", "q"}, |
452 | 442 |
453 // Single term with extra chars in value should match. | 443 // Single term with extra chars in value should match. |
454 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, | 444 { "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, |
455 }; | 445 }; |
456 | 446 |
457 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) { | 447 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) { |
458 TemplateURL t_url; | 448 TemplateURL url; |
459 t_url.SetURL(data[i].url); | 449 url.SetURL(data[i].url); |
460 EXPECT_EQ(data[i].host, t_url.url()->GetHost()); | 450 EXPECT_EQ(data[i].host, url.url_ref().GetHost()); |
461 EXPECT_EQ(data[i].path, t_url.url()->GetPath()); | 451 EXPECT_EQ(data[i].path, url.url_ref().GetPath()); |
462 EXPECT_EQ(data[i].search_term_key, t_url.url()->GetSearchTermKey()); | 452 EXPECT_EQ(data[i].search_term_key, url.url_ref().GetSearchTermKey()); |
463 } | 453 } |
464 } | 454 } |
465 | 455 |
466 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) { | 456 TEST_F(TemplateURLTest, GoogleBaseSuggestURL) { |
467 static const struct { | 457 static const struct { |
468 const char* const base_url; | 458 const char* const base_url; |
469 const char* const base_suggest_url; | 459 const char* const base_suggest_url; |
470 } data[] = { | 460 } data[] = { |
471 { "http://google.com/", "http://google.com/complete/", }, | 461 { "http://google.com/", "http://google.com/complete/", }, |
472 { "http://www.google.com/", "http://www.google.com/complete/", }, | 462 { "http://www.google.com/", "http://www.google.com/complete/", }, |
473 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", }, | 463 { "http://www.google.co.uk/", "http://www.google.co.uk/complete/", }, |
474 { "http://www.google.com.by/", "http://www.google.com.by/complete/", }, | 464 { "http://www.google.com.by/", "http://www.google.com.by/complete/", }, |
475 { "http://google.com/intl/xx/", "http://google.com/complete/", }, | 465 { "http://google.com/intl/xx/", "http://google.com/complete/", }, |
476 }; | 466 }; |
477 | 467 |
478 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) | 468 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) |
479 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url); | 469 CheckSuggestBaseURL(data[i].base_url, data[i].base_suggest_url); |
480 } | 470 } |
481 | 471 |
482 TEST_F(TemplateURLTest, Keyword) { | 472 TEST_F(TemplateURLTest, Keyword) { |
483 TemplateURL t_url; | 473 TemplateURL url; |
484 t_url.SetURL("http://www.google.com/search"); | 474 url.SetURL("http://www.google.com/search"); |
485 EXPECT_FALSE(t_url.autogenerate_keyword()); | 475 EXPECT_FALSE(url.autogenerate_keyword()); |
486 t_url.set_keyword(ASCIIToUTF16("foo")); | 476 url.set_keyword(ASCIIToUTF16("foo")); |
487 EXPECT_EQ(ASCIIToUTF16("foo"), t_url.keyword()); | 477 EXPECT_EQ(ASCIIToUTF16("foo"), url.keyword()); |
488 t_url.set_autogenerate_keyword(true); | 478 url.set_autogenerate_keyword(true); |
489 EXPECT_TRUE(t_url.autogenerate_keyword()); | 479 EXPECT_TRUE(url.autogenerate_keyword()); |
490 EXPECT_EQ(ASCIIToUTF16("google.com"), t_url.keyword()); | 480 EXPECT_EQ(ASCIIToUTF16("google.com"), url.keyword()); |
491 t_url.set_keyword(ASCIIToUTF16("foo")); | 481 url.set_keyword(ASCIIToUTF16("foo")); |
492 EXPECT_FALSE(t_url.autogenerate_keyword()); | 482 EXPECT_FALSE(url.autogenerate_keyword()); |
493 EXPECT_EQ(ASCIIToUTF16("foo"), t_url.keyword()); | 483 EXPECT_EQ(ASCIIToUTF16("foo"), url.keyword()); |
494 } | 484 } |
495 | 485 |
496 TEST_F(TemplateURLTest, ParseParameterKnown) { | 486 TEST_F(TemplateURLTest, ParseParameterKnown) { |
497 std::string parsed_url("{searchTerms}"); | 487 std::string parsed_url("{searchTerms}"); |
498 TemplateURL t_url; | 488 TemplateURL url; |
499 TemplateURLRef url_ref(&t_url, parsed_url); | 489 url.SetURL(parsed_url); |
500 TemplateURLRef::Replacements replacements; | 490 TemplateURLRef::Replacements replacements; |
501 EXPECT_TRUE(url_ref.ParseParameter(0, 12, &parsed_url, &replacements)); | 491 EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements)); |
502 EXPECT_EQ(std::string(), parsed_url); | 492 EXPECT_EQ(std::string(), parsed_url); |
503 ASSERT_EQ(1U, replacements.size()); | 493 ASSERT_EQ(1U, replacements.size()); |
504 EXPECT_EQ(0U, replacements[0].index); | 494 EXPECT_EQ(0U, replacements[0].index); |
505 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 495 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
506 } | 496 } |
507 | 497 |
508 TEST_F(TemplateURLTest, ParseParameterUnknown) { | 498 TEST_F(TemplateURLTest, ParseParameterUnknown) { |
509 std::string parsed_url("{fhqwhgads}"); | 499 std::string parsed_url("{fhqwhgads}"); |
510 TemplateURL t_url; | 500 TemplateURL url; |
511 TemplateURLRef url_ref(&t_url, parsed_url); | 501 url.SetURL(parsed_url); |
512 TemplateURLRef::Replacements replacements; | 502 TemplateURLRef::Replacements replacements; |
513 | 503 |
514 // By default, TemplateURLRef should not consider itself prepopulated. | 504 // By default, TemplateURLRef should not consider itself prepopulated. |
515 // Therefore we should not replace the unknown parameter. | 505 // Therefore we should not replace the unknown parameter. |
516 EXPECT_FALSE(url_ref.ParseParameter(0, 10, &parsed_url, &replacements)); | 506 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); |
517 EXPECT_EQ("{fhqwhgads}", parsed_url); | 507 EXPECT_EQ("{fhqwhgads}", parsed_url); |
518 EXPECT_TRUE(replacements.empty()); | 508 EXPECT_TRUE(replacements.empty()); |
519 | 509 |
520 // If the TemplateURLRef is prepopulated, we should remove unknown parameters. | 510 // If the TemplateURLRef is prepopulated, we should remove unknown parameters. |
521 parsed_url = "{fhqwhgads}"; | 511 parsed_url = "{fhqwhgads}"; |
522 url_ref.prepopulated_ = true; | 512 url.SetPrepopulateId(1); |
523 EXPECT_FALSE(url_ref.ParseParameter(0, 10, &parsed_url, &replacements)); | 513 EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); |
524 EXPECT_EQ(std::string(), parsed_url); | 514 EXPECT_EQ(std::string(), parsed_url); |
525 EXPECT_TRUE(replacements.empty()); | 515 EXPECT_TRUE(replacements.empty()); |
526 } | 516 } |
527 | 517 |
528 TEST_F(TemplateURLTest, ParseURLEmpty) { | 518 TEST_F(TemplateURLTest, ParseURLEmpty) { |
529 TemplateURL t_url; | 519 TemplateURL url; |
530 TemplateURLRef url_ref(&t_url); | |
531 TemplateURLRef::Replacements replacements; | 520 TemplateURLRef::Replacements replacements; |
532 bool valid = false; | 521 bool valid = false; |
533 EXPECT_EQ(std::string(), | 522 EXPECT_EQ(std::string(), |
534 url_ref.ParseURL(std::string(), &replacements, &valid)); | 523 url.url_ref().ParseURL(std::string(), &replacements, &valid)); |
535 EXPECT_TRUE(replacements.empty()); | 524 EXPECT_TRUE(replacements.empty()); |
536 EXPECT_TRUE(valid); | 525 EXPECT_TRUE(valid); |
537 } | 526 } |
538 | 527 |
539 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { | 528 TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { |
540 TemplateURL t_url; | 529 TemplateURL url; |
541 TemplateURLRef url_ref(&t_url, "{"); | 530 url.SetURL("{"); |
542 TemplateURLRef::Replacements replacements; | 531 TemplateURLRef::Replacements replacements; |
543 bool valid = false; | 532 bool valid = false; |
544 EXPECT_EQ(std::string(), url_ref.ParseURL("{", &replacements, &valid)); | 533 EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, &valid)); |
545 EXPECT_TRUE(replacements.empty()); | 534 EXPECT_TRUE(replacements.empty()); |
546 EXPECT_FALSE(valid); | 535 EXPECT_FALSE(valid); |
547 } | 536 } |
548 | 537 |
549 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { | 538 TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { |
550 TemplateURL t_url; | 539 TemplateURL url; |
551 TemplateURLRef url_ref(&t_url, "{}"); | 540 url.SetURL("{}"); |
552 TemplateURLRef::Replacements replacements; | 541 TemplateURLRef::Replacements replacements; |
553 bool valid = false; | 542 bool valid = false; |
554 EXPECT_EQ("{}", url_ref.ParseURL("{}", &replacements, &valid)); | 543 EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, &valid)); |
555 EXPECT_TRUE(replacements.empty()); | 544 EXPECT_TRUE(replacements.empty()); |
556 EXPECT_TRUE(valid); | 545 EXPECT_TRUE(valid); |
557 } | 546 } |
558 | 547 |
559 TEST_F(TemplateURLTest, ParseURLTwoParameters) { | 548 TEST_F(TemplateURLTest, ParseURLTwoParameters) { |
560 TemplateURL t_url; | 549 TemplateURL url; |
561 TemplateURLRef url_ref(&t_url, "{}{{%s}}"); | 550 url.SetURL("{}{{%s}}"); |
562 TemplateURLRef::Replacements replacements; | 551 TemplateURLRef::Replacements replacements; |
563 bool valid = false; | 552 bool valid = false; |
564 EXPECT_EQ("{}{}", | 553 EXPECT_EQ("{}{}", |
565 url_ref.ParseURL("{}{{searchTerms}}", &replacements, &valid)); | 554 url.url_ref().ParseURL("{}{{searchTerms}}", &replacements, &valid)); |
566 ASSERT_EQ(1U, replacements.size()); | 555 ASSERT_EQ(1U, replacements.size()); |
567 EXPECT_EQ(3U, replacements[0].index); | 556 EXPECT_EQ(3U, replacements[0].index); |
568 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 557 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
569 EXPECT_TRUE(valid); | 558 EXPECT_TRUE(valid); |
570 } | 559 } |
571 | 560 |
572 TEST_F(TemplateURLTest, ParseURLNestedParameter) { | 561 TEST_F(TemplateURLTest, ParseURLNestedParameter) { |
573 TemplateURL t_url; | 562 TemplateURL url; |
574 TemplateURLRef url_ref(&t_url, "{%s"); | 563 url.SetURL("{%s"); |
575 TemplateURLRef::Replacements replacements; | 564 TemplateURLRef::Replacements replacements; |
576 bool valid = false; | 565 bool valid = false; |
577 EXPECT_EQ("{", url_ref.ParseURL("{{searchTerms}", &replacements, &valid)); | 566 EXPECT_EQ("{", |
| 567 url.url_ref().ParseURL("{{searchTerms}", &replacements, &valid)); |
578 ASSERT_EQ(1U, replacements.size()); | 568 ASSERT_EQ(1U, replacements.size()); |
579 EXPECT_EQ(1U, replacements[0].index); | 569 EXPECT_EQ(1U, replacements[0].index); |
580 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); | 570 EXPECT_EQ(TemplateURLRef::SEARCH_TERMS, replacements[0].type); |
581 EXPECT_TRUE(valid); | 571 EXPECT_TRUE(valid); |
582 } | 572 } |
OLD | NEW |