Title: [243821] trunk
- Revision
- 243821
- Author
- cdu...@apple.com
- Date
- 2019-04-03 13:08:34 -0700 (Wed, 03 Apr 2019)
Log Message
HTML fragment serialization should not strip whitespace from URL attribute values
https://bugs.webkit.org/show_bug.cgi?id=196551
Reviewed by Ryosuke Niwa.
LayoutTests/imported/w3c:
Rebaseline WPT test now that all checks are passing. This test was already passing
in Gecko and Blink.
* web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt:
Source/WebCore:
HTML fragment serialization should not strip whitespace from URL attribute values as per:
- https://html.spec.whatwg.org/multipage/parsing.html#html-fragment-serialisation-algorithm
WebKit was stripping such whitespace, Gecko and Blink are not. Align WebKit with other
browser engines and the specification.
No new tests, rebaselined existing test.
* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (243820 => 243821)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2019-04-03 20:04:37 UTC (rev 243820)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2019-04-03 20:08:34 UTC (rev 243821)
@@ -1,5 +1,17 @@
2019-04-03 Chris Dumez <cdu...@apple.com>
+ HTML fragment serialization should not strip whitespace from URL attribute values
+ https://bugs.webkit.org/show_bug.cgi?id=196551
+
+ Reviewed by Ryosuke Niwa.
+
+ Rebaseline WPT test now that all checks are passing. This test was already passing
+ in Gecko and Blink.
+
+ * web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt:
+
+2019-04-03 Chris Dumez <cdu...@apple.com>
+
[XML Parser] Insert the error message block when stopping parsing and an error occurred
https://bugs.webkit.org/show_bug.cgi?id=196546
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt (243820 => 243821)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt 2019-04-03 20:04:37 UTC (rev 243820)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt 2019-04-03 20:08:34 UTC (rev 243821)
@@ -1,63 +1,63 @@
Linkfoo
-FAIL innerHTML before setter: 1680 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML before setter: 1680
PASS href before setter: 1680
-FAIL innerHTML after setter: 1680 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 1680 assert_equals: expected "http://localhost:8800/domparsing/%E1%9A%80javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2000 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 1680
+PASS href after setter: 1680
+PASS innerHTML before setter: 2000
PASS href before setter: 2000
-FAIL innerHTML after setter: 2000 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2000 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%80javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2001 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2000
+PASS href after setter: 2000
+PASS innerHTML before setter: 2001
PASS href before setter: 2001
-FAIL innerHTML after setter: 2001 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2001 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%81javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2002 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2001
+PASS href after setter: 2001
+PASS innerHTML before setter: 2002
PASS href before setter: 2002
-FAIL innerHTML after setter: 2002 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2002 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%82javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2003 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2002
+PASS href after setter: 2002
+PASS innerHTML before setter: 2003
PASS href before setter: 2003
-FAIL innerHTML after setter: 2003 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2003 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%83javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2004 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2003
+PASS href after setter: 2003
+PASS innerHTML before setter: 2004
PASS href before setter: 2004
-FAIL innerHTML after setter: 2004 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2004 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%84javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2005 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2004
+PASS href after setter: 2004
+PASS innerHTML before setter: 2005
PASS href before setter: 2005
-FAIL innerHTML after setter: 2005 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2005 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%85javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2006 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2005
+PASS href after setter: 2005
+PASS innerHTML before setter: 2006
PASS href before setter: 2006
-FAIL innerHTML after setter: 2006 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2006 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%86javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2007 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2006
+PASS href after setter: 2006
+PASS innerHTML before setter: 2007
PASS href before setter: 2007
-FAIL innerHTML after setter: 2007 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2007 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%87javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2008 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2007
+PASS href after setter: 2007
+PASS innerHTML before setter: 2008
PASS href before setter: 2008
-FAIL innerHTML after setter: 2008 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2008 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%88javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2009 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2008
+PASS href after setter: 2008
+PASS innerHTML before setter: 2009
PASS href before setter: 2009
-FAIL innerHTML after setter: 2009 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2009 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%89javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 200a assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2009
+PASS href after setter: 2009
+PASS innerHTML before setter: 200a
PASS href before setter: 200a
-FAIL innerHTML after setter: 200a assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 200a assert_equals: expected "http://localhost:8800/domparsing/%E2%80%8Ajavascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 2028 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 200a
+PASS href after setter: 200a
+PASS innerHTML before setter: 2028
PASS href before setter: 2028
-FAIL innerHTML after setter: 2028 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 2028 assert_equals: expected "http://localhost:8800/domparsing/%E2%80%A8javascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 205f assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 2028
+PASS href after setter: 2028
+PASS innerHTML before setter: 205f
PASS href before setter: 205f
-FAIL innerHTML after setter: 205f assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 205f assert_equals: expected "http://localhost:8800/domparsing/%E2%81%9Fjavascript:alert(1)" but got "_javascript_:alert(1)"
-FAIL innerHTML before setter: 3000 assert_equals: expected "<a href="" but got "<a href=""
+PASS innerHTML after setter: 205f
+PASS href after setter: 205f
+PASS innerHTML before setter: 3000
PASS href before setter: 3000
-FAIL innerHTML after setter: 3000 assert_equals: expected "<a href="" but got "<a href=""
-FAIL href after setter: 3000 assert_equals: expected "http://localhost:8800/domparsing/%E3%80%80javascript:alert(1)" but got "_javascript_:alert(1)"
+PASS innerHTML after setter: 3000
+PASS href after setter: 3000
Modified: trunk/Source/WebCore/ChangeLog (243820 => 243821)
--- trunk/Source/WebCore/ChangeLog 2019-04-03 20:04:37 UTC (rev 243820)
+++ trunk/Source/WebCore/ChangeLog 2019-04-03 20:08:34 UTC (rev 243821)
@@ -1,3 +1,21 @@
+2019-04-03 Chris Dumez <cdu...@apple.com>
+
+ HTML fragment serialization should not strip whitespace from URL attribute values
+ https://bugs.webkit.org/show_bug.cgi?id=196551
+
+ Reviewed by Ryosuke Niwa.
+
+ HTML fragment serialization should not strip whitespace from URL attribute values as per:
+ - https://html.spec.whatwg.org/multipage/parsing.html#html-fragment-serialisation-algorithm
+
+ WebKit was stripping such whitespace, Gecko and Blink are not. Align WebKit with other
+ browser engines and the specification.
+
+ No new tests, rebaselined existing test.
+
+ * editing/MarkupAccumulator.cpp:
+ (WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):
+
2019-04-02 Ryosuke Niwa <rn...@webkit.org>
Crash in HTMLCanvasElement::createContext2d after the element got adopted to a new document
Modified: trunk/Source/WebCore/editing/MarkupAccumulator.cpp (243820 => 243821)
--- trunk/Source/WebCore/editing/MarkupAccumulator.cpp 2019-04-03 20:04:37 UTC (rev 243820)
+++ trunk/Source/WebCore/editing/MarkupAccumulator.cpp 2019-04-03 20:08:34 UTC (rev 243821)
@@ -292,19 +292,18 @@
void MarkupAccumulator::appendQuotedURLAttributeValue(StringBuilder& result, const Element& element, const Attribute& attribute)
{
ASSERT(element.isURLAttribute(attribute));
- const String resolvedURLString = resolveURLIfNeeded(element, attribute.value());
+ String resolvedURLString = resolveURLIfNeeded(element, attribute.value());
UChar quoteChar = '"';
- String strippedURLString = resolvedURLString.stripWhiteSpace();
- if (WTF::protocolIsJavaScript(strippedURLString)) {
+ if (WTF::protocolIsJavaScript(resolvedURLString)) {
// minimal escaping for _javascript_ urls
- if (strippedURLString.contains('"')) {
- if (strippedURLString.contains('\''))
- strippedURLString.replaceWithLiteral('"', """);
+ if (resolvedURLString.contains('"')) {
+ if (resolvedURLString.contains('\''))
+ resolvedURLString.replaceWithLiteral('"', """);
else
quoteChar = '\'';
}
result.append(quoteChar);
- result.append(strippedURLString);
+ result.append(resolvedURLString);
result.append(quoteChar);
return;
}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes