Changeset 282397 in webkit
- Timestamp:
- Sep 14, 2021 11:38:58 AM (10 months ago)
- Location:
- trunk
- Files:
-
- 35 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip-expected.txt (modified) (1 diff)
-
LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip.html (modified) (7 diffs)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt (modified) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/inheritance-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-computed-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-valid-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt (modified) (1 diff)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt (modified) (1 diff)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/css/CSSComputedStyleDeclaration.cpp (modified) (2 diffs)
-
Source/WebCore/css/CSSPrimitiveValueMappings.h (modified) (1 diff)
-
Source/WebCore/css/CSSProperties.json (modified) (2 diffs)
-
Source/WebCore/css/StyleProperties.cpp (modified) (2 diffs)
-
Source/WebCore/css/StyleProperties.h (modified) (1 diff)
-
Source/WebCore/css/html.css (modified) (1 diff)
-
Source/WebCore/css/parser/CSSParserFastPaths.cpp (modified) (2 diffs)
-
Source/WebCore/css/parser/CSSPropertyParser.cpp (modified) (3 diffs)
-
Source/WebCore/css/parser/CSSPropertyParser.h (modified) (1 diff)
-
Source/WebCore/rendering/TextDecorationPainter.cpp (modified) (1 diff)
-
Source/WebCore/rendering/style/RenderStyle.cpp (modified) (1 diff)
-
Source/WebCore/rendering/style/RenderStyle.h (modified) (3 diffs)
-
Source/WebCore/rendering/style/RenderStyleConstants.cpp (modified) (1 diff)
-
Source/WebCore/rendering/style/RenderStyleConstants.h (modified) (2 diffs)
-
Source/WebCore/rendering/style/StyleRareInheritedData.cpp (modified) (3 diffs)
-
Source/WebCore/rendering/style/StyleRareInheritedData.h (modified) (1 diff)
-
Source/WebCore/style/InlineTextBoxStyle.cpp (modified) (2 diffs)
-
Source/WebCore/style/PropertyCascade.cpp (modified) (1 diff)
-
Source/WebCore/style/StyleBuilderConverter.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r282396 r282397 1 2021-09-14 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Implement text-decoration-skip-ink 4 https://bugs.webkit.org/show_bug.cgi?id=230244 5 6 Reviewed by Antti Koivisto. 7 8 * fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip-expected.txt: 9 * fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip.html: 10 * platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: 11 * platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: 12 1 13 2021-09-14 Sam Sneddon <gsnedders@apple.com> 2 14 -
trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip-expected.txt
r208733 r282397 1 Test 1 1 2 PASS cssRule.type is cssRule.STYLE_RULE 2 3 PASS declaration.length is 0 3 4 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "" 4 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 5 PASS declaration.getPropertyValue('text-decoration-skip') is "" 6 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "" 7 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 8 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 9 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 10 Test 2 5 11 PASS cssRule.type is cssRule.STYLE_RULE 6 12 PASS declaration.length is 1 7 13 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "initial" 8 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 9 PASS cssRule.type is cssRule.STYLE_RULE 10 PASS declaration.length is 1 11 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "ink" 12 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "ink" 13 PASS cssRule.type is cssRule.STYLE_RULE 14 PASS declaration.length is 0 15 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 16 PASS cssRule.type is cssRule.STYLE_RULE 17 PASS declaration.length is 0 18 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 19 PASS cssRule.type is cssRule.STYLE_RULE 20 PASS declaration.length is 0 21 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 22 PASS cssRule.type is cssRule.STYLE_RULE 23 PASS declaration.length is 0 24 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 25 PASS cssRule.type is cssRule.STYLE_RULE 26 PASS declaration.length is 0 27 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 28 PASS cssRule.type is cssRule.STYLE_RULE 29 PASS declaration.length is 0 30 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 31 PASS cssRule.type is cssRule.STYLE_RULE 32 PASS declaration.length is 1 33 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "objects" 34 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "objects" 35 PASS cssRule.type is cssRule.STYLE_RULE 36 PASS declaration.length is 0 37 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 38 PASS cssRule.type is cssRule.STYLE_RULE 39 PASS declaration.length is 0 40 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 41 PASS cssRule.type is cssRule.STYLE_RULE 42 PASS declaration.length is 0 43 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 44 PASS cssRule.type is cssRule.STYLE_RULE 45 PASS declaration.length is 0 46 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 47 PASS cssRule.type is cssRule.STYLE_RULE 48 PASS declaration.length is 0 49 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 14 PASS declaration.getPropertyValue('text-decoration-skip') is "initial" 15 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "initial" 16 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 17 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 18 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 19 PASS cssRule.type is cssRule.STYLE_RULE 20 PASS declaration.length is 1 21 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "initial" 22 PASS declaration.getPropertyValue('text-decoration-skip') is "initial" 23 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "initial" 24 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 25 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 26 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 27 PASS cssRule.type is cssRule.STYLE_RULE 28 PASS declaration.length is 1 29 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "initial" 30 PASS declaration.getPropertyValue('text-decoration-skip') is "initial" 31 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "initial" 32 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 33 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 34 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 35 Test 3 36 PASS cssRule.type is cssRule.STYLE_RULE 37 PASS declaration.length is 1 38 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "auto" 39 PASS declaration.getPropertyValue('text-decoration-skip') is "auto" 40 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "auto" 41 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 42 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 43 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 44 PASS cssRule.type is cssRule.STYLE_RULE 45 PASS declaration.length is 1 46 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "auto" 47 PASS declaration.getPropertyValue('text-decoration-skip') is "auto" 48 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "auto" 49 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 50 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 51 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 52 PASS cssRule.type is cssRule.STYLE_RULE 53 PASS declaration.length is 1 54 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "auto" 55 PASS declaration.getPropertyValue('text-decoration-skip') is "auto" 56 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "auto" 57 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 58 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 59 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 60 Test 4 61 PASS cssRule.type is cssRule.STYLE_RULE 62 PASS declaration.length is 0 63 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 64 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 65 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 66 PASS cssRule.type is cssRule.STYLE_RULE 67 PASS declaration.length is 0 68 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 69 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 70 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 71 PASS cssRule.type is cssRule.STYLE_RULE 72 PASS declaration.length is 0 73 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 74 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 75 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 76 Test 5 77 PASS cssRule.type is cssRule.STYLE_RULE 78 PASS declaration.length is 0 79 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 80 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 81 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 82 PASS cssRule.type is cssRule.STYLE_RULE 83 PASS declaration.length is 0 84 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 85 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 86 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 87 PASS cssRule.type is cssRule.STYLE_RULE 88 PASS declaration.length is 0 89 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 90 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 91 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 92 Test 6 93 PASS cssRule.type is cssRule.STYLE_RULE 94 PASS declaration.length is 0 95 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 96 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 97 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 98 PASS cssRule.type is cssRule.STYLE_RULE 99 PASS declaration.length is 0 100 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 101 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 102 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 103 PASS cssRule.type is cssRule.STYLE_RULE 104 PASS declaration.length is 0 105 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 106 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 107 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 108 Test 7 109 PASS cssRule.type is cssRule.STYLE_RULE 110 PASS declaration.length is 0 111 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 112 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 113 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 114 PASS cssRule.type is cssRule.STYLE_RULE 115 PASS declaration.length is 0 116 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 117 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 118 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 119 PASS cssRule.type is cssRule.STYLE_RULE 120 PASS declaration.length is 0 121 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 122 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 123 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 124 Test 8 125 PASS cssRule.type is cssRule.STYLE_RULE 126 PASS declaration.length is 0 127 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 128 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 129 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 130 PASS cssRule.type is cssRule.STYLE_RULE 131 PASS declaration.length is 0 132 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 133 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 134 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 135 PASS cssRule.type is cssRule.STYLE_RULE 136 PASS declaration.length is 0 137 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 138 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 139 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 140 Test 9 141 PASS cssRule.type is cssRule.STYLE_RULE 142 PASS declaration.length is 0 143 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 144 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 145 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 146 PASS cssRule.type is cssRule.STYLE_RULE 147 PASS declaration.length is 0 148 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 149 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 150 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 151 PASS cssRule.type is cssRule.STYLE_RULE 152 PASS declaration.length is 0 153 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 154 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 155 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 156 Test 10 50 157 PASS cssRule.type is cssRule.STYLE_RULE 51 158 PASS declaration.length is 1 52 159 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "none" 160 PASS declaration.getPropertyValue('text-decoration-skip') is "none" 161 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "none" 53 162 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "none" 54 PASS cssRule.type is cssRule.STYLE_RULE 55 PASS declaration.length is 0 56 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 163 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "none" 164 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "none" 165 PASS cssRule.type is cssRule.STYLE_RULE 166 PASS declaration.length is 1 167 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "none" 168 PASS declaration.getPropertyValue('text-decoration-skip') is "none" 169 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "none" 170 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "none" 171 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "none" 172 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "none" 173 PASS cssRule.type is cssRule.STYLE_RULE 174 PASS declaration.length is 1 175 PASS declaration.getPropertyValue('-webkit-text-decoration-skip') is "none" 176 PASS declaration.getPropertyValue('text-decoration-skip') is "none" 177 PASS declaration.getPropertyValue('text-decoration-skip-ink') is "none" 178 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "none" 179 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "none" 180 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "none" 181 Test 11 182 PASS cssRule.type is cssRule.STYLE_RULE 183 PASS declaration.length is 0 184 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 185 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 186 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 187 PASS cssRule.type is cssRule.STYLE_RULE 188 PASS declaration.length is 0 189 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 190 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 191 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 192 PASS cssRule.type is cssRule.STYLE_RULE 193 PASS declaration.length is 0 194 PASS computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText is "auto" 195 PASS computedStyle.getPropertyCSSValue('text-decoration-skip').cssText is "auto" 196 PASS computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText is "auto" 57 197 PASS successfullyParsed is true 58 198 -
trunk/LayoutTests/fast/css3-text/css3-text-decoration/text-decoration-skip/text-decoration-skip-roundtrip.html
r208733 r282397 2 2 <html> 3 3 <head> 4 <script src="../../../../resources/js-test -pre.js"></script>4 <script src="../../../../resources/js-test.js"></script> 5 5 </head> 6 6 <body> … … 12 12 declaration = cssRule.style; 13 13 shouldBe("declaration.length", "1"); 14 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", "ink"); 14 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", "auto"); 15 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip')", "auto"); 16 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip-ink')", "auto"); 15 17 computedStyle = window.getComputedStyle(target, null); 16 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "ink"); 18 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "auto"); 19 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip').cssText", "auto"); 20 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText", "auto"); 17 21 stylesheet.deleteRule(0); 18 22 } 19 23 20 function testObjectsIsValid(stylesheet, target) { 21 cssRule = stylesheet.cssRules.item(0); 22 shouldBe("cssRule.type", "cssRule.STYLE_RULE"); 23 declaration = cssRule.style; 24 shouldBe("declaration.length", "1"); 25 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", "objects"); 26 computedStyle = window.getComputedStyle(target, null); 27 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "objects"); 28 stylesheet.deleteRule(0); 29 } 30 31 function testEmptyIsObjects(stylesheet, target) { 24 function testEmpty(stylesheet, target) { 32 25 cssRule = stylesheet.cssRules.item(0); 33 26 shouldBe("cssRule.type", "cssRule.STYLE_RULE"); … … 35 28 shouldBe("declaration.length", "0"); 36 29 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", ""); 30 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip')", ""); 31 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip-ink')", ""); 37 32 computedStyle = window.getComputedStyle(target, null); 38 33 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "auto"); 34 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip').cssText", "auto"); 35 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText", "auto"); 39 36 stylesheet.deleteRule(0); 40 37 } … … 46 43 shouldBe("declaration.length", "1"); 47 44 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", "initial"); 45 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip')", "initial"); 46 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip-ink')", "initial"); 48 47 computedStyle = window.getComputedStyle(target, null); 49 48 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "auto"); 49 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip').cssText", "auto"); 50 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText", "auto"); 50 51 stylesheet.deleteRule(0); 51 52 } … … 58 59 computedStyle = window.getComputedStyle(target, null); 59 60 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "auto"); 61 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip').cssText", "auto"); 62 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText", "auto"); 60 63 stylesheet.deleteRule(0); 61 64 } … … 67 70 shouldBe("declaration.length", "1"); 68 71 shouldBeEqualToString("declaration.getPropertyValue('-webkit-text-decoration-skip')", "none"); 72 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip')", "none"); 73 shouldBeEqualToString("declaration.getPropertyValue('text-decoration-skip-ink')", "none"); 69 74 computedStyle = window.getComputedStyle(target, null); 70 75 shouldBeEqualToString("computedStyle.getPropertyCSSValue('-webkit-text-decoration-skip').cssText", "none"); 76 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip').cssText", "none"); 77 shouldBeEqualToString("computedStyle.getPropertyCSSValue('text-decoration-skip-ink').cssText", "none"); 71 78 stylesheet.deleteRule(0); 72 79 } … … 77 84 var target = document.getElementsByClassName("p")[0]; 78 85 86 debug("Test 1"); 79 87 stylesheet.insertRule(".p { }", 0); 80 testEmpty IsObjects(stylesheet, target);88 testEmpty(stylesheet, target); 81 89 90 debug("Test 2"); 82 91 stylesheet.insertRule(".p { -webkit-text-decoration-skip: initial; }", 0); 83 92 testInitialIsAuto(stylesheet, target); 93 stylesheet.insertRule(".p { text-decoration-skip: initial; }", 0); 94 testInitialIsAuto(stylesheet, target); 95 stylesheet.insertRule(".p { text-decoration-skip-ink: initial; }", 0); 96 testInitialIsAuto(stylesheet, target); 84 97 98 debug("Test 3"); 85 99 stylesheet.insertRule(".p { -webkit-text-decoration-skip: ink; }", 0); 86 100 testInkIsValid(stylesheet, target); 101 stylesheet.insertRule(".p { text-decoration-skip: ink; }", 0); 102 testInkIsValid(stylesheet, target); 103 stylesheet.insertRule(".p { text-decoration-skip-ink: auto; }", 0); 104 testInkIsValid(stylesheet, target); 87 105 106 debug("Test 4"); 88 107 stylesheet.insertRule(".p { -webkit-text-decoration-skip: ink ink ink ink ink; }", 0); 89 108 testInvalidRule(stylesheet, target); 109 stylesheet.insertRule(".p { text-decoration-skip: ink ink ink ink ink; }", 0); 110 testInvalidRule(stylesheet, target); 111 stylesheet.insertRule(".p { text-decoration-skip-ink: auto auto auto auto auto; }", 0); 112 testInvalidRule(stylesheet, target); 90 113 114 debug("Test 5"); 91 115 stylesheet.insertRule(".p { -webkit-text-decoration-skip: garbage; }", 0); 92 116 testInvalidRule(stylesheet, target); 117 stylesheet.insertRule(".p { text-decoration-skip: garbage; }", 0); 118 testInvalidRule(stylesheet, target); 119 stylesheet.insertRule(".p { text-decoration-skip-ink: garbage; }", 0); 120 testInvalidRule(stylesheet, target); 93 121 122 debug("Test 6"); 94 123 stylesheet.insertRule(".p { -webkit-text-decoration-skip: garbage ink; }", 0); 95 124 testInvalidRule(stylesheet, target); 125 stylesheet.insertRule(".p { text-decoration-skip: garbage ink; }", 0); 126 testInvalidRule(stylesheet, target); 127 stylesheet.insertRule(".p { text-decoration-skip-ink: garbage auto; }", 0); 128 testInvalidRule(stylesheet, target); 96 129 130 debug("Test 7"); 97 131 stylesheet.insertRule(".p { -webkit-text-decoration-skip: ink garbage; }", 0); 98 132 testInvalidRule(stylesheet, target); 133 stylesheet.insertRule(".p { text-decoration-skip: ink garbage; }", 0); 134 testInvalidRule(stylesheet, target); 135 stylesheet.insertRule(".p { text-decoration-skip-ink: auto garbage; }", 0); 136 testInvalidRule(stylesheet, target); 99 137 138 debug("Test 8"); 100 139 stylesheet.insertRule(".p { -webkit-text-decoration-skip: garbage ink garbage; }", 0); 101 140 testInvalidRule(stylesheet, target); 141 stylesheet.insertRule(".p { text-decoration-skip: garbage ink garbage; }", 0); 142 testInvalidRule(stylesheet, target); 143 stylesheet.insertRule(".p { text-decoration-skip-ink: garbage auto garbage; }", 0); 144 testInvalidRule(stylesheet, target); 102 145 146 debug("Test 9"); 103 147 stylesheet.insertRule(".p { -webkit-text-decoration-skip: ink garbage ink; }", 0); 104 148 testInvalidRule(stylesheet, target); 149 stylesheet.insertRule(".p { text-decoration-skip: ink garbage ink; }", 0); 150 testInvalidRule(stylesheet, target); 151 stylesheet.insertRule(".p { text-decoration-skip-ink: auto garbage auto; }", 0); 152 testInvalidRule(stylesheet, target); 105 153 106 stylesheet.insertRule(".p { -webkit-text-decoration-skip: objects; }", 0); 107 testObjectsIsValid(stylesheet, target); 108 109 stylesheet.insertRule(".p { -webkit-text-decoration-skip: objects objects objects objects objects; }", 0); 110 testInvalidRule(stylesheet, target); 111 112 stylesheet.insertRule(".p { -webkit-text-decoration-skip: garbage objects; }", 0); 113 testInvalidRule(stylesheet, target); 114 115 stylesheet.insertRule(".p { -webkit-text-decoration-skip: objects garbage; }", 0); 116 testInvalidRule(stylesheet, target); 117 118 stylesheet.insertRule(".p { -webkit-text-decoration-skip: garbage objects garbage; }", 0); 119 testInvalidRule(stylesheet, target); 120 121 stylesheet.insertRule(".p { -webkit-text-decoration-skip: objects garbage objects; }", 0); 122 testInvalidRule(stylesheet, target); 123 154 debug("Test 10"); 124 155 stylesheet.insertRule(".p { -webkit-text-decoration-skip: none; }", 0); 125 156 testNoneIsValid(stylesheet, target); 157 stylesheet.insertRule(".p { text-decoration-skip: none; }", 0); 158 testNoneIsValid(stylesheet, target); 159 stylesheet.insertRule(".p { text-decoration-skip-ink: none; }", 0); 160 testNoneIsValid(stylesheet, target); 126 161 162 debug("Test 11"); 127 163 stylesheet.insertRule(".p { -webkit-text-decoration-skip: ; }", 0); 128 164 testInvalidRule(stylesheet, target); 165 stylesheet.insertRule(".p { text-decoration-skip: ; }", 0); 166 testInvalidRule(stylesheet, target); 167 stylesheet.insertRule(".p { text-decoration-skip-ink: ; }", 0); 168 testInvalidRule(stylesheet, target); 129 169 </script> 130 <script src="../../../../resources/js-test-post.js"></script>131 170 </body> 132 171 </html> -
trunk/LayoutTests/imported/w3c/ChangeLog
r282396 r282397 1 2021-09-14 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Implement text-decoration-skip-ink 4 https://bugs.webkit.org/show_bug.cgi?id=230244 5 6 Reviewed by Antti Koivisto. 7 8 * web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: 9 * web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt: 10 * web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt: 11 * web-platform-tests/css/css-text-decor/inheritance-expected.txt: 12 * web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-computed-expected.txt: 13 * web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-valid-expected.txt: 14 * web-platform-tests/css/css-text-decor/text-decoration-skip-ink-expected.txt: 15 * web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt: 16 * web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: 17 1 18 2021-09-14 Sam Sneddon <gsnedders@apple.com> 2 19 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt
r282143 r282397 271 271 PASS text-decoration-line 272 272 PASS text-decoration-skip 273 PASS text-decoration-skip-ink 273 274 PASS text-decoration-style 274 275 PASS text-decoration-thickness -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-expected.txt
r282195 r282397 45 45 FAIL Property word-break value 'break-word' in ::marker assert_equals: expected "break-word" but got "normal" 46 46 FAIL Property word-spacing value '10px' in ::marker assert_equals: expected "10px" but got "0px" 47 FAIL Property text-decoration-skip-ink value 'none' in ::marker assert_ true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false47 FAIL Property text-decoration-skip-ink value 'none' in ::marker assert_equals: expected "none" but got "auto" 48 48 FAIL Property text-emphasis value 'dot rgb(0, 255, 0)' in ::marker assert_equals: expected "dot rgb(0, 255, 0)" but got "" 49 49 FAIL Property text-emphasis-color value 'rgb(0, 255, 0)' in ::marker assert_equals: expected "rgb(0, 255, 0)" but got "rgb(0, 0, 0)" -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation-expected.txt
r282195 r282397 31 31 FAIL Animation of word-break in ::marker assert_equals: expected "break-word" but got "normal" 32 32 FAIL Animation of word-spacing in ::marker assert_equals: expected "10px" but got "0px" 33 FAIL Animation of text-decoration-skip-ink in ::marker assert_ true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false33 FAIL Animation of text-decoration-skip-ink in ::marker assert_equals: expected "none" but got "auto" 34 34 FAIL Animation of text-emphasis in ::marker assert_equals: expected "triangle rgb(50, 100, 100)" but got "" 35 35 FAIL Animation of text-emphasis-color in ::marker assert_equals: expected "rgb(50, 100, 100)" but got "rgb(0, 0, 0)" … … 75 75 FAIL Transition of word-break in ::marker assert_equals: expected "break-word" but got "normal" 76 76 FAIL Transition of word-spacing in ::marker assert_equals: expected "10px" but got "0px" 77 FAIL Transition of text-decoration-skip-ink in ::marker assert_ true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false77 FAIL Transition of text-decoration-skip-ink in ::marker assert_equals: expected "none" but got "auto" 78 78 FAIL Transition of text-emphasis in ::marker assert_equals: expected "triangle rgb(50, 100, 100)" but got "" 79 79 FAIL Transition of text-emphasis-color in ::marker assert_equals: expected "rgb(50, 100, 100)" but got "rgb(0, 0, 0)" -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/inheritance-expected.txt
r267650 r282397 16 16 PASS Property text-underline-position has initial value auto 17 17 PASS Property text-underline-position inherits 18 FAIL Property text-decoration-skip-ink has initial value auto assert_true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false 19 FAIL Property text-decoration-skip-ink inherits assert_true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false 18 PASS Property text-decoration-skip-ink has initial value auto 19 PASS Property text-decoration-skip-ink inherits 20 20 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-computed-expected.txt
r264456 r282397 1 1 2 FAIL Property text-decoration-skip-ink value 'auto' assert_true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false 3 FAIL Property text-decoration-skip-ink value 'none' assert_true: text-decoration-skip-ink doesn't seem to be supported in the computed style expected true got false 2 PASS Property text-decoration-skip-ink value 'auto' 3 PASS Property text-decoration-skip-ink value 'none' 4 4 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/parsing/text-decoration-skip-ink-valid-expected.txt
r251689 r282397 1 1 2 FAIL e.style['text-decoration-skip-ink'] = "auto" should set the property value assert_not_equals: property should be set got disallowed value "" 3 FAIL e.style['text-decoration-skip-ink'] = "none" should set the property value assert_not_equals: property should be set got disallowed value "" 2 PASS e.style['text-decoration-skip-ink'] = "auto" should set the property value 3 PASS e.style['text-decoration-skip-ink'] = "none" should set the property value 4 4 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-text-decor/text-decoration-skip-ink-expected.txt
r264522 r282397 1 1 2 FAIL Body must have text-decoration-skip-ink auto by default. assert_equals: Must be set to value auto as initial value. expected (string) "auto" but got (undefined) undefined 3 FAIL Property text-decoration-skip-ink must support values auto, none and all. assert_true: Text-decoration-skip-ink must allow setting the value auto. expected true got false 2 PASS Body must have text-decoration-skip-ink auto by default. 3 PASS Property text-decoration-skip-ink must support values auto, none and all. 4 4 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt
r282143 r282397 10 10 FAIL Shorthands aren't serialized if there are other properties with different logical groups in between assert_equals: expected "margin-top: 10px; margin-right: 10px; margin-left: 10px; margin-inline-start: 10px; margin-block: 10px; margin-inline-end: 10px; margin-bottom: 10px;" but got "margin: 10px; margin-inline: 10px; margin-block: 10px;" 11 11 PASS Shorthands _are_ serialized if there are no other properties with different logical groups in between 12 FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0, 0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none; border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-s tyle: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"12 FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0, 0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none; border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;" 13 13 -
trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt
r282143 r282397 1 1 2 2 PASS getComputedStyle returns no style for detached element 3 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 39 14 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 39 15 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 39 16 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 39 13 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 392 4 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 392 5 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 392 6 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 392 7 7 PASS getComputedStyle returns no style for shadow tree outside of flattened tree 8 8 -
trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt
r282143 r282397 10 10 FAIL Shorthands aren't serialized if there are other properties with different logical groups in between assert_equals: expected "margin-top: 10px; margin-right: 10px; margin-left: 10px; margin-inline-start: 10px; margin-block: 10px; margin-inline-end: 10px; margin-bottom: 10px;" but got "margin: 10px; margin-inline: 10px; margin-block: 10px;" 11 11 PASS Shorthands _are_ serialized if there are no other properties with different logical groups in between 12 FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0, 0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none; border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-s tyle: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-touch-callout: default; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;"12 FAIL cssText on computed style declaration returns the empty string assert_equals: cssText is empty expected "" but got "align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; all: ; alt: \"\"; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; aspect-ratio: auto; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0); background-image: none; background-origin: padding-box; background-position-x: 0%; background-position-y: 0%; background-repeat: repeat; background-size: auto; baseline-shift: baseline; block-size: 0px; border-block-end-color: rgb(255, 0, 0); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 0, 0); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 0, 0); border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 0, 0); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 0, 0); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 0, 0); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 0, 0); border-right-style: none; border-right-width: 0px; border-start-end-radius: 0px; border-start-start-radius: 0px; border-top-color: rgb(255, 0, 0); border-top-left-radius: 0px; border-top-right-radius: 0px; border-top-style: none; border-top-width: 0px; bottom: auto; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 0, 0); color-interpolation: sRGB; color-interpolation-filters: linearRGB; color-rendering: auto; color-scheme: auto; column-count: auto; column-fill: balance; column-gap: normal; column-rule-color: rgb(255, 0, 0); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain: none; content: ; counter-increment: none; counter-reset: none; cursor: auto; cx: 0px; cy: 0px; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: -webkit-standard; font-feature-settings: normal; font-optical-sizing: auto; font-size: 13.333333015441895px; font-stretch: normal; font-style: normal; font-synthesis: style weight small-caps; font-variant-alternates: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-position: normal; font-variation-settings: normal; font-weight: normal; glyph-orientation-horizontal: 0deg; glyph-orientation-vertical: auto; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; hanging-punctuation: none; height: 0px; image-orientation: from-image; image-rendering: auto; inline-size: 784px; inset-block-end: auto; inset-block-start: auto; inset-inline-end: auto; inset-inline-start: auto; isolation: auto; justify-content: normal; justify-items: normal; justify-self: auto; kerning: 0; left: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask: none; mask-type: luminance; math-style: normal; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; opacity: 1; order: 0; orphans: auto; outline-color: rgb(255, 0, 0); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-x: auto; overscroll-behavior-y: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; page-break-after: auto; page-break-before: auto; page-break-inside: auto; paint-order: normal; perspective: none; perspective-origin-x: ; perspective-origin-y: ; pointer-events: auto; position: static; quotes: auto; r: 0px; resize: none; right: auto; rotate: none; row-gap: normal; rx: auto; ry: auto; scale: none; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-bottom: 0px; scroll-margin-inline: 0px; scroll-margin-left: 0px; scroll-margin-right: 0px; scroll-margin-top: 0px; scroll-padding-block: auto; scroll-padding-bottom: auto; scroll-padding-inline: auto; scroll-padding-left: auto; scroll-padding-right: auto; scroll-padding-top: auto; scroll-snap-align: none; scroll-snap-stop: normal; scroll-snap-type: none; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; size: ; speak-as: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-color: rgba(0, 0, 0, 0); stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-anchor: start; text-decoration: none; text-decoration-color: rgb(255, 0, 0); text-decoration-line: none; text-decoration-skip: auto; text-decoration-skip-ink: auto; text-decoration-style: solid; text-decoration-thickness: auto; text-indent: 0px; text-orientation: mixed; text-overflow: clip; text-rendering: auto; text-shadow: none; text-transform: none; text-underline-offset: auto; text-underline-position: auto; top: auto; touch-action: auto; transform: none; transform-box: view-box; transform-origin-x: ; transform-origin-y: ; transform-origin-z: ; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; translate: none; unicode-bidi: normal; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: auto; width: 784px; will-change: auto; word-break: normal; word-spacing: 0px; word-wrap: normal; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; -apple-color-filter: none; -apple-pay-button-style: black; -apple-pay-button-type: plain; -apple-trailing-word: auto; -webkit-appearance: none; -webkit-backdrop-filter: none; -webkit-background-clip: border-box; -webkit-background-composite: source-over; -webkit-background-origin: padding-box; -webkit-background-size: auto; -webkit-border-fit: border; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-flex-group: 1; -webkit-box-lines: single; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-box-shadow: none; -webkit-column-axis: auto; -webkit-column-break-after: auto; -webkit-column-break-before: auto; -webkit-column-break-inside: auto; -webkit-column-progression: normal; -webkit-cursor-visibility: auto; -webkit-font-kerning: auto; -webkit-font-smoothing: auto; -webkit-hyphenate-character: auto; -webkit-hyphenate-limit-after: auto; -webkit-hyphenate-limit-before: auto; -webkit-hyphenate-limit-lines: no-limit; -webkit-hyphens: manual; -webkit-initial-letter: normal; -webkit-line-align: none; -webkit-line-box-contain: block inline replaced; -webkit-line-clamp: none; -webkit-line-grid: none; -webkit-line-snap: none; -webkit-locale: auto; -webkit-margin-after-collapse: collapse; -webkit-margin-before-collapse: collapse; -webkit-margin-bottom-collapse: collapse; -webkit-margin-top-collapse: collapse; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-mode: match-source; -webkit-mask-origin: border-box; -webkit-mask-position-x: 0%; -webkit-mask-position-y: 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-mask-source-type: alpha; -webkit-nbsp-mode: normal; -webkit-overflow-scrolling: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-ruby-position: before; -webkit-text-combine: none; -webkit-text-emphasis-color: rgb(255, 0, 0); -webkit-text-emphasis-position: over right; -webkit-text-emphasis-style: none; -webkit-text-fill-color: rgb(255, 0, 0); -webkit-text-orientation: mixed; -webkit-text-security: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-color: rgb(255, 0, 0); -webkit-text-stroke-width: 0px; -webkit-text-zoom: normal; -webkit-touch-callout: default; -webkit-transform-style: flat; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-user-select: text;" 13 13 -
trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt
r282143 r282397 1 1 2 2 PASS getComputedStyle returns no style for detached element 3 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 39 34 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 39 35 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 39 36 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 39 33 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 394 4 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 394 5 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 394 6 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 394 7 7 PASS getComputedStyle returns no style for shadow tree outside of flattened tree 8 8 -
trunk/Source/WebCore/ChangeLog
r282396 r282397 1 2021-09-14 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Implement text-decoration-skip-ink 4 https://bugs.webkit.org/show_bug.cgi?id=230244 5 6 Reviewed by Antti Koivisto. 7 8 First, there was "text-decoration-skip: ink", and that was what we implemented in WebKit. That had a 9 problem, though, which was that you couldn't add a value into the set without resetting the entire 10 property, so the CSSWG split it up into a bunch of constituent properties: 11 - text-decoration-skip-self 12 - text-decoration-skip-box 13 - text-decoration-skip-inset 14 - text-decoration-skip-spaces 15 - text-decoration-skip-ink 16 text-decoration-skip was turned into a shorthand for all of these constituent properties. 17 18 Chrome and Firefox, however, implemented text-decoration-skip-ink rather than text-decoration-skip. 19 From what I understand, Firefox isn't interested in implementing the shorthand until they implement 20 all the longhands. Therefore, because WebKit implements only the shorthand and Firefox implements only 21 the longhand, authors have to write two different properties in their style for the two different 22 browsers. That's unfortunate, so this patch makes WebKit follow the CSSWG, and turns 23 text-decoration-skip into a shorthand, and adds support for text-decoration-skip-ink. Therefore, 24 there's no new behavior here; it's just a new way of accessing the same functionality we already have. 25 26 The spec actually removed the "ink" value from the text-decoration-skip shorthand, but we have to 27 maintain it because of compat. So, this patch maps "text-decoration-skip: ink" to 28 "text-decoration-skip-ink: auto". There's an issue in the spec about this: 29 https://drafts.csswg.org/css-text-decor-4/#issue-070668ae 30 31 Back when we implemented text-decoration-skip: ink, we only implemented the "ink" value, and none of 32 the other values. This patch also doesn't implement the other values. 33 34 Also, previously, we used to parse "text-decoration-skip: objects" but we didn't do anything with it. 35 This patch removes parsing support for that, so @supports works properly. 36 37 Covered by existing tests. 38 39 * css/CSSComputedStyleDeclaration.cpp: 40 (WebCore::renderTextDecorationSkipToCSSValue): 41 (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): 42 (WebCore::renderTextDecorationSkipFlagsToCSSValue): Deleted. 43 * css/CSSPrimitiveValueMappings.h: 44 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): 45 (WebCore::CSSPrimitiveValue::operator TextDecorationSkipInk const): 46 * css/CSSProperties.json: 47 * css/StyleProperties.cpp: 48 (WebCore::StyleProperties::getPropertyValue const): 49 (WebCore::StyleProperties::textDecorationSkipValue const): 50 * css/StyleProperties.h: 51 * css/html.css: 52 (ins, del): 53 * css/parser/CSSParserFastPaths.cpp: 54 (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): 55 (WebCore::CSSParserFastPaths::isKeywordPropertyID): 56 * css/parser/CSSPropertyParser.cpp: 57 (WebCore::CSSPropertyParser::consumeTextDecorationSkip): 58 (WebCore::CSSPropertyParser::parseSingleValue): 59 (WebCore::CSSPropertyParser::parseShorthand): 60 (WebCore::consumeTextDecorationSkip): Deleted. 61 * css/parser/CSSPropertyParser.h: 62 * rendering/TextDecorationPainter.cpp: 63 (WebCore::TextDecorationPainter::paintTextDecoration): 64 * rendering/style/RenderStyle.cpp: 65 (WebCore::RenderStyle::changeRequiresRepaintIfTextOrBorderOrOutline const): 66 * rendering/style/RenderStyle.h: 67 (WebCore::RenderStyle::textDecorationSkipInk const): 68 (WebCore::RenderStyle::setTextDecorationSkipInk): 69 (WebCore::RenderStyle::initialTextDecorationSkipInk): 70 (WebCore::RenderStyle::textDecorationSkip const): Deleted. 71 (WebCore::RenderStyle::setTextDecorationSkip): Deleted. 72 (WebCore::RenderStyle::initialTextDecorationSkip): Deleted. 73 * rendering/style/RenderStyleConstants.cpp: 74 (WebCore::operator<<): 75 * rendering/style/RenderStyleConstants.h: 76 * rendering/style/StyleRareInheritedData.cpp: 77 (WebCore::StyleRareInheritedData::StyleRareInheritedData): 78 (WebCore::StyleRareInheritedData::operator== const): 79 * rendering/style/StyleRareInheritedData.h: 80 * style/InlineTextBoxStyle.cpp: 81 (WebCore::minLogicalTopForTextDecorationLine): 82 (WebCore::maxLogicalBottomForTextDecorationLine): 83 * style/PropertyCascade.cpp: 84 (WebCore::Style::shouldApplyPropertyInParseOrder): 85 * style/StyleBuilderConverter.h: 86 (WebCore::Style::BuilderConverter::valueToDecorationSkip): Deleted. 87 (WebCore::Style::BuilderConverter::convertTextDecorationSkip): Deleted. 88 1 89 2021-09-14 Sam Sneddon <gsnedders@apple.com> 2 90 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r282379 r282397 1620 1620 } 1621 1621 1622 static Ref<CSSValue> renderTextDecorationSkipFlagsToCSSValue(OptionSet<TextDecorationSkip> textDecorationSkip) 1623 { 1624 // FIXME: This should probably return a CSSValueList with the set of all TextDecorationSkips. 1625 switch (static_cast<TextDecorationSkip>(textDecorationSkip.toRaw())) { 1626 case TextDecorationSkip::Auto: 1622 static RefPtr<CSSValue> renderTextDecorationSkipToCSSValue(TextDecorationSkipInk textDecorationSkipInk) 1623 { 1624 switch (textDecorationSkipInk) { 1625 case TextDecorationSkipInk::None: 1626 return CSSValuePool::singleton().createIdentifierValue(CSSValueNone); 1627 case TextDecorationSkipInk::Auto: 1627 1628 return CSSValuePool::singleton().createIdentifierValue(CSSValueAuto); 1628 case TextDecorationSkip::None: 1629 return CSSValuePool::singleton().createIdentifierValue(CSSValueNone); 1630 case TextDecorationSkip::Ink: 1631 return CSSValuePool::singleton().createIdentifierValue(CSSValueInk); 1632 case TextDecorationSkip::Objects: 1633 return CSSValuePool::singleton().createIdentifierValue(CSSValueObjects); 1629 case TextDecorationSkipInk::All: 1630 return nullptr; 1634 1631 } 1635 1632 … … 3234 3231 return currentColorOrValidColor(&style, style.textDecorationColor()); 3235 3232 case CSSPropertyTextDecorationSkip: 3236 return renderTextDecorationSkipFlagsToCSSValue(style.textDecorationSkip()); 3233 return renderTextDecorationSkipToCSSValue(style.textDecorationSkipInk()); 3234 case CSSPropertyTextDecorationSkipInk: 3235 return cssValuePool.createValue(style.textDecorationSkipInk()); 3237 3236 case CSSPropertyTextUnderlinePosition: 3238 3237 return cssValuePool.createValue(style.textUnderlinePosition()); -
trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h
r281259 r282397 2534 2534 ASSERT_NOT_REACHED(); 2535 2535 return TextSecurity::None; 2536 } 2537 2538 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(TextDecorationSkipInk e) 2539 : CSSValue(PrimitiveClass) 2540 { 2541 setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID); 2542 switch (e) { 2543 case TextDecorationSkipInk::None: 2544 m_value.valueID = CSSValueNone; 2545 break; 2546 case TextDecorationSkipInk::Auto: 2547 m_value.valueID = CSSValueAuto; 2548 break; 2549 case TextDecorationSkipInk::All: 2550 m_value.valueID = CSSValueAll; 2551 break; 2552 } 2553 } 2554 2555 template<> inline CSSPrimitiveValue::operator TextDecorationSkipInk() const 2556 { 2557 ASSERT(isValueID()); 2558 2559 switch (m_value.valueID) { 2560 case CSSValueNone: 2561 return TextDecorationSkipInk::None; 2562 case CSSValueAuto: 2563 return TextDecorationSkipInk::Auto; 2564 case CSSValueAll: 2565 return TextDecorationSkipInk::All; 2566 default: 2567 break; 2568 } 2569 2570 ASSERT_NOT_REACHED(); 2571 return TextDecorationSkipInk::None; 2536 2572 } 2537 2573 -
trunk/Source/WebCore/css/CSSProperties.json
r282158 r282397 6736 6736 "inherited": true, 6737 6737 "codegen-properties": { 6738 "converter": "TextDecorationSkip",6739 6738 "aliases": [ 6740 6739 "-webkit-text-decoration-skip" 6740 ], 6741 "longhands": [ 6742 "text-decoration-skip-ink" 6741 6743 ] 6742 6744 }, … … 6744 6746 "category": "css-text-decor", 6745 6747 "url": "https://www.w3.org/TR/css-text-decor-3/#text-decoration-skip" 6748 } 6749 }, 6750 "text-decoration-skip-ink": { 6751 "inherited": true, 6752 "values": [ 6753 "auto", 6754 "none", 6755 "all" 6756 ], 6757 "specification": { 6758 "category": "css-text-decor", 6759 "url": "https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink-property" 6746 6760 } 6747 6761 }, -
trunk/Source/WebCore/css/StyleProperties.cpp
r279070 r282397 240 240 case CSSPropertyFontVariant: 241 241 return fontVariantValue(); 242 case CSSPropertyTextDecorationSkip: 243 return textDecorationSkipValue(); 242 244 case CSSPropertyInset: 243 245 return get4Values(insetShorthand()); … … 420 422 } 421 423 424 String StyleProperties::textDecorationSkipValue() const 425 { 426 int textDecorationSkipInkPropertyIndex = findPropertyIndex(CSSPropertyTextDecorationSkipInk); 427 if (textDecorationSkipInkPropertyIndex == -1) 428 return emptyString(); 429 PropertyReference textDecorationSkipInkProperty = propertyAt(textDecorationSkipInkPropertyIndex); 430 if (textDecorationSkipInkProperty.isImplicit()) 431 return emptyString(); 432 return textDecorationSkipInkProperty.value()->cssText(); 433 } 434 422 435 String StyleProperties::fontVariantValue() const 423 436 { -
trunk/Source/WebCore/css/StyleProperties.h
r279070 r282397 174 174 String fontValue() const; 175 175 String fontVariantValue() const; 176 String textDecorationSkipValue() const; 176 177 void appendFontLonghandValueIfExplicit(CSSPropertyID, StringBuilder& result, String& value) const; 177 178 -
trunk/Source/WebCore/css/html.css
r280927 r282397 1406 1406 img, picture, video { filter: invert(100%); } /* Images and videos double-inverted. */ 1407 1407 } 1408 1409 /* https://drafts.csswg.org/css-text-decor-4/#text-decoration-skipping */ 1410 ins, del { 1411 text-decoration-skip: none; 1412 } -
trunk/Source/WebCore/css/parser/CSSParserFastPaths.cpp
r281512 r282397 902 902 return valueID == CSSValueAuto || valueID == CSSValueNone; 903 903 #endif 904 case CSSPropertyTextDecorationSkipInk: 905 return valueID == CSSValueAuto || valueID == CSSValueNone || valueID == CSSValueAll; 904 906 default: 905 907 ASSERT_NOT_REACHED(); … … 1062 1064 #endif 1063 1065 case CSSPropertyMathStyle: 1066 case CSSPropertyTextDecorationSkipInk: 1064 1067 return true; 1065 1068 default: -
trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp
r282359 r282397 1677 1677 } 1678 1678 1679 static RefPtr<CSSValue> consumeTextDecorationSkip(CSSParserTokenRange& range)1680 { 1681 CSSValueID id = range.peek().id();1682 if (id == CSSValueNone)1683 return consumeIdent(range);1684 1685 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();1686 while (true) {1687 auto ident = consumeIdent<CSSValueAuto, CSSValueInk, CSSValueObjects>(range);1688 if (!ident)1689 break;1690 if (list->hasValue(ident.get()))1691 return nullptr;1692 list->append(ident.releaseNonNull());1693 }1694 1695 if (!list->length())1696 return nullptr;1697 return list;1679 bool CSSPropertyParser::consumeTextDecorationSkip(bool important) 1680 { 1681 if (RefPtr<CSSPrimitiveValue> skip = consumeIdent<CSSValueNone, CSSValueAuto, CSSValueInk>(m_range)) { 1682 switch (skip->valueID()) { 1683 case CSSValueNone: 1684 addProperty(CSSPropertyTextDecorationSkipInk, CSSPropertyTextDecorationSkip, skip.releaseNonNull(), important); 1685 return m_range.atEnd(); 1686 case CSSValueAuto: 1687 addProperty(CSSPropertyTextDecorationSkipInk, CSSPropertyTextDecorationSkip, skip.releaseNonNull(), important); 1688 return m_range.atEnd(); 1689 case CSSValueInk: 1690 addProperty(CSSPropertyTextDecorationSkipInk, CSSPropertyTextDecorationSkip, CSSValuePool::singleton().createIdentifierValue(CSSValueAuto), important); 1691 return m_range.atEnd(); 1692 default: 1693 ASSERT_NOT_REACHED(); 1694 return false; 1695 } 1696 } 1697 return false; 1698 1698 } 1699 1699 … … 4193 4193 case CSSPropertyTextDecorationColor: 4194 4194 return consumeColor(m_range, m_context); 4195 case CSSPropertyTextDecorationSkip:4196 return consumeTextDecorationSkip(m_range);4197 4195 case CSSPropertyWebkitTextStrokeWidth: 4198 4196 return consumeTextStrokeWidth(m_range, m_context.mode); … … 6166 6164 case CSSPropertyPlaceSelf: 6167 6165 return consumePlaceSelfShorthand(important); 6166 case CSSPropertyTextDecorationSkip: 6167 return consumeTextDecorationSkip(important); 6168 6168 default: 6169 6169 return false; -
trunk/Source/WebCore/css/parser/CSSPropertyParser.h
r276152 r282397 104 104 105 105 bool consumeFont(bool important); 106 bool consumeTextDecorationSkip(bool important); 106 107 bool consumeFontVariantShorthand(bool important); 107 108 bool consumeSystemFont(bool important); -
trunk/Source/WebCore/rendering/TextDecorationPainter.cpp
r281241 r282397 224 224 strokeWavyTextDecoration(m_context, rect, m_lineStyle.computedFontPixelSize()); 225 225 else if (decoration == TextDecoration::Underline || decoration == TextDecoration::Overline) { 226 if ((m_lineStyle.textDecorationSkip () == TextDecorationSkip::Ink || m_lineStyle.textDecorationSkip() == TextDecorationSkip::Auto) && m_isHorizontal) {226 if ((m_lineStyle.textDecorationSkipInk() == TextDecorationSkipInk::Auto || m_lineStyle.textDecorationSkipInk() == TextDecorationSkipInk::All) && m_isHorizontal) { 227 227 if (!m_context.paintingDisabled()) { 228 228 FloatRect underlineBoundingBox = m_context.computeUnderlineBoundsForText(rect, m_isPrinting); -
trunk/Source/WebCore/rendering/style/RenderStyle.cpp
r281737 r282397 1162 1162 || m_rareNonInheritedData->textDecorationStyle != other.m_rareNonInheritedData->textDecorationStyle 1163 1163 || m_rareNonInheritedData->textDecorationColor != other.m_rareNonInheritedData->textDecorationColor 1164 || m_rareInheritedData->textDecorationSkip != other.m_rareInheritedData->textDecorationSkip1164 || m_rareInheritedData->textDecorationSkipInk != other.m_rareInheritedData->textDecorationSkipInk 1165 1165 || m_rareInheritedData->textFillColor != other.m_rareInheritedData->textFillColor 1166 1166 || m_rareInheritedData->textStrokeColor != other.m_rareInheritedData->textStrokeColor -
trunk/Source/WebCore/rendering/style/RenderStyle.h
r281724 r282397 374 374 OptionSet<TextDecoration> textDecoration() const { return OptionSet<TextDecoration>::fromRaw(m_visualData->textDecoration); } 375 375 TextDecorationStyle textDecorationStyle() const { return static_cast<TextDecorationStyle>(m_rareNonInheritedData->textDecorationStyle); } 376 OptionSet<TextDecorationSkip> textDecorationSkip() const { return OptionSet<TextDecorationSkip>::fromRaw(m_rareInheritedData->textDecorationSkip); }376 TextDecorationSkipInk textDecorationSkipInk() const { return static_cast<TextDecorationSkipInk>(m_rareInheritedData->textDecorationSkipInk); } 377 377 TextUnderlinePosition textUnderlinePosition() const { return static_cast<TextUnderlinePosition>(m_rareInheritedData->textUnderlinePosition); } 378 378 TextUnderlineOffset textUnderlineOffset() const { return m_rareInheritedData->textUnderlineOffset; } … … 980 980 void setTextDecoration(OptionSet<TextDecoration> v) { SET_VAR(m_visualData, textDecoration, v.toRaw()); } 981 981 void setTextDecorationStyle(TextDecorationStyle v) { SET_VAR(m_rareNonInheritedData, textDecorationStyle, static_cast<unsigned>(v)); } 982 void setTextDecorationSkip (OptionSet<TextDecorationSkip> skip) { SET_VAR(m_rareInheritedData, textDecorationSkip, skip.toRaw()); }982 void setTextDecorationSkipInk(TextDecorationSkipInk skipInk) { SET_VAR(m_rareInheritedData, textDecorationSkipInk, static_cast<unsigned>(skipInk)); } 983 983 void setTextUnderlinePosition(TextUnderlinePosition position) { SET_VAR(m_rareInheritedData, textUnderlinePosition, static_cast<unsigned>(position)); } 984 984 void setTextUnderlineOffset(TextUnderlineOffset textUnderlineOffset) { SET_VAR(m_rareInheritedData, textUnderlineOffset, textUnderlineOffset); } … … 1598 1598 static OptionSet<TextDecoration> initialTextDecoration() { return OptionSet<TextDecoration> { }; } 1599 1599 static TextDecorationStyle initialTextDecorationStyle() { return TextDecorationStyle::Solid; } 1600 static OptionSet<TextDecorationSkip> initialTextDecorationSkip() { return TextDecorationSkip::Auto; }1600 static TextDecorationSkipInk initialTextDecorationSkipInk() { return TextDecorationSkipInk::Auto; } 1601 1601 static TextUnderlinePosition initialTextUnderlinePosition() { return TextUnderlinePosition::Auto; } 1602 1602 static TextUnderlineOffset initialTextUnderlineOffset() { return TextUnderlineOffset::createWithAuto(); } -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.cpp
r282379 r282397 1071 1071 } 1072 1072 1073 TextStream& operator<<(TextStream& ts, TextDecorationSkip skip)1073 TextStream& operator<<(TextStream& ts, TextDecorationSkipInk skip) 1074 1074 { 1075 1075 switch (skip) { 1076 case TextDecorationSkip::None: ts << "none"; break; 1077 case TextDecorationSkip::Ink: ts << "ink"; break; 1078 case TextDecorationSkip::Objects: ts << "objects"; break; 1079 case TextDecorationSkip::Auto: ts << "auto"; break; 1076 case TextDecorationSkipInk::None: ts << "none"; break; 1077 case TextDecorationSkipInk::Auto: ts << "auto"; break; 1078 case TextDecorationSkipInk::All: ts << "all"; break; 1080 1079 } 1081 1080 return ts; -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.h
r282379 r282397 783 783 #endif // CSS3_TEXT 784 784 785 enum class TextDecorationSkip : uint8_t { 786 None = 0, 787 Ink = 1 << 0, 788 Objects = 1 << 1, 789 Auto = 1 << 2 785 enum class TextDecorationSkipInk : uint8_t { 786 None, 787 Auto, 788 All 790 789 }; 791 790 … … 1343 1342 WTF::TextStream& operator<<(WTF::TextStream&, TextCombine); 1344 1343 WTF::TextStream& operator<<(WTF::TextStream&, TextDecoration); 1345 WTF::TextStream& operator<<(WTF::TextStream&, TextDecorationSkip );1344 WTF::TextStream& operator<<(WTF::TextStream&, TextDecorationSkipInk); 1346 1345 WTF::TextStream& operator<<(WTF::TextStream&, TextDecorationStyle); 1347 1346 WTF::TextStream& operator<<(WTF::TextStream&, TextEmphasisFill); -
trunk/Source/WebCore/rendering/style/StyleRareInheritedData.cpp
r277538 r282397 120 120 , textJustify(static_cast<unsigned>(RenderStyle::initialTextJustify())) 121 121 #endif 122 , textDecorationSkip (RenderStyle::initialTextDecorationSkip().toRaw())122 , textDecorationSkipInk(static_cast<unsigned>(RenderStyle::initialTextDecorationSkipInk())) 123 123 , textUnderlinePosition(static_cast<unsigned>(RenderStyle::initialTextUnderlinePosition())) 124 124 , rubyPosition(static_cast<unsigned>(RenderStyle::initialRubyPosition())) … … 217 217 , textJustify(o.textJustify) 218 218 #endif 219 , textDecorationSkip (o.textDecorationSkip)219 , textDecorationSkipInk(o.textDecorationSkipInk) 220 220 , textUnderlinePosition(o.textUnderlinePosition) 221 221 , rubyPosition(o.rubyPosition) … … 342 342 && textJustify == o.textJustify 343 343 #endif // CSS3_TEXT 344 && textDecorationSkip == o.textDecorationSkip344 && textDecorationSkipInk == o.textDecorationSkipInk 345 345 && textUnderlinePosition == o.textUnderlinePosition 346 346 && rubyPosition == o.rubyPosition -
trunk/Source/WebCore/rendering/style/StyleRareInheritedData.h
r281259 r282397 140 140 unsigned textJustify : 2; // TextJustify 141 141 #endif 142 unsigned textDecorationSkip : 5; // TextDecorationSkip142 unsigned textDecorationSkipInk : 2; // TextDecorationSkipInk 143 143 unsigned textUnderlinePosition : 2; // TextUnderlinePosition 144 144 unsigned rubyPosition : 2; // RubyPosition -
trunk/Source/WebCore/style/InlineTextBoxStyle.cpp
r281241 r282397 62 62 continue; 63 63 64 if (run->isText() || run->style().textDecorationSkip ().isEmpty())64 if (run->isText() || run->style().textDecorationSkipInk() == TextDecorationSkipInk::None) 65 65 minLogicalTop = std::min<float>(minLogicalTop, run->logicalTop()); 66 66 } … … 79 79 continue; 80 80 81 if (run->isText() || run->style().textDecorationSkip ().isEmpty())81 if (run->isText() || run->style().textDecorationSkipInk() == TextDecorationSkipInk::None) 82 82 maxLogicalBottom = std::max<float>(maxLogicalBottom, run->logicalBottom()); 83 83 } -
trunk/Source/WebCore/style/PropertyCascade.cpp
r269774 r282397 60 60 case CSSPropertyTextDecorationColor: 61 61 case CSSPropertyTextDecorationSkip: 62 case CSSPropertyTextDecorationSkipInk: 62 63 case CSSPropertyTextUnderlinePosition: 63 64 case CSSPropertyTextUnderlineOffset: -
trunk/Source/WebCore/style/StyleBuilderConverter.h
r279218 r282397 108 108 static float convertTextStrokeWidth(BuilderState&, const CSSValue&); 109 109 static OptionSet<LineBoxContain> convertLineBoxContain(BuilderState&, const CSSValue&); 110 static OptionSet<TextDecorationSkip> convertTextDecorationSkip(BuilderState&, const CSSValue&);111 110 static RefPtr<ShapeValue> convertShapeValue(BuilderState&, CSSValue&); 112 111 static ScrollSnapType convertScrollSnapType(BuilderState&, const CSSValue&); … … 173 172 static Length convertToRadiusLength(CSSToLengthConversionData&, const CSSPrimitiveValue&); 174 173 static OptionSet<TextEmphasisPosition> valueToEmphasisPosition(const CSSPrimitiveValue&); 175 static OptionSet<TextDecorationSkip> valueToDecorationSkip(const CSSPrimitiveValue&);176 174 static Length parseSnapCoordinate(BuilderState&, const CSSValue&); 177 175 … … 819 817 820 818 return downcast<CSSLineBoxContainValue>(value).value(); 821 }822 823 inline OptionSet<TextDecorationSkip> BuilderConverter::valueToDecorationSkip(const CSSPrimitiveValue& primitiveValue)824 {825 ASSERT(primitiveValue.isValueID());826 827 switch (primitiveValue.valueID()) {828 case CSSValueAuto:829 return TextDecorationSkip::Auto;830 case CSSValueNone:831 return OptionSet<TextDecorationSkip> { };832 case CSSValueInk:833 return TextDecorationSkip::Ink;834 case CSSValueObjects:835 return TextDecorationSkip::Objects;836 default:837 break;838 }839 840 ASSERT_NOT_REACHED();841 return OptionSet<TextDecorationSkip> { };842 }843 844 inline OptionSet<TextDecorationSkip> BuilderConverter::convertTextDecorationSkip(BuilderState&, const CSSValue& value)845 {846 if (is<CSSPrimitiveValue>(value))847 return valueToDecorationSkip(downcast<CSSPrimitiveValue>(value));848 849 OptionSet<TextDecorationSkip> skip;850 for (auto& currentValue : downcast<CSSValueList>(value))851 skip.add(valueToDecorationSkip(downcast<CSSPrimitiveValue>(currentValue.get())));852 return skip;853 819 } 854 820
Note: See TracChangeset
for help on using the changeset viewer.