| 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/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
| 7 #include "chrome/browser/autocomplete/autocomplete_match.h" | 7 #include "chrome/browser/autocomplete/autocomplete_match.h" |
| 8 #include "chrome/browser/autocomplete/keyword_provider.h" | 8 #include "chrome/browser/autocomplete/keyword_provider.h" |
| 9 #include "chrome/browser/search_engines/template_url.h" | 9 #include "chrome/browser/search_engines/template_url.h" |
| 10 #include "chrome/browser/search_engines/template_url_service.h" | 10 #include "chrome/browser/search_engines/template_url_service.h" |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 {ASCIIToUTF16("https://z"), 1, {ASCIIToUTF16("z ")}}, | 127 {ASCIIToUTF16("https://z"), 1, {ASCIIToUTF16("z ")}}, |
| 128 }; | 128 }; |
| 129 | 129 |
| 130 RunTest<string16>(edit_cases, arraysize(edit_cases), | 130 RunTest<string16>(edit_cases, arraysize(edit_cases), |
| 131 &AutocompleteMatch::fill_into_edit); | 131 &AutocompleteMatch::fill_into_edit); |
| 132 } | 132 } |
| 133 | 133 |
| 134 TEST_F(KeywordProviderTest, URL) { | 134 TEST_F(KeywordProviderTest, URL) { |
| 135 test_data<GURL> url_cases[] = { | 135 test_data<GURL> url_cases[] = { |
| 136 // No query input -> empty destination URL. | 136 // No query input -> empty destination URL. |
| 137 {ASCIIToUTF16("z"), 1, {GURL()}}, | 137 {ASCIIToUTF16("z"), 1, {GURL()}}, |
| 138 {ASCIIToUTF16("z \t"), 1, {GURL()}}, | 138 {ASCIIToUTF16("z \t"), 1, {GURL()}}, |
| 139 | 139 |
| 140 // Check that tokenization only collapses whitespace between first tokens | 140 // Check that tokenization only collapses whitespace between first tokens |
| 141 // and query input, but not rest of URL, is escaped. | 141 // and query input, but not rest of URL, is escaped. |
| 142 {ASCIIToUTF16("w bar +baz"), 2, {GURL(" +%2B?=bar+%2Bbazfoo "), | 142 {ASCIIToUTF16("w bar +baz"), 2, {GURL(" +%2B?=bar+%2Bbazfoo "), |
| 143 GURL("bar+%2Bbaz=z")}}, | 143 GURL("bar+%2Bbaz=z")}}, |
| 144 | 144 |
| 145 // Substitution should work with various locations of the "%s". | 145 // Substitution should work with various locations of the "%s". |
| 146 {ASCIIToUTF16("aaa 1a2b"), 2, {GURL("http://aaaa/?aaaa=1&b=1a2b&c"), | 146 {ASCIIToUTF16("aaa 1a2b"), 2, {GURL("http://aaaa/?aaaa=1&b=1a2b&c"), |
| 147 GURL("1a2b")}}, | 147 GURL("1a2b")}}, |
| 148 {ASCIIToUTF16("a 1 2 3"), 3, {GURL("aa.com?foo=1+2+3"), | 148 {ASCIIToUTF16("a 1 2 3"), 3, {GURL("aa.com?foo=1+2+3"), |
| 149 GURL("bogus URL 1+2+3"), | 149 GURL("bogus URL 1+2+3"), |
| 150 GURL("http://aaaa/?aaaa=1&b=1+2+3&c")}}, | 150 GURL("http://aaaa/?aaaa=1&b=1+2+3&c")}}, |
| 151 {ASCIIToUTF16("www.w w"), 2, {GURL(" +%2B?=wfoo "), | 151 {ASCIIToUTF16("www.w w"), 2, {GURL(" +%2B?=wfoo "), |
| 152 GURL("weaselwweasel")}}, | 152 GURL("weaselwweasel")}}, |
| 153 }; | 153 }; |
| 154 | 154 |
| 155 RunTest<GURL>(url_cases, arraysize(url_cases), | 155 RunTest<GURL>(url_cases, arraysize(url_cases), |
| 156 &AutocompleteMatch::destination_url); | 156 &AutocompleteMatch::destination_url); |
| 157 } | 157 } |
| 158 | 158 |
| 159 TEST_F(KeywordProviderTest, Contents) { | 159 TEST_F(KeywordProviderTest, Contents) { |
| 160 test_data<string16> contents_cases[] = { | 160 test_data<string16> contents_cases[] = { |
| 161 // No query input -> substitute "<enter query>" into contents. | 161 // No query input -> substitute "<enter query>" into contents. |
| 162 {ASCIIToUTF16("z"), 1, | 162 {ASCIIToUTF16("z"), 1, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 185 {ASCIIToUTF16("a 1 2+ 3"), 3, | 185 {ASCIIToUTF16("a 1 2+ 3"), 3, |
| 186 {ASCIIToUTF16("Search aa for 1 2+ 3"), | 186 {ASCIIToUTF16("Search aa for 1 2+ 3"), |
| 187 ASCIIToUTF16("Search ab for 1 2+ 3"), | 187 ASCIIToUTF16("Search ab for 1 2+ 3"), |
| 188 ASCIIToUTF16("Search aaaa for 1 2+ 3")}}, | 188 ASCIIToUTF16("Search aaaa for 1 2+ 3")}}, |
| 189 }; | 189 }; |
| 190 | 190 |
| 191 RunTest<string16>(contents_cases, arraysize(contents_cases), | 191 RunTest<string16>(contents_cases, arraysize(contents_cases), |
| 192 &AutocompleteMatch::contents); | 192 &AutocompleteMatch::contents); |
| 193 } | 193 } |
| 194 | 194 |
| 195 TEST_F(KeywordProviderTest, DISABLED_Description) { | |
| 196 test_data<string16> description_cases[] = { | |
| 197 // Whole keyword should be returned for both exact and inexact matches. | |
| 198 {ASCIIToUTF16("z foo"), 1, {ASCIIToUTF16("(Keyword: z)")}}, | |
| 199 {ASCIIToUTF16("a foo"), 3, {ASCIIToUTF16("(Keyword: aa)"), | |
| 200 ASCIIToUTF16("(Keyword: ab)"), | |
| 201 ASCIIToUTF16("(Keyword: aaaa)")}}, | |
| 202 {ASCIIToUTF16("ftp://www.www w"), 0, {}}, | |
| 203 {ASCIIToUTF16("http://www.ab w"), 1, {ASCIIToUTF16("(Keyword: ab)")}}, | |
| 204 | |
| 205 // Keyword should be returned regardless of query input. | |
| 206 {ASCIIToUTF16("z"), 1, {ASCIIToUTF16("(Keyword: z)")}}, | |
| 207 {ASCIIToUTF16("z \t"), 1, {ASCIIToUTF16("(Keyword: z)")}}, | |
| 208 {ASCIIToUTF16("z a b c++"), 1, {ASCIIToUTF16("(Keyword: z)")}}, | |
| 209 }; | |
| 210 | |
| 211 RunTest<string16>(description_cases, arraysize(description_cases), | |
| 212 &AutocompleteMatch::description); | |
| 213 } | |
| 214 | |
| 215 TEST_F(KeywordProviderTest, AddKeyword) { | 195 TEST_F(KeywordProviderTest, AddKeyword) { |
| 216 TemplateURLData data; | 196 TemplateURLData data; |
| 217 data.short_name = ASCIIToUTF16("Test"); | 197 data.short_name = ASCIIToUTF16("Test"); |
| 218 string16 keyword(ASCIIToUTF16("foo")); | 198 string16 keyword(ASCIIToUTF16("foo")); |
| 219 data.SetKeyword(keyword); | 199 data.SetKeyword(keyword); |
| 220 data.SetURL("http://www.google.com/foo?q={searchTerms}"); | 200 data.SetURL("http://www.google.com/foo?q={searchTerms}"); |
| 221 TemplateURL* template_url = new TemplateURL(NULL, data); | 201 TemplateURL* template_url = new TemplateURL(NULL, data); |
| 222 model_->Add(template_url); | 202 model_->Add(template_url); |
| 223 ASSERT_TRUE(template_url == model_->GetTemplateURLForKeyword(keyword)); | 203 ASSERT_TRUE(template_url == model_->GetTemplateURLForKeyword(keyword)); |
| 224 } | 204 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 KeywordProvider::GetSubstitutingTemplateURLForInput(model_.get(), | 267 KeywordProvider::GetSubstitutingTemplateURLForInput(model_.get(), |
| 288 &input); | 268 &input); |
| 289 if (cases[i].expected_url.empty()) | 269 if (cases[i].expected_url.empty()) |
| 290 EXPECT_FALSE(url); | 270 EXPECT_FALSE(url); |
| 291 else | 271 else |
| 292 EXPECT_EQ(cases[i].expected_url, url->url()); | 272 EXPECT_EQ(cases[i].expected_url, url->url()); |
| 293 EXPECT_EQ(ASCIIToUTF16(cases[i].updated_text), input.text()); | 273 EXPECT_EQ(ASCIIToUTF16(cases[i].updated_text), input.text()); |
| 294 EXPECT_EQ(cases[i].updated_cursor_position, input.cursor_position()); | 274 EXPECT_EQ(cases[i].updated_cursor_position, input.cursor_position()); |
| 295 } | 275 } |
| 296 } | 276 } |
| OLD | NEW |