[webkit-changes] [WebKit/WebKit] 2dc309: CSS nesting: parsing of style rule inside style rule.

Matthieu Dubet noreply at github.com
Mon Dec 19 05:56:15 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2dc309f4a725d902f5c24909e84d7cdabb499c9f
      https://github.com/WebKit/WebKit/commit/2dc309f4a725d902f5c24909e84d7cdabb499c9f
  Author: Matthieu Dubet <m_dubet at apple.com>
  Date:   2022-12-19 (Mon, 19 Dec 2022)

  Changed paths:
    M LayoutTests/fast/css/style-enumerate-properties-expected.txt
    M LayoutTests/fast/css/style-enumerate-properties.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/cssom-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/invalidation-004-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/parsing-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/parsing.html
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative.html
    R LayoutTests/imported/w3c/web-platform-tests/css/selectors/nesting-parsing-expected.txt
    R LayoutTests/imported/w3c/web-platform-tests/css/selectors/nesting-parsing.html
    M LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml
    M LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml
    M LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml
    M LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js
    M Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml
    M Source/WebCore/css/CSSComputedStyleDeclaration.cpp
    M Source/WebCore/css/CSSComputedStyleDeclaration.h
    M Source/WebCore/css/CSSSelector.cpp
    M Source/WebCore/css/CSSSelector.h
    M Source/WebCore/css/CSSStyleDeclaration.h
    M Source/WebCore/css/CSSStyleDeclaration.idl
    M Source/WebCore/css/CSSStyleRule.cpp
    M Source/WebCore/css/PropertySetCSSStyleDeclaration.h
    M Source/WebCore/css/SelectorChecker.cpp
    M Source/WebCore/css/StyleProperties.cpp
    M Source/WebCore/css/StyleProperties.h
    M Source/WebCore/css/StyleRule.cpp
    M Source/WebCore/css/StyleRule.h
    M Source/WebCore/css/parser/CSSParser.cpp
    M Source/WebCore/css/parser/CSSParserContext.cpp
    M Source/WebCore/css/parser/CSSParserContext.h
    M Source/WebCore/css/parser/CSSParserImpl.cpp
    M Source/WebCore/css/parser/CSSParserImpl.h
    M Source/WebCore/css/parser/CSSSelectorParser.cpp
    M Source/WebCore/css/parser/CSSSelectorParser.h
    M Source/WebCore/cssjit/SelectorCompiler.cpp

  Log Message:
  -----------
  CSS nesting: parsing of style rule inside style rule.
https://bugs.webkit.org/show_bug.cgi?id=249263
rdar://103146832

Reviewed by Antti Koivisto.

This implements experimental support to parse nested style rule inside style rule.
This is based on the css-nesting-1 editor draft as of today,
which describes the so-called "option 3" (non letter start) syntax.

https://github.com/w3c/csswg-drafts/blob/main/css-nesting-1/proposals.md

This is missing:
  - any support for having nested at-rule inside style rule.
  - CSSOM
  - selector matching

* LayoutTests/fast/css/style-enumerate-properties-expected.txt:
* LayoutTests/fast/css/style-enumerate-properties.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/cssom-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/invalidation-004-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/parsing-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/parsing.html:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-nesting/serialize-group-rules-with-decls.tentative.html:
* LayoutTests/imported/w3c/web-platform-tests/css/selectors/nesting-parsing-expected.txt: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/selectors/nesting-parsing.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156.xml:
* LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156b.xml:
* LayoutTests/imported/w3c/web-platform-tests/css/selectors/old-tests/css3-modsel-156c.xml:
* LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js:
* Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:
* Source/WebCore/css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::cssRules const):
* Source/WebCore/css/CSSComputedStyleDeclaration.h:
* Source/WebCore/css/CSSSelector.cpp:
(WebCore::simpleSelectorSpecificity):
(WebCore::CSSSelector::selectorText const):
* Source/WebCore/css/CSSSelector.h:
* Source/WebCore/css/CSSStyleDeclaration.h:
* Source/WebCore/css/CSSStyleDeclaration.idl:
* Source/WebCore/css/CSSStyleRule.cpp:
(WebCore::CSSStyleRule::cssText const):
* Source/WebCore/css/PropertySetCSSStyleDeclaration.h:
* Source/WebCore/css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
* Source/WebCore/css/StyleProperties.cpp:
(WebCore::MutableStyleProperties::createEmpty):
* Source/WebCore/css/StyleProperties.h:
* Source/WebCore/css/StyleRule.cpp:
(WebCore::StyleRule::averageSizeInBytes):
(WebCore::StyleRule::StyleRule):
(WebCore::StyleRule::create):
(WebCore::StyleRule::createForSplitting):
* Source/WebCore/css/StyleRule.h:
* Source/WebCore/css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseSelector):
* Source/WebCore/css/parser/CSSParserContext.cpp:
(WebCore::operator==):
(WebCore::add):
* Source/WebCore/css/parser/CSSParserContext.h:
* Source/WebCore/css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parseRule):
(WebCore::CSSParserImpl::consumeRuleList):
(WebCore::CSSParserImpl::consumeQualifiedRule):
(WebCore::CSSParserImpl::consumeStyleRule):
(WebCore::CSSParserImpl::consumeDeclarationListOrStyleBlockHelper):
(WebCore::CSSParserImpl::consumeDeclarationList):
(WebCore::CSSParserImpl::consumeStyleBlock):
* Source/WebCore/css/parser/CSSParserImpl.h:
(WebCore::CSSParserImpl::consumeQualifiedRule):
(WebCore::CSSParserImpl::consumeStyleRule):
(WebCore::CSSParserImpl::consumeDeclarationListOrStyleBlockHelper):
(WebCore::CSSParserImpl::consumeStyleBlock):
* Source/WebCore/css/parser/CSSSelectorParser.cpp:
(WebCore::parseCSSSelector):
(WebCore::CSSSelectorParser::CSSSelectorParser):
(WebCore::CSSSelectorParser::consumeSimpleSelector):
(WebCore::CSSSelectorParser::consumeNesting):
* Source/WebCore/css/parser/CSSSelectorParser.h:
* Source/WebCore/cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType):

Canonical link: https://commits.webkit.org/258079@main




More information about the webkit-changes mailing list