Index: chrome/browser/autocomplete/keyword_provider_unittest.cc |
=================================================================== |
--- chrome/browser/autocomplete/keyword_provider_unittest.cc (revision 208572) |
+++ chrome/browser/autocomplete/keyword_provider_unittest.cc (working copy) |
@@ -2,12 +2,14 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "base/command_line.h" |
#include "base/message_loop.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/autocomplete/autocomplete_match.h" |
#include "chrome/browser/autocomplete/keyword_provider.h" |
#include "chrome/browser/search_engines/template_url.h" |
#include "chrome/browser/search_engines/template_url_service.h" |
+#include "chrome/common/chrome_switches.h" |
#include "chrome/test/base/testing_browser_process.h" |
#include "googleurl/src/gurl.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -33,23 +35,25 @@ |
ResultType AutocompleteMatch::* member); |
protected: |
+ static const TemplateURLService::Initializer kTestData[]; |
+ |
scoped_refptr<KeywordProvider> kw_provider_; |
scoped_ptr<TemplateURLService> model_; |
}; |
+// static |
+const TemplateURLService::Initializer KeywordProviderTest::kTestData[] = { |
+ { "aa", "aa.com?foo=%s", "aa" }, |
+ { "aaaa", "http://aaaa/?aaaa=1&b=%s&c", "aaaa" }, |
+ { "aaaaa", "%s", "aaaaa" }, |
+ { "ab", "bogus URL %s", "ab" }, |
+ { "weasel", "weasel%sweasel", "weasel" }, |
+ { "www", " +%2B?=%sfoo ", "www" }, |
+ { "z", "%s=z", "z" }, |
+}; |
+ |
void KeywordProviderTest::SetUp() { |
- static const TemplateURLService::Initializer kTestKeywordData[] = { |
- { "aa", "aa.com?foo=%s", "aa" }, |
- { "aaaa", "http://aaaa/?aaaa=1&b=%s&c", "aaaa" }, |
- { "aaaaa", "%s", "aaaaa" }, |
- { "ab", "bogus URL %s", "ab" }, |
- { "weasel", "weasel%sweasel", "weasel" }, |
- { "www", " +%2B?=%sfoo ", "www" }, |
- { "z", "%s=z", "z" }, |
- }; |
- |
- model_.reset(new TemplateURLService(kTestKeywordData, |
- arraysize(kTestKeywordData))); |
+ model_.reset(new TemplateURLService(kTestData, arraysize(kTestData))); |
kw_provider_ = new KeywordProvider(NULL, model_.get()); |
} |
@@ -134,22 +138,22 @@ |
TEST_F(KeywordProviderTest, URL) { |
test_data<GURL> url_cases[] = { |
// No query input -> empty destination URL. |
- {ASCIIToUTF16("z"), 1, {GURL()}}, |
- {ASCIIToUTF16("z \t"), 1, {GURL()}}, |
+ {ASCIIToUTF16("z"), 1, {GURL()}}, |
+ {ASCIIToUTF16("z \t"), 1, {GURL()}}, |
// Check that tokenization only collapses whitespace between first tokens |
// and query input, but not rest of URL, is escaped. |
- {ASCIIToUTF16("w bar +baz"), 2, {GURL(" +%2B?=bar+%2Bbazfoo "), |
- GURL("bar+%2Bbaz=z")}}, |
+ {ASCIIToUTF16("w bar +baz"), 2, {GURL(" +%2B?=bar+%2Bbazfoo "), |
+ GURL("bar+%2Bbaz=z")}}, |
// Substitution should work with various locations of the "%s". |
- {ASCIIToUTF16("aaa 1a2b"), 2, {GURL("http://aaaa/?aaaa=1&b=1a2b&c"), |
- GURL("1a2b")}}, |
- {ASCIIToUTF16("a 1 2 3"), 3, {GURL("aa.com?foo=1+2+3"), |
- GURL("bogus URL 1+2+3"), |
- GURL("http://aaaa/?aaaa=1&b=1+2+3&c")}}, |
- {ASCIIToUTF16("www.w w"), 2, {GURL(" +%2B?=wfoo "), |
- GURL("weaselwweasel")}}, |
+ {ASCIIToUTF16("aaa 1a2b"), 2, {GURL("http://aaaa/?aaaa=1&b=1a2b&c"), |
+ GURL("1a2b")}}, |
+ {ASCIIToUTF16("a 1 2 3"), 3, {GURL("aa.com?foo=1+2+3"), |
+ GURL("bogus URL 1+2+3"), |
+ GURL("http://aaaa/?aaaa=1&b=1+2+3&c")}}, |
+ {ASCIIToUTF16("www.w w"), 2, {GURL(" +%2B?=wfoo "), |
+ GURL("weaselwweasel")}}, |
}; |
RunTest<GURL>(url_cases, arraysize(url_cases), |
@@ -189,29 +193,9 @@ |
}; |
RunTest<string16>(contents_cases, arraysize(contents_cases), |
- &AutocompleteMatch::contents); |
+ &AutocompleteMatch::contents); |
} |
-TEST_F(KeywordProviderTest, DISABLED_Description) { |
- test_data<string16> description_cases[] = { |
- // Whole keyword should be returned for both exact and inexact matches. |
- {ASCIIToUTF16("z foo"), 1, {ASCIIToUTF16("(Keyword: z)")}}, |
- {ASCIIToUTF16("a foo"), 3, {ASCIIToUTF16("(Keyword: aa)"), |
- ASCIIToUTF16("(Keyword: ab)"), |
- ASCIIToUTF16("(Keyword: aaaa)")}}, |
- {ASCIIToUTF16("ftp://www.www w"), 0, {}}, |
- {ASCIIToUTF16("http://www.ab w"), 1, {ASCIIToUTF16("(Keyword: ab)")}}, |
- |
- // Keyword should be returned regardless of query input. |
- {ASCIIToUTF16("z"), 1, {ASCIIToUTF16("(Keyword: z)")}}, |
- {ASCIIToUTF16("z \t"), 1, {ASCIIToUTF16("(Keyword: z)")}}, |
- {ASCIIToUTF16("z a b c++"), 1, {ASCIIToUTF16("(Keyword: z)")}}, |
- }; |
- |
- RunTest<string16>(description_cases, arraysize(description_cases), |
- &AutocompleteMatch::description); |
-} |
- |
TEST_F(KeywordProviderTest, AddKeyword) { |
TemplateURLData data; |
data.short_name = ASCIIToUTF16("Test"); |
@@ -294,3 +278,19 @@ |
EXPECT_EQ(cases[i].updated_cursor_position, input.cursor_position()); |
} |
} |
+ |
+// If extra query params are specified on the command line, they should be |
+// reflected (only) in the default search provider's destination URL. |
+TEST_F(KeywordProviderTest, ExtraQueryParams) { |
+ CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ switches::kExtraSearchQueryParams, "a=b"); |
+ |
+ test_data<GURL> url_cases[] = { |
+ {ASCIIToUTF16("a 1 2 3"), 3, {GURL("aa.com?a=b&foo=1+2+3"), |
+ GURL("bogus URL 1+2+3"), |
+ GURL("http://aaaa/?aaaa=1&b=1+2+3&c")}}, |
+ }; |
+ |
+ RunTest<GURL>(url_cases, arraysize(url_cases), |
+ &AutocompleteMatch::destination_url); |
+} |