[webkit-changes] [WebKit/WebKit] 25a4ff: Add Element/ShadowRoot's setHTMLUnsafe() and Docum...
Anne van Kesteren
noreply at github.com
Fri Dec 1 23:38:16 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 25a4ff15329b263c8d8550dbda463e09d2d5e41b
https://github.com/WebKit/WebKit/commit/25a4ff15329b263c8d8550dbda463e09d2d5e41b
Author: Anne van Kesteren <annevk at annevk.nl>
Date: 2023-12-01 (Fri, 01 Dec 2023)
Changed paths:
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-encoding-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-encoding.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-style-attribute-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-style-attribute.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-pushstate-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-pushstate.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-moretests-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-moretests.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-pushstate-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-pushstate.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Element-setHTMLUnsafe-04-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Element-setHTMLUnsafe-04.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-base-pushstate.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-base.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-pushstate.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe.js
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-url-tests.js
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/w3c-import.log
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-CEReactions-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-CEReactions.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-xml-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-xml.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe.html
A LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/w3c-import.log
M LayoutTests/imported/w3c/web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-attachment-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/Headers.cmake
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/DOMImplementation.cpp
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Document.idl
M Source/WebCore/dom/DocumentFragment.h
M Source/WebCore/dom/Element.cpp
M Source/WebCore/dom/Element.h
R Source/WebCore/dom/FragmentScriptingPermission.h
M Source/WebCore/dom/InnerHTML.idl
A Source/WebCore/dom/ParserContentPolicy.h
M Source/WebCore/dom/ScriptableDocumentParser.h
M Source/WebCore/dom/ShadowRoot.cpp
M Source/WebCore/dom/ShadowRoot.h
M Source/WebCore/dom/ShadowRootInit.idl
M Source/WebCore/editing/markup.cpp
M Source/WebCore/editing/markup.h
M Source/WebCore/html/HTMLTemplateElement.idl
M Source/WebCore/html/parser/HTMLConstructionSite.cpp
M Source/WebCore/html/parser/HTMLConstructionSite.h
M Source/WebCore/html/parser/HTMLDocumentParserFastPath.cpp
M Source/WebCore/xml/DOMParser.cpp
M Source/WebCore/xml/parser/XMLDocumentParser.h
M Tools/TestWebKitAPI/Tests/WebCore/HTMLParserIdioms.cpp
Log Message:
-----------
Add Element/ShadowRoot's setHTMLUnsafe() and Document.parseHTMLUnsafe() methods
https://bugs.webkit.org/show_bug.cgi?id=261143
rdar://115345128
Reviewed by Ryosuke Niwa.
This change implements these methods from the HTML Standard:
https://html.spec.whatwg.org/#unsafe-html-parsing-methods
Rename FragmentScriptingPermission.h to ParserContentPolicy.h as per
the FIXME.
Rename DeclarativeShadowDOM to DeclarativeShadowRoots to match the
specification.
Abstract the implementation of Element/ShadowRoot's setInnerHTML() so
it can be reused by the new Element/ShadowRoot's setHTMLUnsafe().
Do the same for DOMParser to the benefit of Document.parseHTMLUnsafe().
Ensure that in both of those cases the new method can only go down the
HTML parser path and has declarative shadow root support enabled.
Put the new methods behind a DeclarativeShadowRootsParserAPIsEnabled
preference (enabled by default) in case something is discovered to be
amiss later on.
Synchronize web-platform-tests:
https://github.com/web-platform-tests/wpt/commit/31655b30de9bb2af8583a4d08163eae62edb4d8f
Thanks to rniwa's earlier effort around the now-obsolete DOMParser API
this was all relatively straightforward. Thanks rniwa!
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-encoding-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-encoding.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-style-attribute-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-style-attribute.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-pushstate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base-pushstate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-base.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-moretests-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-moretests.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-pushstate-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url-pushstate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe-url.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Document-parseHTMLUnsafe.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Element-setHTMLUnsafe-04-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/Element-setHTMLUnsafe-04.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-base-pushstate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-base.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe-pushstate.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-iframe.js: Added.
(window.doParse):
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/parseHTMLUnsafe-url-tests.js: Added.
(assertURL):
(input.of.Object.entries):
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/resources/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-CEReactions-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-CEReactions.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-xml-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe-xml.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/setHTMLUnsafe.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/html-unsafe-methods/w3c-import.log: Added.
* LayoutTests/imported/w3c/web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-attachment-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/shadow-dom/declarative/declarative-shadow-dom-basic-expected.txt:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Headers.cmake:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/DOMImplementation.cpp:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::parseMarkupUnsafe):
(WebCore::Document::parseHTMLUnsafe):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Document.idl:
* Source/WebCore/dom/DocumentFragment.h:
* Source/WebCore/dom/Element.cpp:
(WebCore::Element::replaceChildrenWithMarkup):
(WebCore::Element::setHTMLUnsafe):
(WebCore::Element::setInnerHTML):
* Source/WebCore/dom/Element.h:
* Source/WebCore/dom/InnerHTML.idl:
* Source/WebCore/dom/ParserContentPolicy.h: Renamed from Source/WebCore/dom/FragmentScriptingPermission.h.
* Source/WebCore/dom/ScriptableDocumentParser.h:
* Source/WebCore/dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::replaceChildrenWithMarkup):
(WebCore::ShadowRoot::setHTMLUnsafe):
(WebCore::ShadowRoot::innerHTML const):
(WebCore::ShadowRoot::setInnerHTML):
* Source/WebCore/dom/ShadowRoot.h:
* Source/WebCore/dom/ShadowRootInit.idl:
* Source/WebCore/editing/markup.cpp:
(WebCore::createFragmentForMarkup):
* Source/WebCore/editing/markup.h:
* Source/WebCore/html/HTMLTemplateElement.idl:
* Source/WebCore/html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::HTMLConstructionSite):
(WebCore::HTMLConstructionSite::insertHTMLTemplateElement):
* Source/WebCore/html/parser/HTMLConstructionSite.h:
* Source/WebCore/html/parser/HTMLDocumentParserFastPath.cpp:
* Source/WebCore/xml/DOMParser.cpp:
(WebCore::DOMParser::parseFromString):
* Source/WebCore/xml/parser/XMLDocumentParser.h:
* Tools/TestWebKitAPI/Tests/WebCore/HTMLParserIdioms.cpp:
Canonical link: https://commits.webkit.org/271423@main
More information about the webkit-changes
mailing list