[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