| 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 |