Changeset 292759 in webkit
- Timestamp:
- Apr 11, 2022 8:43:50 PM (3 months ago)
- Location:
- trunk
- Files:
-
- 2 added
- 22 edited
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/resources/resource-files.json (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt (modified) (3 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing.html (modified) (6 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/canvas-as-container-crash.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/force-sibling-style-crash.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/w3c-import.log (modified) (2 diffs)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSComputedStyleDeclaration.cpp (modified) (1 diff)
-
Source/WebCore/css/CSSProperties.json (modified) (1 diff)
-
Source/WebCore/css/StyleProperties.cpp (modified) (3 diffs)
-
Source/WebCore/css/parser/CSSParserFastPaths.cpp (modified) (1 diff)
-
Source/WebCore/css/parser/CSSPropertyParser.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r292732 r292759 1 2022-04-11 Antti Koivisto <antti@apple.com> 2 3 [CSS Container Queries] Update container shorthand order 4 https://bugs.webkit.org/show_bug.cgi?id=239065 5 6 Reviewed by Alan Bujtas. 7 8 Update from WPT repo. 9 10 * resources/resource-files.json: 11 * web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt: 12 * web-platform-tests/css/css-contain/container-queries/at-container-parsing.html: 13 * web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt: 14 * web-platform-tests/css/css-contain/container-queries/container-computed.html: 15 * web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt: 16 * web-platform-tests/css/css-contain/container-queries/container-name-parsing.html: 17 * web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt: 18 * web-platform-tests/css/css-contain/container-queries/container-parsing.html: 19 * web-platform-tests/css/css-contain/container-queries/container-selection.html: 20 * web-platform-tests/css/css-contain/container-queries/container-type-parsing.html: 21 * web-platform-tests/css/css-contain/container-queries/crashtests/canvas-as-container-crash.html: 22 * web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html: 23 * web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html: 24 * web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html: Added. 25 * web-platform-tests/css/css-contain/container-queries/crashtests/force-sibling-style-crash.html: Added. 26 * web-platform-tests/css/css-contain/container-queries/crashtests/w3c-import.log: 27 1 28 2022-04-11 Nikolaos Mouchtaris <nmouchtaris@apple.com> 2 29 -
trunk/LayoutTests/imported/w3c/resources/resource-files.json
r292419 r292759 664 664 "web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html", 665 665 "web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html", 666 "web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html", 666 667 "web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-001-crash.html", 667 668 "web-platform-tests/css/css-contain/container-queries/crashtests/container-type-change-chrome-legacy-crash.html", … … 671 672 "web-platform-tests/css/css-contain/container-queries/crashtests/flex-in-columns-003-crash.html", 672 673 "web-platform-tests/css/css-contain/container-queries/crashtests/focus-inside-content-visibility-crash.html", 674 "web-platform-tests/css/css-contain/container-queries/crashtests/force-sibling-style-crash.html", 673 675 "web-platform-tests/css/css-contain/container-queries/crashtests/grid-in-columns-000-crash.html", 674 676 "web-platform-tests/css/css-contain/container-queries/crashtests/grid-in-columns-001-crash.html", -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing-expected.txt
r291993 r292759 20 20 PASS (not (width: 100px)) 21 21 PASS ((width: 100px) and (height: 100px)) 22 PASS ((width: 50px) or (height: 100px)) 22 PASS (((width: 40px) or (width: 50px)) and (height: 100px)) 23 PASS ((width: 100px) and ((height: 40px) or (height: 50px))) 24 PASS (((width: 40x) and (height: 50px)) or (height: 100px)) 25 PASS ((width: 50px) or ((width: 40px) and (height: 50px))) 26 PASS ((width: 100px) and (not (height: 100px))) 23 27 PASS (width < 100px) 28 PASS (width <= 100px) 29 PASS (width = 100px) 30 PASS (width > 100px) 31 PASS (width >= 100px) 24 32 PASS (100px < width) 33 PASS (100px <= width) 34 PASS (100px = width) 35 PASS (100px > width) 36 PASS (100px >= width) 25 37 PASS (100px < width < 200px) 38 PASS (100px < width <= 200px) 39 PASS (100px <= width < 200px) 40 PASS (100px > width > 200px) 41 PASS (100px > width >= 200px) 42 PASS (100px >= width > 200px) 26 43 PASS foo(width) 27 44 PASS size(width) … … 34 51 PASS size(grid) 35 52 PASS (grid) 53 PASS (width == 100px) 54 FAIL (100px == width) assert_equals: expected 2 but got 0 55 FAIL (100px = width = 200px) assert_equals: expected "" but got "true" 56 FAIL (100px < width > 200px) assert_equals: expected "" but got "true" 57 FAIL (100px <= width >= 200px) assert_equals: expected "" but got "true" 58 FAIL (100px <= width > 200px) assert_equals: expected "" but got "true" 59 FAIL (100px < width >= 200px) assert_equals: expected "" but got "true" 60 FAIL (100px : width : 200px) assert_equals: expected 2 but got 0 36 61 PASS screen 37 62 PASS print … … 43 68 PASS not screen or (width: 100px) 44 69 PASS (width: 100px), (height: 100px) 70 PASS (width: 100px) and (height: 100px) 71 PASS (width: 100px) or (height: 100px) 72 PASS not (width: 100px) 73 PASS foo (width: 100px) 45 74 PASS Container selector: foo 46 75 PASS Container selector: foo -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/at-container-parsing.html
r291993 r292759 5 5 <script src="/resources/testharnessreport.js"></script> 6 6 <script src="support/cq-testcommon.js"></script> 7 <div style="container :size; width:100px; height:100px">7 <div style="container-name:name;container-type:size; width:100px; height:100px"> 8 8 <main id=main></main> 9 9 </div> … … 26 26 test(t => { 27 27 t.add_cleanup(cleanup_main); 28 let style = set_style(`@container ${query} {}`);28 let style = set_style(`@container name ${query} {}`); 29 29 assert_equals(style.sheet.rules.length, 0); 30 30 }, query); … … 37 37 t.add_cleanup(cleanup_main); 38 38 let style = set_style(` 39 @container ${query} {}40 @container (${query} or (not ${query})) { main { --match:true; } }39 @container name ${query} {} 40 @container name (${query} or (not ${query})) { main { --match:true; } } 41 41 `); 42 42 assert_equals(style.sheet.rules.length, 2); … … 91 91 test_query_known('(not (width: 100px))'); 92 92 test_query_known('((width: 100px) and (height: 100px))'); 93 test_query_known('((width: 50px) or (height: 100px))'); 93 test_query_known('(((width: 40px) or (width: 50px)) and (height: 100px))'); 94 test_query_known('((width: 100px) and ((height: 40px) or (height: 50px)))'); 95 test_query_known('(((width: 40x) and (height: 50px)) or (height: 100px))'); 96 test_query_known('((width: 50px) or ((width: 40px) and (height: 50px)))'); 97 test_query_known('((width: 100px) and (not (height: 100px)))'); 94 98 test_query_known('(width < 100px)'); 99 test_query_known('(width <= 100px)'); 100 test_query_known('(width = 100px)'); 101 test_query_known('(width > 100px)'); 102 test_query_known('(width >= 100px)'); 95 103 test_query_known('(100px < width)'); 104 test_query_known('(100px <= width)'); 105 test_query_known('(100px = width)'); 106 test_query_known('(100px > width)'); 107 test_query_known('(100px >= width)'); 96 108 test_query_known('(100px < width < 200px)'); 109 test_query_known('(100px < width <= 200px)'); 110 test_query_known('(100px <= width < 200px)'); 111 test_query_known('(100px > width > 200px)'); 112 test_query_known('(100px > width >= 200px)'); 113 test_query_known('(100px >= width > 200px)'); 97 114 98 115 test_query_unknown('foo(width)'); … … 106 123 test_query_unknown('size(grid)'); 107 124 test_query_unknown('(grid)'); 125 test_query_unknown('(width == 100px)'); 126 test_query_unknown('(100px == width)'); 127 test_query_unknown('(100px = width = 200px)'); 128 test_query_unknown('(100px < width > 200px)'); 129 test_query_unknown('(100px <= width >= 200px)'); 130 test_query_unknown('(100px <= width > 200px)'); 131 test_query_unknown('(100px < width >= 200px)'); 132 test_query_unknown('(100px : width : 200px)'); 108 133 109 134 test_query_invalid('screen'); … … 116 141 test_query_invalid('not screen or (width: 100px)'); 117 142 test_query_invalid('(width: 100px), (height: 100px)'); 143 test_query_invalid('(width: 100px) and (height: 100px)'); 144 test_query_invalid('(width: 100px) or (height: 100px)'); 145 test_query_invalid('not (width: 100px)'); 146 test_query_invalid('foo (width: 100px)'); 118 147 119 148 test_container_selector_valid('foo'); -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed-expected.txt
r291293 r292759 3 3 PASS Property container value 'inherit' 4 4 PASS Property container value 'unset' 5 PASS Property container value ' inline-size'6 PASS Property container value ' size'5 PASS Property container value 'none / inline-size' 6 PASS Property container value 'none / size' 7 7 PASS Property container value 'inline-size / inline-size' 8 PASS Property container value ' size / block-size'9 FAIL Property container value ' size style / name' assert_true: 'size style / name' is a supported value for container. expected true got false10 FAIL Property container value ' inline-size style/ name' assert_true: 'inline-size style/ name' is a supported value for container. expected true got false11 PASS Property container value ' inline-size / foo'12 PASS Property container value ' inline-size /foo'13 PASS Property container value ' inline-size/ foo'14 PASS Property container value ' inline-size/foo'15 PASS Property container value ' size / FoO'16 PASS Property container value ' size / foo bar'8 PASS Property container value 'block-size / size' 9 FAIL Property container value 'name / size style' assert_true: 'name / size style' is a supported value for container. expected true got false 10 FAIL Property container value 'name /inline-size style' assert_true: 'name /inline-size style' is a supported value for container. expected true got false 11 PASS Property container value 'foo / inline-size' 12 PASS Property container value 'foo /inline-size' 13 PASS Property container value 'foo/ inline-size' 14 PASS Property container value 'foo/inline-size' 15 PASS Property container value 'FoO / size' 16 PASS Property container value 'foo bar / size' 17 17 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-computed.html
r291293 r292759 15 15 test_computed_value('container', 'inherit', 'none'); 16 16 test_computed_value('container', 'unset', 'none'); 17 test_computed_value('container', ' inline-size');18 test_computed_value('container', ' size');17 test_computed_value('container', 'none / inline-size'); 18 test_computed_value('container', 'none / size'); 19 19 test_computed_value('container', 'inline-size / inline-size'); 20 test_computed_value('container', ' size / block-size');21 test_computed_value('container', ' size style / name', 'style size / name');22 test_computed_value('container', ' inline-size style/ name', 'style inline-size / name');23 test_computed_value('container', ' inline-size / foo');24 test_computed_value('container', ' inline-size /foo', 'inline-size / foo');25 test_computed_value('container', ' inline-size/ foo', 'inline-size / foo');26 test_computed_value('container', ' inline-size/foo', 'inline-size / foo');27 test_computed_value('container', ' size / FoO', 'size / FoO');28 test_computed_value('container', ' size / foo bar', 'size / foo bar');20 test_computed_value('container', 'block-size / size'); 21 test_computed_value('container', 'name / size style', 'name / style size'); 22 test_computed_value('container', 'name /inline-size style', 'name / style inline-size'); 23 test_computed_value('container', 'foo / inline-size'); 24 test_computed_value('container', 'foo /inline-size', 'foo / inline-size'); 25 test_computed_value('container', 'foo/ inline-size', 'foo / inline-size'); 26 test_computed_value('container', 'foo/inline-size', 'foo / inline-size'); 27 test_computed_value('container', 'FoO / size'); 28 test_computed_value('container', 'foo bar / size', 'foo bar / size'); 29 29 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing-expected.txt
r291993 r292759 10 10 PASS e.style['container-name'] = "foo foo" should set the property value 11 11 PASS e.style['container-name'] = "\\!escaped" should set the property value 12 PASS e.style['container-name'] = "not" should set the property value 12 13 PASS e.style['container-name'] = "none none" should not set the property value 13 14 PASS e.style['container-name'] = "foo, bar" should not set the property value -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-name-parsing.html
r291993 r292759 21 21 test_valid_value('container-name', 'foo foo'); 22 22 test_valid_value('container-name', '\\!escaped'); 23 test_valid_value('container-name', 'not'); 23 24 24 25 test_invalid_value('container-name', 'none none'); -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing-expected.txt
r291293 r292759 5 5 PASS e.style['container'] = "revert" should set the property value 6 6 PASS e.style['container'] = "none" should set the property value 7 FAIL e.style['container'] = "none / none" should set the property value assert_equals: serialization should be canonical expected "none" but got "none / none" 7 PASS e.style['container'] = "none / none" should set the property value 8 8 PASS e.style['container'] = "inline-size" should set the property value 9 FAIL e.style['container'] = "inline-size / none" should set the property value assert_equals: serialization should be canonical expected "inline-size" but got "inline-size / none" 9 PASS e.style['container'] = "none / inline-size" should set the property value 10 10 PASS e.style['container'] = "size" should set the property value 11 PASS e.style['container'] = " size / block-size" should set the property value11 PASS e.style['container'] = "block-size / size" should set the property value 12 12 PASS e.style['container'] = "inline-size / inline-size" should set the property value 13 13 PASS e.style['container'] = "size / size" should set the property value 14 FAIL e.style['container'] = "size style / none" should set the property value assert_not_equals: property should be set got disallowed value "" 15 PASS e.style['container'] = "size / foo" should set the property value 16 PASS e.style['container'] = "size / foo bar" should set the property value 14 FAIL e.style['container'] = "none / size style" should set the property value assert_not_equals: property should be set got disallowed value "" 15 PASS e.style['container'] = "foo" should set the property value 16 PASS e.style['container'] = "foo / none" should set the property value 17 PASS e.style['container'] = "foo bar / size" should set the property value 18 PASS e.style['container'] = "foo bar / none" should set the property value 19 PASS e.style['container'] = "FOO / size" should set the property value 20 PASS e.style['container'] = "FOO/size" should set the property value 21 PASS e.style['container'] = " FOO /size" should set the property value 17 22 PASS e.style['container'] = "none none" should not set the property value 18 23 PASS e.style['container'] = "none inline-size" should not set the property value 19 PASS e.style['container'] = " inline-size none" should not set the property value20 PASS e.style['container'] = " inline-size inline-size" should not set the property value21 PASS e.style['container'] = " inline-size block-size unknown" should not set the property value22 PASS e.style['container'] = " inline-size block-size" should not set the property value23 PASS e.style['container'] = " size block-size" should not set the property value24 PASS e.style['container'] = "none / inline-size none" should not set the property value 25 PASS e.style['container'] = "none / inline-size inline-size" should not set the property value 26 PASS e.style['container'] = "none / inline-size block-size unknown" should not set the property value 27 PASS e.style['container'] = "none / inline-size block-size" should not set the property value 28 PASS e.style['container'] = "none / size block-size" should not set the property value 24 29 PASS e.style['container'] = "none, none" should not set the property value 25 PASS e.style['container'] = " foo" should not set the property value26 PASS e.style['container'] = " foo, bar" should not set the property value30 PASS e.style['container'] = "none / foo" should not set the property value 31 PASS e.style['container'] = "none / foo, bar" should not set the property value 27 32 PASS e.style['container'] = "#fff" should not set the property value 28 33 PASS e.style['container'] = "1px" should not set the property value 29 34 PASS e.style['container'] = "default" should not set the property value 30 PASS e.style['container'] = " inline-size / 10px" should not set the property value31 PASS e.style['container'] = " inline-size / #fefefe" should not set the property value32 PASS e.style['container'] = " inline-size / calc(3px)" should not set the property value35 PASS e.style['container'] = "10px / inline-size" should not set the property value 36 PASS e.style['container'] = "#fefefe / inline-size" should not set the property value 37 PASS e.style['container'] = "calc(3px) / inline-size" should not set the property value 33 38 PASS e.style['container'] = "size 1 / name" should not set the property value 34 PASS e.style['container'] = " block-size" should not set the property value35 PASS e.style['container'] = " block-size / name" should not set the property value36 PASS e.style['container'] = " block-size / NAME" should not set the property value37 PASS e.style['container'] = " block-size/NAME" should not set the property value39 PASS e.style['container'] = "none / block-size" should not set the property value 40 PASS e.style['container'] = "name / block-size" should not set the property value 41 PASS e.style['container'] = " NAME / block-size" should not set the property value 42 PASS e.style['container'] = "NAME/block-size" should not set the property value 38 43 PASS e.style['container'] = "block-size / block-size" should not set the property value 39 44 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-parsing.html
r291293 r292759 19 19 test_valid_value('container', 'none / none', 'none'); 20 20 test_valid_value('container', 'inline-size'); 21 test_valid_value('container', ' inline-size / none', 'inline-size');21 test_valid_value('container', 'none / inline-size', 'none / inline-size'); 22 22 test_valid_value('container', 'size'); 23 test_valid_value('container', ' size / block-size');23 test_valid_value('container', 'block-size / size'); 24 24 test_valid_value('container', 'inline-size / inline-size'); 25 25 test_valid_value('container', 'size / size'); 26 test_valid_value('container', 'size style / none', 'size style'); 27 test_valid_value('container', 'size / foo'); 28 test_valid_value('container', 'size / foo bar'); 26 test_valid_value('container', 'none / size style', 'none / style size'); 27 test_valid_value('container', 'foo'); 28 test_valid_value('container', 'foo / none', 'foo'); 29 test_valid_value('container', 'foo bar / size'); 30 test_valid_value('container', 'foo bar / none', 'foo bar'); 31 test_valid_value('container', 'FOO / size'); 32 test_valid_value('container', 'FOO/size', 'FOO / size'); 33 test_valid_value('container', ' FOO /size', 'FOO / size'); 29 34 30 35 test_invalid_value('container', 'none none'); 31 36 test_invalid_value('container', 'none inline-size'); 32 test_invalid_value('container', ' inline-size none');33 test_invalid_value('container', ' inline-size inline-size');34 test_invalid_value('container', ' inline-size block-size unknown');35 test_invalid_value('container', ' inline-size block-size');36 test_invalid_value('container', ' size block-size');37 test_invalid_value('container', 'none / inline-size none'); 38 test_invalid_value('container', 'none / inline-size inline-size'); 39 test_invalid_value('container', 'none / inline-size block-size unknown'); 40 test_invalid_value('container', 'none / inline-size block-size'); 41 test_invalid_value('container', 'none / size block-size'); 37 42 test_invalid_value('container', 'none, none'); 38 test_invalid_value('container', ' foo');39 test_invalid_value('container', ' foo, bar');43 test_invalid_value('container', 'none / foo'); 44 test_invalid_value('container', 'none / foo, bar'); 40 45 test_invalid_value('container', '#fff'); 41 46 test_invalid_value('container', '1px'); 42 47 test_invalid_value('container', 'default'); 43 test_invalid_value('container', ' inline-size / 10px');44 test_invalid_value('container', ' inline-size / #fefefe');45 test_invalid_value('container', ' inline-size / calc(3px)');48 test_invalid_value('container', '10px / inline-size'); 49 test_invalid_value('container', '#fefefe / inline-size'); 50 test_invalid_value('container', 'calc(3px) / inline-size'); 46 51 test_invalid_value('container', 'size 1 / name'); 47 test_invalid_value('container', ' block-size');48 test_invalid_value('container', ' block-size / name');49 test_invalid_value('container', ' block-size / NAME', 'block-size / NAME');50 test_invalid_value('container', ' block-size/NAME','block-size / NAME');52 test_invalid_value('container', 'none / block-size'); 53 test_invalid_value('container', 'name / block-size'); 54 test_invalid_value('container', ' NAME / block-size', 'NAME / block-size'); 55 test_invalid_value('container', 'NAME/block-size','NAME / block-size'); 51 56 test_invalid_value('container', 'block-size / block-size'); 52 57 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-selection.html
r291036 r292759 25 25 .size { container-type: size; } 26 26 27 .a-inline { container: inline-size / a; }28 .a-size { container: size / a; }27 .a-inline { container: a / inline-size; } 28 .a-size { container: a / size; } 29 29 30 .b-size { container: inline-size / b; }31 .b-size { container: size / b; }30 .b-size { container: inline- b / size; } 31 .b-size { container: b / size; } 32 32 33 .ab-size { container: size / a b; }33 .ab-size { container: a b / size; } 34 34 35 35 .a { container-name: a; contain: strict; } -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/container-type-parsing.html
r291293 r292759 20 20 test_valid_value('container-type', 'inline-size'); 21 21 22 test_valid_value('container-type', 'inline-size style' );22 test_valid_value('container-type', 'inline-size style', 'style inline-size'); 23 23 test_valid_value('container-type', 'style inline-size'); 24 24 test_valid_value('container-type', 'style size'); -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/canvas-as-container-crash.html
r291993 r292759 4 4 <link rel="help" href="https://crbug.com/1289850"> 5 5 <p>Pass if there is no crash.</p> 6 <canvas id="canv" style="display:block;position:absolute;container :inline-size"></canvas>6 <canvas id="canv" style="display:block;position:absolute;container-type:inline-size"></canvas> 7 7 <script> 8 8 canv.offsetTop; -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html
r291993 r292759 2 2 <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> 3 3 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1289718"> 4 <div style="container :inline-size;">4 <div style="container-type:inline-size;"> 5 5 <span style="columns:2;"></span> 6 6 </div> -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html
r291993 r292759 2 2 <link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> 3 3 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1289718"> 4 <div style="container :inline-size;">4 <div style="container-type:inline-size;"> 5 5 <video style="columns:2;"></video> 6 6 </div> -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/w3c-import.log
r291993 r292759 18 18 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-000-crash.html 19 19 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-bug-1289718-001-crash.html 20 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/chrome-quotes-crash.html 20 21 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/columns-in-table-001-crash.html 21 22 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/container-type-change-chrome-legacy-crash.html … … 25 26 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/flex-in-columns-003-crash.html 26 27 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/focus-inside-content-visibility-crash.html 28 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/force-sibling-style-crash.html 27 29 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/grid-in-columns-000-crash.html 28 30 /LayoutTests/imported/w3c/web-platform-tests/css/css-contain/container-queries/crashtests/grid-in-columns-001-crash.html -
trunk/Source/WebCore/ChangeLog
r292754 r292759 1 2022-04-11 Antti Koivisto <antti@apple.com> 2 3 [CSS Container Queries] Update container shorthand order 4 https://bugs.webkit.org/show_bug.cgi?id=239065 5 6 Reviewed by Alan Bujtas. 7 8 The format is now 'name / type' instead of 'type / name'. 9 10 https://drafts.csswg.org/css-contain-3/#container-shorthand 11 12 * css/CSSComputedStyleDeclaration.cpp: 13 (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): 14 * css/StyleProperties.cpp: 15 (WebCore::isNoneValue): 16 (WebCore::isValueID): 17 (WebCore::StyleProperties::getPropertyValue const): 18 19 Also make "foo / none" serialize as "foo". 20 21 * css/parser/CSSParserFastPaths.cpp: 22 (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): 23 * css/parser/CSSPropertyParser.cpp: 24 (WebCore::consumeContainerName): 25 (WebCore::CSSPropertyParser::consumeContainerShorthand): 26 1 27 2022-04-11 Patrick Angle <pangle@apple.com> 2 28 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r292525 r292759 3744 3744 case CSSPropertyContainer: { 3745 3745 auto list = CSSValueList::createSlashSeparated(); 3746 list->append(propertyValue(CSSPropertyContainerType, DoNotUpdateLayout).releaseNonNull()); 3747 if (!style.containerNames().isEmpty()) 3746 if (style.containerNames().isEmpty()) 3747 list->append(cssValuePool.createIdentifierValue(CSSValueNone)); 3748 else 3748 3749 list->append(propertyValue(CSSPropertyContainerName, DoNotUpdateLayout).releaseNonNull()); 3750 if (style.containerType() != ContainerType::None) 3751 list->append(propertyValue(CSSPropertyContainerType, DoNotUpdateLayout).releaseNonNull()); 3749 3752 return list; 3750 3753 } -
trunk/Source/WebCore/css/CSSProperties.json
r292636 r292759 5287 5287 "codegen-properties": { 5288 5288 "longhands": [ 5289 "container- type",5290 "container- name"5289 "container-name", 5290 "container-type" 5291 5291 ] 5292 5292 }, -
trunk/Source/WebCore/css/StyleProperties.cpp
r292467 r292759 67 67 { 68 68 return value == "initial" || value == "inherit" || value == "unset" || value == "revert"; 69 } 70 71 static bool isNoneValue(const RefPtr<CSSValue>& value) 72 { 73 return value && value->isPrimitiveValue() && downcast<CSSPrimitiveValue>(value.get())->isValueID() && downcast<CSSPrimitiveValue>(value.get())->valueID() == CSSValueNone; 74 } 75 76 static bool isValueID(const Ref<CSSValue>& value, CSSValueID id) 77 { 78 return value->isPrimitiveValue() && downcast<CSSPrimitiveValue>(value.get()).isValueID() && downcast<CSSPrimitiveValue>(value.get()).valueID() == id; 79 } 80 81 static bool isValueID(const RefPtr<CSSValue>& value, CSSValueID id) 82 { 83 return value && isValueID(*value, id); 69 84 } 70 85 … … 252 267 return getShorthandValue(columnsShorthand()); 253 268 case CSSPropertyContainer: 269 if (auto type = getPropertyCSSValue(CSSPropertyContainerType)) { 270 if (isNoneValue(type)) { 271 if (auto name = getPropertyCSSValue(CSSPropertyContainerName)) 272 return name->cssText(); 273 return { }; 274 } 275 } 254 276 return getShorthandValue(containerShorthand(), " / "); 255 277 case CSSPropertyFlex: … … 843 865 } 844 866 845 static bool isNoneValue(const RefPtr<CSSValue>& value)846 {847 return value && value->isPrimitiveValue() && downcast<CSSPrimitiveValue>(value.get())->isValueID() && downcast<CSSPrimitiveValue>(value.get())->valueID() == CSSValueNone;848 }849 850 static bool isValueID(const Ref<CSSValue>& value, CSSValueID id)851 {852 return value->isPrimitiveValue() && downcast<CSSPrimitiveValue>(value.get()).isValueID() && downcast<CSSPrimitiveValue>(value.get()).valueID() == id;853 }854 855 static bool isValueID(const RefPtr<CSSValue>& value, CSSValueID id)856 {857 return value && isValueID(*value, id);858 }859 860 867 String StyleProperties::getGridTemplateValue() const 861 868 { -
trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp
r292463 r292759 900 900 return valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSSValueAll; 901 901 case CSSPropertyContainerType: 902 // FIXME: Support 'style' , 'state'. Thosewill require parsing the value as a list.902 // FIXME: Support 'style'. It will require parsing the value as a list. 903 903 return valueID == CSSValueNone || valueID == CSSValueSize || valueID == CSSValueInlineSize; 904 904 default: -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r292467 r292759 3863 3863 auto name = consumeSingleContainerName(range); 3864 3864 if (!name) 3865 return nullptr;3865 return list; 3866 3866 list->append(name.releaseNonNull()); 3867 3867 } while (!range.atEnd()); … … 6212 6212 bool CSSPropertyParser::consumeContainerShorthand(bool important) 6213 6213 { 6214 auto type = parseSingleValue(CSSPropertyContainerType);6215 if (! type)6214 auto name = consumeContainerName(m_range); 6215 if (!name) 6216 6216 return false; 6217 6217 6218 6218 bool sawSlash = false; 6219 6219 6220 auto consumeSlash Name = [&]() -> RefPtr<CSSValue> {6220 auto consumeSlashType = [&]() -> RefPtr<CSSValue> { 6221 6221 if (m_range.atEnd()) 6222 6222 return nullptr; … … 6224 6224 return nullptr; 6225 6225 sawSlash = true; 6226 return parseSingleValue(CSSPropertyContainer Name);6226 return parseSingleValue(CSSPropertyContainerType); 6227 6227 }; 6228 6228 6229 auto name = consumeSlashName();6230 6231 if (!m_range.atEnd() || (sawSlash && ! name))6229 auto type = consumeSlashType(); 6230 6231 if (!m_range.atEnd() || (sawSlash && !type)) 6232 6232 return false; 6233 6233 6234 addProperty(CSSPropertyContainer Type, CSSPropertyContainer, type.releaseNonNull(), important);6235 addPropertyWithImplicitDefault(CSSPropertyContainer Name, CSSPropertyContainer, WTFMove(name), CSSValuePool::singleton().createImplicitInitialValue(), important);6234 addProperty(CSSPropertyContainerName, CSSPropertyContainer, name.releaseNonNull(), important); 6235 addPropertyWithImplicitDefault(CSSPropertyContainerType, CSSPropertyContainer, WTFMove(type), CSSValuePool::singleton().createImplicitInitialValue(), important); 6236 6236 return true; 6237 6237 }
Note: See TracChangeset
for help on using the changeset viewer.