| Index: third_party/WebKit/Source/platform/weborigin/KURLTest.cpp
|
| diff --git a/third_party/WebKit/Source/platform/weborigin/KURLTest.cpp b/third_party/WebKit/Source/platform/weborigin/KURLTest.cpp
|
| index 306e4856f1e2ec6708249e259bb3e2bf3d747d3a..be834d4cfd5a7915d6a4483855e4f5902a69fb28 100644
|
| --- a/third_party/WebKit/Source/platform/weborigin/KURLTest.cpp
|
| +++ b/third_party/WebKit/Source/platform/weborigin/KURLTest.cpp
|
| @@ -328,8 +328,6 @@ TEST(KURLTest, AbsoluteRemoveWhitespace) {
|
| const KURL input(kParsedURLString, test.input);
|
| const KURL expected(kParsedURLString, test.expected);
|
| EXPECT_EQ(input, expected);
|
| - EXPECT_TRUE(input.WhitespaceRemoved());
|
| - EXPECT_FALSE(expected.WhitespaceRemoved());
|
| }
|
| }
|
|
|
| @@ -337,18 +335,12 @@ TEST(KURLTest, RelativeRemoveWhitespace) {
|
| struct {
|
| const char* base;
|
| const char* relative;
|
| - bool whitespace_removed;
|
| } cases[] = {
|
| - {"http://example.com/", "/path", false},
|
| - {"http://example.com/", "\n/path", true},
|
| - {"http://example.com/", "\r/path", true},
|
| - {"http://example.com/", "\t/path", true},
|
| - {"http://example.com/", "/pa\nth", true},
|
| - {"http://example.com/", "/pa\rth", true},
|
| - {"http://example.com/", "/pa\tth", true},
|
| - {"http://example.com/", "/path\n", true},
|
| - {"http://example.com/", "/path\r", true},
|
| - {"http://example.com/", "/path\t", true},
|
| + {"http://example.com/", "/path"}, {"http://example.com/", "\n/path"},
|
| + {"http://example.com/", "\r/path"}, {"http://example.com/", "\t/path"},
|
| + {"http://example.com/", "/pa\nth"}, {"http://example.com/", "/pa\rth"},
|
| + {"http://example.com/", "/pa\tth"}, {"http://example.com/", "/path\n"},
|
| + {"http://example.com/", "/path\r"}, {"http://example.com/", "/path\t"},
|
| };
|
|
|
| for (const auto& test : cases) {
|
| @@ -357,7 +349,96 @@ TEST(KURLTest, RelativeRemoveWhitespace) {
|
| const KURL expected(kParsedURLString, "http://example.com/path");
|
| const KURL actual(base, test.relative);
|
| EXPECT_EQ(actual, expected);
|
| - EXPECT_EQ(test.whitespace_removed, actual.WhitespaceRemoved());
|
| + }
|
| +}
|
| +
|
| +TEST(KURLTest, AbsolutePotentiallyDanglingMarkup) {
|
| + struct {
|
| + const char* input;
|
| + const char* expected;
|
| + const bool potentially_dangling_markup;
|
| + } cases[] = {
|
| + // Just removable whitespace isn't enough:
|
| + {"ht\ntps://example.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"ht\ttps://example.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"ht\rtps://example.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://exa\nmple.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://exa\tmple.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://exa\rmple.com/yay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/y\nay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/y\tay?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/y\ray?boo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?b\noo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?b\too#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?b\roo#foo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?boo#f\noo", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?boo#f\too", "https://example.com/yay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?boo#f\roo", "https://example.com/yay?boo#foo",
|
| + false},
|
| +
|
| + // Likewise, just a brace won't cut it:
|
| + {"https://example.com/y<ay?boo#foo", "https://example.com/y%3Cay?boo#foo",
|
| + false},
|
| + {"https://example.com/yay?b<oo#foo", "https://example.com/yay?b%3Coo#foo",
|
| + false},
|
| + {"https://example.com/yay?boo#f<oo", "https://example.com/yay?boo#f<oo",
|
| + false},
|
| +
|
| + // Both, however:
|
| + {"ht\ntps://example.com/y<ay?boo#foo",
|
| + "https://example.com/y%3Cay?boo#foo", true},
|
| + {"https://e\nxample.com/y<ay?boo#foo",
|
| + "https://example.com/y%3Cay?boo#foo", true},
|
| + {"https://example.com/y<\nay?boo#foo",
|
| + "https://example.com/y%3Cay?boo#foo", true},
|
| + {"https://example.com/y<ay?b\noo#foo",
|
| + "https://example.com/y%3Cay?boo#foo", true},
|
| + {"https://example.com/y<ay?boo#f\noo",
|
| + "https://example.com/y%3Cay?boo#foo", true},
|
| + {"ht\ntps://example.com/yay?b<oo#foo",
|
| + "https://example.com/yay?b%3Coo#foo", true},
|
| + {"https://e\nxample.com/yay?b<oo#foo",
|
| + "https://example.com/yay?b%3Coo#foo", true},
|
| + {"https://example.com/y\nay?b<oo#foo",
|
| + "https://example.com/yay?b%3Coo#foo", true},
|
| + {"https://example.com/yay?b<\noo#foo",
|
| + "https://example.com/yay?b%3Coo#foo", true},
|
| + {"https://example.com/yay?b<oo#f\noo",
|
| + "https://example.com/yay?b%3Coo#foo", true},
|
| + {"ht\ntps://example.com/yay?boo#f<oo", "https://example.com/yay?boo#f<oo",
|
| + true},
|
| + {"https://e\nxample.com/yay?boo#f<oo", "https://example.com/yay?boo#f<oo",
|
| + true},
|
| + {"https://example.com/y\nay?boo#f<oo", "https://example.com/yay?boo#f<oo",
|
| + true},
|
| + {"https://example.com/yay?b\noo#f<oo", "https://example.com/yay?boo#f<oo",
|
| + true},
|
| + {"https://example.com/yay?boo#f<\noo", "https://example.com/yay?boo#f<oo",
|
| + true},
|
| + };
|
| +
|
| + for (const auto& test : cases) {
|
| + SCOPED_TRACE(::testing::Message() << test.input << ", " << test.expected);
|
| + const KURL input(KURL(), test.input);
|
| + const KURL expected(KURL(), test.expected);
|
| + EXPECT_EQ(input, expected) << input.GetString() << expected.GetString();
|
| + EXPECT_EQ(test.potentially_dangling_markup,
|
| + input.PotentiallyDanglingMarkup());
|
| + EXPECT_FALSE(expected.PotentiallyDanglingMarkup());
|
| }
|
| }
|
|
|
|
|