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