Index: url/gurl_unittest.cc |
diff --git a/url/gurl_unittest.cc b/url/gurl_unittest.cc |
index 67da8e48259c4d61de6bde061c6beda6185e5b03..521c4e90fa7142fb2dfc4911faacaee2ed39df2e 100644 |
--- a/url/gurl_unittest.cc |
+++ b/url/gurl_unittest.cc |
@@ -350,6 +350,30 @@ TEST(GURLTest, Replacements) { |
} |
} |
+TEST(GURLTest, ClearFragmentOnDataUrl) { |
+ // http://crbug.com/291747 - a data URL may legitimately have trailing |
+ // whitespace in the spec after the ref is cleared. Test this does not trigger |
+ // the url_parse::Parsed importing validation DCHECK in GURL. |
+ GURL url(" data: one ? two # three "); |
+ |
+ // The trailing whitespace will have been stripped. |
+ EXPECT_EQ("data:%20one%20?%20two%20#%20three", url.spec()); |
+ GURL::Replacements repl; |
+ repl.ClearRef(); |
+ GURL url_no_ref = url.ReplaceComponents(repl); |
+ |
+ EXPECT_EQ("data:%20one%20?%20two%20", url_no_ref.spec()); |
+ |
+ // Importing a parsed url via this constructor overload will retain trailing |
+ // whitespace. |
+ GURL import_url(url_no_ref.spec(), |
+ url_no_ref.parsed_for_possibly_invalid_spec(), |
+ url_no_ref.is_valid()); |
+ EXPECT_EQ(url_no_ref, import_url); |
+ EXPECT_EQ(import_url.query(), "%20two%20"); |
+ |
+} |
+ |
TEST(GURLTest, PathForRequest) { |
struct TestCase { |
const char* input; |