Changeset 243821 in webkit
- Timestamp:
- Apr 3, 2019, 1:08:34 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/editing/MarkupAccumulator.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r243817 r243821 1 2019-04-03 Chris Dumez <cdumez@apple.com> 2 3 HTML fragment serialization should not strip whitespace from URL attribute values 4 https://bugs.webkit.org/show_bug.cgi?id=196551 5 6 Reviewed by Ryosuke Niwa. 7 8 Rebaseline WPT test now that all checks are passing. This test was already passing 9 in Gecko and Blink. 10 11 * web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt: 12 1 13 2019-04-03 Chris Dumez <cdumez@apple.com> 2 14 -
trunk/LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt
r222307 r243821 1 1 Linkfoo 2 2 3 FAIL innerHTML before setter: 1680 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 3 PASS innerHTML before setter: 1680 4 4 PASS href before setter: 1680 5 FAIL innerHTML after setter: 1680 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 6 FAIL href after setter: 1680 assert_equals: expected "http://localhost:8800/domparsing/%E1%9A%80javascript:alert(1)" but got "javascript:alert(1)" 7 FAIL innerHTML before setter: 2000 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 5 PASS innerHTML after setter: 1680 6 PASS href after setter: 1680 7 PASS innerHTML before setter: 2000 8 8 PASS href before setter: 2000 9 FAIL innerHTML after setter: 2000 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 10 FAIL href after setter: 2000 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%80javascript:alert(1)" but got "javascript:alert(1)" 11 FAIL innerHTML before setter: 2001 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 9 PASS innerHTML after setter: 2000 10 PASS href after setter: 2000 11 PASS innerHTML before setter: 2001 12 12 PASS href before setter: 2001 13 FAIL innerHTML after setter: 2001 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 14 FAIL href after setter: 2001 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%81javascript:alert(1)" but got "javascript:alert(1)" 15 FAIL innerHTML before setter: 2002 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 13 PASS innerHTML after setter: 2001 14 PASS href after setter: 2001 15 PASS innerHTML before setter: 2002 16 16 PASS href before setter: 2002 17 FAIL innerHTML after setter: 2002 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 18 FAIL href after setter: 2002 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%82javascript:alert(1)" but got "javascript:alert(1)" 19 FAIL innerHTML before setter: 2003 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 17 PASS innerHTML after setter: 2002 18 PASS href after setter: 2002 19 PASS innerHTML before setter: 2003 20 20 PASS href before setter: 2003 21 FAIL innerHTML after setter: 2003 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 22 FAIL href after setter: 2003 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%83javascript:alert(1)" but got "javascript:alert(1)" 23 FAIL innerHTML before setter: 2004 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 21 PASS innerHTML after setter: 2003 22 PASS href after setter: 2003 23 PASS innerHTML before setter: 2004 24 24 PASS href before setter: 2004 25 FAIL innerHTML after setter: 2004 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 26 FAIL href after setter: 2004 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%84javascript:alert(1)" but got "javascript:alert(1)" 27 FAIL innerHTML before setter: 2005 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 25 PASS innerHTML after setter: 2004 26 PASS href after setter: 2004 27 PASS innerHTML before setter: 2005 28 28 PASS href before setter: 2005 29 FAIL innerHTML after setter: 2005 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 30 FAIL href after setter: 2005 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%85javascript:alert(1)" but got "javascript:alert(1)" 31 FAIL innerHTML before setter: 2006 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 29 PASS innerHTML after setter: 2005 30 PASS href after setter: 2005 31 PASS innerHTML before setter: 2006 32 32 PASS href before setter: 2006 33 FAIL innerHTML after setter: 2006 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 34 FAIL href after setter: 2006 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%86javascript:alert(1)" but got "javascript:alert(1)" 35 FAIL innerHTML before setter: 2007 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 33 PASS innerHTML after setter: 2006 34 PASS href after setter: 2006 35 PASS innerHTML before setter: 2007 36 36 PASS href before setter: 2007 37 FAIL innerHTML after setter: 2007 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 38 FAIL href after setter: 2007 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%87javascript:alert(1)" but got "javascript:alert(1)" 39 FAIL innerHTML before setter: 2008 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 37 PASS innerHTML after setter: 2007 38 PASS href after setter: 2007 39 PASS innerHTML before setter: 2008 40 40 PASS href before setter: 2008 41 FAIL innerHTML after setter: 2008 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 42 FAIL href after setter: 2008 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%88javascript:alert(1)" but got "javascript:alert(1)" 43 FAIL innerHTML before setter: 2009 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 41 PASS innerHTML after setter: 2008 42 PASS href after setter: 2008 43 PASS innerHTML before setter: 2009 44 44 PASS href before setter: 2009 45 FAIL innerHTML after setter: 2009 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 46 FAIL href after setter: 2009 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%89javascript:alert(1)" but got "javascript:alert(1)" 47 FAIL innerHTML before setter: 200a assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 45 PASS innerHTML after setter: 2009 46 PASS href after setter: 2009 47 PASS innerHTML before setter: 200a 48 48 PASS href before setter: 200a 49 FAIL innerHTML after setter: 200a assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 50 FAIL href after setter: 200a assert_equals: expected "http://localhost:8800/domparsing/%E2%80%8Ajavascript:alert(1)" but got "javascript:alert(1)" 51 FAIL innerHTML before setter: 2028 assert_equals: expected "<a href=\" 52 javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 49 PASS innerHTML after setter: 200a 50 PASS href after setter: 200a 51 PASS innerHTML before setter: 2028 53 52 PASS href before setter: 2028 54 FAIL innerHTML after setter: 2028 assert_equals: expected "<a href=\" 55 javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 56 FAIL href after setter: 2028 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%A8javascript:alert(1)" but got "javascript:alert(1)" 57 FAIL innerHTML before setter: 205f assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 53 PASS innerHTML after setter: 2028 54 PASS href after setter: 2028 55 PASS innerHTML before setter: 205f 58 56 PASS href before setter: 205f 59 FAIL innerHTML after setter: 205f assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 60 FAIL href after setter: 205f assert_equals: expected "http://localhost:8800/domparsing/%E2%81%9Fjavascript:alert(1)" but got "javascript:alert(1)" 61 FAIL innerHTML before setter: 3000 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>" but got "<a href=\"javascript:alert(1)\">Link</a>" 57 PASS innerHTML after setter: 205f 58 PASS href after setter: 205f 59 PASS innerHTML before setter: 3000 62 60 PASS href before setter: 3000 63 FAIL innerHTML after setter: 3000 assert_equals: expected "<a href=\" javascript:alert(1)\">Link</a>foo" but got "<a href=\"javascript:alert(1)\">Link</a>foo" 64 FAIL href after setter: 3000 assert_equals: expected "http://localhost:8800/domparsing/%E3%80%80javascript:alert(1)" but got "javascript:alert(1)" 61 PASS innerHTML after setter: 3000 62 PASS href after setter: 3000 65 63 -
trunk/Source/WebCore/ChangeLog
r243820 r243821 1 2019-04-03 Chris Dumez <cdumez@apple.com> 2 3 HTML fragment serialization should not strip whitespace from URL attribute values 4 https://bugs.webkit.org/show_bug.cgi?id=196551 5 6 Reviewed by Ryosuke Niwa. 7 8 HTML fragment serialization should not strip whitespace from URL attribute values as per: 9 - https://html.spec.whatwg.org/multipage/parsing.html#html-fragment-serialisation-algorithm 10 11 WebKit was stripping such whitespace, Gecko and Blink are not. Align WebKit with other 12 browser engines and the specification. 13 14 No new tests, rebaselined existing test. 15 16 * editing/MarkupAccumulator.cpp: 17 (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue): 18 1 19 2019-04-02 Ryosuke Niwa <rniwa@webkit.org> 2 20 -
trunk/Source/WebCore/editing/MarkupAccumulator.cpp
r238771 r243821 293 293 { 294 294 ASSERT(element.isURLAttribute(attribute)); 295 constString resolvedURLString = resolveURLIfNeeded(element, attribute.value());295 String resolvedURLString = resolveURLIfNeeded(element, attribute.value()); 296 296 UChar quoteChar = '"'; 297 String strippedURLString = resolvedURLString.stripWhiteSpace(); 298 if (WTF::protocolIsJavaScript(strippedURLString)) { 297 if (WTF::protocolIsJavaScript(resolvedURLString)) { 299 298 // minimal escaping for javascript urls 300 if ( strippedURLString.contains('"')) {301 if ( strippedURLString.contains('\''))302 strippedURLString.replaceWithLiteral('"', """);299 if (resolvedURLString.contains('"')) { 300 if (resolvedURLString.contains('\'')) 301 resolvedURLString.replaceWithLiteral('"', """); 303 302 else 304 303 quoteChar = '\''; 305 304 } 306 305 result.append(quoteChar); 307 result.append( strippedURLString);306 result.append(resolvedURLString); 308 307 result.append(quoteChar); 309 308 return;
Note:
See TracChangeset
for help on using the changeset viewer.