Index: chrome/browser/search_engines/template_url_unittest.cc |
=================================================================== |
--- chrome/browser/search_engines/template_url_unittest.cc (revision 130759) |
+++ chrome/browser/search_engines/template_url_unittest.cc (working copy) |
@@ -58,15 +58,16 @@ |
// Actual tests --------------------------------------------------------------- |
TEST_F(TemplateURLTest, Defaults) { |
- TemplateURL url; |
- EXPECT_FALSE(url.show_in_default_list()); |
- EXPECT_FALSE(url.safe_for_autoreplace()); |
- EXPECT_EQ(0, url.prepopulate_id()); |
+ TemplateURLData data; |
+ EXPECT_FALSE(data.show_in_default_list); |
+ EXPECT_FALSE(data.safe_for_autoreplace); |
+ EXPECT_EQ(0, data.prepopulate_id); |
} |
TEST_F(TemplateURLTest, TestValidWithComplete) { |
- TemplateURL url; |
- url.SetURL("{searchTerms}"); |
+ TemplateURLData data; |
+ data.SetURL("{searchTerms}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
} |
@@ -88,8 +89,9 @@ |
}; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
const SearchTermsCase& value = search_term_cases[i]; |
- TemplateURL url; |
- url.SetURL(value.url); |
+ TemplateURLData data; |
+ data.SetURL(value.url); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
std::string result = url.url_ref().ReplaceSearchTerms(value.terms, |
@@ -101,8 +103,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestCount) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}{count?}"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}{count?}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -112,8 +115,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestCount2) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}{count}"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}{count}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -123,8 +127,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestIndices) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}x{startIndex?}y{startPage?}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -134,8 +139,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestIndices2) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}x{startIndex}y{startPage}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -145,8 +151,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestEncoding) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}x{inputEncoding?}y{outputEncoding?}a"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -158,8 +165,9 @@ |
// Test that setting the prepopulate ID from TemplateURL causes the stored |
// TemplateURLRef to handle parsing the URL parameters differently. |
TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { |
- TemplateURL url; |
- url.SetURL("http://foo{fhqwhgads}"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{fhqwhgads}"); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ("http://foo{fhqwhgads}", |
@@ -167,16 +175,18 @@ |
EXPECT_TRUE(replacements.empty()); |
EXPECT_TRUE(valid); |
- url.SetPrepopulateId(123); |
- EXPECT_EQ("http://foo", |
- url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); |
+ data.prepopulate_id = 123; |
+ TemplateURL url2(data); |
+ EXPECT_EQ("http://foo", url2.url_ref().ParseURL("http://foo{fhqwhgads}", |
+ &replacements, &valid)); |
EXPECT_TRUE(replacements.empty()); |
EXPECT_TRUE(valid); |
} |
TEST_F(TemplateURLTest, InputEncodingBeforeSearchTerm) { |
- TemplateURL url; |
- url.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); |
+ TemplateURLData data; |
+ data.SetURL("http://foox{inputEncoding?}a{searchTerms}y{outputEncoding?}b"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -186,8 +196,9 @@ |
} |
TEST_F(TemplateURLTest, URLRefTestEncoding2) { |
- TemplateURL url; |
- url.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo{searchTerms}x{inputEncoding}y{outputEncoding}a"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("X"), |
@@ -209,10 +220,11 @@ |
}; |
TestSearchTermsData search_terms_data("http://example.com/e/"); |
- TemplateURL url; |
+ TemplateURLData data; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(search_term_cases); ++i) { |
const SearchTermsCase& value = search_term_cases[i]; |
- url.SetURL(value.url); |
+ data.SetURL(value.url); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTermsUsingTermsData(value.terms, |
@@ -244,9 +256,10 @@ |
}; |
// Set one input encoding: big-5. This is so we can test fallback to UTF-8. |
- TemplateURL url; |
- url.SetURL("http://foo?q={searchTerms}"); |
- url.add_input_encoding("big-5"); |
+ TemplateURLData data; |
+ data.SetURL("http://foo?q={searchTerms}"); |
+ data.input_encodings.push_back("big-5"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(to_wide_cases); i++) { |
@@ -270,9 +283,10 @@ |
{ "http://foo{searchTerms}{language}", |
ASCIIToUTF16("http://foo%s{language}") }, |
}; |
+ TemplateURLData data; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
- TemplateURL url; |
- url.SetURL(test_data[i].url); |
+ data.SetURL(test_data[i].url); |
+ TemplateURL url(data); |
EXPECT_EQ(test_data[i].expected_result, url.url_ref().DisplayURL()); |
EXPECT_EQ(test_data[i].url, |
TemplateURLRef::DisplayURLToURLRef(url.url_ref().DisplayURL())); |
@@ -309,10 +323,11 @@ |
{ "http://foo/{inputEncoding}a{language}a{searchTerms}a", |
"http://foo/UTF-8a{language}aXa" }, |
}; |
- TemplateURL url; |
- url.add_input_encoding("UTF-8"); |
+ TemplateURLData data; |
+ data.input_encodings.push_back("UTF-8"); |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
- url.SetURL(test_data[i].url); |
+ data.SetURL(test_data[i].url); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
EXPECT_TRUE(url.url_ref().SupportsReplacement()); |
std::string expected_result = test_data[i].expected_result; |
@@ -348,10 +363,12 @@ |
"http://foo/{searchTerms}/bar", |
"http://foo/%82%A0%20%82%A2/bar"}, |
}; |
+ TemplateURLData data; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
- TemplateURL url; |
- url.SetURL(test_data[i].url); |
- url.add_input_encoding(test_data[i].encoding); |
+ data.SetURL(test_data[i].url); |
+ data.input_encodings.clear(); |
+ data.input_encodings.push_back(test_data[i].encoding); |
+ TemplateURL url(data); |
GURL result(url.url_ref().ReplaceSearchTerms(test_data[i].search_term, |
TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, string16())); |
ASSERT_TRUE(result.is_valid()); |
@@ -376,10 +393,11 @@ |
{ 0, string16(), "http://bar/foo?aq=0&oq=&q=foobar" }, |
{ 1, ASCIIToUTF16("foo"), "http://bar/foo?aq=1&oq=foo&q=foobar" }, |
}; |
- TemplateURL url; |
- url.add_input_encoding("UTF-8"); |
- url.SetURL("http://bar/foo?{google:acceptedSuggestion}" |
- "{google:originalQueryForSuggestion}q={searchTerms}"); |
+ TemplateURLData data; |
+ data.SetURL("http://bar/foo?{google:acceptedSuggestion}" |
+ "{google:originalQueryForSuggestion}q={searchTerms}"); |
+ data.input_encodings.push_back("UTF-8"); |
+ TemplateURL url(data); |
ASSERT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
@@ -402,8 +420,9 @@ |
} |
#endif |
- TemplateURL url; |
- url.SetURL("http://bar/?{google:RLZ}{searchTerms}"); |
+ TemplateURLData data; |
+ data.SetURL("http://bar/?{google:RLZ}{searchTerms}"); |
+ TemplateURL url(data); |
EXPECT_TRUE(url.url_ref().IsValid()); |
ASSERT_TRUE(url.url_ref().SupportsReplacement()); |
GURL result(url.url_ref().ReplaceSearchTerms(ASCIIToUTF16("x"), |
@@ -423,7 +442,7 @@ |
const std::string host; |
const std::string path; |
const std::string search_term_key; |
- } data[] = { |
+ } test_data[] = { |
{ "http://blah/?foo=bar&q={searchTerms}&b=x", "blah", "/", "q"}, |
// No query key should result in empty values. |
@@ -444,12 +463,13 @@ |
{ "http://blah/?q=stock:{searchTerms}", "blah", "/", "q"}, |
}; |
- for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) { |
- TemplateURL url; |
- url.SetURL(data[i].url); |
- EXPECT_EQ(data[i].host, url.url_ref().GetHost()); |
- EXPECT_EQ(data[i].path, url.url_ref().GetPath()); |
- EXPECT_EQ(data[i].search_term_key, url.url_ref().GetSearchTermKey()); |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
+ TemplateURLData data; |
+ data.SetURL(test_data[i].url); |
+ TemplateURL url(data); |
+ EXPECT_EQ(test_data[i].host, url.url_ref().GetHost()); |
+ EXPECT_EQ(test_data[i].path, url.url_ref().GetPath()); |
+ EXPECT_EQ(test_data[i].search_term_key, url.url_ref().GetSearchTermKey()); |
} |
} |
@@ -470,23 +490,24 @@ |
} |
TEST_F(TemplateURLTest, Keyword) { |
- TemplateURL url; |
- url.SetURL("http://www.google.com/search"); |
- EXPECT_FALSE(url.autogenerate_keyword()); |
- url.set_keyword(ASCIIToUTF16("foo")); |
- EXPECT_EQ(ASCIIToUTF16("foo"), url.keyword()); |
- url.set_autogenerate_keyword(true); |
- EXPECT_TRUE(url.autogenerate_keyword()); |
- EXPECT_EQ(ASCIIToUTF16("google.com"), url.keyword()); |
- url.set_keyword(ASCIIToUTF16("foo")); |
- EXPECT_FALSE(url.autogenerate_keyword()); |
- EXPECT_EQ(ASCIIToUTF16("foo"), url.keyword()); |
+ TemplateURLData data; |
+ data.SetURL("http://www.google.com/search"); |
+ EXPECT_FALSE(data.autogenerate_keyword()); |
+ data.SetKeyword(ASCIIToUTF16("foo")); |
+ EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(data).keyword()); |
+ data.SetAutogenerateKeyword(true); |
+ EXPECT_TRUE(data.autogenerate_keyword()); |
+ EXPECT_EQ(ASCIIToUTF16("google.com"), TemplateURL(data).keyword()); |
+ data.SetKeyword(ASCIIToUTF16("foo")); |
+ EXPECT_FALSE(data.autogenerate_keyword()); |
+ EXPECT_EQ(ASCIIToUTF16("foo"), TemplateURL(data).keyword()); |
} |
TEST_F(TemplateURLTest, ParseParameterKnown) { |
std::string parsed_url("{searchTerms}"); |
- TemplateURL url; |
- url.SetURL(parsed_url); |
+ TemplateURLData data; |
+ data.SetURL(parsed_url); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
EXPECT_TRUE(url.url_ref().ParseParameter(0, 12, &parsed_url, &replacements)); |
EXPECT_EQ(std::string(), parsed_url); |
@@ -497,8 +518,9 @@ |
TEST_F(TemplateURLTest, ParseParameterUnknown) { |
std::string parsed_url("{fhqwhgads}"); |
- TemplateURL url; |
- url.SetURL(parsed_url); |
+ TemplateURLData data; |
+ data.SetURL(parsed_url); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
// By default, TemplateURLRef should not consider itself prepopulated. |
@@ -509,14 +531,17 @@ |
// If the TemplateURLRef is prepopulated, we should remove unknown parameters. |
parsed_url = "{fhqwhgads}"; |
- url.SetPrepopulateId(1); |
- EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); |
+ data.prepopulate_id = 1; |
+ TemplateURL url2(data); |
+ EXPECT_FALSE(url2.url_ref().ParseParameter(0, 10, &parsed_url, |
+ &replacements)); |
EXPECT_EQ(std::string(), parsed_url); |
EXPECT_TRUE(replacements.empty()); |
} |
TEST_F(TemplateURLTest, ParseURLEmpty) { |
- TemplateURL url; |
+ TemplateURLData data; |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ(std::string(), |
@@ -526,8 +551,9 @@ |
} |
TEST_F(TemplateURLTest, ParseURLNoTemplateEnd) { |
- TemplateURL url; |
- url.SetURL("{"); |
+ TemplateURLData data; |
+ data.SetURL("{"); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ(std::string(), url.url_ref().ParseURL("{", &replacements, &valid)); |
@@ -536,8 +562,9 @@ |
} |
TEST_F(TemplateURLTest, ParseURLNoKnownParameters) { |
- TemplateURL url; |
- url.SetURL("{}"); |
+ TemplateURLData data; |
+ data.SetURL("{}"); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ("{}", url.url_ref().ParseURL("{}", &replacements, &valid)); |
@@ -546,8 +573,9 @@ |
} |
TEST_F(TemplateURLTest, ParseURLTwoParameters) { |
- TemplateURL url; |
- url.SetURL("{}{{%s}}"); |
+ TemplateURLData data; |
+ data.SetURL("{}{{%s}}"); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ("{}{}", |
@@ -559,8 +587,9 @@ |
} |
TEST_F(TemplateURLTest, ParseURLNestedParameter) { |
- TemplateURL url; |
- url.SetURL("{%s"); |
+ TemplateURLData data; |
+ data.SetURL("{%s"); |
+ TemplateURL url(data); |
TemplateURLRef::Replacements replacements; |
bool valid = false; |
EXPECT_EQ("{", |