Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 799655bac2e5f004a6da1967a7f689947bb70e0d
      
https://github.com/WebKit/WebKit/commit/799655bac2e5f004a6da1967a7f689947bb70e0d
  Author: Sam Weinig <[email protected]>
  Date:   2025-12-17 (Wed, 17 Dec 2025)

  Changed paths:
    M Source/WebCore/CMakeLists.txt
    M Source/WebCore/DerivedSources-output.xcfilelist
    M Source/WebCore/DerivedSources.make
    M Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations
    M Source/WebCore/Sources.txt
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    M Source/WebCore/css/CSSProperties.json
    M Source/WebCore/css/scripts/process-css-properties.py
    M Source/WebCore/rendering/style/RenderStyleBase.h
    M Source/WebCore/style/StyleChangedAnimatableProperties.cpp
    M Source/WebCore/style/StyleChangedAnimatableProperties.h
    A Source/WebCore/style/StyleChangedAnimatablePropertiesCustom.h
    A Source/WebCore/style/StyleChangedAnimatablePropertiesGenerated.h
    M Tools/Scripts/webkitpy/style/checkers/jsonchecker.py

  Log Message:
  -----------
  [RenderStyleGen] Generate 
Style::conservativelyCollectChangedAnimatableProperties
https://bugs.webkit.org/show_bug.cgi?id=304122

Reviewed by Darin Adler.

Generates efficient conservative property change checking by using the
`render-style-storage-path` entries in CSSProperties.json to build a
model of the RenderStyle storage structure using that to build the
recursive walk of the properties.

To make this work, all longhand properties (expect logical, cascade aliases
and select internal properties with no storage) now need to specify a storage
path. For properties where this doesn't make total sense, like coordinate list
value properties (e.g. background-image, animation-duration, etc), a new kind
of container can be specified, "opaque", which indicates that the storage path
should only be used for equality checks. That allows us to do things like group
all the properties for a specific coordinated value list, say `background`,
with the path to the background list, 
`m_nonInheritedData->backgroundData->background`,
and then conservatively assert that if that has changed, all the background
properties are potentially changed.

A few new `codegen-properties` entries were added to support this work:

  - `render-style-changed-for-animation-custom`:
    Used for properties that need a custom check in 
StyleChangedAnimatableProperties.

  - `skip-render-style-getter`, `skip-render-style-initial`, 
`skip-render-style-setter`:
    A few properties that used to specify `skip-render-style`, like 
`caret-color`, now
    need to specify a storage path, so they can opt out of specific render 
style functions.
    Specifying `skip-render-style` sets all of these to true if they are not 
otherwise set.

* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/SaferCPPExpectations/UncountedCallArgsCheckerExpectations:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/css/CSSProperties.json:
* Source/WebCore/css/scripts/process-css-properties.py:
* Source/WebCore/rendering/style/RenderStyleBase.h:
* Source/WebCore/style/StyleChangedAnimatableProperties.cpp:
* Source/WebCore/style/StyleChangedAnimatableProperties.h:
* Source/WebCore/style/StyleChangedAnimatablePropertiesCustom.h: Added.
* Source/WebCore/style/StyleChangedAnimatablePropertiesGenerated.h: Added.
* Tools/Scripts/webkitpy/style/checkers/jsonchecker.py:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to