Skip to content

Commit

Permalink
[CSS-Typed-OM] Reification of primitive values of type CSS_INTEGER sh…
Browse files Browse the repository at this point in the history
…ould construct CSSUnitValues

https://bugs.webkit.org/show_bug.cgi?id=249412

Reviewed by Simon Fraser.

Reification of primitive values of type CSS_INTEGER should construct
CSSUnitValues (with type 'number'), not generic CSSStyleValues.

* LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/order-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/orphans-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/widows-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/z-index-expected.txt:
Rebaseline WPT tests now that more checks are passing.

* LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-start-end-expected.txt:
While this looks like a regression, I am not convinced the test is correct. The
test sets the `grid-row-start` property to 3 and expects a generic
CSSStyleValue back when querying the StylePropertyMap. However, since 3 is an
integer, we return a CSSUnitValue. I'll investigate this separately. I suspect
this may have to do with the fact that the `grid-row-start` value may be stored
as a list internally when an identifier is provided in addition to the integer.

* Source/WebCore/css/typedom/CSSStyleValueFactory.cpp:
(WebCore::CSSStyleValueFactory::reifyValue):

Canonical link: https://commits.webkit.org/257968@main
  • Loading branch information
cdumez committed Dec 16, 2022
1 parent b04af20 commit 4f73843
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 20 deletions.
Expand Up @@ -31,7 +31,7 @@ FAIL Setting 'grid-row-start' to a number: calc(2 + 3) throws TypeError assert_t
PASS Setting 'grid-row-start' to a transform: translate(50%, 50%) throws TypeError
PASS Setting 'grid-row-start' to a transform: perspective(10em) throws TypeError
PASS Setting 'grid-row-start' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
PASS 'grid-row-start' does not support '3'
FAIL 'grid-row-start' does not support '3' assert_class_string: Unsupported value must be a CSSStyleValue and not one of its subclasses expected "[object CSSStyleValue]" but got "[object CSSUnitValue]"
PASS 'grid-row-start' does not support 'span 2'
PASS 'grid-row-start' does not support '5 somegridarea span'
PASS Can set 'grid-row-end' to CSS-wide keywords: initial
Expand Down Expand Up @@ -66,7 +66,7 @@ FAIL Setting 'grid-row-end' to a number: calc(2 + 3) throws TypeError assert_thr
PASS Setting 'grid-row-end' to a transform: translate(50%, 50%) throws TypeError
PASS Setting 'grid-row-end' to a transform: perspective(10em) throws TypeError
PASS Setting 'grid-row-end' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
PASS 'grid-row-end' does not support '3'
FAIL 'grid-row-end' does not support '3' assert_class_string: Unsupported value must be a CSSStyleValue and not one of its subclasses expected "[object CSSStyleValue]" but got "[object CSSUnitValue]"
PASS 'grid-row-end' does not support 'span 2'
PASS 'grid-row-end' does not support '5 somegridarea span'
PASS Can set 'grid-column-start' to CSS-wide keywords: initial
Expand Down Expand Up @@ -101,7 +101,7 @@ FAIL Setting 'grid-column-start' to a number: calc(2 + 3) throws TypeError asser
PASS Setting 'grid-column-start' to a transform: translate(50%, 50%) throws TypeError
PASS Setting 'grid-column-start' to a transform: perspective(10em) throws TypeError
PASS Setting 'grid-column-start' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
PASS 'grid-column-start' does not support '3'
FAIL 'grid-column-start' does not support '3' assert_class_string: Unsupported value must be a CSSStyleValue and not one of its subclasses expected "[object CSSStyleValue]" but got "[object CSSUnitValue]"
PASS 'grid-column-start' does not support 'span 2'
PASS 'grid-column-start' does not support '5 somegridarea span'
PASS Can set 'grid-column-end' to CSS-wide keywords: initial
Expand Down Expand Up @@ -136,7 +136,7 @@ FAIL Setting 'grid-column-end' to a number: calc(2 + 3) throws TypeError assert_
PASS Setting 'grid-column-end' to a transform: translate(50%, 50%) throws TypeError
PASS Setting 'grid-column-end' to a transform: perspective(10em) throws TypeError
PASS Setting 'grid-column-end' to a transform: translate3d(0px, 1px, 2px) translate(0px, 1px) rotate3d(1, 2, 3, 45deg) rotate(45deg) scale3d(1, 2, 3) scale(1, 2) skew(1deg, 1deg) skewX(1deg) skewY(45deg) perspective(1px) matrix3d(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) matrix(1, 2, 3, 4, 5, 6) throws TypeError
PASS 'grid-column-end' does not support '3'
FAIL 'grid-column-end' does not support '3' assert_class_string: Unsupported value must be a CSSStyleValue and not one of its subclasses expected "[object CSSStyleValue]" but got "[object CSSUnitValue]"
PASS 'grid-column-end' does not support 'span 2'
PASS 'grid-column-end' does not support '5 somegridarea span'

