Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 50320fd3b3eee47ce31b9d53e902797c215fafd3
      
https://github.com/WebKit/WebKit/commit/50320fd3b3eee47ce31b9d53e902797c215fafd3
  Author: Ian Gower <[email protected]>
  Date:   2026-09-10 (Thu, 10 Sep 2026)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/fast/lists/li-values-expected.txt
    M LayoutTests/fast/lists/li-values.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/css3-counter-styles-049-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/css3-counter-styles-044-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/css3-counter-styles-054-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/css3-counter-styles-064-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/css3-counter-styles-059-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/css3-counter-styles-078-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-073-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/css3-counter-styles-088-expected.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range-ref.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range.optional-expected.html
    A 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range.optional.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-ref.html
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/css3-counter-styles-083-expected.html
    M Source/WTF/wtf/MathExtras.h
    M Source/WebCore/css/CSSCounterStyleDescriptors.cpp
    M Source/WebCore/css/CSSCounterStyleDescriptors.h
    M Source/WebCore/css/CSSCounterStyleRule.cpp
    M Source/WebCore/css/CSSRegisteredCounterStyle.cpp
    M Source/WebCore/css/CSSRegisteredCounterStyle.h
    M Source/WebCore/css/CSSValueKeywords.in
    M Source/WebCore/css/counterStyles.css
    M Source/WebCore/css/parser/CSSPropertyParserConsumer+CounterStyles.cpp

  Log Message:
  -----------
  [css-counter-styles] Support the extended range for the longhand East Asian 
counter styles
https://bugs.webkit.org/show_bug.cgi?id=257369
rdar://109875198

Reviewed by Darin Adler.

The nine longhand East Asian counter styles stopped at -9999 to 9999, so a list 
numbered
past 9999 dropped to cjk-decimal partway down. Chrome and Firefox already 
number the
Chinese and Korean styles over the extended range.

counterForSystemCJK only implemented the Chinese form of the algorithm, and the 
Japanese
and Korean styles were built out of additive-symbols, which cannot reach past 
one group of
four digits. Therefore the algorithm now takes the language and the formality, 
and the
Japanese and Korean styles get internal systems like the Chinese ones already 
have. The
negative sign now comes from the negative descriptor, because the Japanese and 
Korean signs
are four characters long and every other system already works that way. The 
output buffer
has room for two characters per abstract character, because the simplified 
Chinese fourth
group marker is spelled with two and the old one held a single character of 
each.

Resync the nine reference files corrected by web-platform-tests/wpt#54469. 
WebKit imported
this directory on 2025-08-21, twelve days before that landed, so the copies 
here still
expect the informal "drop ones" rule in the formal styles and spell the Korean 
styles with
characters from the Chinese and hangul ones.

Cover the range with reference tests in css/css-counter-styles, one per style, 
rather than a
layout test. Section 7.1.2 is optional, so they carry the .optional filename 
flag, and they
go upstream next. The values stay inside what a counter value can hold, so the 
rows are all
defined by the algorithm rather than by where an engine truncates.

A counter value is an int, so the reachable part of the new range stops at 
2147483647.
Reaching the rest of it needs a wider counter value, which is separate work.

* LayoutTests/TestExpectations:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/cjk-ideographic/counter-cjk-ideographic-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-range.optional.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range.optional-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-range.optional.html:
* LayoutTests/fast/lists/li-values-expected.txt:
* LayoutTests/fast/lists/li-values.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/css3-counter-styles-049-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/css3-counter-styles-044-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/css3-counter-styles-054-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/css3-counter-styles-064-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/css3-counter-styles-059-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/css3-counter-styles-078-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/css3-counter-styles-073-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/css3-counter-styles-088-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/css3-counter-styles-083-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-ref.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-formal/counter-japanese-formal-extended-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/japanese-informal/counter-japanese-informal-extended-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hangul-formal/counter-korean-hangul-formal-extended-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-formal/counter-korean-hanja-formal-extended-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/korean-hanja-informal/counter-korean-hanja-informal-extended-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-formal/counter-simp-chinese-formal-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/simp-chinese-informal/counter-simp-chinese-informal-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-formal/counter-trad-chinese-formal-expected.html:
* 
LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/trad-chinese-informal/counter-trad-chinese-informal-expected.html:
* Source/WTF/wtf/MathExtras.h:
(absoluteValueAsUnsigned):
* Source/WebCore/css/CSSCounterStyleDescriptors.cpp:
(WebCore::CSSCounterStyleDescriptors::areSymbolsValidForSystem):
(WebCore::CSSCounterStyleDescriptors::systemCSSText const):
* Source/WebCore/css/CSSCounterStyleDescriptors.h:
* Source/WebCore/css/CSSCounterStyleRule.cpp:
(WebCore::toCounterStyleSystemEnum):
* Source/WebCore/css/CSSRegisteredCounterStyle.cpp:
(WebCore::counterForSystemCJK):
(WebCore::CSSRegisteredCounterStyle::counterForSystemSimplifiedChineseInformal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemSimplifiedChineseFormal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemTraditionalChineseInformal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemTraditionalChineseFormal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemJapaneseInformal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemJapaneseFormal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemKoreanHangulFormal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemKoreanHanjaInformal):
(WebCore::CSSRegisteredCounterStyle::counterForSystemKoreanHanjaFormal):
(WebCore::CSSRegisteredCounterStyle::initialRepresentation const):
(WebCore::CSSRegisteredCounterStyle::shouldApplyNegativeSymbols const):
(WebCore::CSSRegisteredCounterStyle::isInRange const):
* Source/WebCore/css/CSSRegisteredCounterStyle.h:
* Source/WebCore/css/CSSValueKeywords.in:
* Source/WebCore/css/counterStyles.css:
(@counter-style japanese-informal):
(@counter-style japanese-formal):
(@counter-style korean-hangul-formal):
(@counter-style korean-hanja-informal):
(@counter-style korean-hanja-formal):
(@counter-style simp-chinese-informal):
(@counter-style simp-chinese-formal):
(@counter-style trad-chinese-informal):
(@counter-style trad-chinese-formal):
(@counter-style cjk-ideographic):
* Source/WebCore/css/parser/CSSPropertyParserConsumer+CounterStyles.cpp:
(WebCore::CSSPropertyParserHelpers::consumeCounterStyleSystem):

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



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

Reply via email to