Bug 217522
| Summary: | Unprefix (behind a setting?) properties tested in WPT | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Sam Sneddon [:gsnedders] <gsnedders> |
| Component: | CSS | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | graouts, sam, simon.fraser, the.bull, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=277793 | ||
| Bug Depends on: | 208677, 229078, 229086, 229090, 318129, 143842, 150821, 151306, 170983, 193002, 201098, 223117, 224899, 229082, 229083, 229084 | ||
| Bug Blocks: | 246222 | ||
Sam Sneddon [:gsnedders]
Currently, the WPT test importer rewrites tests during import in various ways. As part of the work to improve syncing between WebKit and WPT, it would be desirable to get rid of this rewriting.
Part of this involves adding the -webkit- prefix to certain properties, so that we can test our prefixed implementation of various features. The properties effected for which tests exist are:
appearance
aspect-ratio
backdrop-filter
backface-visibility
box-decoration-break
mask
mask-box-image
mask-clip
mask-composite
mask-image
mask-origin
mask-position
mask-repeat
mask-size
ruby-position
text-align-last
text-justify
text-size-adjust
user-select
Additionally, there are tests for the following in WPT which we fail to rewrite:
initial-letter
line-clamp
mask-position-x
mask-position-y
It would be nice to unprefix these, either unconditionally or behind a setting we can enable for tests, so that we can run the WPT tests for them unmodified.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Sam Weinig
With specs (from Sam Sneddon)
appearance: https://drafts.csswg.org/css-ui-4/#propdef-appearance
aspect-ratio: https://drafts.csswg.org/css-sizing-4/#propdef-aspect-ratio https://www.w3.org/TR/css-sizing-4/#propdef-aspect-ratio
backdrop-filter: https://drafts.fxtf.org/filter-effects-2/#propdef-backdrop-filter
backface-visibility: https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility https://www.w3.org/TR/css-transforms-2/#propdef-backface-visibility
box-decoration-break: https://www.w3.org/TR/css-break-3/#propdef-box-decoration-break https://drafts.csswg.org/css-break-3/#propdef-box-decoration-break https://www.w3.org/TR/css-break-4/#propdef-box-decoration-break https://drafts.csswg.org/css-break-4/#propdef-box-decoration-break
initial-letter: https://www.w3.org/TR/css-inline-3/#propdef-initial-letter https://drafts.csswg.org/css-inline-3/#propdef-initial-letter
line-clamp: https://www.w3.org/TR/css-overflow-3/#propdef-line-clamp https://drafts.csswg.org/css-overflow-3/#propdef-line-clamp
mask: https://drafts.fxtf.org/css-masking-1/#propdef-mask https://www.w3.org/TR/css-masking-1/#propdef-mask https://www.w3.org/TR/SVG11/masking.html#MaskProperty
mask-box-image: NONE!
mask-clip: https://www.w3.org/TR/css-masking-1/#propdef-mask-clip https://drafts.fxtf.org/css-masking-1/#propdef-mask-clip
mask-composite: https://drafts.fxtf.org/css-masking-1/#propdef-mask-composite https://www.w3.org/TR/css-masking-1/#propdef-mask-composite
mask-image: https://www.w3.org/TR/css-masking-1/#propdef-mask-image https://drafts.fxtf.org/css-masking-1/#propdef-mask-image
mask-origin: https://www.w3.org/TR/css-masking-1/#propdef-mask-origin https://drafts.fxtf.org/css-masking-1/#propdef-mask-origin
mask-position: https://www.w3.org/TR/css-masking-1/#propdef-mask-position https://drafts.fxtf.org/css-masking-1/#propdef-mask-position
mask-position-x: NONE!
mask-position-y: NONE!
mask-repeat: https://drafts.fxtf.org/css-masking-1/#propdef-mask-repeat https://www.w3.org/TR/css-masking-1/#propdef-mask-repeat
mask-size: https://www.w3.org/TR/css-masking-1/#propdef-mask-size https://drafts.fxtf.org/css-masking-1/#propdef-mask-size
ruby-position: https://drafts.csswg.org/css-ruby-1/#propdef-ruby-position https://www.w3.org/TR/css-ruby-1/#propdef-ruby-position
text-align-last: https://www.w3.org/TR/css-text-3/#propdef-text-align-last https://drafts.csswg.org/css-text-3/#propdef-text-align-last
text-justify: https://www.w3.org/TR/css-text-3/#propdef-text-justify https://drafts.csswg.org/css-text-3/#propdef-text-justify
text-size-adjust: https://drafts.csswg.org/css-size-adjust-1/#propdef-text-size-adjust
user-select: https://drafts.csswg.org/css-ui-4/#propdef-user-select
Sam Sneddon [:gsnedders]
Sam asked for spec links for them:
appearance: https://drafts.csswg.org/css-ui-4/#propdef-appearance
aspect-ratio: https://drafts.csswg.org/css-sizing-4/#propdef-aspect-ratio
backdrop-filter: https://drafts.fxtf.org/filter-effects-2/#propdef-backdrop-filter
backface-visibility: https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility
box-decoration-break: https://drafts.csswg.org/css-break-3/#propdef-box-decoration-break
initial-letter: https://drafts.csswg.org/css-inline-3/#propdef-initial-letter
line-clamp: https://drafts.csswg.org/css-overflow-3/#propdef-line-clamp
mask: https://drafts.fxtf.org/css-masking-1/#propdef-mask
mask-box-image: NONE!
mask-clip: https://drafts.fxtf.org/css-masking-1/#propdef-mask-clip
mask-composite: https://drafts.fxtf.org/css-masking-1/#propdef-mask-composite
mask-image: https://drafts.fxtf.org/css-masking-1/#propdef-mask-image
mask-origin: https://drafts.fxtf.org/css-masking-1/#propdef-mask-origin
mask-position: https://drafts.fxtf.org/css-masking-1/#propdef-mask-position
mask-position-x: NONE!
mask-position-y: NONE!
mask-repeat: https://drafts.fxtf.org/css-masking-1/#propdef-mask-repeat
mask-size: https://drafts.fxtf.org/css-masking-1/#propdef-mask-size
ruby-position: https://drafts.csswg.org/css-ruby-1/#propdef-ruby-position
text-align-last: https://drafts.csswg.org/css-text-3/#propdef-text-align-last
text-justify: https://drafts.csswg.org/css-text-3/#propdef-text-justify
text-size-adjust: https://drafts.csswg.org/css-size-adjust-1/#propdef-text-size-adjust
user-select: https://drafts.csswg.org/css-ui-4/#propdef-user-select https://drafts.csswg.org/css-ui/#propdef-user-select
Also see standardised prefixed properties:
-webkit-appearance: https://drafts.csswg.org/css-ui/#propdef--webkit-appearance https://drafts.csswg.org/css-ui-4/#propdef--webkit-appearance
-webkit-aspect-ratio: NONE!
-webkit-backdrop-filter: NONE!
-webkit-backface-visibility: https://compat.spec.whatwg.org/#propdef--webkit-backface-visibility
-webkit-box-decoration-break: NONE!
-webkit-initial-letter: NONE!
-webkit-line-clamp: https://drafts.csswg.org/css-overflow-3/#propdef--webkit-line-clamp
-webkit-mask: https://compat.spec.whatwg.org/#propdef--webkit-mask
-webkit-mask-box-image: https://compat.spec.whatwg.org/#propdef--webkit-mask-box-image
-webkit-mask-clip: https://compat.spec.whatwg.org/#propdef--webkit-mask-clip
-webkit-mask-composite: https://compat.spec.whatwg.org/#propdef--webkit-mask-composite
-webkit-mask-image: https://compat.spec.whatwg.org/#propdef--webkit-mask-image
-webkit-mask-origin: https://compat.spec.whatwg.org/#propdef--webkit-mask-origin
-webkit-mask-position: https://compat.spec.whatwg.org/#propdef--webkit-mask-position
-webkit-mask-position-x: NONE!
-webkit-mask-position-y: NONE!
-webkit-mask-repeat: https://compat.spec.whatwg.org/#propdef--webkit-mask-repeat
-webkit-mask-size: https://compat.spec.whatwg.org/#propdef--webkit-mask-size
-webkit-ruby-position: NONE!
-webkit-text-align-last: NONE!
-webkit-text-justify: NONE!
-webkit-text-size-adjust: https://compat.spec.whatwg.org/#propdef--webkit-text-size-adjust
-webkit-user-select: NONE!
Sam Sneddon [:gsnedders]
Okay, so https://github.com/web-platform-tests/wpt/pull/26070 gets rid of the one instance of mask-box-image in WPT, and the references to mask-position-x/mask-position-y don't actually do anything, which leaves us only with properties where the unprefixed versions have current specs.
Radar WebKit Bug Importer
<rdar://problem/70384212>
Sam Sneddon [:gsnedders]
So, 2023 update:
Properties we don't support unprefixed which appear in WPT:
1 mask-position-x
1 mask-position-y
3 text-size-adjust
36 user-select
37 box-decoration-break
47 initial-letter
63 ruby-position
81 backdrop-filter
I can't find any usage of any CSS value we only support prefixed.
Sam Sneddon [:gsnedders]
Naïvely:
```
% % rg -U '(?-m)([\s{]|^)(font\-smoothing|locale|text\-size\-adjust|text\-zoom|logical\-height|border\-after|border\-after\-color|border\-after\-style|border\-after\-width|border\-before|border\-before\-color|border\-before\-style|border\-before\-width|border\-end|border\-end\-color|border\-end\-style|border\-end\-width|border\-start|border\-start\-color|border\-start\-style|border\-start\-width|cursor\-visibility|logical\-width|margin\-after|margin\-before|margin\-end|margin\-start|mask\-box\-image\-outset|mask\-box\-image\-repeat|mask\-box\-image\-slice|mask\-box\-image\-source|mask\-box\-image\-width|mask\-position\-x|mask\-position\-y|max\-logical\-height|max\-logical\-width|min\-logical\-height|min\-logical\-width|padding\-after|padding\-before|padding\-end|padding\-start|border\-horizontal\-spacing|border\-vertical\-spacing|box\-align|box\-direction|box\-flex|box\-flex\-group|box\-lines|box\-ordinal\-group|box\-orient|box\-pack|box\-reflect|column\-axis|column\-break\-after|column\-break\-before|column\-break\-inside|column\-progression|box\-decoration\-break|font\-size\-delta|hyphenate\-limit\-after|hyphenate\-limit\-before|hyphenate\-limit\-lines|initial\-letter|line\-box\-contain|line\-align|line\-grid|line\-snap|marquee\-direction|marquee\-increment|marquee\-repetition|marquee\-speed|marquee\-style|mask\-box\-image|mask\-source\-type|nbsp\-mode|rtl\-ordering|text\-combine|text\-decorations\-in\-effect|text\-fill\-color|text\-security|text\-stroke|text\-stroke\-color|text\-stroke\-width|user\-drag|user\-modify|user\-select|tap\-highlight\-color|overflow\-scrolling|touch\-callout)(\s+:|:)' --only-matching --replace='$2' --no-filename --glob '!third_party' | sort | uniq -c | sort -n
1 box-reflect
1 line-grid
1 mask-position-x
1 mask-position-y
1 padding-end
1 user-modify
5 locale
5 padding-start
10 text-size-adjust
59 user-select
64 initial-letter
91 box-decoration-break
```
To quickly triage:
> box-reflect
Unspecified, occurs only in html/rendering/the-details-element/details-autofocus-crash.html, unsupported by any browser.
> line-grid
Unspecified, occurs only in html/rendering/the-details-element/details-autofocus-crash.html, unsupported by any browser.
> mask-position-x
> mask-position-y
See https://github.com/w3c/fxtf-drafts/issues/103. These only really appear in css/css-cascade/all-prop-revert-layer.html, which is probably not the most important case.
> padding-end
> padding-start
Unspecified, these occur only in comments.
> user-modify
Unspecified. This occurs only in css/css-ui/tentative/user-modify-*, which are explicitly checking for non-support of the unprefixed form.
> locale
Unspecified. The matches are all false positives, mostly from JS.
> text-size-adjust
> user-select
> initial-letter
> box-decoration-break
These four do actually meaningfully exist in WPT.
And on the value side, based on we only have false positives, per:
```
rg -U '(?-m)(\:\s*|^\s*)(mini-control|small-control|control|body|pictograph|control-background|activelink|link|focus-ring-color|baseline-middle|box|fill-available|optimize-contrast|gradient|named-image|paged-x|paged-y)(\s*;|\s*}|\s*$)' --glob '!third_party'
```