| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <windows.h> | |
| 6 | |
| 7 #include "base/file_util.h" | 5 #include "base/file_util.h" |
| 8 #include "base/logging.h" | 6 #include "base/logging.h" |
| 9 #include "base/path_service.h" | 7 #include "base/path_service.h" |
| 10 #include "base/scoped_ptr.h" | 8 #include "base/scoped_ptr.h" |
| 11 #include "chrome/browser/template_url.h" | 9 #include "chrome/browser/template_url.h" |
| 12 #include "chrome/browser/template_url_parser.h" | 10 #include "chrome/browser/template_url_parser.h" |
| 13 #include "chrome/common/chrome_paths.h" | 11 #include "chrome/common/chrome_paths.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 13 |
| 16 class TemplateURLParserTest : public testing::Test { | 14 class TemplateURLParserTest : public testing::Test { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 EXPECT_TRUE(template_url_.GetFavIconURL() == | 118 EXPECT_TRUE(template_url_.GetFavIconURL() == |
| 121 GURL("http://en.wikipedia.org/favicon.ico")); | 119 GURL("http://en.wikipedia.org/favicon.ico")); |
| 122 EXPECT_TRUE(template_url_.url() != NULL); | 120 EXPECT_TRUE(template_url_.url() != NULL); |
| 123 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); | 121 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); |
| 124 EXPECT_EQ(template_url_.url()->url(), | 122 EXPECT_EQ(template_url_.url()->url(), |
| 125 L"http://en.wikipedia.org/w/index.php?title=Special:Search&search={searchT
erms}"); | 123 L"http://en.wikipedia.org/w/index.php?title=Special:Search&search={searchT
erms}"); |
| 126 EXPECT_TRUE(template_url_.suggestions_url() != NULL); | 124 EXPECT_TRUE(template_url_.suggestions_url() != NULL); |
| 127 EXPECT_TRUE(template_url_.suggestions_url()->SupportsReplacement()); | 125 EXPECT_TRUE(template_url_.suggestions_url()->SupportsReplacement()); |
| 128 EXPECT_EQ(template_url_.suggestions_url()->url(), | 126 EXPECT_EQ(template_url_.suggestions_url()->url(), |
| 129 L"http://en.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}
"); | 127 L"http://en.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}
"); |
| 130 ASSERT_EQ(2, template_url_.input_encodings().size()); | 128 ASSERT_EQ(2U, template_url_.input_encodings().size()); |
| 131 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); | 129 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); |
| 132 EXPECT_EQ("Shift_JIS", template_url_.input_encodings()[1]); | 130 EXPECT_EQ("Shift_JIS", template_url_.input_encodings()[1]); |
| 133 } | 131 } |
| 134 | 132 |
| 135 TEST_F(TemplateURLParserTest, NoCrashOnEmptyAttributes) { | 133 TEST_F(TemplateURLParserTest, NoCrashOnEmptyAttributes) { |
| 136 if (IsDisabled()) | 134 if (IsDisabled()) |
| 137 return; | 135 return; |
| 138 ParseFile(L"url_with_no_attributes.xml", NULL); | 136 ParseFile(L"url_with_no_attributes.xml", NULL); |
| 139 } | 137 } |
| 140 | 138 |
| 141 // Filters any param which as an occurrence of name_str_ in its name or an | 139 // Filters any param which as an occurrence of name_str_ in its name or an |
| 142 // occurrence of value_str_ in its value. | 140 // occurrence of value_str_ in its value. |
| 143 class ParamFilterImpl : public TemplateURLParser::ParameterFilter { | 141 class ParamFilterImpl : public TemplateURLParser::ParameterFilter { |
| 144 public: | 142 public: |
| 145 ParamFilterImpl(std::string name_str, std::string value_str) | 143 ParamFilterImpl(std::string name_str, std::string value_str) |
| 146 : name_str_(name_str), | 144 : name_str_(name_str), |
| 147 value_str_(value_str) { | 145 value_str_(value_str) { |
| 148 } | 146 } |
| 149 | 147 |
| 150 bool KeepParameter(const std::string& key, const std::string& value) { | 148 bool KeepParameter(const std::string& key, const std::string& value) { |
| 151 return (name_str_.empty() || key.find(name_str_) == -1) && | 149 return (name_str_.empty() || key.find(name_str_) == std::string::npos) && |
| 152 (value_str_.empty() || value.find(value_str_) == -1); | 150 (value_str_.empty() || value.find(value_str_) == std::string::npos); |
| 153 } | 151 } |
| 154 | 152 |
| 155 private: | 153 private: |
| 156 std::string name_str_; | 154 std::string name_str_; |
| 157 std::string value_str_; | 155 std::string value_str_; |
| 158 | 156 |
| 159 DISALLOW_EVIL_CONSTRUCTORS(ParamFilterImpl); | 157 DISALLOW_EVIL_CONSTRUCTORS(ParamFilterImpl); |
| 160 }; | 158 }; |
| 161 | 159 |
| 162 TEST_F(TemplateURLParserTest, TestFirefoxEbay) { | 160 TEST_F(TemplateURLParserTest, TestFirefoxEbay) { |
| 163 if (IsDisabled()) | 161 if (IsDisabled()) |
| 164 return; | 162 return; |
| 165 // This file uses the Parameter extension | 163 // This file uses the Parameter extension |
| 166 // (see http://www.opensearch.org/Specifications/OpenSearch/Extensions/Paramet
er/1.0) | 164 // (see http://www.opensearch.org/Specifications/OpenSearch/Extensions/Paramet
er/1.0) |
| 167 ParamFilterImpl filter("ebay", "ebay"); | 165 ParamFilterImpl filter("ebay", "ebay"); |
| 168 ParseFile(L"firefox_ebay.xml", &filter); | 166 ParseFile(L"firefox_ebay.xml", &filter); |
| 169 ASSERT_TRUE(parse_result_); | 167 ASSERT_TRUE(parse_result_); |
| 170 EXPECT_EQ(L"eBay", template_url_.short_name()); | 168 EXPECT_EQ(L"eBay", template_url_.short_name()); |
| 171 EXPECT_TRUE(template_url_.url() != NULL); | 169 EXPECT_TRUE(template_url_.url() != NULL); |
| 172 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); | 170 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); |
| 173 std::wstring exp_url = | 171 std::wstring exp_url = |
| 174 L"http://search.ebay.com/search/search.dll?query={searchTerms}&" | 172 L"http://search.ebay.com/search/search.dll?query={searchTerms}&" |
| 175 L"MfcISAPICommand=GetResult&ht=1&srchdesc=n&maxRecordsReturned=300&" | 173 L"MfcISAPICommand=GetResult&ht=1&srchdesc=n&maxRecordsReturned=300&" |
| 176 L"maxRecordsPerPage=50&SortProperty=MetaEndSort"; | 174 L"maxRecordsPerPage=50&SortProperty=MetaEndSort"; |
| 177 EXPECT_EQ(exp_url, template_url_.url()->url()); | 175 EXPECT_EQ(exp_url, template_url_.url()->url()); |
| 178 ASSERT_EQ(1, template_url_.input_encodings().size()); | 176 ASSERT_EQ(1U, template_url_.input_encodings().size()); |
| 179 EXPECT_EQ("ISO-8859-1", template_url_.input_encodings()[0]); | 177 EXPECT_EQ("ISO-8859-1", template_url_.input_encodings()[0]); |
| 180 EXPECT_EQ(GURL("http://search.ebay.com/favicon.ico"), | 178 EXPECT_EQ(GURL("http://search.ebay.com/favicon.ico"), |
| 181 template_url_.GetFavIconURL()); | 179 template_url_.GetFavIconURL()); |
| 182 } | 180 } |
| 183 | 181 |
| 184 TEST_F(TemplateURLParserTest, TestFirefoxWebster) { | 182 TEST_F(TemplateURLParserTest, TestFirefoxWebster) { |
| 185 if (IsDisabled()) | 183 if (IsDisabled()) |
| 186 return; | 184 return; |
| 187 // This XML file uses a namespace. | 185 // This XML file uses a namespace. |
| 188 ParamFilterImpl filter("", "Mozilla"); | 186 ParamFilterImpl filter("", "Mozilla"); |
| 189 ParseFile(L"firefox_webster.xml", &filter); | 187 ParseFile(L"firefox_webster.xml", &filter); |
| 190 ASSERT_TRUE(parse_result_); | 188 ASSERT_TRUE(parse_result_); |
| 191 EXPECT_EQ(L"Webster", template_url_.short_name()); | 189 EXPECT_EQ(L"Webster", template_url_.short_name()); |
| 192 EXPECT_TRUE(template_url_.url() != NULL); | 190 EXPECT_TRUE(template_url_.url() != NULL); |
| 193 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); | 191 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); |
| 194 EXPECT_EQ(L"http://www.webster.com/cgi-bin/dictionary?va={searchTerms}", | 192 EXPECT_EQ(L"http://www.webster.com/cgi-bin/dictionary?va={searchTerms}", |
| 195 template_url_.url()->url()); | 193 template_url_.url()->url()); |
| 196 ASSERT_EQ(1, template_url_.input_encodings().size()); | 194 ASSERT_EQ(1U, template_url_.input_encodings().size()); |
| 197 EXPECT_EQ("ISO-8859-1", template_url_.input_encodings()[0]); | 195 EXPECT_EQ("ISO-8859-1", template_url_.input_encodings()[0]); |
| 198 EXPECT_EQ(GURL("http://www.webster.com/favicon.ico"), | 196 EXPECT_EQ(GURL("http://www.webster.com/favicon.ico"), |
| 199 template_url_.GetFavIconURL()); | 197 template_url_.GetFavIconURL()); |
| 200 } | 198 } |
| 201 | 199 |
| 202 TEST_F(TemplateURLParserTest, TestFirefoxYahoo) { | 200 TEST_F(TemplateURLParserTest, TestFirefoxYahoo) { |
| 203 if (IsDisabled()) | 201 if (IsDisabled()) |
| 204 return; | 202 return; |
| 205 // This XML file uses a namespace. | 203 // This XML file uses a namespace. |
| 206 ParamFilterImpl filter("", "Mozilla"); | 204 ParamFilterImpl filter("", "Mozilla"); |
| 207 ParseFile(L"firefox_yahoo.xml", &filter); | 205 ParseFile(L"firefox_yahoo.xml", &filter); |
| 208 ASSERT_TRUE(parse_result_); | 206 ASSERT_TRUE(parse_result_); |
| 209 EXPECT_EQ(L"Yahoo", template_url_.short_name()); | 207 EXPECT_EQ(L"Yahoo", template_url_.short_name()); |
| 210 EXPECT_TRUE(template_url_.url() != NULL); | 208 EXPECT_TRUE(template_url_.url() != NULL); |
| 211 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); | 209 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); |
| 212 EXPECT_EQ(L"http://ff.search.yahoo.com/gossip?" | 210 EXPECT_EQ(L"http://ff.search.yahoo.com/gossip?" |
| 213 L"output=fxjson&command={searchTerms}", | 211 L"output=fxjson&command={searchTerms}", |
| 214 template_url_.suggestions_url()->url()); | 212 template_url_.suggestions_url()->url()); |
| 215 EXPECT_EQ(L"http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8", | 213 EXPECT_EQ(L"http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8", |
| 216 template_url_.url()->url()); | 214 template_url_.url()->url()); |
| 217 ASSERT_EQ(1, template_url_.input_encodings().size()); | 215 ASSERT_EQ(1U, template_url_.input_encodings().size()); |
| 218 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); | 216 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); |
| 219 EXPECT_EQ(GURL("http://search.yahoo.com/favicon.ico"), | 217 EXPECT_EQ(GURL("http://search.yahoo.com/favicon.ico"), |
| 220 template_url_.GetFavIconURL()); | 218 template_url_.GetFavIconURL()); |
| 221 } | 219 } |
| 222 | 220 |
| 223 // Make sure we ignore POST suggestions (this is the same XML file as | 221 // Make sure we ignore POST suggestions (this is the same XML file as |
| 224 // firefox_yahoo.xml, the suggestion method was just changed to POST). | 222 // firefox_yahoo.xml, the suggestion method was just changed to POST). |
| 225 TEST_F(TemplateURLParserTest, TestPostSuggestion) { | 223 TEST_F(TemplateURLParserTest, TestPostSuggestion) { |
| 226 if (IsDisabled()) | 224 if (IsDisabled()) |
| 227 return; | 225 return; |
| 228 // This XML file uses a namespace. | 226 // This XML file uses a namespace. |
| 229 ParamFilterImpl filter("", "Mozilla"); | 227 ParamFilterImpl filter("", "Mozilla"); |
| 230 ParseFile(L"post_suggestion.xml", &filter); | 228 ParseFile(L"post_suggestion.xml", &filter); |
| 231 ASSERT_TRUE(parse_result_); | 229 ASSERT_TRUE(parse_result_); |
| 232 EXPECT_EQ(L"Yahoo", template_url_.short_name()); | 230 EXPECT_EQ(L"Yahoo", template_url_.short_name()); |
| 233 EXPECT_TRUE(template_url_.url() != NULL); | 231 EXPECT_TRUE(template_url_.url() != NULL); |
| 234 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); | 232 EXPECT_TRUE(template_url_.url()->SupportsReplacement()); |
| 235 EXPECT_TRUE(template_url_.suggestions_url() == NULL); | 233 EXPECT_TRUE(template_url_.suggestions_url() == NULL); |
| 236 EXPECT_EQ(L"http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8", | 234 EXPECT_EQ(L"http://search.yahoo.com/search?p={searchTerms}&ei=UTF-8", |
| 237 template_url_.url()->url()); | 235 template_url_.url()->url()); |
| 238 ASSERT_EQ(1, template_url_.input_encodings().size()); | 236 ASSERT_EQ(1U, template_url_.input_encodings().size()); |
| 239 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); | 237 EXPECT_EQ("UTF-8", template_url_.input_encodings()[0]); |
| 240 EXPECT_EQ(GURL("http://search.yahoo.com/favicon.ico"), | 238 EXPECT_EQ(GURL("http://search.yahoo.com/favicon.ico"), |
| 241 template_url_.GetFavIconURL()); | 239 template_url_.GetFavIconURL()); |
| 242 } | 240 } |
| OLD | NEW |