Expand Up @@ -4,10 +4,10 @@ PASS Can set 'order' to CSS-wide keywords: inherit
PASS Can set 'order' to CSS-wide keywords: unset
PASS Can set 'order' to CSS-wide keywords: revert
PASS Can set 'order' to var() references: var(--A)
FAIL Can set 'order' to a number: 0 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'order' to a number: -3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'order' to a number: 3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'order' to a number: calc(2 + 3) assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
PASS Can set 'order' to a number: 0
FAIL Can set 'order' to a number: -3.14 assert_approx_equals: expected -3 +/- 0.000001 but got 0
PASS Can set 'order' to a number: 3.14
PASS Can set 'order' to a number: calc(2 + 3)
PASS Setting 'order' to a length: 0px throws TypeError
PASS Setting 'order' to a length: -3.14em throws TypeError
PASS Setting 'order' to a length: 3.14cm throws TypeError
Expand Down
Expand Up @@ -4,10 +4,10 @@ PASS Can set 'orphans' to CSS-wide keywords: inherit
PASS Can set 'orphans' to CSS-wide keywords: unset
PASS Can set 'orphans' to CSS-wide keywords: revert
PASS Can set 'orphans' to var() references: var(--A)
FAIL Can set 'orphans' to a number: 0 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'orphans' to a number: -3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'orphans' to a number: 3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'orphans' to a number: calc(2 + 3) assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'orphans' to a number: 0 assert_approx_equals: expected 1 +/- 0.000001 but got 0
FAIL Can set 'orphans' to a number: -3.14 assert_approx_equals: expected 1 +/- 0.000001 but got 0
PASS Can set 'orphans' to a number: 3.14
PASS Can set 'orphans' to a number: calc(2 + 3)
PASS Setting 'orphans' to a length: 0px throws TypeError
PASS Setting 'orphans' to a length: -3.14em throws TypeError
PASS Setting 'orphans' to a length: 3.14cm throws TypeError
Expand Down
Expand Up @@ -4,10 +4,10 @@ PASS Can set 'widows' to CSS-wide keywords: inherit
PASS Can set 'widows' to CSS-wide keywords: unset
PASS Can set 'widows' to CSS-wide keywords: revert
PASS Can set 'widows' to var() references: var(--A)
FAIL Can set 'widows' to a number: 0 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'widows' to a number: -3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'widows' to a number: 3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'widows' to a number: calc(2 + 3) assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'widows' to a number: 0 assert_approx_equals: expected 1 +/- 0.000001 but got 0
FAIL Can set 'widows' to a number: -3.14 assert_approx_equals: expected 1 +/- 0.000001 but got 0
PASS Can set 'widows' to a number: 3.14
PASS Can set 'widows' to a number: calc(2 + 3)
PASS Setting 'widows' to a length: 0px throws TypeError
PASS Setting 'widows' to a length: -3.14em throws TypeError
PASS Setting 'widows' to a length: 3.14cm throws TypeError
Expand Down
Expand Up @@ -5,10 +5,10 @@ PASS Can set 'z-index' to CSS-wide keywords: unset
PASS Can set 'z-index' to CSS-wide keywords: revert
PASS Can set 'z-index' to var() references: var(--A)
PASS Can set 'z-index' to the 'auto' keyword: auto
FAIL Can set 'z-index' to a number: 0 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'z-index' to a number: -3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'z-index' to a number: 3.14 assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
FAIL Can set 'z-index' to a number: calc(2 + 3) assert_equals: expected "CSSUnitValue" but got "CSSStyleValue"
PASS Can set 'z-index' to a number: 0
FAIL Can set 'z-index' to a number: -3.14 assert_approx_equals: expected -3 +/- 0.000001 but got 0
PASS Can set 'z-index' to a number: 3.14
PASS Can set 'z-index' to a number: calc(2 + 3)
PASS Setting 'z-index' to a length: 0px throws TypeError
PASS Setting 'z-index' to a length: -3.14em throws TypeError
PASS Setting 'z-index' to a length: 3.14cm throws TypeError
Expand Down
1 change: 1 addition & 0 deletions Source/WebCore/css/typedom/CSSStyleValueFactory.cpp
Expand Up @@ -176,6 +176,7 @@ ExceptionOr<Ref<CSSStyleValue>> CSSStyleValueFactory::reifyValue(Ref<CSSValue> c
}
switch (primitiveValue->primitiveType()) {
case CSSUnitType::CSS_NUMBER:
case CSSUnitType::CSS_INTEGER:
return Ref<CSSStyleValue> { CSSNumericFactory::number(primitiveValue->doubleValue()) };
case CSSUnitType::CSS_PERCENTAGE:
return Ref<CSSStyleValue> { CSSNumericFactory::percent(primitiveValue->doubleValue()) };
Expand Down

0 comments on commit 4f73843

Please sign in to comment.