Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: third_party/WebKit/Source/platform/weborigin/KURLTest.cpp

Issue 2895953002: Update dangling markup mitigations. (Closed)
Patch Set: Test. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
}
}

Powered by Google App Engine
This is Rietveld 408576698