Commit 243abf3a authored by pkasting@chromium.org's avatar pkasting@chromium.org

Correctly ignore unknown parameters in prepopulated URLs.

BUG=127730
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10382164

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137183 0039d316-1c4b-4281-b951-d872f2087c98
parent 89f5c77b
...@@ -407,12 +407,11 @@ bool TemplateURLRef::ParseParameter(size_t start, ...@@ -407,12 +407,11 @@ bool TemplateURLRef::ParseParameter(size_t start,
replacements->push_back(Replacement(GOOGLE_SEARCH_FIELDTRIAL_GROUP, start)); replacements->push_back(Replacement(GOOGLE_SEARCH_FIELDTRIAL_GROUP, start));
} else if (parameter == kGoogleUnescapedSearchTermsParameter) { } else if (parameter == kGoogleUnescapedSearchTermsParameter) {
replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start)); replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start));
} else { } else if (!prepopulated_) {
// If it's a prepopulated URL, we know that it's safe to remove unknown // If it's a prepopulated URL, we know that it's safe to remove unknown
// parameters. Otherwise it could be some garbage but can also be a // parameters, so just ignore this and return true below. Otherwise it could
// javascript block. Put it back. // be some garbage but can also be a javascript block. Put it back.
if (!prepopulated_) url->insert(start, full_parameter);
url->insert(start, full_parameter);
return false; return false;
} }
return true; return true;
......
...@@ -166,19 +166,19 @@ TEST_F(TemplateURLTest, URLRefTestEncoding) { ...@@ -166,19 +166,19 @@ TEST_F(TemplateURLTest, URLRefTestEncoding) {
// TemplateURLRef to handle parsing the URL parameters differently. // TemplateURLRef to handle parsing the URL parameters differently.
TEST_F(TemplateURLTest, SetPrepopulatedAndParse) { TEST_F(TemplateURLTest, SetPrepopulatedAndParse) {
TemplateURLData data; TemplateURLData data;
data.SetURL("http://foo{fhqwhgads}"); data.SetURL("http://foo{fhqwhgads}bar");
TemplateURL url(NULL, data); TemplateURL url(NULL, data);
TemplateURLRef::Replacements replacements; TemplateURLRef::Replacements replacements;
bool valid = false; bool valid = false;
EXPECT_EQ("http://foo{fhqwhgads}", EXPECT_EQ("http://foo{fhqwhgads}bar", url.url_ref().ParseURL(
url.url_ref().ParseURL("http://foo{fhqwhgads}", &replacements, &valid)); "http://foo{fhqwhgads}bar", &replacements, &valid));
EXPECT_TRUE(replacements.empty()); EXPECT_TRUE(replacements.empty());
EXPECT_TRUE(valid); EXPECT_TRUE(valid);
data.prepopulate_id = 123; data.prepopulate_id = 123;
TemplateURL url2(NULL, data); TemplateURL url2(NULL, data);
EXPECT_EQ("http://foo", url2.url_ref().ParseURL("http://foo{fhqwhgads}", EXPECT_EQ("http://foobar", url2.url_ref().ParseURL("http://foo{fhqwhgads}bar",
&replacements, &valid)); &replacements, &valid));
EXPECT_TRUE(replacements.empty()); EXPECT_TRUE(replacements.empty());
EXPECT_TRUE(valid); EXPECT_TRUE(valid);
} }
...@@ -505,7 +505,7 @@ TEST_F(TemplateURLTest, ParseParameterKnown) { ...@@ -505,7 +505,7 @@ TEST_F(TemplateURLTest, ParseParameterKnown) {
} }
TEST_F(TemplateURLTest, ParseParameterUnknown) { TEST_F(TemplateURLTest, ParseParameterUnknown) {
std::string parsed_url("{fhqwhgads}"); std::string parsed_url("{fhqwhgads}abc");
TemplateURLData data; TemplateURLData data;
data.SetURL(parsed_url); data.SetURL(parsed_url);
TemplateURL url(NULL, data); TemplateURL url(NULL, data);
...@@ -514,16 +514,16 @@ TEST_F(TemplateURLTest, ParseParameterUnknown) { ...@@ -514,16 +514,16 @@ TEST_F(TemplateURLTest, ParseParameterUnknown) {
// By default, TemplateURLRef should not consider itself prepopulated. // By default, TemplateURLRef should not consider itself prepopulated.
// Therefore we should not replace the unknown parameter. // Therefore we should not replace the unknown parameter.
EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements)); EXPECT_FALSE(url.url_ref().ParseParameter(0, 10, &parsed_url, &replacements));
EXPECT_EQ("{fhqwhgads}", parsed_url); EXPECT_EQ("{fhqwhgads}abc", parsed_url);
EXPECT_TRUE(replacements.empty()); EXPECT_TRUE(replacements.empty());
// If the TemplateURLRef is prepopulated, we should remove unknown parameters. // If the TemplateURLRef is prepopulated, we should remove unknown parameters.
parsed_url = "{fhqwhgads}"; parsed_url = "{fhqwhgads}abc";
data.prepopulate_id = 1; data.prepopulate_id = 1;
TemplateURL url2(NULL, data); TemplateURL url2(NULL, data);
EXPECT_FALSE(url2.url_ref().ParseParameter(0, 10, &parsed_url, EXPECT_FALSE(url2.url_ref().ParseParameter(0, 10, &parsed_url,
&replacements)); &replacements));
EXPECT_EQ(std::string(), parsed_url); EXPECT_EQ("abc", parsed_url);
EXPECT_TRUE(replacements.empty()); EXPECT_TRUE(replacements.empty());
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment