[webkit-changes] [WebKit/WebKit] ab61ba: [@property] Register custom properties from @prope...

Antti Koivisto noreply at github.com
Mon Dec 19 16:32:36 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ab61bade88f0ba511ef1d2ea8dd191bbce7a8e73
      https://github.com/WebKit/WebKit/commit/ab61bade88f0ba511ef1d2ea8dd191bbce7a8e73
  Author: Antti Koivisto <antti at apple.com>
  Date:   2022-12-19 (Mon, 19 Dec 2022)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-property-override-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inner-at-rules-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-animation-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-shadow-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-stylesheets-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/determine-registration-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/registered-property-crosstalk-expected.txt
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/animation/CSSPropertyAnimation.cpp
    M Source/WebCore/css/CSSPropertyRule.cpp
    M Source/WebCore/css/CSSVariableReferenceValue.cpp
    M Source/WebCore/css/ComputedStyleExtractor.cpp
    M Source/WebCore/css/DOMCSSRegisterCustomProperty.cpp
    M Source/WebCore/css/StyleProperties.cpp
    M Source/WebCore/css/StyleRule.h
    M Source/WebCore/css/parser/CSSParser.cpp
    M Source/WebCore/css/parser/CSSParserImpl.cpp
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/Document.h
    A Source/WebCore/style/CustomPropertyRegistry.cpp
    A Source/WebCore/style/CustomPropertyRegistry.h
    M Source/WebCore/style/RuleSetBuilder.cpp
    M Source/WebCore/style/RuleSetBuilder.h
    M Source/WebCore/style/StyleBuilder.cpp
    M Source/WebCore/style/StyleResolver.h
    M Source/WebCore/style/StyleScope.cpp
    M Source/WebCore/style/StyleScope.h

  Log Message:
  -----------
  [@property] Register custom properties from @property rules
https://bugs.webkit.org/show_bug.cgi?id=249579
<rdar://problem/103516443>

Reviewed by Sam Weinig.

Make @property registrations from stylesheets work.

* LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-property-override-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-inner-at-rules-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-animation-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-shadow-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-stylesheets-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-dynamic-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/at-property-viewport-units-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/determine-registration-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-properties-values-api/registered-property-crosstalk-expected.txt:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/animation/CSSPropertyAnimation.cpp:
* Source/WebCore/css/CSSPropertyRule.cpp:
(WebCore::CSSPropertyRule::initialValue const):
(WebCore::CSSPropertyRule::cssText const):
* Source/WebCore/css/CSSVariableReferenceValue.cpp:
(WebCore::resolveVariableReference):
* Source/WebCore/css/ComputedStyleExtractor.cpp:
(WebCore::ComputedStyleExtractor::customPropertyValue):
* Source/WebCore/css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
* Source/WebCore/css/StyleProperties.cpp:
(WebCore::MutableStyleProperties::setCustomProperty):
* Source/WebCore/css/StyleRule.h:
* Source/WebCore/css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValueWithVariableReferences):
* Source/WebCore/css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::consumePropertyRule):

Pass the initial value as parser tokens instead of a string to avoid unnecessary re-tokenization.

* Source/WebCore/dom/Document.cpp:
(WebCore::Document::customPropertyRegistry const):
(WebCore::Document::registerCSSCustomProperty): Deleted.
* Source/WebCore/dom/Document.h:
(WebCore::Document::registeredCSSCustomProperties const): Deleted.

Move registry ownership to Style::Scope.

* Source/WebCore/style/CustomPropertyRegistry.cpp: Added.
(WebCore::Style::CustomPropertyRegistry::CustomPropertyRegistry):
(WebCore::Style::CustomPropertyRegistry::get const):

Look up API registrations first, then stylesheet registrations.

(WebCore::Style::CustomPropertyRegistry::registerFromAPI):
(WebCore::Style::CustomPropertyRegistry::registerFromStylesheet):

Logic for registering a descriptor from a @property rule.

(WebCore::Style::CustomPropertyRegistry::clearRegisteredFromStylesheets):
* Source/WebCore/style/CustomPropertyRegistry.h: Added.

Add a registry class.

* Source/WebCore/style/RuleSetBuilder.cpp:
(WebCore::Style::RuleSetBuilder::addChildRules):

Collect property rules.
Use switch.

(WebCore::Style::RuleSetBuilder::addMutatingRulesToResolver):

Register the collected property rules in correct order.

* Source/WebCore/style/RuleSetBuilder.h:
* Source/WebCore/style/StyleBuilder.cpp:
(WebCore::Style::Builder::applyProperty):
* Source/WebCore/style/StyleResolver.h:
(WebCore::Style::Resolver::rootDefaultStyle const):
* Source/WebCore/style/StyleScope.cpp:
(WebCore::Style::Scope::Scope):
(WebCore::Style::Scope::clearResolver):
(WebCore::Style::Scope::updateResolver):
* Source/WebCore/style/StyleScope.h:
(WebCore::Style::Scope::customPropertyRegistry const):
(WebCore::Style::Scope::customPropertyRegistry):

Style::Scope owns the registry.

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




More information about the webkit-changes mailing list