WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
patch (text/plain), 375.02 KB, created by
Sam Sneddon [:gsnedders]
on 2022-07-12 13:35:53 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sam Sneddon [:gsnedders]
Created:
2022-07-12 13:35:53 PDT
Size:
375.02 KB
patch
obsolete
>From 0536ef7fcf2f492d247b4e86d8410062420c0e72 Mon Sep 17 00:00:00 2001 >From: Sam Sneddon <gsnedders@apple.com> >Date: Fri, 20 May 2022 01:04:24 +0100 >Subject: [PATCH] Unify CSS property enablement > https://bugs.webkit.org/show_bug.cgi?id=217802 > >Reviewed by NOBODY (OOPS!). > >As well as doing this, change CSS.supports() to exclude descriptors to avoid asserts in tests. > >Tests: css3/color-filters/color-filter-exposed-if-enabled.html > imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html > imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html > imported/w3c/web-platform-tests/css/cssom/property-accessors.html > >* Source/WebCore/css/CSSComputedStyleDeclaration.cpp: >(WebCore::CSSComputedStyleDeclaration::CSSComputedStyleDeclaration): >Pre-compute the list of properties which are exposed. >(WebCore::ComputedStyleExtractor::propertyValue): >Move the primary check of exposure to here, avoiding recomputing layout. >(WebCore::ComputedStyleExtractor::valueForPropertyInStyle): >Remove all exposure checks, add assert. >(WebCore::CSSComputedStyleDeclaration::length const): >Use list of properties which are exposed. >(WebCore::CSSComputedStyleDeclaration::item const): >Ditto. >* Source/WebCore/css/CSSComputedStyleDeclaration.h: >* Source/WebCore/css/CSSProperties.json: >Fix missing settings-flags/internal-only, where we only explicitly checked in code previously. >* Source/WebCore/css/CSSStyleDeclaration.cpp: >* Source/WebCore/css/DOMCSSNamespace.cpp: >(WebCore::DOMCSSNamespace::supports): >Add check to exclude descriptors, per spec. >* Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp: >(WebCore::PropertySetCSSStyleDeclaration::length const): >(WebCore::PropertySetCSSStyleDeclaration::item const): >(WebCore::PropertySetCSSStyleDeclaration::getPropertyCSSValue): >(WebCore::PropertySetCSSStyleDeclaration::getPropertyValue): >(WebCore::PropertySetCSSStyleDeclaration::getPropertyPriority): >(WebCore::PropertySetCSSStyleDeclaration::getPropertyShorthand): >(WebCore::PropertySetCSSStyleDeclaration::isPropertyImplicit): >(WebCore::PropertySetCSSStyleDeclaration::setProperty): >(WebCore::PropertySetCSSStyleDeclaration::removeProperty): >(WebCore::PropertySetCSSStyleDeclaration::getPropertyValueInternal): >(WebCore::PropertySetCSSStyleDeclaration::setPropertyInternal): >(WebCore::PropertySetCSSStyleDeclaration::isCSSPropertyExposed const): >Checks for properties being exposed. >* Source/WebCore/css/PropertySetCSSStyleDeclaration.h: >* Source/WebCore/css/StyleProperties.cpp: >(WebCore::MutableStyleProperties::setProperty): >Update check, add assert. >(WebCore::StyleProperties::asTextInternal const): >Remove unneeded enablement checks, unlikely to be needed in future. >* Source/WebCore/css/makeprop.pl: >Generate new data structures and functions, struct CSSPropertySettings, and isCSSPropertyExposed and getExposedCSSProperties. >* Source/WebCore/css/parser/CSSParserContext.cpp: >(WebCore::CSSParserContext::CSSParserContext): >See header file below. >(WebCore::CSSParserContext::isPropertyRuntimeDisabled const): Deleted. >* Source/WebCore/css/parser/CSSParserContext.h: >Replace many copied settings from the class, add struct CSSPropertySettings. >* Source/WebCore/css/parser/CSSParserFastPaths.cpp: >(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue): >Remove unreachable enabled checks. >(WebCore::CSSParserFastPaths::maybeParseValue): >* Source/WebCore/css/parser/CSSParserImpl.cpp: >(WebCore::CSSParserImpl::consumeCounterStyleRule): >(WebCore::CSSParserImpl::consumeContainerRule): >(WebCore::CSSParserImpl::consumeDeclaration): >* Source/WebCore/css/parser/CSSPropertyParser.cpp: >(WebCore::cssPropertyID): >Remove unreachable enabled check. >(WebCore::CSSPropertyParser::addProperty): >Add assert. >(WebCore::consumeWillChange): >Avoid creating unexposed CSSPropertyIds. >(WebCore::CSSPropertyParser::parseSingleValue): >Remove countless exposure checks, replacing them with a single check. >(WebCore::CSSPropertyParser::parseCounterStyleDescriptor): >(WebCore::CSSPropertyParser::parseFontFaceDescriptor): >(WebCore::CSSPropertyParser::parseFontPaletteValuesDescriptor): >(WebCore::CSSPropertyParser::consumeOverscrollBehaviorShorthand): >(WebCore::CSSPropertyParser::consumeContainIntrinsicSizeShorthand): >* Source/WebCore/css/parser/CSSSelectorParser.cpp: >(WebCore::CSSSelectorParser::consumePseudo): >Replace context check with the general runtime check. >* Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp: >(WebCore::ComputedStylePropertyMapReadOnly::ComputedStylePropertyMapReadOnly): >(WebCore::ComputedStylePropertyMapReadOnly::get const): >(WebCore::ComputedStylePropertyMapReadOnly::getAll const): >(WebCore::ComputedStylePropertyMapReadOnly::size const): >(WebCore::ComputedStylePropertyMapReadOnly::entries const): >Check for exposure where needed. >* Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.h: >* Source/WebCore/inspector/InspectorStyleSheet.cpp: >(WebCore::InspectorStyle::collectProperties const): >(WebCore::InspectorStyle::styleWithProperties const): >* Source/WebCore/inspector/agents/InspectorCSSAgent.cpp: >(WebCore::InspectorCSSAgent::InspectorCSSAgent): >(WebCore::InspectorCSSAgent::getSupportedCSSProperties): >* Source/WebCore/inspector/agents/InspectorCSSAgent.h: >* Source/WebCore/style/StyleBuilderCustom.h: >(WebCore::Style::BuilderCustom::applyValueWillChange): > >* LayoutTests/TestExpectations: >* LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt: >* LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html: >* LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt: Added. >* LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html: Added. >* LayoutTests/editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt: >* LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt: Removed. >* LayoutTests/fast/css/webkit-mask-crash-implicit.html: Removed. Unexposed property, thus tests nothing. >* LayoutTests/fast/events/before-input-events-prevent-drag-and-drop-expected.txt: >* LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt: >* LayoutTests/fast/inspector-support/style-expected.txt: >* LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html: >* LayoutTests/fast/text-autosizing/ios/programmatic-text-size-adjust.html: >We're unable to check default behaviour as the test harness specifically sets TextAutosizingEnabled, but keep the test. >* LayoutTests/inspector/css/css-property-expected.txt: >* LayoutTests/inspector/css/css-property.html: >* LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt: >* LayoutTests/inspector/css/getSupportedCSSProperties.html: >* LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: >Remove properties that shouldn't be exposed. >* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt: >Update for CSS.supports() correctly excluding descriptors and non-exposed properties. >* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt: >* LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html: >Add tests for both one & two arg forms, test descriptors. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt: Added. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html: Added. >Add test for CSSStyleDeclaration for CSSFontRule. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: >Update for CSSStyleDeclaration's item getter excluding non-exposed properties. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt: Added. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html: Added. >Add test for shorthands not being exposed via CSSStyleDeclaration's item getter. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt: Added. >* LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html: Added. >Add test to catch a variety of debug asserts with descriptors and non-exposed properties. >* LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: >* LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt: >* LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt: >* LayoutTests/platform/ios-wk2/editing/pasteboard/4641033-expected.txt: >* LayoutTests/platform/ios-wk2/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-2-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-3-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-4-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-5-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/copy-paste-with-shadow-content-expected.txt: >* LayoutTests/platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt: >* LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt: >* LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt: Removed. >* LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html: Removed. >* LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt. >* LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt: >* LayoutTests/platform/mac/fast/events/ondrop-text-html-expected.txt: >--- > .../css/CSSComputedStyleDeclaration.cpp | 123 +- > .../WebCore/css/CSSComputedStyleDeclaration.h | 2 + > Source/WebCore/css/CSSProperties.json | 10 +- > Source/WebCore/css/CSSStyleDeclaration.cpp | 2 +- > Source/WebCore/css/DOMCSSNamespace.cpp | 5 +- > .../css/PropertySetCSSStyleDeclaration.cpp | 43 +- > .../css/PropertySetCSSStyleDeclaration.h | 1 + > Source/WebCore/css/StyleProperties.cpp | 10 +- > Source/WebCore/css/makeprop.pl | 116 +- > .../WebCore/css/parser/CSSParserContext.cpp | 193 +-- > Source/WebCore/css/parser/CSSParserContext.h | 31 +- > .../WebCore/css/parser/CSSParserFastPaths.cpp | 11 +- > Source/WebCore/css/parser/CSSParserImpl.cpp | 6 +- > .../WebCore/css/parser/CSSPropertyParser.cpp | 81 +- > .../WebCore/css/parser/CSSSelectorParser.cpp | 3 +- > .../ComputedStylePropertyMapReadOnly.cpp | 15 +- > Source/WebCore/dom/Document.cpp | 17 + > Source/WebCore/dom/Document.h | 5 + > .../WebCore/inspector/InspectorStyleSheet.cpp | 5 +- > .../inspector/agents/InspectorCSSAgent.cpp | 11 +- > .../inspector/agents/InspectorCSSAgent.h | 4 +- > Source/WebCore/loader/DocumentLoader.cpp | 4 + > Source/WebCore/style/StyleBuilderCustom.h | 2 +- > LayoutTests/TestExpectations | 3 - > ...or-filter-exposed-if-disabled-expected.txt | 33 +- > .../color-filter-exposed-if-disabled.html | 56 + > ...lor-filter-exposed-if-enabled-expected.txt | 45 + > .../color-filter-exposed-if-enabled.html | 78 + > ...er-get-data-on-drop-rich-text-expected.txt | 2 +- > .../webkit-mask-crash-implicit-expected.txt | 4 - > .../fast/css/webkit-mask-crash-implicit.html | 19 - > ...-events-prevent-drag-and-drop-expected.txt | 2 +- > ...vents-paste-rich-datatransfer-expected.txt | 2 +- > .../fast/inspector-support/style-expected.txt | 2 - > ...tosizing-after-changing-initial-scale.html | 6 + > .../ios/programmatic-text-size-adjust.html | 2 +- > .../all-prop-initial-xml-expected.txt | 2 - > ...-supports-CSSStyleDeclaration-expected.txt | 20 +- > .../js/CSS-supports-L3-expected.txt | 8 + > .../css-conditional/js/CSS-supports-L3.html | 37 + > ...aration-cssfontrule.tentative-expected.txt | 4 + > ...tyledeclaration-cssfontrule.tentative.html | 27 + > ...omputedStyle-detached-subtree-expected.txt | 8 +- > ...getter-v-properties.tentative-expected.txt | 12 + > ...edStyle-getter-v-properties.tentative.html | 34 + > .../css/cssom/property-accessors-expected.txt | 11 + > .../css/cssom/property-accessors.html | 64 + > .../inspector/css/css-property-expected.txt | 8 - > LayoutTests/inspector/css/css-property.html | 18 +- > .../getSupportedCSSProperties-expected.txt | 2 + > .../css/getSupportedCSSProperties.html | 1 + > .../all-prop-initial-xml-expected.txt | 1 - > ...-supports-CSSStyleDeclaration-expected.txt | 1509 ----------------- > ...omputedStyle-detached-subtree-expected.txt | 8 +- > .../ios-simulator-wk2/TestExpectations | 2 - > .../editing/pasteboard/4641033-expected.txt | 5 +- > .../all-prop-initial-xml-expected.txt | 398 +++++ > ...te-across-shadow-boundaries-2-expected.txt | 18 - > ...te-across-shadow-boundaries-3-expected.txt | 16 - > ...te-across-shadow-boundaries-4-expected.txt | 13 - > ...te-across-shadow-boundaries-5-expected.txt | 16 - > ...hadow-boundaries-with-style-1-expected.txt | 18 - > ...opy-paste-with-shadow-content-expected.txt | 33 - > ...election-after-pasting-images-expected.txt | 16 - > ...play-contents-container-crash-expected.txt | 2 - > ...-supports-CSSStyleDeclaration-expected.txt | 1509 ----------------- > ...omputedStyle-detached-subtree-expected.txt | 8 +- > ...programmatic-text-size-adjust-expected.txt | 23 - > .../programmatic-text-size-adjust.html | 35 - > .../all-prop-initial-xml-expected.txt | 396 +++++ > ...-supports-CSSStyleDeclaration-expected.txt | 16 +- > .../fast/events/ondrop-text-html-expected.txt | 2 +- > ...omputedStyle-detached-subtree-expected.txt | 8 +- > 73 files changed, 1574 insertions(+), 3688 deletions(-) > create mode 100644 LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt > create mode 100644 LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html > delete mode 100644 LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt > delete mode 100644 LayoutTests/fast/css/webkit-mask-crash-implicit.html > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt > create mode 100644 LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html > delete mode 100644 LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt > create mode 100644 LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-2-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-3-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-4-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-5-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/copy-paste-with-shadow-content-expected.txt > delete mode 100644 LayoutTests/platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt > delete mode 100644 LayoutTests/platform/ios/fast/editing/mutation-with-display-contents-container-crash-expected.txt > delete mode 100644 LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt > delete mode 100644 LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt > delete mode 100644 LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html > create mode 100644 LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt > >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >index fb186b4eaafc..fb1f85edc142 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >@@ -2570,6 +2570,11 @@ const Settings* CSSComputedStyleDeclaration::settings() const > return &m_element->document().settings(); > } > >+const FixedVector<CSSPropertyID>& CSSComputedStyleDeclaration::exposedComputedCSSPropertyIDs() const >+{ >+ return m_element->document().exposedComputedCSSPropertyIDs(); >+} >+ > static inline bool hasValidStyleForProperty(Element& element, CSSPropertyID propertyID) > { > if (element.styleValidity() != Style::Validity::Valid) >@@ -2883,6 +2888,11 @@ RefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID, > if (!styledElement) > return nullptr; > >+ if (!isCSSPropertyExposed(propertyID, &m_element->document().settings())) { >+ // Exit quickly, and avoid us ever having to update layout in this case. >+ return nullptr; >+ } >+ > std::unique_ptr<RenderStyle> ownedStyle; > const RenderStyle* style = nullptr; > bool forceFullLayout = false; >@@ -2928,15 +2938,12 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > auto& cssValuePool = CSSValuePool::singleton(); > propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.direction(), style.writingMode()); > >+ ASSERT(isCSSPropertyExposed(propertyID, &m_element->document().settings())); >+ > switch (propertyID) { > case CSSPropertyInvalid: >-#if ENABLE(TEXT_AUTOSIZING) >- case CSSPropertyInternalTextAutosizingStatus: >-#endif >- break; >+ return nullptr; > case CSSPropertyAccentColor: { >- if (!m_element->document().settings().accentColorEnabled()) >- return nullptr; > if (style.hasAutoAccentColor()) > return cssValuePool.createIdentifierValue(CSSValueAuto); > return currentColorOrValidColor(&style, style.accentColor()); >@@ -3390,8 +3397,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > return cssValuePool.createValue(style.imageResolution(), CSSUnitType::CSS_DPPX); > #endif > case CSSPropertyInputSecurity: >- if (!m_element->document().settings().cssInputSecurityEnabled()) >- return nullptr; > return cssValuePool.createValue(style.inputSecurity()); > case CSSPropertyLeft: > return positionOffsetValue(style, CSSPropertyLeft, renderer); >@@ -3474,28 +3479,16 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyOffsetPath: > // The computed value of offset-path must only contain absolute draw commands. > // https://github.com/w3c/fxtf-drafts/issues/225#issuecomment-334322738 >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return valueForPathOperation(style, style.offsetPath(), SVGPathConversion::ForceAbsolute); > case CSSPropertyOffsetDistance: >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return cssValuePool.createValue(style.offsetDistance(), style); > case CSSPropertyOffsetPosition: >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return valueForPositionOrAuto(style, style.offsetPosition()); > case CSSPropertyOffsetAnchor: >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return valueForPositionOrAuto(style, style.offsetAnchor()); > case CSSPropertyOffsetRotate: >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return valueForOffsetRotate(style.offsetRotate()); > case CSSPropertyOffset: >- if (!m_element->document().settings().cssMotionPathEnabled()) >- return nullptr; > return valueForOffsetShorthand(style); > case CSSPropertyOpacity: > return cssValuePool.createValue(style.opacity(), CSSUnitType::CSS_NUMBER); >@@ -3522,16 +3515,10 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyOverflowY: > return cssValuePool.createValue(style.overflowY()); > case CSSPropertyOverscrollBehavior: >- if (!m_element->document().settings().overscrollBehaviorEnabled()) >- return nullptr; > return cssValuePool.createValue(std::max(style.overscrollBehaviorX(), style.overscrollBehaviorY())); > case CSSPropertyOverscrollBehaviorX: >- if (!m_element->document().settings().overscrollBehaviorEnabled()) >- return nullptr; > return cssValuePool.createValue(style.overscrollBehaviorX()); > case CSSPropertyOverscrollBehaviorY: >- if (!m_element->document().settings().overscrollBehaviorEnabled()) >- return nullptr; > return cssValuePool.createValue(style.overscrollBehaviorY()); > case CSSPropertyPaddingTop: > return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingTop, &RenderBoxModelObject::computedCSSPaddingTop>(style, renderer); >@@ -3566,14 +3553,10 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyTextAlign: > return cssValuePool.createValue(style.textAlign()); > case CSSPropertyTextAlignLast: >- if (!m_element->document().settings().cssTextAlignLastEnabled()) >- return nullptr; > return cssValuePool.createValue(style.textAlignLast()); > case CSSPropertyTextDecoration: > return renderTextDecorationLineFlagsToCSSValue(style.textDecorationLine()); > case CSSPropertyTextJustify: >- if (!m_element->document().settings().cssTextJustifyEnabled()) >- return nullptr; > return cssValuePool.createValue(style.textJustify()); > case CSSPropertyWebkitTextDecoration: > return getCSSPropertyValuesForShorthandProperties(webkitTextDecorationShorthand()); >@@ -3744,8 +3727,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyAppearance: > return cssValuePool.createValue(style.appearance()); > case CSSPropertyAspectRatio: >- if (!m_element->document().settings().aspectRatioEnabled()) >- return nullptr; > switch (style.aspectRatioType()) { > case AspectRatioType::Auto: > return cssValuePool.createIdentifierValue(CSSValueAuto); >@@ -3766,8 +3747,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > ASSERT_NOT_REACHED(); > return nullptr; > case CSSPropertyContain: { >- if (!m_element->document().settings().cssContainmentEnabled()) >- return nullptr; > auto containment = style.contain(); > if (!containment) > return cssValuePool.createIdentifierValue(CSSValueNone); >@@ -3808,21 +3787,12 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > list->append(cssValuePool.createCustomIdent(name)); > return list; > } >- case CSSPropertyContainIntrinsicSize: { >- if (!m_element->document().settings().cssContainIntrinsicSizeEnabled()) >- return nullptr; >+ case CSSPropertyContainIntrinsicSize: > return getCSSPropertyValuesFor2SidesShorthand(containIntrinsicSizeShorthand()); >- } >- case CSSPropertyContainIntrinsicWidth: { >- if (!m_element->document().settings().cssContainIntrinsicSizeEnabled()) >- return nullptr; >+ case CSSPropertyContainIntrinsicWidth: > return valueForContainIntrinsicSize(style, style.containIntrinsicWidthType(), style.containIntrinsicWidth()); >- } >- case CSSPropertyContainIntrinsicHeight: { >- if (!m_element->document().settings().cssContainIntrinsicSizeEnabled()) >- return nullptr; >+ case CSSPropertyContainIntrinsicHeight: > return valueForContainIntrinsicSize(style, style.containIntrinsicHeightType(), style.containIntrinsicHeight()); >- } > case CSSPropertyBackfaceVisibility: > return cssValuePool.createIdentifierValue((style.backfaceVisibility() == BackfaceVisibility::Hidden) ? CSSValueHidden : CSSValueVisible); > case CSSPropertyBorderImage: >@@ -3852,9 +3822,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > if (style.maskBoxImageSource()) > return style.maskBoxImageSource()->cssValue(); > return cssValuePool.createIdentifierValue(CSSValueNone); >- case CSSPropertyWebkitFontSizeDelta: >- // Not a real style property -- used by the editing engine -- so has no computed value. >- break; > case CSSPropertyWebkitInitialLetter: { > auto drop = !style.initialLetterDrop() ? cssValuePool.createIdentifierValue(CSSValueNormal) : cssValuePool.createValue(style.initialLetterDrop(), CSSUnitType::CSS_NUMBER); > auto size = !style.initialLetterHeight() ? cssValuePool.createIdentifierValue(CSSValueNormal) : cssValuePool.createValue(style.initialLetterHeight(), CSSUnitType::CSS_NUMBER); >@@ -3961,16 +3928,10 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > ASSERT_NOT_REACHED(); > return nullptr; > case CSSPropertyTranslate: >- if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled()) >- return nullptr; > return computedTranslate(renderer, style); > case CSSPropertyScale: >- if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled()) >- return nullptr; > return computedScale(renderer, style); > case CSSPropertyRotate: >- if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled()) >- return nullptr; > return computedRotate(renderer, style); > case CSSPropertyTransitionDelay: > case CSSPropertyTransitionDuration: >@@ -4196,11 +4157,6 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > } > #endif > >- /* Individual properties not part of the spec */ >- case CSSPropertyBackgroundRepeatX: >- case CSSPropertyBackgroundRepeatY: >- break; >- > // Length properties for SVG. > case CSSPropertyCx: > return zoomAdjustedPixelValueForLength(style.svgStyle().cx(), style); >@@ -4239,7 +4195,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > > /* Unimplemented CSS 3 properties (including CSS3 shorthand properties) */ > case CSSPropertyAll: >- break; >+ return nullptr; > > /* Directional properties are resolved by resolveDirectionAwareProperty() before the switch. */ > case CSSPropertyBorderBlockEndColor: >@@ -4289,7 +4245,22 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyContainIntrinsicBlockSize: > case CSSPropertyContainIntrinsicInlineSize: > ASSERT_NOT_REACHED(); >- break; >+ return nullptr; >+ >+ // Internal properties should be handled by isCSSPropertyExposed above. >+ case CSSPropertyBackgroundRepeatX: >+ case CSSPropertyBackgroundRepeatY: >+ case CSSPropertyWebkitFontSizeDelta: >+ case CSSPropertyWebkitMarqueeDirection: >+ case CSSPropertyWebkitMarqueeIncrement: >+ case CSSPropertyWebkitMarqueeRepetition: >+ case CSSPropertyWebkitMarqueeStyle: >+ case CSSPropertyWebkitMarqueeSpeed: >+#if ENABLE(TEXT_AUTOSIZING) >+ case CSSPropertyInternalTextAutosizingStatus: >+#endif >+ ASSERT_NOT_REACHED(); >+ return nullptr; > > // These are intentionally unimplemented because they are actually descriptors for @counter-style. > case CSSPropertySystem: >@@ -4301,31 +4272,26 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyFallback: > case CSSPropertySymbols: > case CSSPropertyAdditiveSymbols: >- break; >+ return nullptr; > > /* Unimplemented @font-face properties */ > case CSSPropertySrc: > case CSSPropertyUnicodeRange: > case CSSPropertyFontDisplay: >- break; >+ return nullptr; > > // Unimplemented @font-palette-values properties > case CSSPropertyBasePalette: > case CSSPropertyOverrideColors: >- break; >+ return nullptr; > > /* Other unimplemented properties */ > case CSSPropertyPage: // for @page > case CSSPropertySize: // for @page >- break; >+ return nullptr; > > /* Unimplemented -webkit- properties */ > case CSSPropertyWebkitBorderRadius: >- case CSSPropertyWebkitMarqueeDirection: >- case CSSPropertyWebkitMarqueeIncrement: >- case CSSPropertyWebkitMarqueeRepetition: >- case CSSPropertyWebkitMarqueeStyle: >- case CSSPropertyWebkitMarqueeSpeed: > case CSSPropertyWebkitMask: > case CSSPropertyMaskRepeatX: > case CSSPropertyMaskRepeatY: >@@ -4335,7 +4301,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyTransformOriginX: > case CSSPropertyTransformOriginY: > case CSSPropertyTransformOriginZ: >- break; >+ return nullptr; > > case CSSPropertyBufferedRendering: > case CSSPropertyClipRule: >@@ -4372,6 +4338,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > return nullptr; > } > >+ ASSERT_NOT_REACHED(); > return nullptr; > } > >@@ -4391,7 +4358,7 @@ unsigned CSSComputedStyleDeclaration::length() const > if (!style) > return 0; > >- return numComputedPropertyIDs + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); >+ return exposedComputedCSSPropertyIDs().size() + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); > } > > String CSSComputedStyleDeclaration::item(unsigned i) const >@@ -4399,8 +4366,8 @@ String CSSComputedStyleDeclaration::item(unsigned i) const > if (i >= length()) > return String(); > >- if (i < numComputedPropertyIDs) >- return getPropertyNameString(computedPropertyIDs[i]); >+ if (i < exposedComputedCSSPropertyIDs().size()) >+ return getPropertyNameString(exposedComputedCSSPropertyIDs().at(i)); > > auto* style = m_element->computedStyle(m_pseudoElementSpecifier); > if (!style) >@@ -4408,14 +4375,14 @@ String CSSComputedStyleDeclaration::item(unsigned i) const > > const auto& inheritedCustomProperties = style->inheritedCustomProperties(); > >- if (i < numComputedPropertyIDs + inheritedCustomProperties.size()) { >+ if (i < exposedComputedCSSPropertyIDs().size() + inheritedCustomProperties.size()) { > auto results = copyToVector(inheritedCustomProperties.keys()); >- return results.at(i - numComputedPropertyIDs); >+ return results.at(i - exposedComputedCSSPropertyIDs().size()); > } > > const auto& nonInheritedCustomProperties = style->nonInheritedCustomProperties(); > auto results = copyToVector(nonInheritedCustomProperties.keys()); >- return results.at(i - inheritedCustomProperties.size() - numComputedPropertyIDs); >+ return results.at(i - inheritedCustomProperties.size() - exposedComputedCSSPropertyIDs().size()); > } > > bool ComputedStyleExtractor::propertyMatches(CSSPropertyID propertyID, const CSSValue* value) >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.h b/Source/WebCore/css/CSSComputedStyleDeclaration.h >index 614f7c2dc09b..97ef1c7331b2 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.h >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.h >@@ -25,6 +25,7 @@ > #include "RenderStyleConstants.h" > #include "SVGRenderStyleDefs.h" > #include "TextFlags.h" >+#include <wtf/FixedVector.h> > #include <wtf/IsoMalloc.h> > #include <wtf/RefPtr.h> > #include <wtf/text/WTFString.h> >@@ -140,6 +141,7 @@ private: > RefPtr<CSSValue> getPropertyCSSValue(CSSPropertyID, EUpdateLayout = UpdateLayout) const; > > const Settings* settings() const final; >+ const FixedVector<CSSPropertyID>& exposedComputedCSSPropertyIDs() const; > > mutable Ref<Element> m_element; > PseudoId m_pseudoElementSpecifier; >diff --git a/Source/WebCore/css/CSSProperties.json b/Source/WebCore/css/CSSProperties.json >index 9a0821669feb..f15b3106144f 100644 >--- a/Source/WebCore/css/CSSProperties.json >+++ b/Source/WebCore/css/CSSProperties.json >@@ -738,7 +738,8 @@ > "codegen-properties": { > "custom": "Value", > "high-priority": true, >- "enable-if": "ENABLE_TEXT_AUTOSIZING" >+ "enable-if": "ENABLE_TEXT_AUTOSIZING", >+ "settings-flag": "textAutosizingEnabled" > }, > "status": "experimental", > "specification": { >@@ -5864,6 +5865,7 @@ > "-apple-color-filter": { > "inherited": true, > "codegen-properties": { >+ "settings-flag": "colorFilterEnabled", > "conditional-converter": "FilterOperations" > }, > "status": { >@@ -6999,7 +7001,8 @@ > "inherited": true, > "codegen-properties": { > "skip-builder": true, >- "enable-if": "ENABLE_TEXT_AUTOSIZING" >+ "enable-if": "ENABLE_TEXT_AUTOSIZING", >+ "internal-only": true > }, > "status": "non-standard" > }, >@@ -7708,7 +7711,8 @@ > "codegen-properties": { > "name-for-methods": "UseTouchOverflowScrolling", > "converter": "OverflowScrolling", >- "enable-if": "ENABLE_OVERFLOW_SCROLLING_TOUCH" >+ "enable-if": "ENABLE_OVERFLOW_SCROLLING_TOUCH", >+ "settings-flag": "legacyOverflowScrollingTouchEnabled" > }, > "status": "non-standard" > }, >diff --git a/Source/WebCore/css/CSSStyleDeclaration.cpp b/Source/WebCore/css/CSSStyleDeclaration.cpp >index 6f21467016c9..0f17338e8729 100644 >--- a/Source/WebCore/css/CSSStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSStyleDeclaration.cpp >@@ -199,7 +199,7 @@ static CSSPropertyID parseJavaScriptCSSPropertyName(const AtomString& propertyNa > static CSSPropertyID propertyIDFromJavaScriptCSSPropertyName(const AtomString& propertyName, const Settings* settings) > { > auto id = parseJavaScriptCSSPropertyName(propertyName); >- if (!isEnabledCSSProperty(id) || !isCSSPropertyEnabledBySettings(id, settings)) >+ if (!isCSSPropertyExposed(id, settings)) > return CSSPropertyInvalid; > return id; > } >diff --git a/Source/WebCore/css/DOMCSSNamespace.cpp b/Source/WebCore/css/DOMCSSNamespace.cpp >index 800787213d33..348aa54122ac 100644 >--- a/Source/WebCore/css/DOMCSSNamespace.cpp >+++ b/Source/WebCore/css/DOMCSSNamespace.cpp >@@ -32,6 +32,7 @@ > > #include "CSSMarkup.h" > #include "CSSParser.h" >+#include "CSSPropertyNames.h" > #include "CSSPropertyParser.h" > #include "Document.h" > #include "HighlightRegister.h" >@@ -60,10 +61,10 @@ bool DOMCSSNamespace::supports(Document& document, const String& property, const > CSSPropertyID propertyID = cssPropertyID(property.stripWhiteSpace()); > > CSSParserContext parserContext(document); >- if (parserContext.isPropertyRuntimeDisabled(propertyID)) >+ if (!isCSSPropertyExposed(propertyID, &document.settings())) > return false; > >- if (isInternalCSSProperty(propertyID)) >+ if (CSSProperty::isDescriptorOnly(propertyID)) > return false; > > if (propertyID == CSSPropertyInvalid) >diff --git a/Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp b/Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp >index 182c3093e813..700469c9f95f 100644 >--- a/Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp >+++ b/Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp >@@ -150,13 +150,24 @@ void PropertySetCSSStyleDeclaration::deref() > > unsigned PropertySetCSSStyleDeclaration::length() const > { >- return m_propertySet->propertyCount(); >+ unsigned exposed = 0; >+ for (unsigned i = 0; i < m_propertySet->propertyCount(); i++) { >+ if (isCSSPropertyExposed(m_propertySet->propertyAt(i).id())) >+ exposed++; >+ } >+ return exposed; > } > > String PropertySetCSSStyleDeclaration::item(unsigned i) const > { >+ for (unsigned j = 0; j <= i && j < m_propertySet->propertyCount(); j++) { >+ if (!isCSSPropertyExposed(m_propertySet->propertyAt(j).id())) >+ i++; >+ } >+ > if (i >= m_propertySet->propertyCount()) > return String(); >+ > return m_propertySet->propertyAt(i).cssName(); > } > >@@ -189,7 +200,7 @@ RefPtr<DeprecatedCSSOMValue> PropertySetCSSStyleDeclaration::getPropertyCSSValue > } > > CSSPropertyID propertyID = cssPropertyID(propertyName); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return nullptr; > return wrapForDeprecatedCSSOM(getPropertyCSSValueInternal(propertyID).get()); > } >@@ -200,7 +211,7 @@ String PropertySetCSSStyleDeclaration::getPropertyValue(const String& propertyNa > return m_propertySet->getCustomPropertyValue(propertyName); > > CSSPropertyID propertyID = cssPropertyID(propertyName); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return String(); > return getPropertyValueInternal(propertyID); > } >@@ -211,7 +222,7 @@ String PropertySetCSSStyleDeclaration::getPropertyPriority(const String& propert > return m_propertySet->customPropertyIsImportant(propertyName) ? "important"_s : emptyString(); > > CSSPropertyID propertyID = cssPropertyID(propertyName); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return emptyString(); > return m_propertySet->propertyIsImportant(propertyID) ? "important"_s : emptyString(); > } >@@ -219,7 +230,7 @@ String PropertySetCSSStyleDeclaration::getPropertyPriority(const String& propert > String PropertySetCSSStyleDeclaration::getPropertyShorthand(const String& propertyName) > { > CSSPropertyID propertyID = cssPropertyID(propertyName); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return String(); > return m_propertySet->getPropertyShorthand(propertyID); > } >@@ -227,7 +238,7 @@ String PropertySetCSSStyleDeclaration::getPropertyShorthand(const String& proper > bool PropertySetCSSStyleDeclaration::isPropertyImplicit(const String& propertyName) > { > CSSPropertyID propertyID = cssPropertyID(propertyName); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return false; > return m_propertySet->isPropertyImplicit(propertyID); > } >@@ -239,7 +250,8 @@ ExceptionOr<void> PropertySetCSSStyleDeclaration::setProperty(const String& prop > CSSPropertyID propertyID = cssPropertyID(propertyName); > if (isCustomPropertyName(propertyName)) > propertyID = CSSPropertyCustom; >- if (!propertyID) >+ >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return { }; > > if (!willMutate()) >@@ -279,7 +291,7 @@ ExceptionOr<String> PropertySetCSSStyleDeclaration::removeProperty(const String& > CSSPropertyID propertyID = cssPropertyID(propertyName); > if (isCustomPropertyName(propertyName)) > propertyID = CSSPropertyCustom; >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) > return String(); > > if (!willMutate()) >@@ -302,6 +314,9 @@ RefPtr<CSSValue> PropertySetCSSStyleDeclaration::getPropertyCSSValueInternal(CSS > > String PropertySetCSSStyleDeclaration::getPropertyValueInternal(CSSPropertyID propertyID) > { >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) >+ return { }; >+ > Document* doc = nullptr; > JSDOMObject* wrap = wrapper(); > if (wrap) { >@@ -325,6 +340,9 @@ ExceptionOr<void> PropertySetCSSStyleDeclaration::setPropertyInternal(CSSPropert > if (!willMutate()) > return { }; > >+ if (!propertyID || !isCSSPropertyExposed(propertyID)) >+ return { }; >+ > if (m_propertySet->setProperty(propertyID, value, important, cssParserContext())) { > didMutate(PropertyChanged); > mutationScope.enqueueMutationRecord(); >@@ -334,6 +352,15 @@ ExceptionOr<void> PropertySetCSSStyleDeclaration::setPropertyInternal(CSSPropert > return { }; > } > >+bool PropertySetCSSStyleDeclaration::isCSSPropertyExposed(CSSPropertyID propertyID) const >+{ >+ auto parserContext = cssParserContext(); >+ bool parsingDescriptor = parserContext.enclosingRuleType && *parserContext.enclosingRuleType != StyleRuleType::Style; >+ >+ return WebCore::isCSSPropertyExposed(propertyID, &parserContext.propertySettings) >+ && (!CSSProperty::isDescriptorOnly(propertyID) || parsingDescriptor); >+} >+ > RefPtr<DeprecatedCSSOMValue> PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM(CSSValue* internalValue) > { > if (!internalValue) >diff --git a/Source/WebCore/css/PropertySetCSSStyleDeclaration.h b/Source/WebCore/css/PropertySetCSSStyleDeclaration.h >index f4d63b6544fd..2f31dd8e61a9 100644 >--- a/Source/WebCore/css/PropertySetCSSStyleDeclaration.h >+++ b/Source/WebCore/css/PropertySetCSSStyleDeclaration.h >@@ -82,6 +82,7 @@ private: > ExceptionOr<void> setPropertyInternal(CSSPropertyID, const String& value, bool important) final; > > Ref<MutableStyleProperties> copyProperties() const final; >+ bool isCSSPropertyExposed(CSSPropertyID) const; > > RefPtr<DeprecatedCSSOMValue> wrapForDeprecatedCSSOM(CSSValue*); > >diff --git a/Source/WebCore/css/StyleProperties.cpp b/Source/WebCore/css/StyleProperties.cpp >index c44dab680e32..61a943b50219 100644 >--- a/Source/WebCore/css/StyleProperties.cpp >+++ b/Source/WebCore/css/StyleProperties.cpp >@@ -1327,8 +1327,12 @@ bool StyleProperties::isPropertyImplicit(CSSPropertyID propertyID) const > > bool MutableStyleProperties::setProperty(CSSPropertyID propertyID, const String& value, bool important, CSSParserContext parserContext) > { >- if (!isEnabledCSSProperty(propertyID)) >+ if (!isCSSPropertyExposed(propertyID, &parserContext.propertySettings) && !isInternalCSSProperty(propertyID)) { >+ // Allow internal properties as we use them to handle certain DOM-exposed values >+ // (e.g. -webkit-font-size-delta from execCommand('FontSizeDelta')). >+ ASSERT_NOT_REACHED(); > return false; >+ } > > // Setting the value to an empty string just removes the property in both IE and Gecko. > // Setting it to null seems to produce less consistent results, but we treat it just the same. >@@ -1513,7 +1517,7 @@ StringBuilder StyleProperties::asTextInternal() const > auto serializeBorderShorthand = [&] (const CSSPropertyID borderProperty, const CSSPropertyID fallbackProperty) { > // FIXME: Deal with cases where only some of border sides are specified. > ASSERT(borderProperty - firstCSSProperty < static_cast<CSSPropertyID>(shorthandPropertyAppeared.size())); >- if (!shorthandPropertyAppeared[borderProperty - firstCSSProperty] && isEnabledCSSProperty(borderProperty)) { >+ if (!shorthandPropertyAppeared[borderProperty - firstCSSProperty]) { > value = getPropertyValue(borderProperty); > if (value.isNull()) > shorthandPropertyAppeared.set(borderProperty - firstCSSProperty); >@@ -1773,7 +1777,7 @@ StringBuilder StyleProperties::asTextInternal() const > } > > unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty; >- if (shorthandPropertyID && isEnabledCSSProperty(shorthandPropertyID)) { >+ if (shorthandPropertyID) { > ASSERT(shortPropertyIndex < shorthandPropertyUsed.size()); > if (shorthandPropertyUsed[shortPropertyIndex]) > continue; >diff --git a/Source/WebCore/css/makeprop.pl b/Source/WebCore/css/makeprop.pl >index df8dcc26e314..4afd3e1b900b 100755 >--- a/Source/WebCore/css/makeprop.pl >+++ b/Source/WebCore/css/makeprop.pl >@@ -145,6 +145,12 @@ while (my ($groupName, $logicalPropertyGroup) = each %logicalPropertyGroups) { > } > } > >+sub uniq(@) >+{ >+ my %hash = map { $_, 1 } @_; >+ return keys %hash; >+} >+ > sub matchEnableFlags($) > { > my ($enable_flag) = @_; >@@ -413,6 +419,8 @@ print GPERF << "EOF"; > #include "DeprecatedGlobalSettings.h" > #include "Settings.h" > #include <wtf/ASCIICType.h> >+#include <wtf/FixedVector.h> >+#include <wtf/Hasher.h> > #include <wtf/text/AtomString.h> > #include <wtf/text/WTFString.h> > #include <string.h> >@@ -473,7 +481,7 @@ const Property* findProperty(const char* str, unsigned int len) > return CSSPropertyNamesHash::findPropertyImpl(str, len); > } > >-bool isInternalCSSProperty(const CSSPropertyID id) >+bool isInternalCSSProperty(CSSPropertyID id) > { > switch (id) { > EOF >@@ -493,7 +501,7 @@ EOF > > if (%runtimeFlags) { > print GPERF << "EOF"; >-bool isEnabledCSSProperty(const CSSPropertyID id) >+static bool isEnabledCSSProperty(CSSPropertyID id) > { > switch (id) { > EOF >@@ -508,7 +516,7 @@ EOF > EOF > } else { > print GPERF << "EOF"; >-bool isEnabledCSSProperty(const CSSPropertyID) >+static bool isEnabledCSSProperty(CSSPropertyID) > { > return true; > EOF >@@ -517,7 +525,7 @@ EOF > print GPERF << "EOF"; > } > >-bool isCSSPropertyEnabledBySettings(const CSSPropertyID id, const Settings* settings) >+static bool isCSSPropertyEnabledBySettings(CSSPropertyID id, const Settings* settings) > { > if (!settings) > return true; >@@ -530,6 +538,25 @@ foreach my $name (sort keys %settingsFlags) { > print GPERF " return settings->" . $settingsFlags{$name} . "();\n"; > } > >+print GPERF << "EOF"; >+ default: >+ return true; >+ } >+} >+ >+static bool isCSSPropertyEnabledByCSSPropertySettings(CSSPropertyID id, const CSSPropertySettings* settings) >+{ >+ if (!settings) >+ return true; >+ >+ switch (id) { >+EOF >+ >+foreach my $name (keys %settingsFlags) { >+ print GPERF " case CSSPropertyID::CSSProperty" . $nameToId{$name} . ":\n"; >+ print GPERF " return settings->" . $settingsFlags{$name} . ";\n"; >+} >+ > print GPERF << "EOF"; > default: > return true; >@@ -537,6 +564,16 @@ print GPERF << "EOF"; > return true; > } > >+bool isCSSPropertyExposed(CSSPropertyID id, const Settings* settings) >+{ >+ return isEnabledCSSProperty(id) && isCSSPropertyEnabledBySettings(id, settings) && !isInternalCSSProperty(id); >+} >+ >+bool isCSSPropertyExposed(CSSPropertyID id, const CSSPropertySettings* settings) >+{ >+ return isEnabledCSSProperty(id) && isCSSPropertyEnabledByCSSPropertySettings(id, settings) && !isInternalCSSProperty(id); >+} >+ > ASCIILiteral getPropertyName(CSSPropertyID id) > { > if (id < firstCSSProperty) >@@ -827,6 +864,54 @@ print GPERF << "EOF"; > } > } > >+CSSPropertySettings::CSSPropertySettings(const Settings& settings) >+EOF >+ >+my $nthSetting = 0; >+foreach my $name (sort(uniq(values %settingsFlags))) { >+ print GPERF " "; >+ if ($nthSetting == 0) { >+ print GPERF ": "; >+ } else { >+ print GPERF ", "; >+ } >+ print GPERF $name . " { settings." . $name . "() }\n"; >+ $nthSetting += 1; >+} >+ >+print GPERF << "EOF"; >+{ >+} >+ >+bool operator==(const CSSPropertySettings& a, const CSSPropertySettings& b) >+{ >+ return true >+EOF >+ >+foreach my $name (sort(uniq(values %settingsFlags))) { >+ print GPERF " && a." . $name . " == b." . $name . "\n"; >+} >+ >+print GPERF << "EOF"; >+ ; >+} >+ >+void add(Hasher& hasher, const CSSPropertySettings& settings) >+{ >+ unsigned bits = 0 >+EOF >+ >+$nthSetting = 0; >+foreach my $name (sort(uniq(values %settingsFlags))) { >+ print GPERF " | settings." . $name . " << " . $nthSetting . "\n"; >+ $nthSetting += 1; >+} >+ >+print GPERF << "EOF"; >+ ; >+ add(hasher, bits); >+} >+ > } // namespace WebCore > > IGNORE_WARNINGS_END >@@ -928,9 +1013,26 @@ print HEADER "const size_t numComputedPropertyIDs = $numComputedPropertyIDs;\n"; > > print HEADER << "EOF"; > >-bool isInternalCSSProperty(const CSSPropertyID); >-bool isEnabledCSSProperty(const CSSPropertyID); >-bool isCSSPropertyEnabledBySettings(const CSSPropertyID, const Settings* = nullptr); >+struct CSSPropertySettings { >+ WTF_MAKE_STRUCT_FAST_ALLOCATED; >+EOF >+ >+foreach my $name (sort(uniq(values %settingsFlags))) { >+ print HEADER " bool " . $name . " { false };\n"; >+} >+ >+print HEADER << "EOF"; >+ CSSPropertySettings() = default; >+ explicit CSSPropertySettings(const Settings&); >+}; >+ >+bool operator==(const CSSPropertySettings&, const CSSPropertySettings&); >+inline bool operator!=(const CSSPropertySettings& a, const CSSPropertySettings& b) { return !(a == b); } >+void add(Hasher&, const CSSPropertySettings&); >+ >+bool isInternalCSSProperty(CSSPropertyID); >+bool isCSSPropertyExposed(CSSPropertyID, const Settings*); >+bool isCSSPropertyExposed(CSSPropertyID, const CSSPropertySettings*); > ASCIILiteral getPropertyName(CSSPropertyID); > const AtomString& getPropertyNameAtomString(CSSPropertyID id); > String getPropertyNameString(CSSPropertyID id); >diff --git a/Source/WebCore/css/parser/CSSParserContext.cpp b/Source/WebCore/css/parser/CSSParserContext.cpp >index c9a939abeb13..aba3c3c82103 100644 >--- a/Source/WebCore/css/parser/CSSParserContext.cpp >+++ b/Source/WebCore/css/parser/CSSParserContext.cpp >@@ -27,7 +27,7 @@ > #include "CSSParserContext.h" > > #include "CSSImageValue.h" >-#include "DeprecatedGlobalSettings.h" >+#include "CSSPropertyNames.h" > #include "Document.h" > #include "DocumentLoader.h" > #include "Page.h" >@@ -48,29 +48,16 @@ CSSParserContext::CSSParserContext(CSSParserMode mode, const URL& baseURL) > { > // FIXME: We should turn all of the features on from their WebCore Settings defaults. > if (mode == UASheetMode) { >- individualTransformPropertiesEnabled = true; > focusVisibleEnabled = true; >- inputSecurityEnabled = true; >- containmentEnabled = true; >+ propertySettings.cssContainmentEnabled = true; >+ propertySettings.cssIndividualTransformPropertiesEnabled = true; >+ propertySettings.cssInputSecurityEnabled = true; > #if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D) > transformStyleOptimized3DEnabled = true; > #endif > } > } > >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >-static bool shouldEnableLegacyOverflowScrollingTouch(const Document& document) >-{ >- // The legacy -webkit-overflow-scrolling: touch behavior may have been disabled through the website policy, >- // in that case we want to disable the legacy behavior regardless of what the setting says. >- if (auto* loader = document.loader()) { >- if (loader->legacyOverflowScrollingTouchPolicy() == LegacyOverflowScrollingTouchPolicy::Disable) >- return false; >- } >- return document.settings().legacyOverflowScrollingTouchEnabled(); >-} >-#endif >- > CSSParserContext::CSSParserContext(const Document& document, const URL& sheetBaseURL, const String& charset) > : baseURL { sheetBaseURL.isNull() ? document.baseURL() : sheetBaseURL } > , charset { charset } >@@ -78,27 +65,13 @@ CSSParserContext::CSSParserContext(const Document& document, const URL& sheetBas > , isHTMLDocument { document.isHTMLDocument() } > , hasDocumentSecurityOrigin { sheetBaseURL.isNull() || document.securityOrigin().canRequest(baseURL) } > , useSystemAppearance { document.page() ? document.page()->useSystemAppearance() : false } >- , accentColorEnabled { document.settings().accentColorEnabled() } >- , aspectRatioEnabled { document.settings().aspectRatioEnabled() } > , colorContrastEnabled { document.settings().cssColorContrastEnabled() } >- , colorFilterEnabled { document.settings().colorFilterEnabled() } > , colorMixEnabled { document.settings().cssColorMixEnabled() } > , constantPropertiesEnabled { document.settings().constantPropertiesEnabled() } >- , containmentEnabled { document.settings().cssContainmentEnabled() } >- , counterStyleAtRulesEnabled { document.settings().cssCounterStyleAtRulesEnabled() } > , counterStyleAtRuleImageSymbolsEnabled { document.settings().cssCounterStyleAtRuleImageSymbolsEnabled() } > , cssColor4 { document.settings().cssColor4() } >- , individualTransformPropertiesEnabled { document.settings().cssIndividualTransformPropertiesEnabled() } >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- , legacyOverflowScrollingTouchEnabled { shouldEnableLegacyOverflowScrollingTouch(document) } >-#endif >- , overscrollBehaviorEnabled { document.settings().overscrollBehaviorEnabled() } > , relativeColorSyntaxEnabled { document.settings().cssRelativeColorSyntaxEnabled() } >- , scrollBehaviorEnabled { document.settings().CSSOMViewSmoothScrollingEnabled() } > , springTimingFunctionEnabled { document.settings().springTimingFunctionEnabled() } >-#if ENABLE(TEXT_AUTOSIZING) >- , textAutosizingEnabled { document.settings().textAutosizingEnabled() } >-#endif > #if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D) > , transformStyleOptimized3DEnabled { document.settings().cssTransformStyleOptimized3DEnabled() } > #endif >@@ -106,19 +79,11 @@ CSSParserContext::CSSParserContext(const Document& document, const URL& sheetBas > , focusVisibleEnabled { document.settings().focusVisibleEnabled() } > , hasPseudoClassEnabled { document.settings().hasPseudoClassEnabled() } > , cascadeLayersEnabled { document.settings().cssCascadeLayersEnabled() } >- , containerQueriesEnabled { document.settings().cssContainerQueriesEnabled() } > , overflowClipEnabled { document.settings().overflowClipEnabled() } > , gradientPremultipliedAlphaInterpolationEnabled { document.settings().cssGradientPremultipliedAlphaInterpolationEnabled() } > , gradientInterpolationColorSpacesEnabled { document.settings().cssGradientInterpolationColorSpacesEnabled() } >- , inputSecurityEnabled { document.settings().cssInputSecurityEnabled() } > , subgridEnabled { document.settings().subgridEnabled() } >- , containIntrinsicSizeEnabled { document.settings().cssContainIntrinsicSizeEnabled() } >- , motionPathEnabled { document.settings().cssMotionPathEnabled() } >- , cssTextAlignLastEnabled { document.settings().cssTextAlignLastEnabled() } >- , cssTextJustifyEnabled { document.settings().cssTextJustifyEnabled() } >-#if ENABLE(ATTACHMENT_ELEMENT) >- , attachmentEnabled { DeprecatedGlobalSettings::attachmentElementEnabled() } >-#endif >+ , propertySettings { CSSPropertySettings { document.settings() } } > { > } > >@@ -132,27 +97,13 @@ bool operator==(const CSSParserContext& a, const CSSParserContext& b) > && a.hasDocumentSecurityOrigin == b.hasDocumentSecurityOrigin > && a.isContentOpaque == b.isContentOpaque > && a.useSystemAppearance == b.useSystemAppearance >- && a.accentColorEnabled == b.accentColorEnabled >- && a.aspectRatioEnabled == b.aspectRatioEnabled > && a.colorContrastEnabled == b.colorContrastEnabled >- && a.colorFilterEnabled == b.colorFilterEnabled > && a.colorMixEnabled == b.colorMixEnabled > && a.constantPropertiesEnabled == b.constantPropertiesEnabled >- && a.containmentEnabled == b.containmentEnabled >- && a.counterStyleAtRulesEnabled == b.counterStyleAtRulesEnabled > && a.counterStyleAtRuleImageSymbolsEnabled == b.counterStyleAtRuleImageSymbolsEnabled > && a.cssColor4 == b.cssColor4 >- && a.individualTransformPropertiesEnabled == b.individualTransformPropertiesEnabled >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- && a.legacyOverflowScrollingTouchEnabled == b.legacyOverflowScrollingTouchEnabled >-#endif >- && a.overscrollBehaviorEnabled == b.overscrollBehaviorEnabled > && a.relativeColorSyntaxEnabled == b.relativeColorSyntaxEnabled >- && a.scrollBehaviorEnabled == b.scrollBehaviorEnabled > && a.springTimingFunctionEnabled == b.springTimingFunctionEnabled >-#if ENABLE(TEXT_AUTOSIZING) >- && a.textAutosizingEnabled == b.textAutosizingEnabled >-#endif > #if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D) > && a.transformStyleOptimized3DEnabled == b.transformStyleOptimized3DEnabled > #endif >@@ -160,19 +111,11 @@ bool operator==(const CSSParserContext& a, const CSSParserContext& b) > && a.focusVisibleEnabled == b.focusVisibleEnabled > && a.hasPseudoClassEnabled == b.hasPseudoClassEnabled > && a.cascadeLayersEnabled == b.cascadeLayersEnabled >- && a.containerQueriesEnabled == b.containerQueriesEnabled > && a.overflowClipEnabled == b.overflowClipEnabled > && a.gradientPremultipliedAlphaInterpolationEnabled == b.gradientPremultipliedAlphaInterpolationEnabled > && a.gradientInterpolationColorSpacesEnabled == b.gradientInterpolationColorSpacesEnabled >- && a.inputSecurityEnabled == b.inputSecurityEnabled >-#if ENABLE(ATTACHMENT_ELEMENT) >- && a.attachmentEnabled == b.attachmentEnabled >-#endif > && a.subgridEnabled == b.subgridEnabled >- && a.containIntrinsicSizeEnabled == b.containIntrinsicSizeEnabled >- && a.motionPathEnabled == b.motionPathEnabled >- && a.cssTextAlignLastEnabled == b.cssTextAlignLastEnabled >- && a.cssTextJustifyEnabled == b.cssTextJustifyEnabled >+ && a.propertySettings == b.propertySettings > ; > } > >@@ -182,113 +125,25 @@ void add(Hasher& hasher, const CSSParserContext& context) > | context.hasDocumentSecurityOrigin << 1 > | context.isContentOpaque << 2 > | context.useSystemAppearance << 3 >- | context.aspectRatioEnabled << 4 >- | context.colorContrastEnabled << 5 >- | context.colorFilterEnabled << 6 >- | context.colorMixEnabled << 7 >- | context.constantPropertiesEnabled << 8 >- | context.containmentEnabled << 9 >- | context.cssColor4 << 10 >- | context.individualTransformPropertiesEnabled << 11 >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- | context.legacyOverflowScrollingTouchEnabled << 12 >-#endif >- | context.overscrollBehaviorEnabled << 13 >- | context.relativeColorSyntaxEnabled << 14 >- | context.scrollBehaviorEnabled << 15 >- | context.springTimingFunctionEnabled << 16 >-#if ENABLE(TEXT_AUTOSIZING) >- | context.textAutosizingEnabled << 17 >-#endif >+ | context.colorContrastEnabled << 4 >+ | context.colorMixEnabled << 5 >+ | context.constantPropertiesEnabled << 6 >+ | context.cssColor4 << 7 >+ | context.relativeColorSyntaxEnabled << 8 >+ | context.springTimingFunctionEnabled << 9 > #if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D) >- | context.transformStyleOptimized3DEnabled << 18 >-#endif >- | context.useLegacyBackgroundSizeShorthandBehavior << 19 >- | context.focusVisibleEnabled << 20 >- | context.hasPseudoClassEnabled << 21 >- | context.cascadeLayersEnabled << 22 >- | context.containerQueriesEnabled << 23 >- | context.overflowClipEnabled << 24 >- | context.gradientPremultipliedAlphaInterpolationEnabled << 25 >- | context.gradientInterpolationColorSpacesEnabled << 27 >-#if ENABLE(ATTACHMENT_ELEMENT) >- | context.attachmentEnabled << 28 >-#endif >- | context.accentColorEnabled << 29 >- | context.inputSecurityEnabled << 30 >- | context.subgridEnabled << 31 >- | (uint64_t)context.containIntrinsicSizeEnabled << 32 >- | (uint64_t)context.motionPathEnabled << 33 >- | (uint64_t)context.cssTextAlignLastEnabled << 34 >- | (uint64_t)context.cssTextJustifyEnabled << 35 >- | (uint64_t)context.mode << 36; // This is multiple bits, so keep it last. >- >- add(hasher, context.baseURL, context.charset, bits); >-} >- >-bool CSSParserContext::isPropertyRuntimeDisabled(CSSPropertyID property) const >-{ >- switch (property) { >- case CSSPropertyAdditiveSymbols: >- case CSSPropertyFallback: >- case CSSPropertyPad: >- case CSSPropertySymbols: >- case CSSPropertyNegative: >- case CSSPropertyPrefix: >- case CSSPropertyRange: >- case CSSPropertySuffix: >- case CSSPropertySystem: >- return !counterStyleAtRulesEnabled; >- case CSSPropertyAccentColor: >- return !accentColorEnabled; >- case CSSPropertyAspectRatio: >- return !aspectRatioEnabled; >- case CSSPropertyContain: >- return !containmentEnabled; >- case CSSPropertyAppleColorFilter: >- return !colorFilterEnabled; >- case CSSPropertyInputSecurity: >- return !inputSecurityEnabled; >- case CSSPropertyTranslate: >- case CSSPropertyRotate: >- case CSSPropertyScale: >- return !individualTransformPropertiesEnabled; >- case CSSPropertyOverscrollBehavior: >- case CSSPropertyOverscrollBehaviorBlock: >- case CSSPropertyOverscrollBehaviorInline: >- case CSSPropertyOverscrollBehaviorX: >- case CSSPropertyOverscrollBehaviorY: >- return !overscrollBehaviorEnabled; >- case CSSPropertyScrollBehavior: >- return !scrollBehaviorEnabled; >-#if ENABLE(TEXT_AUTOSIZING) && !PLATFORM(IOS_FAMILY) >- case CSSPropertyWebkitTextSizeAdjust: >- return !textAutosizingEnabled; >-#endif >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- case CSSPropertyWebkitOverflowScrolling: >- return !legacyOverflowScrollingTouchEnabled; >-#endif >- case CSSPropertyContainIntrinsicSize: >- case CSSPropertyContainIntrinsicHeight: >- case CSSPropertyContainIntrinsicWidth: >- case CSSPropertyContainIntrinsicBlockSize: >- case CSSPropertyContainIntrinsicInlineSize: >- return !containIntrinsicSizeEnabled; >- case CSSPropertyOffset: >- case CSSPropertyOffsetPath: >- case CSSPropertyOffsetDistance: >- case CSSPropertyOffsetPosition: >- case CSSPropertyOffsetAnchor: >- case CSSPropertyOffsetRotate: >- return !motionPathEnabled; >- case CSSPropertyTextAlignLast: >- return !cssTextAlignLastEnabled; >- case CSSPropertyTextJustify: >- return !cssTextJustifyEnabled; >- default: >- return false; >- } >+ | context.transformStyleOptimized3DEnabled << 10 >+#endif >+ | context.useLegacyBackgroundSizeShorthandBehavior << 11 >+ | context.focusVisibleEnabled << 12 >+ | context.hasPseudoClassEnabled << 13 >+ | context.cascadeLayersEnabled << 14 >+ | context.overflowClipEnabled << 15 >+ | context.gradientPremultipliedAlphaInterpolationEnabled << 16 >+ | context.gradientInterpolationColorSpacesEnabled << 17 >+ | context.subgridEnabled << 18 >+ | (uint64_t)context.mode << 19; // This is multiple bits, so keep it last. >+ add(hasher, context.baseURL, context.charset, context.propertySettings, bits); > } > > ResolvedURL CSSParserContext::completeURL(const String& string) const >diff --git a/Source/WebCore/css/parser/CSSParserContext.h b/Source/WebCore/css/parser/CSSParserContext.h >index b88eb1bb4fd6..39b33306fc2f 100644 >--- a/Source/WebCore/css/parser/CSSParserContext.h >+++ b/Source/WebCore/css/parser/CSSParserContext.h >@@ -54,28 +54,14 @@ struct CSSParserContext { > bool isContentOpaque { false }; > bool useSystemAppearance { false }; > >- // Settings. >- bool accentColorEnabled { false }; >- bool aspectRatioEnabled { false }; >+ // Settings, excluding those affecting properties. > bool colorContrastEnabled { false }; >- bool colorFilterEnabled { false }; > bool colorMixEnabled { false }; > bool constantPropertiesEnabled { false }; >- bool containmentEnabled { false }; >- bool counterStyleAtRulesEnabled { false }; > bool counterStyleAtRuleImageSymbolsEnabled { false }; > bool cssColor4 { false }; >- bool individualTransformPropertiesEnabled { false }; >-#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >- bool legacyOverflowScrollingTouchEnabled { false }; >-#endif >- bool overscrollBehaviorEnabled { false }; > bool relativeColorSyntaxEnabled { false }; >- bool scrollBehaviorEnabled { false }; > bool springTimingFunctionEnabled { false }; >-#if ENABLE(TEXT_AUTOSIZING) >- bool textAutosizingEnabled { false }; >-#endif > #if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D) > bool transformStyleOptimized3DEnabled { false }; > #endif >@@ -83,25 +69,16 @@ struct CSSParserContext { > bool focusVisibleEnabled { false }; > bool hasPseudoClassEnabled { false }; > bool cascadeLayersEnabled { false }; >- bool containerQueriesEnabled { false }; > bool overflowClipEnabled { false }; > bool gradientPremultipliedAlphaInterpolationEnabled { false }; > bool gradientInterpolationColorSpacesEnabled { false }; >- bool inputSecurityEnabled { false }; > bool subgridEnabled { false }; >- bool containIntrinsicSizeEnabled { false }; >- bool motionPathEnabled { false }; >- bool cssTextAlignLastEnabled { false }; >- bool cssTextJustifyEnabled { false }; >- >- // DeprecatedGlobalSettings. >-#if ENABLE(ATTACHMENT_ELEMENT) >- bool attachmentEnabled { false }; >-#endif >+ >+ // Settings, those affecting properties. >+ CSSPropertySettings propertySettings; > > CSSParserContext(CSSParserMode, const URL& baseURL = URL()); > WEBCORE_EXPORT CSSParserContext(const Document&, const URL& baseURL = URL(), const String& charset = emptyString()); >- bool isPropertyRuntimeDisabled(CSSPropertyID) const; > ResolvedURL completeURL(const String&) const; > }; > >diff --git a/Source/WebCore/css/parser/CSSParserFastPaths.cpp b/Source/WebCore/css/parser/CSSParserFastPaths.cpp >index 4f7e326a59f9..81324354848d 100644 >--- a/Source/WebCore/css/parser/CSSParserFastPaths.cpp >+++ b/Source/WebCore/css/parser/CSSParserFastPaths.cpp >@@ -38,6 +38,7 @@ > #include "CSSPropertyParserHelpers.h" > #include "CSSValueList.h" > #include "CSSValuePool.h" >+#include "DeprecatedGlobalSettings.h" > #include "HTMLParserIdioms.h" > #include "HashTools.h" > #include "StyleColor.h" >@@ -647,8 +648,6 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > case CSSPropertyImageRendering: // auto | optimizeContrast | pixelated | optimizeSpeed | crispEdges | optimizeQuality | webkit-crispEdges > return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueOptimizeQuality || valueID == CSSValueWebkitCrispEdges || valueID == CSSValueWebkitOptimizeContrast || valueID == CSSValueCrispEdges || valueID == CSSValuePixelated; > case CSSPropertyInputSecurity: >- if (!context.inputSecurityEnabled) >- return false; > return valueID == CSSValueAuto || valueID == CSSValueNone; > #if ENABLE(CSS_COMPOSITING) > case CSSPropertyIsolation: // auto | isolate >@@ -685,8 +684,6 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > case CSSPropertyOverscrollBehaviorInline: > case CSSPropertyOverscrollBehaviorX: > case CSSPropertyOverscrollBehaviorY: >- if (!context.overscrollBehaviorEnabled) >- return false; > return valueID == CSSValueAuto || valueID == CSSValueContain || valueID == CSSValueNone; > case CSSPropertyBreakAfter: > case CSSPropertyBreakBefore: >@@ -751,7 +748,7 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > > #if ENABLE(ATTACHMENT_ELEMENT) > if (valueID == CSSValueAttachment || valueID == CSSValueBorderlessAttachment) >- return context.attachmentEnabled; >+ return DeprecatedGlobalSettings::attachmentElementEnabled(); > #endif > return (valueID >= CSSValueCheckbox && valueID <= CSSValueTextfield) || valueID == CSSValueNone || valueID == CSSValueAuto; > } >@@ -889,8 +886,6 @@ bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId > return valueID == CSSValueNormal || valueID == CSSValueHistoricalForms; > #if ENABLE(OVERFLOW_SCROLLING_TOUCH) > case CSSPropertyWebkitOverflowScrolling: >- if (!context.legacyOverflowScrollingTouchEnabled) >- return false; > return valueID == CSSValueAuto || valueID == CSSValueTouch; > #endif > #if ENABLE(VARIATION_FONTS) >@@ -1387,7 +1382,7 @@ RefPtr<CSSValue> CSSParserFastPaths::maybeParseValue(CSSPropertyID propertyID, S > { > if (auto result = parseSimpleLengthValue(propertyID, string, context.mode)) > return result; >- if (propertyID == CSSPropertyCaretColor || (propertyID == CSSPropertyAccentColor && context.accentColorEnabled)) >+ if ((propertyID == CSSPropertyCaretColor || propertyID == CSSPropertyAccentColor) && isCSSPropertyExposed(propertyID, &context.propertySettings)) > return parseColorWithAuto(string, context); > if (CSSProperty::isColorProperty(propertyID)) > return parseColor(string, context); >diff --git a/Source/WebCore/css/parser/CSSParserImpl.cpp b/Source/WebCore/css/parser/CSSParserImpl.cpp >index d1e27eff26c2..1389ee83fea0 100644 >--- a/Source/WebCore/css/parser/CSSParserImpl.cpp >+++ b/Source/WebCore/css/parser/CSSParserImpl.cpp >@@ -692,7 +692,7 @@ RefPtr<StyleRulePage> CSSParserImpl::consumePageRule(CSSParserTokenRange prelude > > RefPtr<StyleRuleCounterStyle> CSSParserImpl::consumeCounterStyleRule(CSSParserTokenRange prelude, CSSParserTokenRange block) > { >- if (!m_context.counterStyleAtRulesEnabled) >+ if (!m_context.propertySettings.cssCounterStyleAtRulesEnabled) > return nullptr; > > auto rangeCopy = prelude; // For inspector callbacks >@@ -774,7 +774,7 @@ RefPtr<StyleRuleLayer> CSSParserImpl::consumeLayerRule(CSSParserTokenRange prelu > > RefPtr<StyleRuleContainer> CSSParserImpl::consumeContainerRule(CSSParserTokenRange prelude, CSSParserTokenRange block) > { >- if (!m_context.containerQueriesEnabled) >+ if (!m_context.propertySettings.cssContainerQueriesEnabled) > return nullptr; > > if (prelude.atEnd()) >@@ -943,7 +943,7 @@ void CSSParserImpl::consumeDeclaration(CSSParserTokenRange range, StyleRuleType > > size_t propertiesCount = m_parsedProperties.size(); > >- if (m_context.isPropertyRuntimeDisabled(propertyID) || isInternalCSSProperty(propertyID)) >+ if (!isCSSPropertyExposed(propertyID, &m_context.propertySettings)) > propertyID = CSSPropertyInvalid; > > if (propertyID == CSSPropertyInvalid && CSSVariableParser::isValidVariableName(token)) { >diff --git a/Source/WebCore/css/parser/CSSPropertyParser.cpp b/Source/WebCore/css/parser/CSSPropertyParser.cpp >index a1f4e1cef249..6a3f6ffa1aa0 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParser.cpp >+++ b/Source/WebCore/css/parser/CSSPropertyParser.cpp >@@ -118,12 +118,9 @@ static CSSPropertyID cssPropertyID(const CharacterType* propertyName, unsigned l > } > buffer[length] = '\0'; > >- if (auto hashTableEntry = findProperty(buffer, length)) { >- auto propertyID = static_cast<CSSPropertyID>(hashTableEntry->id); >- // FIXME: Should take account for flags in settings(). >- if (isEnabledCSSProperty(propertyID)) >- return propertyID; >- } >+ if (auto hashTableEntry = findProperty(buffer, length)) >+ return static_cast<CSSPropertyID>(hashTableEntry->id); >+ > return CSSPropertyInvalid; > } > >@@ -212,9 +209,6 @@ CSSPropertyParser::CSSPropertyParser(const CSSParserTokenRange& range, const CSS > > void CSSPropertyParser::addProperty(CSSPropertyID property, CSSPropertyID currentShorthand, Ref<CSSValue>&& value, bool important, bool implicit) > { >- if (!isEnabledCSSProperty(property)) >- return; >- > int shorthandIndex = 0; > bool setFromShorthand = false; > >@@ -225,6 +219,12 @@ void CSSPropertyParser::addProperty(CSSPropertyID property, CSSPropertyID curren > shorthandIndex = indexOfShorthandForLonghand(currentShorthand, shorthands); > } > >+ // Allow anything to be set from a shorthand (e.g. the CSS all property always sets everything, >+ // regardless of whether the longhands are enabled), and allow internal properties as we use >+ // them to handle certain DOM-exposed values (e.g. -webkit-font-size-delta from >+ // execCommand('FontSizeDelta')). >+ ASSERT(isCSSPropertyExposed(property, &m_context.propertySettings) || setFromShorthand || isInternalCSSProperty(property)); >+ > m_parsedProperties->append(CSSProperty(property, WTFMove(value), important, setFromShorthand, shorthandIndex, implicit)); > } > >@@ -492,7 +492,7 @@ static RefPtr<CSSValue> consumeDisplay(CSSParserTokenRange& range) > return CSSValuePool::singleton().createValue(selectShortValue()); > } > >-static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range) >+static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range, const CSSParserContext& context) > { > if (range.peek().id() == CSSValueAuto) > return consumeIdent(range); >@@ -516,6 +516,8 @@ static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range) > CSSPropertyID propertyID = cssPropertyID(range.peek().value()); > if (propertyID == CSSPropertyWillChange) > return nullptr; >+ if (!isCSSPropertyExposed(propertyID, &context.propertySettings)) >+ propertyID = CSSPropertyInvalid; > if (propertyID != CSSPropertyInvalid) { > values->append(CSSValuePool::singleton().createIdentifierValue(propertyID)); > range.consumeIncludingWhitespace(); >@@ -4261,11 +4263,19 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > if (!CSSParserFastPaths::isPartialKeywordPropertyID(property)) > return nullptr; > } >+ >+ if (!isCSSPropertyExposed(property, &m_context.propertySettings) && !isInternalCSSProperty(property)) { >+ // Allow internal properties as we use them to parse several internal-only-shorthands (e.g. background-repeat), >+ // and to handle certain DOM-exposed values (e.g. -webkit-font-size-delta from execCommand('FontSizeDelta')). >+ ASSERT_NOT_REACHED(); >+ return nullptr; >+ } >+ > switch (property) { > case CSSPropertyDisplay: > return consumeDisplay(m_range); > case CSSPropertyWillChange: >- return consumeWillChange(m_range); >+ return consumeWillChange(m_range, m_context); > case CSSPropertyPage: > return consumePage(m_range); > case CSSPropertyQuotes: >@@ -4304,14 +4314,6 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > return consumeTabSize(m_range, m_context.mode); > #if ENABLE(TEXT_AUTOSIZING) > case CSSPropertyWebkitTextSizeAdjust: >- // FIXME: Support toggling the validation of this property via a runtime setting that is independent of >- // whether isTextAutosizingEnabled() is true. We want to enable this property on iOS, when simulating >- // a iOS device in Safari's responsive design mode and when optionally enabled in DRT/WTR. Otherwise, >- // this property should be disabled by default. >-#if !PLATFORM(IOS_FAMILY) >- if (!m_context.textAutosizingEnabled) >- return nullptr; >-#endif > return consumeTextSizeAdjust(m_range, m_context.mode); > #endif > case CSSPropertyFontSize: >@@ -4399,15 +4401,11 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > case CSSPropertyScrollSnapType: > return consumeScrollSnapType(m_range); > case CSSPropertyScrollBehavior: >- if (!m_context.scrollBehaviorEnabled) >- return nullptr; > return consumeScrollBehavior(m_range); > case CSSPropertyOverscrollBehaviorBlock: > case CSSPropertyOverscrollBehaviorInline: > case CSSPropertyOverscrollBehaviorX: > case CSSPropertyOverscrollBehaviorY: >- if (!m_context.overscrollBehaviorEnabled) >- return nullptr; > return consumeOverscrollBehavior(m_range); > case CSSPropertyClip: > return consumeClip(m_range, m_context.mode); >@@ -4482,8 +4480,6 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > case CSSPropertyColumnRuleColor: > return consumeColor(m_range, m_context); > case CSSPropertyAccentColor: { >- if (!m_context.accentColorEnabled) >- return nullptr; > return consumeColorWithAuto(m_range, m_context); > } > case CSSPropertyCaretColor: >@@ -4525,8 +4521,6 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > #endif > return consumeFilter(m_range, m_context, AllowedFilterFunctions::PixelFilters); > case CSSPropertyAppleColorFilter: >- if (!m_context.colorFilterEnabled) >- return nullptr; > return consumeFilter(m_range, m_context, AllowedFilterFunctions::ColorFilters); > case CSSPropertyWebkitTextDecorationsInEffect: > case CSSPropertyTextDecorationLine: >@@ -4552,16 +4546,10 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > case CSSPropertyTransformOriginZ: > return consumeLength(m_range, m_context.mode, ValueRange::All); > case CSSPropertyTranslate: >- if (!m_context.individualTransformPropertiesEnabled) >- return nullptr; > return consumeTranslate(m_range, m_context.mode); > case CSSPropertyScale: >- if (!m_context.individualTransformPropertiesEnabled) >- return nullptr; > return consumeScale(m_range, m_context.mode); > case CSSPropertyRotate: >- if (!m_context.individualTransformPropertiesEnabled) >- return nullptr; > return consumeRotate(m_range, m_context.mode); > case CSSPropertyFill: > case CSSPropertyStroke: >@@ -4593,21 +4581,13 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > return parsedValue; > return consumePercent(m_range, ValueRange::All); > case CSSPropertyOffsetPath: >- if (!m_context.motionPathEnabled) >- return nullptr; > return consumePathOperation(m_range, m_context, ConsumeRay::Include); > case CSSPropertyOffsetDistance: >- if (!m_context.motionPathEnabled) >- return nullptr; > return consumeLengthOrPercent(m_range, m_context.mode, ValueRange::All, UnitlessQuirk::Forbid); > case CSSPropertyOffsetPosition: > case CSSPropertyOffsetAnchor: >- if (!m_context.motionPathEnabled) >- return nullptr; > return consumePositionOrAuto(m_range, m_context.mode, UnitlessQuirk::Forbid, PositionSyntax::Position); > case CSSPropertyOffsetRotate: >- if (!m_context.motionPathEnabled) >- return nullptr; > return consumeOffsetRotate(m_range, m_context.mode); > case CSSPropertyWebkitBoxFlex: > return consumeNumber(m_range, ValueRange::All); >@@ -4756,12 +4736,8 @@ RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS > case CSSPropertyAlt: > return consumeAlt(m_range, m_context); > case CSSPropertyAspectRatio: >- if (!m_context.aspectRatioEnabled) >- return nullptr; > return consumeAspectRatio(m_range); > case CSSPropertyContain: >- if (!m_context.containmentEnabled) >- return nullptr; > return consumeContain(m_range); > case CSSPropertyTextEmphasisPosition: > return consumeTextEmphasisPosition(m_range); >@@ -5025,8 +5001,8 @@ static RefPtr<CSSValue> consumeCounterStyleSpeakAs(CSSParserTokenRange& range) > > RefPtr<CSSValue> CSSPropertyParser::parseCounterStyleDescriptor(CSSPropertyID propId, CSSParserTokenRange& range, const CSSParserContext& context) > { >- if (!context.counterStyleAtRulesEnabled) >- return nullptr; >+ ASSERT(context.propertySettings.cssCounterStyleAtRulesEnabled); >+ ASSERT(isCSSPropertyExposed(propId, &context.propertySettings)); > > switch (propId) { > case CSSPropertySystem: >@@ -5066,6 +5042,8 @@ bool CSSPropertyParser::parseCounterStyleDescriptor(CSSPropertyID propId, const > > bool CSSPropertyParser::parseFontFaceDescriptor(CSSPropertyID propId) > { >+ ASSERT(isCSSPropertyExposed(propId, &m_context.propertySettings)); >+ > RefPtr<CSSValue> parsedValue; > switch (propId) { > case CSSPropertyFontFamily: >@@ -5166,6 +5144,8 @@ static RefPtr<CSSValueList> consumeOverrideColorsDescriptor(CSSParserTokenRange& > > bool CSSPropertyParser::parseFontPaletteValuesDescriptor(CSSPropertyID propId) > { >+ ASSERT(isCSSPropertyExposed(propId, &m_context.propertySettings)); >+ > RefPtr<CSSValue> parsedValue; > switch (propId) { > case CSSPropertyFontFamily: >@@ -6239,8 +6219,6 @@ bool CSSPropertyParser::consumePlaceSelfShorthand(bool important) > bool CSSPropertyParser::consumeOverscrollBehaviorShorthand(bool important) > { > ASSERT(shorthandForProperty(CSSPropertyOverscrollBehavior).length() == 2); >- if (!m_context.overscrollBehaviorEnabled) >- return false; > > if (m_range.atEnd()) > return false; >@@ -6295,8 +6273,7 @@ bool CSSPropertyParser::consumeContainerShorthand(bool important) > bool CSSPropertyParser::consumeContainIntrinsicSizeShorthand(bool important) > { > ASSERT(shorthandForProperty(CSSPropertyContainIntrinsicSize).length() == 2); >- if (!m_context.containIntrinsicSizeEnabled) >- return false; >+ ASSERT(isCSSPropertyExposed(CSSPropertyContainIntrinsicSize, &m_context.propertySettings)); > > if (m_range.atEnd()) > return false; >@@ -6443,8 +6420,6 @@ bool CSSPropertyParser::parseShorthand(CSSPropertyID property, bool important) > case CSSPropertyOutline: > return consumeShorthandGreedily(outlineShorthand(), important); > case CSSPropertyOffset: >- if (!m_context.motionPathEnabled) >- return false; > return consumeOffset(important); > case CSSPropertyBorderInline: { > RefPtr<CSSValue> width; >diff --git a/Source/WebCore/css/parser/CSSSelectorParser.cpp b/Source/WebCore/css/parser/CSSSelectorParser.cpp >index ca1733a64775..f03dcaf5eff4 100644 >--- a/Source/WebCore/css/parser/CSSSelectorParser.cpp >+++ b/Source/WebCore/css/parser/CSSSelectorParser.cpp >@@ -31,6 +31,7 @@ > #include "CSSSelectorParser.h" > > #include "CommonAtomStrings.h" >+#include "DeprecatedGlobalSettings.h" > #include <memory> > #include <wtf/OptionSet.h> > #include <wtf/SetForScope.h> >@@ -648,7 +649,7 @@ std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumePseudo(CSSParserTok > if (!m_context.hasPseudoClassEnabled && selector->pseudoClassType() == CSSSelector::PseudoClassHas) > return nullptr; > #if ENABLE(ATTACHMENT_ELEMENT) >- if (!m_context.attachmentEnabled && selector->pseudoClassType() == CSSSelector::PseudoClassHasAttachment) >+ if (!DeprecatedGlobalSettings::attachmentElementEnabled() && selector->pseudoClassType() == CSSSelector::PseudoClassHasAttachment) > return nullptr; > #endif > } >diff --git a/Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp b/Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp >index 9d9ac121187f..e88286a7ea1e 100644 >--- a/Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp >+++ b/Source/WebCore/css/typedom/ComputedStylePropertyMapReadOnly.cpp >@@ -55,7 +55,7 @@ ExceptionOr<RefPtr<CSSStyleValue>> ComputedStylePropertyMapReadOnly::get(const A > return StylePropertyMapReadOnly::reifyValue(ComputedStyleExtractor(m_element.ptr()).customPropertyValue(property).get(), m_element->document(), m_element.ptr()); > > auto propertyID = cssPropertyID(property); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID, &m_element->document().settings())) > return Exception { TypeError, makeString("Invalid property ", property) }; > > if (isShorthandCSSProperty(propertyID)) { >@@ -73,7 +73,7 @@ ExceptionOr<Vector<RefPtr<CSSStyleValue>>> ComputedStylePropertyMapReadOnly::get > return StylePropertyMapReadOnly::reifyValueToVector(ComputedStyleExtractor(m_element.ptr()).customPropertyValue(property).get(), m_element->document(), m_element.ptr()); > > auto propertyID = cssPropertyID(property); >- if (!propertyID) >+ if (!propertyID || !isCSSPropertyExposed(propertyID, &m_element->document().settings())) > return Exception { TypeError, makeString("Invalid property ", property) }; > > if (isShorthandCSSProperty(propertyID)) { >@@ -101,7 +101,7 @@ unsigned ComputedStylePropertyMapReadOnly::size() const > if (!style) > return 0; > >- return numComputedPropertyIDs + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); >+ return m_element->document().exposedComputedCSSPropertyIDs().size() + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size(); > } > > Vector<StylePropertyMapReadOnly::StylePropertyMapEntry> ComputedStylePropertyMapReadOnly::entries() const >@@ -114,10 +114,11 @@ Vector<StylePropertyMapReadOnly::StylePropertyMapEntry> ComputedStylePropertyMap > > const auto& inheritedCustomProperties = style->inheritedCustomProperties(); > const auto& nonInheritedCustomProperties = style->nonInheritedCustomProperties(); >- values.reserveInitialCapacity(numComputedPropertyIDs + inheritedCustomProperties.size() + nonInheritedCustomProperties.size()); >- for (unsigned i = 0; i < numComputedPropertyIDs; ++i) { >- auto key = getPropertyNameString(computedPropertyIDs[i]); >- auto value = ComputedStyleExtractor(m_element.ptr()).propertyValue(computedPropertyIDs[i], EUpdateLayout::DoNotUpdateLayout, ComputedStyleExtractor::PropertyValueType::Computed); >+ const auto& exposedComputedCSSPropertyIDs = m_element->document().exposedComputedCSSPropertyIDs(); >+ values.reserveInitialCapacity(exposedComputedCSSPropertyIDs.size() + inheritedCustomProperties.size() + nonInheritedCustomProperties.size()); >+ for (auto propertyID : exposedComputedCSSPropertyIDs) { >+ auto key = getPropertyNameString(propertyID); >+ auto value = ComputedStyleExtractor(m_element.ptr()).propertyValue(propertyID, EUpdateLayout::DoNotUpdateLayout, ComputedStyleExtractor::PropertyValueType::Computed); > values.uncheckedAppend(makeKeyValuePair(WTFMove(key), StylePropertyMapReadOnly::reifyValueToVector(value.get(), m_element->document(), m_element.ptr()))); > } > >diff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp >index 16c12a58b792..ed59aa8b54c1 100644 >--- a/Source/WebCore/dom/Document.cpp >+++ b/Source/WebCore/dom/Document.cpp >@@ -8894,6 +8894,23 @@ bool Document::registerCSSProperty(CSSRegisteredCustomProperty&& prop) > return m_CSSRegisteredPropertySet.add(prop.name, makeUnique<CSSRegisteredCustomProperty>(WTFMove(prop))).isNewEntry; > } > >+const FixedVector<CSSPropertyID>& Document::exposedComputedCSSPropertyIDs() >+{ >+ if (!m_exposedComputedCSSPropertyIDs.has_value()) { >+ std::array<CSSPropertyID, numComputedPropertyIDs> exposed; >+ auto last = std::copy_if(std::begin(computedPropertyIDs), std::end(computedPropertyIDs), >+ exposed.begin(), [&](CSSPropertyID x) { >+ return isCSSPropertyExposed(x, m_settings.ptr()); >+ }); >+ >+ FixedVector<CSSPropertyID> active(std::distance(exposed.begin(), last)); >+ std::copy(exposed.begin(), last, active.begin()); >+ m_exposedComputedCSSPropertyIDs = WTFMove(active); >+ } >+ >+ return m_exposedComputedCSSPropertyIDs.value(); >+} >+ > void Document::detachFromFrame() > { > // Assertion to help pinpint rdar://problem/49877867. If this hits, the crash trace should tell us >diff --git a/Source/WebCore/dom/Document.h b/Source/WebCore/dom/Document.h >index 843a1e59a77d..c0a2a761e68d 100644 >--- a/Source/WebCore/dom/Document.h >+++ b/Source/WebCore/dom/Document.h >@@ -27,6 +27,7 @@ > > #pragma once > >+#include "CSSPropertyNames.h" > #include "CSSRegisteredCustomProperty.h" > #include "CanvasBase.h" > #include "ClientOrigin.h" >@@ -1600,6 +1601,8 @@ public: > const CSSRegisteredCustomPropertySet& getCSSRegisteredCustomPropertySet() const { return m_CSSRegisteredPropertySet; } > bool registerCSSProperty(CSSRegisteredCustomProperty&&); > >+ const FixedVector<CSSPropertyID>& exposedComputedCSSPropertyIDs(); >+ > #if ENABLE(CSS_PAINTING_API) > PaintWorklet& ensurePaintWorklet(); > PaintWorkletGlobalScope* paintWorkletGlobalScopeForName(const String& name); >@@ -2238,6 +2241,8 @@ private: > > CSSRegisteredCustomPropertySet m_CSSRegisteredPropertySet; > >+ std::optional<FixedVector<CSSPropertyID>> m_exposedComputedCSSPropertyIDs; >+ > #if ENABLE(CSS_PAINTING_API) > RefPtr<PaintWorklet> m_paintWorklet; > HashMap<String, Ref<PaintWorkletGlobalScope>> m_paintWorkletGlobalScopes; >diff --git a/Source/WebCore/inspector/InspectorStyleSheet.cpp b/Source/WebCore/inspector/InspectorStyleSheet.cpp >index 2b4b73f4280d..940f4059b52a 100644 >--- a/Source/WebCore/inspector/InspectorStyleSheet.cpp >+++ b/Source/WebCore/inspector/InspectorStyleSheet.cpp >@@ -674,8 +674,7 @@ Vector<InspectorStyleProperty> InspectorStyle::collectProperties(bool includeAll > if (includeAll) { > for (auto i = firstCSSProperty; i < lastCSSProperty; ++i) { > auto id = convertToCSSPropertyID(i); >- // FIXME: Should take account for flags in settings(). >- if (isInternalCSSProperty(id) || !isEnabledCSSProperty(id)) >+ if (!isCSSPropertyExposed(id, m_style->settings())) > continue; > > auto name = getPropertyNameString(id); >@@ -723,7 +722,7 @@ Ref<Protocol::CSS::CSSStyle> InspectorStyle::styleWithProperties() const > CSSPropertyID propertyId = cssPropertyID(name); > > // Default "parsedOk" == true. >- if (!propertyEntry.parsedOk || isInternalCSSProperty(propertyId)) >+ if (!propertyEntry.parsedOk || !isCSSPropertyExposed(propertyId, m_style->settings())) > property->setParsedOk(false); > if (it->hasRawText()) > property->setText(it->rawText); >diff --git a/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp b/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >index a3fe16adc2c4..9c8e572c8a1e 100644 >--- a/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >+++ b/Source/WebCore/inspector/agents/InspectorCSSAgent.cpp >@@ -269,10 +269,11 @@ CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule& rule) > return downcast<CSSStyleRule>(&rule); > } > >-InspectorCSSAgent::InspectorCSSAgent(WebAgentContext& context) >+InspectorCSSAgent::InspectorCSSAgent(PageAgentContext& context) > : InspectorAgentBase("CSS"_s, context) > , m_frontendDispatcher(makeUnique<CSSFrontendDispatcher>(context.frontendRouter)) > , m_backendDispatcher(CSSBackendDispatcher::create(context.backendDispatcher, this)) >+ , m_inspectedPage(context.inspectedPage) > , m_layoutContextTypeChangedTimer(*this, &InspectorCSSAgent::layoutContextTypeChangedTimerFired) > { > } >@@ -810,8 +811,7 @@ Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Protocol::CSS::CSSPropertyInfo>>> Insp > > for (int i = firstCSSProperty; i <= lastCSSProperty; ++i) { > CSSPropertyID propertyID = convertToCSSPropertyID(i); >- // FIXME: Should take account for flags in settings(). >- if (isInternalCSSProperty(propertyID) || !isEnabledCSSProperty(propertyID)) >+ if (!isCSSPropertyExposed(propertyID, &m_inspectedPage.settings())) > continue; > > auto property = Protocol::CSS::CSSPropertyInfo::create() >@@ -830,10 +830,11 @@ Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Protocol::CSS::CSSPropertyInfo>>> Insp > if (shorthand.length()) { > auto longhands = JSON::ArrayOf<String>::create(); > for (auto longhand : shorthand) { >- if (isEnabledCSSProperty(longhand)) >+ if (isCSSPropertyExposed(longhand, &m_inspectedPage.settings())) > longhands->addItem(getPropertyNameString(longhand)); > } >- property->setLonghands(WTFMove(longhands)); >+ if (longhands->length()) >+ property->setLonghands(WTFMove(longhands)); > } > > if (CSSParserFastPaths::isKeywordPropertyID(propertyID)) { >diff --git a/Source/WebCore/inspector/agents/InspectorCSSAgent.h b/Source/WebCore/inspector/agents/InspectorCSSAgent.h >index bf08a4262979..71e6fc741f6b 100644 >--- a/Source/WebCore/inspector/agents/InspectorCSSAgent.h >+++ b/Source/WebCore/inspector/agents/InspectorCSSAgent.h >@@ -52,6 +52,7 @@ class Element; > class Node; > class NodeList; > class RenderObject; >+class Settings; > class StyleRule; > > namespace Style { >@@ -62,7 +63,7 @@ class InspectorCSSAgent final : public InspectorAgentBase , public Inspector::CS > WTF_MAKE_NONCOPYABLE(InspectorCSSAgent); > WTF_MAKE_FAST_ALLOCATED; > public: >- InspectorCSSAgent(WebAgentContext&); >+ explicit InspectorCSSAgent(PageAgentContext&); > ~InspectorCSSAgent(); > > class InlineStyleOverrideScope { >@@ -166,6 +167,7 @@ private: > std::unique_ptr<Inspector::CSSFrontendDispatcher> m_frontendDispatcher; > RefPtr<Inspector::CSSBackendDispatcher> m_backendDispatcher; > >+ Page& m_inspectedPage; > IdToInspectorStyleSheet m_idToInspectorStyleSheet; > CSSStyleSheetToInspectorStyleSheet m_cssStyleSheetToInspectorStyleSheet; > HashMap<Node*, Ref<InspectorStyleSheetForInlineStyle>> m_nodeToInspectorStyleSheet; // bogus "stylesheets" with elements' inline styles >diff --git a/Source/WebCore/loader/DocumentLoader.cpp b/Source/WebCore/loader/DocumentLoader.cpp >index 95f8f5c79247..2bce5c4e57b3 100644 >--- a/Source/WebCore/loader/DocumentLoader.cpp >+++ b/Source/WebCore/loader/DocumentLoader.cpp >@@ -1423,6 +1423,10 @@ void DocumentLoader::applyPoliciesToSettings() > #if ENABLE(MEDIA_SOURCE) > m_frame->settings().setMediaSourceEnabled(m_mediaSourcePolicy == MediaSourcePolicy::Default ? Settings::platformDefaultMediaSourceEnabled() : m_mediaSourcePolicy == MediaSourcePolicy::Enable); > #endif >+#if ENABLE(OVERFLOW_SCROLLING_TOUCH) >+ if (m_legacyOverflowScrollingTouchPolicy == LegacyOverflowScrollingTouchPolicy::Disable) >+ m_frame->settings().setLegacyOverflowScrollingTouchEnabled(false); >+#endif > #if ENABLE(TEXT_AUTOSIZING) > m_frame->settings().setIdempotentModeAutosizingOnlyHonorsPercentages(m_idempotentModeAutosizingOnlyHonorsPercentages); > #endif >diff --git a/Source/WebCore/style/StyleBuilderCustom.h b/Source/WebCore/style/StyleBuilderCustom.h >index a0fc700579da..5e8849e58221 100644 >--- a/Source/WebCore/style/StyleBuilderCustom.h >+++ b/Source/WebCore/style/StyleBuilderCustom.h >@@ -2023,7 +2023,7 @@ inline void BuilderCustom::applyValueWillChange(BuilderState& builderState, CSSV > break; > default: > if (primitiveValue.isPropertyID()) { >- if (primitiveValue.propertyID() == CSSPropertyContain && !builderState.document().settings().cssContainmentEnabled()) >+ if (!isCSSPropertyExposed(primitiveValue.propertyID(), &builderState.document().settings())) > break; > willChange->addFeature(WillChangeData::Feature::Property, primitiveValue.propertyID()); > } >diff --git a/LayoutTests/TestExpectations b/LayoutTests/TestExpectations >index d66f679073a3..afef81007d80 100644 >--- a/LayoutTests/TestExpectations >+++ b/LayoutTests/TestExpectations >@@ -1776,8 +1776,6 @@ imported/w3c/web-platform-tests/css/css-conditional/css-supports-036.xht [ Image > imported/w3c/web-platform-tests/css/css-conditional/css-supports-038.xht [ ImageOnlyFailure ] > imported/w3c/web-platform-tests/css/css-conditional/css-supports-039.xht [ ImageOnlyFailure ] > >-[ Debug ] imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration.html [ Crash ] >- > transitions/svg-text-shadow-transition.html [ Failure ] > webkit.org/b/137883 transitions/background-transitions.html [ Failure Pass ] > webkit.org/b/137883 transitions/border-radius-transition.html [ Failure Pass ] >@@ -2161,7 +2159,6 @@ webkit.org/b/148026 [ Debug ] animations/restart-after-scroll.html [ Skip ] > webkit.org/b/148650 fast/repaint/add-table-overpaint.html [ Pass Failure ] > > imported/w3c/web-platform-tests/css/css-cascade/important-prop.html [ ImageOnlyFailure ] >-webkit.org/b/187093 [ Debug ] imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html [ Skip ] > webkit.org/b/192334 imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html [ ImageOnlyFailure ] > > # Initial failures on the import of css-content >diff --git a/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt b/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt >index 71e516870a6c..59f8a1f103eb 100644 >--- a/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt >+++ b/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt >@@ -3,12 +3,39 @@ Tests that -apple-color-filter is not exposed when the feature is disabled > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > > >-FAIL '-apple-color-filter' in document.documentElement.style should be false. Was true. >-FAIL '-apple-color-filter' in getComputedStyle(document.documentElement) should be false. Was true. >+PASS '-apple-color-filter' in document.documentElement.style is false >+PASS document.documentElement.style['-apple-color-filter'] is undefined. >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS document.documentElement.style.getPropertyPriority('-apple-color-filter') is "" >+PASS document.documentElement.style.getPropertyShorthand('-apple-color-filter') is null >+PASS document.documentElement.style.isPropertyImplicit('-apple-color-filter') is false >+PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter') is null >+PASS document.documentElement.style.removeProperty('-apple-color-filter') is "" >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '') is undefined. >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS '-apple-color-filter' in getComputedStyle(document.documentElement) is false >+PASS getComputedStyle(document.documentElement)['-apple-color-filter'] is undefined. >+PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter') is false >+PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter') is null >+PASS getComputedStyle(document.documentElement).removeProperty('-apple-color-filter') threw exception NoModificationAllowedError: The object can not be modified.. >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '') threw exception NoModificationAllowedError: The object can not be modified.. >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS 'AppleColorFilter' in document.documentElement.style is false >+PASS document.documentElement.style['AppleColorFilter'] is undefined. >+PASS 'AppleColorFilter' in getComputedStyle(document.documentElement) is false >+PASS getComputedStyle(document.documentElement)['AppleColorFilter'] is undefined. > PASS CSS.supports('-apple-color-filter: contrast(1)') is false > PASS CSS.supports('-apple-color-filter: inherit') is false >+PASS CSS.supports('-apple-color-filter', 'contrast(1)') is false >+PASS CSS.supports('-apple-color-filter', 'inherit') is false >+PASS getComputedStyle(document.getElementById('test1')).color is 'rgb(0, 128, 128)' >+PASS getComputedStyle(document.getElementById('test2')).color is 'rgb(0, 128, 128)' > PASS successfullyParsed is true >-Some tests failed. > > TEST COMPLETE > >diff --git a/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html b/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html >index fb1085759ce0..116055635780 100644 >--- a/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html >+++ b/LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html >@@ -3,15 +3,71 @@ > <head> > <meta charset="utf-8"> > <script src="../../resources/js-test.js"></script> >+<style> >+#test1, #test2 { >+ color: teal; >+} >+@supports (-apple-color-filter: contrast(1)) { >+ #test1 { >+ color: orange; >+ } >+} >+@supports (-apple-color-filter: inherit) { >+ #test2 { >+ color: orange; >+ } >+} >+</style> > </head> > <body> >+<div id=test1></div> >+<div id=test2></div> > <script> > description("Tests that -apple-color-filter is not exposed when the feature is disabled"); > > shouldBeFalse("'-apple-color-filter' in document.documentElement.style"); >+shouldBeUndefined("document.documentElement.style['-apple-color-filter']"); >+ >+document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+shouldBeEmptyString("document.documentElement.style.getPropertyPriority('-apple-color-filter')"); >+shouldBeNull("document.documentElement.style.getPropertyShorthand('-apple-color-filter')"); >+shouldBeFalse("document.documentElement.style.isPropertyImplicit('-apple-color-filter')"); >+shouldBeNull("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')"); >+shouldBeEmptyString("document.documentElement.style.removeProperty('-apple-color-filter')"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+shouldBeUndefined("document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '')"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+document.documentElement.removeAttribute("style"); >+ > shouldBeFalse("'-apple-color-filter' in getComputedStyle(document.documentElement)"); >+shouldBeUndefined("getComputedStyle(document.documentElement)['-apple-color-filter']"); >+ >+document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important"); >+shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')"); >+shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter')"); >+shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter')"); >+shouldBeFalse("getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter')"); >+shouldBeNull("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')"); >+shouldThrowErrorName("getComputedStyle(document.documentElement).removeProperty('-apple-color-filter')", "NoModificationAllowedError"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+shouldThrowErrorName("getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '')", "NoModificationAllowedError"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+document.documentElement.removeAttribute("style"); >+ >+shouldBeFalse("'AppleColorFilter' in document.documentElement.style"); >+shouldBeUndefined("document.documentElement.style['AppleColorFilter']"); >+ >+shouldBeFalse("'AppleColorFilter' in getComputedStyle(document.documentElement)"); >+shouldBeUndefined("getComputedStyle(document.documentElement)['AppleColorFilter']"); >+ > shouldBeFalse("CSS.supports('-apple-color-filter: contrast(1)')"); > shouldBeFalse("CSS.supports('-apple-color-filter: inherit')"); >+shouldBeFalse("CSS.supports('-apple-color-filter', 'contrast(1)')"); >+shouldBeFalse("CSS.supports('-apple-color-filter', 'inherit')"); >+ >+shouldBe("getComputedStyle(document.getElementById('test1')).color", "'rgb(0, 128, 128)'"); >+shouldBe("getComputedStyle(document.getElementById('test2')).color", "'rgb(0, 128, 128)'"); > > </script> > </body> >diff --git a/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt b/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt >new file mode 100644 >index 000000000000..343b9dc71bf7 >--- /dev/null >+++ b/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt >@@ -0,0 +1,45 @@ >+Tests that -apple-color-filter is exposed when the feature is enabled >+ >+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >+ >+ >+PASS '-apple-color-filter' in document.documentElement.style is true >+PASS document.documentElement.style['-apple-color-filter'] is not undefined >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is 'contrast(1)' >+PASS document.documentElement.style.getPropertyPriority('-apple-color-filter') is 'important' >+PASS document.documentElement.style.getPropertyShorthand('-apple-color-filter') is null >+PASS document.documentElement.style.isPropertyImplicit('-apple-color-filter') is false >+PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter').length is 1 >+PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssValueType is 3 >+PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssText is 'contrast(1)' >+PASS document.documentElement.style.removeProperty('-apple-color-filter') is 'contrast(1)' >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is "" >+PASS document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '') is undefined. >+PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is 'contrast(1)' >+PASS '-apple-color-filter' in getComputedStyle(document.documentElement) is true >+PASS getComputedStyle(document.documentElement)['-apple-color-filter'] is not undefined >+PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)' >+PASS getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter') is "" >+PASS getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter') is false >+PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter').length is 1 >+PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssValueType is 3 >+PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssText is 'contrast(1)' >+PASS getComputedStyle(document.documentElement).removeProperty('-apple-color-filter') threw exception NoModificationAllowedError: The object can not be modified.. >+PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)' >+PASS getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '') threw exception NoModificationAllowedError: The object can not be modified.. >+PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)' >+PASS 'AppleColorFilter' in document.documentElement.style is true >+PASS document.documentElement.style['AppleColorFilter'] is not undefined >+PASS 'AppleColorFilter' in getComputedStyle(document.documentElement) is true >+PASS getComputedStyle(document.documentElement)['AppleColorFilter'] is not undefined >+PASS CSS.supports('-apple-color-filter: contrast(1)') is true >+PASS CSS.supports('-apple-color-filter: inherit') is true >+PASS CSS.supports('-apple-color-filter', 'contrast(1)') is true >+PASS CSS.supports('-apple-color-filter', 'inherit') is true >+PASS getComputedStyle(document.getElementById('test1')).color is 'rgb(255, 165, 0)' >+PASS getComputedStyle(document.getElementById('test2')).color is 'rgb(255, 165, 0)' >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >diff --git a/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html b/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html >new file mode 100644 >index 000000000000..75e2142df0b1 >--- /dev/null >+++ b/LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html >@@ -0,0 +1,78 @@ >+<!DOCTYPE html><!-- webkit-test-runner [ ColorFilterEnabled=true ] --> >+<html> >+<head> >+<meta charset="utf-8"> >+<script src="../../resources/js-test.js"></script> >+<style> >+#test1, #test2 { >+ color: teal; >+} >+@supports (-apple-color-filter: contrast(1)) { >+ #test1 { >+ color: orange; >+ } >+} >+@supports (-apple-color-filter: inherit) { >+ #test2 { >+ color: orange; >+ } >+} >+</style> >+</head> >+<body> >+<div id=test1></div> >+<div id=test2></div> >+<script> >+description("Tests that -apple-color-filter is exposed when the feature is enabled"); >+ >+shouldBeTrue("'-apple-color-filter' in document.documentElement.style"); >+shouldNotBe("document.documentElement.style['-apple-color-filter']", "undefined"); >+ >+document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important"); >+shouldBe("document.documentElement.style.getPropertyValue('-apple-color-filter')", "'contrast(1)'"); >+shouldBe("document.documentElement.style.getPropertyPriority('-apple-color-filter')", "'important'"); >+shouldBeNull("document.documentElement.style.getPropertyShorthand('-apple-color-filter')"); >+shouldBeFalse("document.documentElement.style.isPropertyImplicit('-apple-color-filter')"); >+shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter').length", "1"); >+shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssValueType", "3"); >+shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssText", "'contrast(1)'"); >+shouldBe("document.documentElement.style.removeProperty('-apple-color-filter')", "'contrast(1)'"); >+shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')"); >+shouldBeUndefined("document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '')"); >+shouldBe("document.documentElement.style.getPropertyValue('-apple-color-filter')", "'contrast(1)'"); >+document.documentElement.removeAttribute("style"); >+ >+shouldBeTrue("'-apple-color-filter' in getComputedStyle(document.documentElement)"); >+shouldNotBe("getComputedStyle(document.documentElement)['-apple-color-filter']", "undefined"); >+ >+document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'"); >+shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter')"); >+shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter')"); >+shouldBeFalse("getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter')"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter').length", "1"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssValueType", "3"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssText", "'contrast(1)'"); >+shouldThrowErrorName("getComputedStyle(document.documentElement).removeProperty('-apple-color-filter')", "NoModificationAllowedError"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'"); >+shouldThrowErrorName("getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '')", "NoModificationAllowedError"); >+shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'"); >+document.documentElement.removeAttribute("style"); >+ >+shouldBeTrue("'AppleColorFilter' in document.documentElement.style"); >+shouldNotBe("document.documentElement.style['AppleColorFilter']", "undefined"); >+ >+shouldBeTrue("'AppleColorFilter' in getComputedStyle(document.documentElement)"); >+shouldNotBe("getComputedStyle(document.documentElement)['AppleColorFilter']", "undefined"); >+ >+shouldBeTrue("CSS.supports('-apple-color-filter: contrast(1)')"); >+shouldBeTrue("CSS.supports('-apple-color-filter: inherit')"); >+shouldBeTrue("CSS.supports('-apple-color-filter', 'contrast(1)')"); >+shouldBeTrue("CSS.supports('-apple-color-filter', 'inherit')"); >+ >+shouldBe("getComputedStyle(document.getElementById('test1')).color", "'rgb(255, 165, 0)'"); >+shouldBe("getComputedStyle(document.getElementById('test2')).color", "'rgb(255, 165, 0)'"); >+ >+</script> >+</body> >+</html> >diff --git a/LayoutTests/editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt b/LayoutTests/editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt >index 19aa3ee3ba35..47c3fb1e9359 100644 >--- a/LayoutTests/editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt >+++ b/LayoutTests/editing/pasteboard/data-transfer-get-data-on-drop-rich-text-expected.txt >@@ -5,7 +5,7 @@ Rich text > "text/plain": "" > }, > "drop": { >- "text/html": "<!DOCTYPE html><strong style=\"font-family: -apple-system; font-size: 150px; font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: nowrap; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; color: purple;\">Rich text</strong>", >+ "text/html": "<!DOCTYPE html><strong style=\"font-family: -apple-system; font-size: 150px; font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: nowrap; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; color: purple;\">Rich text</strong>", > "text/plain": "Rich text" > } > } >diff --git a/LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt b/LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt >deleted file mode 100644 >index da325cb88ff6..000000000000 >--- a/LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt >+++ /dev/null >@@ -1,4 +0,0 @@ >-PASS document.styleSheets[1].rules[0].style.cssText is "mask-repeat-x: repeat; mask-repeat-y: no-repeat;" >-PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask') is "" >-PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat') is "repeat-x" >- >diff --git a/LayoutTests/fast/css/webkit-mask-crash-implicit.html b/LayoutTests/fast/css/webkit-mask-crash-implicit.html >deleted file mode 100644 >index d8eb18d33c5e..000000000000 >--- a/LayoutTests/fast/css/webkit-mask-crash-implicit.html >+++ /dev/null >@@ -1,19 +0,0 @@ >-<!DOCTYPE html> >-<head> >-<script src="../../resources/js-test-pre.js"></script> >-<style> >-.box { >--webkit-mask-repeat: repeat-x; -webkit-mask-repeat-y: inherit; >-} >-</style> >-<script> >-if (window.internals) >- testRunner.dumpAsText(); >-shouldBeEqualToString("document.styleSheets[1].rules[0].style.cssText", "mask-repeat-x: repeat; mask-repeat-y: no-repeat;"); >-shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask')", ""); >-shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat')", "repeat-x"); >-</script> >-</head> >-<body> >-</body> >-</html> >diff --git a/LayoutTests/fast/events/before-input-events-prevent-drag-and-drop-expected.txt b/LayoutTests/fast/events/before-input-events-prevent-drag-and-drop-expected.txt >index 9addd0d8caa2..290a55411c8e 100644 >--- a/LayoutTests/fast/events/before-input-events-prevent-drag-and-drop-expected.txt >+++ b/LayoutTests/fast/events/before-input-events-prevent-drag-and-drop-expected.txt >@@ -7,4 +7,4 @@ Destination: > > HTML content: > >-<span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: monospace; font-size: 108px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;">input events</span> >+<span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: monospace; font-size: 108px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: center; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;">input events</span> >diff --git a/LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt b/LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt >index 65dac21672ef..581172f2fcf8 100644 >--- a/LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt >+++ b/LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt >@@ -2,7 +2,7 @@ To manually test this, copy and paste into the first contenteditable. The follow > > destination after pasting (text/html): > | <b> >-| style="caret-color: rgb(255, 0, 0); color: rgb(255, 0, 0); font-family: -webkit-standard; font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" >+| style="caret-color: rgb(255, 0, 0); color: rgb(255, 0, 0); font-family: -webkit-standard; font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" > | "LayoutTests" > | <i> > | "are" >diff --git a/LayoutTests/fast/inspector-support/style-expected.txt b/LayoutTests/fast/inspector-support/style-expected.txt >index 78cf5b67f489..a4e2ed1d501d 100644 >--- a/LayoutTests/fast/inspector-support/style-expected.txt >+++ b/LayoutTests/fast/inspector-support/style-expected.txt >@@ -4,8 +4,6 @@ background-image: initial (original property was background) > background-position-x: initial (original property was background) > background-position-y: initial (original property was background) > background-size: initial (original property was background) >-background-repeat-x: initial (original property was background) >-background-repeat-y: initial (original property was background) > background-attachment: initial (original property was background) > background-origin: initial (original property was background) > background-clip: initial (original property was background) >diff --git a/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html b/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html >index 1aa0e84f0891..0219e113e2ef 100644 >--- a/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html >+++ b/LayoutTests/fast/text-autosizing/ios/idempotentmode/idempotent-autosizing-after-changing-initial-scale.html >@@ -80,6 +80,12 @@ async function dumpTextSizes(description) { > } > > addEventListener("load", async () => { >+ // This needs to happen after the setTextAutosizingEnabled call. >+ const noAutosizing = document.querySelectorAll(".no-autosizing"); >+ for (const e of noAutosizing) { >+ e.style.webkitTextSizeAdjust = "none"; >+ } >+ > const metaViewport = document.querySelector("meta"); > await dumpTextSizes("At initial scale 1"); > >diff --git a/LayoutTests/fast/text-autosizing/ios/programmatic-text-size-adjust.html b/LayoutTests/fast/text-autosizing/ios/programmatic-text-size-adjust.html >index 0a592d4ca107..5884026cdda4 100644 >--- a/LayoutTests/fast/text-autosizing/ios/programmatic-text-size-adjust.html >+++ b/LayoutTests/fast/text-autosizing/ios/programmatic-text-size-adjust.html >@@ -1,8 +1,8 @@ >+<!-- webkit-test-runner [ TextAutosizingEnabled=true ] --> > <!DOCTYPE html> > <html> > <head> > <script src="../../../resources/js-test-pre.js"></script> >-<!-- We intentionally do not call window.internal.settings.setTextAutosizingEnabled(true) to test the default port behavior. --> > </head> > <body> > <p id="test">The quick brown fox jumped over the lazy dog.</p> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >index 9e7217e32c80..af72538c8a64 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >@@ -335,7 +335,6 @@ PASS x > PASS y > PASS z-index > PASS zoom >-PASS -apple-color-filter > PASS -apple-pay-button-style > PASS -apple-pay-button-type > PASS -webkit-backdrop-filter >@@ -388,7 +387,6 @@ PASS -webkit-ruby-position > PASS -webkit-text-combine > PASS -webkit-text-fill-color > PASS -webkit-text-security >-PASS -webkit-text-size-adjust > PASS -webkit-text-stroke-color > PASS -webkit-text-stroke-width > PASS -webkit-text-zoom >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >index 78cbee40ffed..839ab862504f 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >@@ -1,7 +1,7 @@ > >-FAIL -apple-color-filter: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >+PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports > PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit- >-FAIL -apple-color-filter: _dashed_attribute v. CSS.supports assert_equals: expected true but got false >+PASS -apple-color-filter: _dashed_attribute v. CSS.supports > PASS -apple-pay-button-style: _camel_cased_attribute v. CSS.supports > PASS -apple-pay-button-style: _webkit_cased_attribute must only exist for -webkit- > PASS -apple-pay-button-style: _dashed_attribute v. CSS.supports >@@ -560,9 +560,9 @@ PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports > PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports > PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports > PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports >-FAIL -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >-FAIL -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports assert_equals: expected true but got false >-FAIL -webkit-text-size-adjust: _dashed_attribute v. CSS.supports assert_equals: expected true but got false >+PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports >+PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports >+PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports > PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports > PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports > PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports >@@ -891,8 +891,8 @@ PASS flood-color: _dashed_attribute v. CSS.supports > PASS flood-opacity: _camel_cased_attribute v. CSS.supports > PASS flood-opacity: _dashed_attribute v. CSS.supports > PASS font: _camel_cased_attribute v. CSS.supports >-PASS font-display: _camel_cased_attribute v. CSS.supports >-PASS font-display: _dashed_attribute v. CSS.supports >+FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >+FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false > PASS font-family: _camel_cased_attribute v. CSS.supports > PASS font-family: _dashed_attribute v. CSS.supports > PASS font-feature-settings: _camel_cased_attribute v. CSS.supports >@@ -1333,7 +1333,7 @@ PASS size: _camel_cased_attribute v. CSS.supports > PASS speak: _camel_cased_attribute v. CSS.supports > PASS speak-as: _camel_cased_attribute v. CSS.supports > PASS speak-as: _dashed_attribute v. CSS.supports >-PASS src: _camel_cased_attribute v. CSS.supports >+FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false > PASS stop-color: _camel_cased_attribute v. CSS.supports > PASS stop-color: _dashed_attribute v. CSS.supports > PASS stop-opacity: _camel_cased_attribute v. CSS.supports >@@ -1474,8 +1474,8 @@ PASS transition-timing-function: _dashed_attribute v. CSS.supports > PASS translate: _camel_cased_attribute v. CSS.supports > PASS unicode-bidi: _camel_cased_attribute v. CSS.supports > PASS unicode-bidi: _dashed_attribute v. CSS.supports >-PASS unicode-range: _camel_cased_attribute v. CSS.supports >-PASS unicode-range: _dashed_attribute v. CSS.supports >+FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >+FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false > PASS user-select: _camel_cased_attribute v. CSS.supports > PASS user-select: _dashed_attribute v. CSS.supports > PASS user-zoom: _camel_cased_attribute v. CSS.supports >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt >index e04a44b10330..c5eedd841bcd 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt >@@ -1,11 +1,19 @@ > >+PASS Single-argument form allows for declarations with enclosing parentheses > PASS Single-argument form allows for declarations without enclosing parentheses > PASS Complex conditions allowed > PASS general_enclosed still parses > PASS Variable references always parse > PASS Variable references in an unknown function always parse > PASS two argument form succeeds for known property >+PASS one argument form fails for unknown property > PASS two argument form fails for unknown property >+PASS one argument form fails for unknown property (but known descriptor) >+PASS two argument form fails for unknown property (but known descriptor) >+PASS one argument form fails for unknown property (but known descriptor, universal value) >+PASS two argument form fails for unknown property (but known descriptor, universal value) >+PASS one argument form fails for invalid value > PASS two argument form fails for invalid value >+PASS one argument form succeeds for custom property > FAIL two argument form succeeds for custom property assert_equals: expected true but got false > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html >index 4c92275d041a..f94933422a31 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html >@@ -5,6 +5,10 @@ > <script src="/resources/testharness.js"></script> > <script src="/resources/testharnessreport.js"></script> > <script> >+ test(function() { >+ assert_equals(CSS.supports("(color: red)"), true); >+ }, "Single-argument form allows for declarations with enclosing parentheses"); >+ > test(function() { > assert_equals(CSS.supports("color: red"), true); > }, "Single-argument form allows for declarations without enclosing parentheses"); >@@ -26,17 +30,50 @@ > }, "Variable references in an unknown function always parse"); > > test(function() { >+ // no one-arg test for this as the with/without enclosing parentheses tests do this > assert_equals(CSS.supports("color", "red"), true); > }, "two argument form succeeds for known property"); > >+ test(function() { >+ assert_equals(CSS.supports("unknownproperty: blah"), false); >+ }, "one argument form fails for unknown property"); >+ > test(function() { > assert_equals(CSS.supports("unknownproperty", "blah"), false); > }, "two argument form fails for unknown property"); > >+ test(function() { >+ // https://github.com/w3c/csswg-drafts/issues/5929 >+ assert_equals(CSS.supports("unicode-range: U+0-7F"), false); >+ }, "one argument form fails for unknown property (but known descriptor)"); >+ >+ test(function() { >+ // https://github.com/w3c/csswg-drafts/issues/5929 >+ assert_equals(CSS.supports("unicode-range", "U+0-7F"), false); >+ }, "two argument form fails for unknown property (but known descriptor)"); >+ >+ test(function() { >+ // https://github.com/w3c/csswg-drafts/issues/5929 >+ assert_equals(CSS.supports("unicode-range: inherit"), false); >+ }, "one argument form fails for unknown property (but known descriptor, universal value)"); >+ >+ test(function() { >+ // https://github.com/w3c/csswg-drafts/issues/5929 >+ assert_equals(CSS.supports("unicode-range", "inherit"), false); >+ }, "two argument form fails for unknown property (but known descriptor, universal value)"); >+ >+ test(function() { >+ assert_equals(CSS.supports("width: blah"), false); >+ }, "one argument form fails for invalid value"); >+ > test(function() { > assert_equals(CSS.supports("width", "blah"), false); > }, "two argument form fails for invalid value"); > >+ test(function() { >+ assert_equals(CSS.supports("--foo: blah"), true); >+ }, "one argument form succeeds for custom property"); >+ > test(function() { > assert_equals(CSS.supports("--foo", "blah"), true); > }, "two argument form succeeds for custom property"); >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt >new file mode 100644 >index 000000000000..a1ad10d583fd >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt >@@ -0,0 +1,4 @@ >+ >+PASS a CSSStyleDeclaration for a CSSFontRule contains a unicode-range attribute >+PASS a CSSStyleDeclaration for a CSSFontRule contains a flex-direction attribute >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html >new file mode 100644 >index 000000000000..2efab276c5bf >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html >@@ -0,0 +1,27 @@ >+<!doctype html> >+<meta charset="utf-8"> >+<title>CSSStyleDeclaration for a CSSFontRule</title> >+<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface"> >+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#cssfontfacerule"> >+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5649#issuecomment-755796005"> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<style> >+@font-face {} >+</style> >+<script> >+ >+const fontFaceRule = document.styleSheets[0].cssRules[0]; >+ >+test(() => { >+ assert_true("unicode-range" in fontFaceRule.style); >+ assert_idl_attribute(fontFaceRule.style, "unicode-range"); >+}, "a CSSStyleDeclaration for a CSSFontRule contains a unicode-range attribute"); >+ >+ >+test(() => { >+ assert_true("flex-direction" in fontFaceRule.style); >+ assert_idl_attribute(fontFaceRule.style, "flex-direction"); >+}, "a CSSStyleDeclaration for a CSSFontRule contains a flex-direction attribute"); >+ >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >index 887ca6c919de..21412a6173ec 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >@@ -1,8 +1,8 @@ > > PASS getComputedStyle returns no style for detached element >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 393 >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 393 >-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 393 >-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 393 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 391 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 391 >+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 391 >+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 391 > PASS getComputedStyle returns no style for shadow tree outside of flattened tree > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt >new file mode 100644 >index 000000000000..c1463e1b1d55 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt >@@ -0,0 +1,12 @@ >+ >+PASS border-top >+PASS border-right >+PASS border-bottom >+PASS border-left >+PASS border >+PASS font >+PASS margin-top >+PASS font-size >+PASS max-width >+PASS width >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html >new file mode 100644 >index 000000000000..e61241e57098 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html >@@ -0,0 +1,34 @@ >+<!doctype html> >+<meta charset="utf-8"> >+<title>CSSStyleDeclaration index getter v. attributes</title> >+<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface"> >+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2529"> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<div id="testElement"></div> >+<script> >+ >+/* per spec, the indexed getter gives all supported longhand properties, whereas >+ attributes are created for all supported properties; this implies the indexed >+ getter gives a subset of the attributes */ >+ >+const decl = window.getComputedStyle(document.getElementById("testElement")); >+const declItems = Array.from(decl).sort(); >+ >+const shorthands = ['border-top', 'border-right', 'border-bottom', 'border-left', 'border', 'font']; >+const non_shorthands = ['margin-top', 'font-size', 'max-width', 'width']; >+ >+for (const prop of shorthands) { >+ test(() => { >+ assert_true(prop in decl, "getComputedStyle attribute"); >+ assert_false(declItems.includes(prop), "getComputedStyle indexed getter"); >+ }, prop); >+} >+ >+for (const prop of non_shorthands) { >+ test(() => { >+ assert_true(prop in decl, "getComputedStyle attribute"); >+ assert_true(declItems.includes(prop), "getComputedStyle indexed getter"); >+ }, prop); >+} >+</script> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt >new file mode 100644 >index 000000000000..918a49f28561 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt >@@ -0,0 +1,11 @@ >+ >+PASS -apple-color-filter >+PASS -apple-pay-button-style >+PASS -epub-writing-mode >+PASS -webkit-flex >+PASS gap >+PASS grid-gap >+PASS overscroll-behavior >+PASS src >+PASS unicode-range >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html >new file mode 100644 >index 000000000000..87c9df0b3240 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html >@@ -0,0 +1,64 @@ >+<!doctype html> >+<html> >+<meta charset="utf-8"> >+<title>Accessing properties via CSSStyleDeclaration</title> >+<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface"> >+<!-- this is really a crash test, but let's claim it's a testharness test --> >+<script src="/resources/testharness.js"></script> >+<script src="/resources/testharnessreport.js"></script> >+<style> >+@font-face {} >+</style> >+<div id="testElement"></div> >+<script> >+// Goal here is to test a cross-section of prefixed, properties, and descriptors. >+const properties = [ >+ "-apple-color-filter", "-apple-pay-button-style", "-epub-writing-mode", >+ "-webkit-flex", "gap", "grid-gap", "overscroll-behavior", >+ "src", "unicode-range", >+]; >+ >+const el = document.getElementById("testElement"); >+const decls = [window.getComputedStyle(el), el.style, document.styleSheets[0].cssRules[0].style]; >+ >+for (const prop of properties) { >+ test(() => { >+ for (const decl of decls) { >+ let _; >+ >+ _ = decl[prop]; >+ try { >+ decl[prop] = "nonsense"; >+ } catch { >+ assert_equals(decl, decls[0]); >+ } >+ >+ _ = decl.cssText; >+ try { >+ decl.cssText = `${prop}: nonsense`; >+ } catch { >+ assert_equals(decl, decls[0]); >+ } >+ >+ _ = decl.getPropertyValue(prop); >+ _ = decl.getPropertyPriority(prop); >+ >+ if ("getPropertyCSSValue" in decl) { >+ _ = decl.getPropertyCSSValue(prop); >+ } >+ >+ try { >+ decl.setProperty(prop, "nonsense", ""); >+ } catch { >+ assert_equals(decl, decls[0]); >+ } >+ >+ try { >+ decl.removeProperty(prop); >+ } catch { >+ assert_equals(decl, decls[0]); >+ } >+ } >+ }, prop); >+} >+</script> >diff --git a/LayoutTests/inspector/css/css-property-expected.txt b/LayoutTests/inspector/css/css-property-expected.txt >index dc4fc9c0b3cf..572a044a79bc 100644 >--- a/LayoutTests/inspector/css/css-property-expected.txt >+++ b/LayoutTests/inspector/css/css-property-expected.txt >@@ -37,39 +37,33 @@ Initially selected completion when ranked by `count % 3`: "Fake Property 200 See > PASS: "background-repeat" is a valid property. > PASS: "background-repeat-x" is an invalid property. > PASS: "background-repeat-invalid" is an invalid property. >-PASS: "background-repeat-y" is an invalid property. > > -- Running test case: CSSProperty.prototype.get anonymous > PASS: "background-repeat" is not an anonymous CSS property. > PASS: "background-repeat-x" is not an anonymous CSS property. > PASS: "background-repeat-invalid" is not an anonymous CSS property. >-PASS: "background-repeat-y" is an anonymous CSS property. > > -- Running test case: CSSProperty.prototype.get implicit > PASS: "background-repeat" is not an implicit CSS property. > PASS: "background-repeat-x" is not an implicit CSS property. > PASS: "background-repeat-invalid" is not an implicit CSS property. >-PASS: "background-repeat-y" is an implicit CSS property. > > -- Running test case: CSSProperty.prototype.get value > PASS: "background-repeat" has the value "repeat". > PASS: "background-repeat-x" has the value "repeat". > PASS: "background-repeat-invalid" has the value "repeat". >-PASS: "background-repeat-y" has the value "repeat". > > -- Running test case: CSSProperty.prototype.get enabled > PASS: "background-repeat" is enabled. > PASS: "background-repeat-x" is enabled. > PASS: "background-repeat-invalid" is enabled. > PASS: "background-color" is disabled. >-PASS: "background-repeat-y" is enabled. > > -- Running test case: CSSProperty.prototype.get attached > PASS: "background-repeat" is attached. > PASS: "background-repeat-x" is attached. > PASS: "background-repeat-invalid" is attached. > PASS: "background-color" is detached. >-PASS: "background-repeat-y" is attached. > > -- Running test case: CSSProperty.prototype.get text > PASS: "background-repeat" has the text "background-repeat: repeat;". >@@ -78,8 +72,6 @@ PASS: "background-repeat-x" has the text "background-repeat-x: repeat;". > PASS: "background-repeat-x" has the _text (private) "background-repeat-x: repeat;". > PASS: "background-repeat-invalid" has the text "background-repeat-invalid: repeat;". > PASS: "background-repeat-invalid" has the _text (private) "background-repeat-invalid: repeat;". >-PASS: "background-repeat-y" has the text "". >-PASS: "background-repeat-y" has the _text (private) "". > > -- Running test case: CSSProperty.prototype.remove > PASS: The removed property should no longer be in properties array. >diff --git a/LayoutTests/inspector/css/css-property.html b/LayoutTests/inspector/css/css-property.html >index be33240c949e..4767c2b151e1 100644 >--- a/LayoutTests/inspector/css/css-property.html >+++ b/LayoutTests/inspector/css/css-property.html >@@ -93,12 +93,10 @@ function test() { > switch (property.name) { > case "background-repeat": > case "background-repeat-x": >+ case "background-repeat-y": > case "background-repeat-invalid": > InspectorTest.expectFalse(property.anonymous, `"${property.name}" is not an anonymous CSS property.`); > break; >- case "background-repeat-y": >- InspectorTest.expectThat(property.anonymous, `"${property.name}" is an anonymous CSS property.`); >- break; > } > } > } >@@ -119,12 +117,10 @@ function test() { > switch (property.name) { > case "background-repeat": > case "background-repeat-x": >+ case "background-repeat-y": > case "background-repeat-invalid": > InspectorTest.expectFalse(property.implicit, `"${property.name}" is not an implicit CSS property.`); > break; >- case "background-repeat-y": >- InspectorTest.expectThat(property.implicit, `"${property.name}" is an implicit CSS property.`); >- break; > } > } > } >@@ -230,16 +226,10 @@ function test() { > InspectorTest.expectEqual(property._text, "background-repeat: repeat;", `"${property.name}" has the _text (private) "background-repeat: repeat;".`); > break; > case "background-repeat-x": >- InspectorTest.expectEqual(property.text, "background-repeat-x: repeat;", `"${property.name}" has the text "background-repeat-x: repeat;".`); >- InspectorTest.expectEqual(property._text, "background-repeat-x: repeat;", `"${property.name}" has the _text (private) "background-repeat-x: repeat;".`); >- break; > case "background-repeat-y": >- InspectorTest.expectEqual(property.text, "", `"${property.name}" has the text "".`); >- InspectorTest.expectEqual(property._text, "", `"${property.name}" has the _text (private) "".`); >- break; > case "background-repeat-invalid": >- InspectorTest.expectEqual(property.text, "background-repeat-invalid: repeat;", `"${property.name}" has the text "background-repeat-invalid: repeat;".`); >- InspectorTest.expectEqual(property._text, "background-repeat-invalid: repeat;", `"${property.name}" has the _text (private) "background-repeat-invalid: repeat;".`); >+ InspectorTest.expectEqual(property.text, `${property.name}: repeat;`, `"${property.name}" has the text "${property.name}: repeat;".`); >+ InspectorTest.expectEqual(property._text, `${property.name}: repeat;`, `"${property.name}" has the _text (private) "${property.name}: repeat;".`); > break; > } > } >diff --git a/LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt b/LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt >index a19d81d3850c..631ebd779f50 100644 >--- a/LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt >+++ b/LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt >@@ -1,3 +1,5 @@ >+"background-repeat" is supported >+ > "box-sizing" is supported > "box-sizing" has aliases: > - "-webkit-box-sizing" >diff --git a/LayoutTests/inspector/css/getSupportedCSSProperties.html b/LayoutTests/inspector/css/getSupportedCSSProperties.html >index b8218b4d28e5..7095eadaee24 100644 >--- a/LayoutTests/inspector/css/getSupportedCSSProperties.html >+++ b/LayoutTests/inspector/css/getSupportedCSSProperties.html >@@ -11,6 +11,7 @@ function test() > let entries = messageObject["result"]["cssProperties"]; > > const expectedProperties = [ >+ "background-repeat", > "box-sizing", > "filter", > "font-style", >diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >index 3ee9fb5b8e85..427c4cddf91c 100644 >--- a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >+++ b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >@@ -335,7 +335,6 @@ PASS x > PASS y > PASS z-index > PASS zoom >-PASS -apple-color-filter > PASS -webkit-backdrop-filter > PASS -webkit-background-clip > PASS -webkit-background-origin >diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >deleted file mode 100644 >index 497aef7f8468..000000000000 >--- a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >+++ /dev/null >@@ -1,1509 +0,0 @@ >- >-PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports >-PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-color-filter: _dashed_attribute v. CSS.supports >-PASS -apple-pay-button-style: _camel_cased_attribute v. CSS.supports >-PASS -apple-pay-button-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-pay-button-style: _dashed_attribute v. CSS.supports >-PASS -apple-pay-button-type: _camel_cased_attribute v. CSS.supports >-PASS -apple-pay-button-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-pay-button-type: _dashed_attribute v. CSS.supports >-PASS -apple-trailing-word: _camel_cased_attribute v. CSS.supports >-PASS -apple-trailing-word: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-trailing-word: _dashed_attribute v. CSS.supports >-PASS -epub-caption-side: _camel_cased_attribute v. CSS.supports >-FAIL -epub-caption-side: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-caption-side: _dashed_attribute v. CSS.supports >-PASS -epub-text-combine: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-combine: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-combine: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis-color: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis-color: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis-color: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis-style: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis-style: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis-style: _dashed_attribute v. CSS.supports >-PASS -epub-text-orientation: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-orientation: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-orientation: _dashed_attribute v. CSS.supports >-PASS -epub-text-transform: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-transform: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-transform: _dashed_attribute v. CSS.supports >-PASS -epub-word-break: _camel_cased_attribute v. CSS.supports >-FAIL -epub-word-break: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-word-break: _dashed_attribute v. CSS.supports >-PASS -epub-writing-mode: _camel_cased_attribute v. CSS.supports >-FAIL -epub-writing-mode: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-writing-mode: _dashed_attribute v. CSS.supports >-PASS -moz-animation: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation: _dashed_attribute v. CSS.supports >-PASS -moz-animation-delay: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-delay: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-delay: _dashed_attribute v. CSS.supports >-PASS -moz-animation-direction: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-direction: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-direction: _dashed_attribute v. CSS.supports >-PASS -moz-animation-duration: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-duration: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-duration: _dashed_attribute v. CSS.supports >-PASS -moz-animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-fill-mode: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS -moz-animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-iteration-count: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS -moz-animation-name: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-name: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-name: _dashed_attribute v. CSS.supports >-PASS -moz-animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-play-state: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-play-state: _dashed_attribute v. CSS.supports >-PASS -moz-animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-timing-function: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-timing-function: _dashed_attribute v. CSS.supports >-PASS -moz-appearance: _camel_cased_attribute v. CSS.supports >-PASS -moz-appearance: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-appearance: _dashed_attribute v. CSS.supports >-PASS -moz-backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS -moz-backface-visibility: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-backface-visibility: _dashed_attribute v. CSS.supports >-PASS -moz-binding: _camel_cased_attribute v. CSS.supports >-PASS -moz-binding: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-binding: _dashed_attribute v. CSS.supports >-PASS -moz-border-bottom-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-bottom-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-bottom-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-color: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-style: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-width: _dashed_attribute v. CSS.supports >-PASS -moz-border-image: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-image: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-image: _dashed_attribute v. CSS.supports >-PASS -moz-border-left-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-left-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-left-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-right-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-right-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-right-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-color: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-style: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-width: _dashed_attribute v. CSS.supports >-PASS -moz-border-top-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-top-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-top-colors: _dashed_attribute v. CSS.supports >-PASS -moz-box-align: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-align: _dashed_attribute v. CSS.supports >-PASS -moz-box-direction: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-direction: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-direction: _dashed_attribute v. CSS.supports >-PASS -moz-box-flex: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-flex: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-flex: _dashed_attribute v. CSS.supports >-PASS -moz-box-ordinal-group: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-ordinal-group: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-ordinal-group: _dashed_attribute v. CSS.supports >-PASS -moz-box-orient: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-orient: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-orient: _dashed_attribute v. CSS.supports >-PASS -moz-box-pack: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-pack: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-pack: _dashed_attribute v. CSS.supports >-PASS -moz-box-sizing: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-sizing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-sizing: _dashed_attribute v. CSS.supports >-PASS -moz-column-count: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-count: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-count: _dashed_attribute v. CSS.supports >-PASS -moz-column-fill: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-fill: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-fill: _dashed_attribute v. CSS.supports >-PASS -moz-column-gap: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-gap: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-gap: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-color: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-style: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-width: _dashed_attribute v. CSS.supports >-PASS -moz-column-span: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-span: _dashed_attribute v. CSS.supports >-PASS -moz-column-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-width: _dashed_attribute v. CSS.supports >-PASS -moz-columns: _camel_cased_attribute v. CSS.supports >-PASS -moz-columns: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-columns: _dashed_attribute v. CSS.supports >-PASS -moz-float-edge: _camel_cased_attribute v. CSS.supports >-PASS -moz-float-edge: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-float-edge: _dashed_attribute v. CSS.supports >-PASS -moz-font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS -moz-font-feature-settings: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-font-feature-settings: _dashed_attribute v. CSS.supports >-PASS -moz-font-language-override: _camel_cased_attribute v. CSS.supports >-PASS -moz-font-language-override: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-font-language-override: _dashed_attribute v. CSS.supports >-PASS -moz-force-broken-image-icon: _camel_cased_attribute v. CSS.supports >-PASS -moz-force-broken-image-icon: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-force-broken-image-icon: _dashed_attribute v. CSS.supports >-PASS -moz-hyphens: _camel_cased_attribute v. CSS.supports >-PASS -moz-hyphens: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-hyphens: _dashed_attribute v. CSS.supports >-PASS -moz-image-region: _camel_cased_attribute v. CSS.supports >-PASS -moz-image-region: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-image-region: _dashed_attribute v. CSS.supports >-PASS -moz-margin-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-margin-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-margin-end: _dashed_attribute v. CSS.supports >-PASS -moz-margin-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-margin-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-margin-start: _dashed_attribute v. CSS.supports >-PASS -moz-orient: _camel_cased_attribute v. CSS.supports >-PASS -moz-orient: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-orient: _dashed_attribute v. CSS.supports >-PASS -moz-osx-font-smoothing: _camel_cased_attribute v. CSS.supports >-PASS -moz-osx-font-smoothing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-osx-font-smoothing: _dashed_attribute v. CSS.supports >-PASS -moz-padding-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-padding-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-padding-end: _dashed_attribute v. CSS.supports >-PASS -moz-padding-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-padding-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-padding-start: _dashed_attribute v. CSS.supports >-PASS -moz-perspective: _camel_cased_attribute v. CSS.supports >-PASS -moz-perspective: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-perspective: _dashed_attribute v. CSS.supports >-PASS -moz-perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS -moz-perspective-origin: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-perspective-origin: _dashed_attribute v. CSS.supports >-PASS -moz-stack-sizing: _camel_cased_attribute v. CSS.supports >-PASS -moz-stack-sizing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-stack-sizing: _dashed_attribute v. CSS.supports >-PASS -moz-tab-size: _camel_cased_attribute v. CSS.supports >-PASS -moz-tab-size: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-tab-size: _dashed_attribute v. CSS.supports >-PASS -moz-text-align-last: _camel_cased_attribute v. CSS.supports >-PASS -moz-text-align-last: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-text-align-last: _dashed_attribute v. CSS.supports >-PASS -moz-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -moz-text-size-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -moz-transform: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform: _dashed_attribute v. CSS.supports >-PASS -moz-transform-origin: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform-origin: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform-origin: _dashed_attribute v. CSS.supports >-PASS -moz-transform-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform-style: _dashed_attribute v. CSS.supports >-PASS -moz-transition: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition: _dashed_attribute v. CSS.supports >-PASS -moz-transition-delay: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-delay: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-delay: _dashed_attribute v. CSS.supports >-PASS -moz-transition-duration: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-duration: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-duration: _dashed_attribute v. CSS.supports >-PASS -moz-transition-property: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-property: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-property: _dashed_attribute v. CSS.supports >-PASS -moz-transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-timing-function: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-timing-function: _dashed_attribute v. CSS.supports >-PASS -moz-user-focus: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-focus: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-focus: _dashed_attribute v. CSS.supports >-PASS -moz-user-input: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-input: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-input: _dashed_attribute v. CSS.supports >-PASS -moz-user-modify: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-modify: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-modify: _dashed_attribute v. CSS.supports >-PASS -moz-user-select: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-select: _dashed_attribute v. CSS.supports >-PASS -moz-window-dragging: _camel_cased_attribute v. CSS.supports >-PASS -moz-window-dragging: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-window-dragging: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-chaining: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-chaining: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-chaining: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit-max: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit-min: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-points: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-points: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap-points: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-type: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap-type: _dashed_attribute v. CSS.supports >-PASS -ms-content-zooming: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zooming: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zooming: _dashed_attribute v. CSS.supports >-PASS -ms-flow-from: _camel_cased_attribute v. CSS.supports >-PASS -ms-flow-from: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-flow-from: _dashed_attribute v. CSS.supports >-PASS -ms-flow-into: _camel_cased_attribute v. CSS.supports >-PASS -ms-flow-into: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-flow-into: _dashed_attribute v. CSS.supports >-PASS -ms-font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS -ms-font-feature-settings: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-font-feature-settings: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column-align: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column-span: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column-span: _dashed_attribute v. CSS.supports >-PASS -ms-grid-columns: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-columns: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-columns: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row-align: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row-span: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row-span: _dashed_attribute v. CSS.supports >-PASS -ms-grid-rows: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-rows: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-rows: _dashed_attribute v. CSS.supports >-PASS -ms-high-contrast-adjust: _camel_cased_attribute v. CSS.supports >-PASS -ms-high-contrast-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-high-contrast-adjust: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-chars: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-chars: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-chars: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-lines: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-lines: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-lines: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-zone: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-zone: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-zone: _dashed_attribute v. CSS.supports >-PASS -ms-hyphens: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphens: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphens: _dashed_attribute v. CSS.supports >-PASS -ms-ime-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-ime-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-ime-align: _dashed_attribute v. CSS.supports >-PASS -ms-overflow-style: _camel_cased_attribute v. CSS.supports >-PASS -ms-overflow-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-overflow-style: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-chaining: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-chaining: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-chaining: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-x-max: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-x-min: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-y-max: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-y-min: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-rails: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-rails: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-rails: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-x: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-x: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-points-x: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-y: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-y: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-points-y: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-type: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-type: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-x: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-x: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-x: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-y: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-y: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-y: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-translation: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-translation: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-translation: _dashed_attribute v. CSS.supports >-PASS -ms-text-combine-horizontal: _camel_cased_attribute v. CSS.supports >-PASS -ms-text-combine-horizontal: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-text-combine-horizontal: _dashed_attribute v. CSS.supports >-PASS -ms-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -ms-text-size-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -ms-touch-select: _camel_cased_attribute v. CSS.supports >-PASS -ms-touch-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-touch-select: _dashed_attribute v. CSS.supports >-PASS -ms-user-select: _camel_cased_attribute v. CSS.supports >-PASS -ms-user-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-user-select: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-flow: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-flow: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-flow: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-margin: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-margin: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-margin: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-through: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-through: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-through: _dashed_attribute v. CSS.supports >-PASS -webkit-align-content: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-content: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-content: _dashed_attribute v. CSS.supports >-PASS -webkit-align-items: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-items: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-items: _dashed_attribute v. CSS.supports >-PASS -webkit-align-self: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-self: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-self: _dashed_attribute v. CSS.supports >-PASS -webkit-animation: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-delay: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-delay: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-delay: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-duration: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-duration: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-duration: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-name: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-name: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-name: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _dashed_attribute v. CSS.supports >-PASS -webkit-appearance: _camel_cased_attribute v. CSS.supports >-PASS -webkit-appearance: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-appearance: _dashed_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _dashed_attribute v. CSS.supports >-PASS -webkit-background-clip: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-clip: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-clip: _dashed_attribute v. CSS.supports >-PASS -webkit-background-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-background-size: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-size: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-size: _dashed_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-image: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-image: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-image: _dashed_attribute v. CSS.supports >-PASS -webkit-border-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-box-align: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-align: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-align: _dashed_attribute v. CSS.supports >-PASS -webkit-box-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-box-flex: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-flex: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-flex: _dashed_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _dashed_attribute v. CSS.supports >-PASS -webkit-box-orient: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-orient: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-orient: _dashed_attribute v. CSS.supports >-PASS -webkit-box-pack: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-pack: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-pack: _dashed_attribute v. CSS.supports >-PASS -webkit-box-shadow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-shadow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-shadow: _dashed_attribute v. CSS.supports >-PASS -webkit-box-sizing: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-sizing: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-sizing: _dashed_attribute v. CSS.supports >-PASS -webkit-filter: _camel_cased_attribute v. CSS.supports >-PASS -webkit-filter: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-filter: _dashed_attribute v. CSS.supports >-PASS -webkit-flex: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-basis: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-basis: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-basis: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-flow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-flow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-flow: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-grow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-grow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-grow: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _dashed_attribute v. CSS.supports >-PASS -webkit-justify-content: _camel_cased_attribute v. CSS.supports >-PASS -webkit-justify-content: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-justify-content: _dashed_attribute v. CSS.supports >-PASS -webkit-line-clamp: _camel_cased_attribute v. CSS.supports >-PASS -webkit-line-clamp: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-line-clamp: _dashed_attribute v. CSS.supports >-PASS -webkit-mask: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-clip: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-clip: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-clip: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-composite: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-composite: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-composite: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-image: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-image: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-image: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-size: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-size: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-size: _dashed_attribute v. CSS.supports >-PASS -webkit-order: _camel_cased_attribute v. CSS.supports >-PASS -webkit-order: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-order: _dashed_attribute v. CSS.supports >-PASS -webkit-perspective: _camel_cased_attribute v. CSS.supports >-PASS -webkit-perspective: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-perspective: _dashed_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _dashed_attribute v. CSS.supports >-PASS -webkit-transform: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform: _dashed_attribute v. CSS.supports >-PASS -webkit-transform-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-transform-style: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform-style: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform-style: _dashed_attribute v. CSS.supports >-PASS -webkit-transition: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-delay: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-delay: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-delay: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-duration: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-duration: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-duration: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-property: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-property: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-property: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _dashed_attribute v. CSS.supports >-PASS -webkit-user-select: _camel_cased_attribute v. CSS.supports >-PASS -webkit-user-select: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-user-select: _dashed_attribute v. CSS.supports >-PASS align-content: _camel_cased_attribute v. CSS.supports >-PASS align-content: _dashed_attribute v. CSS.supports >-PASS align-items: _camel_cased_attribute v. CSS.supports >-PASS align-items: _dashed_attribute v. CSS.supports >-PASS align-self: _camel_cased_attribute v. CSS.supports >-PASS align-self: _dashed_attribute v. CSS.supports >-PASS alignment-baseline: _camel_cased_attribute v. CSS.supports >-PASS alignment-baseline: _dashed_attribute v. CSS.supports >-PASS all: _camel_cased_attribute v. CSS.supports >-PASS alt: _camel_cased_attribute v. CSS.supports >-PASS animation: _camel_cased_attribute v. CSS.supports >-PASS animation-delay: _camel_cased_attribute v. CSS.supports >-PASS animation-delay: _dashed_attribute v. CSS.supports >-PASS animation-direction: _camel_cased_attribute v. CSS.supports >-PASS animation-direction: _dashed_attribute v. CSS.supports >-PASS animation-duration: _camel_cased_attribute v. CSS.supports >-PASS animation-duration: _dashed_attribute v. CSS.supports >-PASS animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS animation-name: _camel_cased_attribute v. CSS.supports >-PASS animation-name: _dashed_attribute v. CSS.supports >-PASS animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS animation-play-state: _dashed_attribute v. CSS.supports >-PASS animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS animation-timing-function: _dashed_attribute v. CSS.supports >-PASS appearance: _camel_cased_attribute v. CSS.supports >-PASS backdrop-filter: _camel_cased_attribute v. CSS.supports >-PASS backdrop-filter: _dashed_attribute v. CSS.supports >-PASS backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS backface-visibility: _dashed_attribute v. CSS.supports >-PASS background: _camel_cased_attribute v. CSS.supports >-PASS background-attachment: _camel_cased_attribute v. CSS.supports >-PASS background-attachment: _dashed_attribute v. CSS.supports >-PASS background-blend-mode: _camel_cased_attribute v. CSS.supports >-PASS background-blend-mode: _dashed_attribute v. CSS.supports >-PASS background-clip: _camel_cased_attribute v. CSS.supports >-PASS background-clip: _dashed_attribute v. CSS.supports >-PASS background-color: _camel_cased_attribute v. CSS.supports >-PASS background-color: _dashed_attribute v. CSS.supports >-PASS background-image: _camel_cased_attribute v. CSS.supports >-PASS background-image: _dashed_attribute v. CSS.supports >-PASS background-origin: _camel_cased_attribute v. CSS.supports >-PASS background-origin: _dashed_attribute v. CSS.supports >-PASS background-position: _camel_cased_attribute v. CSS.supports >-PASS background-position: _dashed_attribute v. CSS.supports >-PASS background-position-x: _camel_cased_attribute v. CSS.supports >-PASS background-position-x: _dashed_attribute v. CSS.supports >-PASS background-position-y: _camel_cased_attribute v. CSS.supports >-PASS background-position-y: _dashed_attribute v. CSS.supports >-PASS background-repeat: _camel_cased_attribute v. CSS.supports >-PASS background-repeat: _dashed_attribute v. CSS.supports >-PASS background-repeat-x: _camel_cased_attribute v. CSS.supports >-PASS background-repeat-x: _dashed_attribute v. CSS.supports >-PASS background-repeat-y: _camel_cased_attribute v. CSS.supports >-PASS background-repeat-y: _dashed_attribute v. CSS.supports >-PASS background-size: _camel_cased_attribute v. CSS.supports >-PASS background-size: _dashed_attribute v. CSS.supports >-PASS baseline-shift: _camel_cased_attribute v. CSS.supports >-PASS baseline-shift: _dashed_attribute v. CSS.supports >-PASS block-size: _camel_cased_attribute v. CSS.supports >-PASS block-size: _dashed_attribute v. CSS.supports >-PASS border: _camel_cased_attribute v. CSS.supports >-PASS border-block: _camel_cased_attribute v. CSS.supports >-PASS border-block: _dashed_attribute v. CSS.supports >-PASS border-block-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-color: _dashed_attribute v. CSS.supports >-PASS border-block-end: _camel_cased_attribute v. CSS.supports >-PASS border-block-end: _dashed_attribute v. CSS.supports >-PASS border-block-end-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-color: _dashed_attribute v. CSS.supports >-PASS border-block-end-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-style: _dashed_attribute v. CSS.supports >-PASS border-block-end-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-width: _dashed_attribute v. CSS.supports >-PASS border-block-start: _camel_cased_attribute v. CSS.supports >-PASS border-block-start: _dashed_attribute v. CSS.supports >-PASS border-block-start-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-color: _dashed_attribute v. CSS.supports >-PASS border-block-start-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-style: _dashed_attribute v. CSS.supports >-PASS border-block-start-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-width: _dashed_attribute v. CSS.supports >-PASS border-block-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-style: _dashed_attribute v. CSS.supports >-PASS border-block-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-width: _dashed_attribute v. CSS.supports >-PASS border-bottom: _camel_cased_attribute v. CSS.supports >-PASS border-bottom: _dashed_attribute v. CSS.supports >-PASS border-bottom-color: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-color: _dashed_attribute v. CSS.supports >-PASS border-bottom-left-radius: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-left-radius: _dashed_attribute v. CSS.supports >-PASS border-bottom-right-radius: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-right-radius: _dashed_attribute v. CSS.supports >-PASS border-bottom-style: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-style: _dashed_attribute v. CSS.supports >-PASS border-bottom-width: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-width: _dashed_attribute v. CSS.supports >-PASS border-collapse: _camel_cased_attribute v. CSS.supports >-PASS border-collapse: _dashed_attribute v. CSS.supports >-PASS border-color: _camel_cased_attribute v. CSS.supports >-PASS border-color: _dashed_attribute v. CSS.supports >-PASS border-end-end-radius: _camel_cased_attribute v. CSS.supports >-PASS border-end-end-radius: _dashed_attribute v. CSS.supports >-PASS border-end-start-radius: _camel_cased_attribute v. CSS.supports >-PASS border-end-start-radius: _dashed_attribute v. CSS.supports >-PASS border-image: _camel_cased_attribute v. CSS.supports >-PASS border-image: _dashed_attribute v. CSS.supports >-PASS border-image-outset: _camel_cased_attribute v. CSS.supports >-PASS border-image-outset: _dashed_attribute v. CSS.supports >-PASS border-image-repeat: _camel_cased_attribute v. CSS.supports >-PASS border-image-repeat: _dashed_attribute v. CSS.supports >-PASS border-image-slice: _camel_cased_attribute v. CSS.supports >-PASS border-image-slice: _dashed_attribute v. CSS.supports >-PASS border-image-source: _camel_cased_attribute v. CSS.supports >-PASS border-image-source: _dashed_attribute v. CSS.supports >-PASS border-image-width: _camel_cased_attribute v. CSS.supports >-PASS border-image-width: _dashed_attribute v. CSS.supports >-PASS border-inline: _camel_cased_attribute v. CSS.supports >-PASS border-inline: _dashed_attribute v. CSS.supports >-PASS border-inline-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-color: _dashed_attribute v. CSS.supports >-PASS border-inline-end: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end: _dashed_attribute v. CSS.supports >-PASS border-inline-end-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-color: _dashed_attribute v. CSS.supports >-PASS border-inline-end-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-style: _dashed_attribute v. CSS.supports >-PASS border-inline-end-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-width: _dashed_attribute v. CSS.supports >-PASS border-inline-start: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start: _dashed_attribute v. CSS.supports >-PASS border-inline-start-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-color: _dashed_attribute v. CSS.supports >-PASS border-inline-start-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-style: _dashed_attribute v. CSS.supports >-PASS border-inline-start-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-width: _dashed_attribute v. CSS.supports >-PASS border-inline-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-style: _dashed_attribute v. CSS.supports >-PASS border-inline-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-width: _dashed_attribute v. CSS.supports >-PASS border-left: _camel_cased_attribute v. CSS.supports >-PASS border-left: _dashed_attribute v. CSS.supports >-PASS border-left-color: _camel_cased_attribute v. CSS.supports >-PASS border-left-color: _dashed_attribute v. CSS.supports >-PASS border-left-style: _camel_cased_attribute v. CSS.supports >-PASS border-left-style: _dashed_attribute v. CSS.supports >-PASS border-left-width: _camel_cased_attribute v. CSS.supports >-PASS border-left-width: _dashed_attribute v. CSS.supports >-PASS border-radius: _camel_cased_attribute v. CSS.supports >-PASS border-radius: _dashed_attribute v. CSS.supports >-PASS border-right: _camel_cased_attribute v. CSS.supports >-PASS border-right: _dashed_attribute v. CSS.supports >-PASS border-right-color: _camel_cased_attribute v. CSS.supports >-PASS border-right-color: _dashed_attribute v. CSS.supports >-PASS border-right-style: _camel_cased_attribute v. CSS.supports >-PASS border-right-style: _dashed_attribute v. CSS.supports >-PASS border-right-width: _camel_cased_attribute v. CSS.supports >-PASS border-right-width: _dashed_attribute v. CSS.supports >-PASS border-spacing: _camel_cased_attribute v. CSS.supports >-PASS border-spacing: _dashed_attribute v. CSS.supports >-PASS border-start-end-radius: _camel_cased_attribute v. CSS.supports >-PASS border-start-end-radius: _dashed_attribute v. CSS.supports >-PASS border-start-start-radius: _camel_cased_attribute v. CSS.supports >-PASS border-start-start-radius: _dashed_attribute v. CSS.supports >-PASS border-style: _camel_cased_attribute v. CSS.supports >-PASS border-style: _dashed_attribute v. CSS.supports >-PASS border-top: _camel_cased_attribute v. CSS.supports >-PASS border-top: _dashed_attribute v. CSS.supports >-PASS border-top-color: _camel_cased_attribute v. CSS.supports >-PASS border-top-color: _dashed_attribute v. CSS.supports >-PASS border-top-left-radius: _camel_cased_attribute v. CSS.supports >-PASS border-top-left-radius: _dashed_attribute v. CSS.supports >-PASS border-top-right-radius: _camel_cased_attribute v. CSS.supports >-PASS border-top-right-radius: _dashed_attribute v. CSS.supports >-PASS border-top-style: _camel_cased_attribute v. CSS.supports >-PASS border-top-style: _dashed_attribute v. CSS.supports >-PASS border-top-width: _camel_cased_attribute v. CSS.supports >-PASS border-top-width: _dashed_attribute v. CSS.supports >-PASS border-width: _camel_cased_attribute v. CSS.supports >-PASS border-width: _dashed_attribute v. CSS.supports >-PASS bottom: _camel_cased_attribute v. CSS.supports >-PASS box-decoration-break: _camel_cased_attribute v. CSS.supports >-PASS box-decoration-break: _dashed_attribute v. CSS.supports >-PASS box-shadow: _camel_cased_attribute v. CSS.supports >-PASS box-shadow: _dashed_attribute v. CSS.supports >-PASS box-sizing: _camel_cased_attribute v. CSS.supports >-PASS box-sizing: _dashed_attribute v. CSS.supports >-PASS break-after: _camel_cased_attribute v. CSS.supports >-PASS break-after: _dashed_attribute v. CSS.supports >-PASS break-before: _camel_cased_attribute v. CSS.supports >-PASS break-before: _dashed_attribute v. CSS.supports >-PASS break-inside: _camel_cased_attribute v. CSS.supports >-PASS break-inside: _dashed_attribute v. CSS.supports >-PASS buffered-rendering: _camel_cased_attribute v. CSS.supports >-PASS buffered-rendering: _dashed_attribute v. CSS.supports >-PASS caption-side: _camel_cased_attribute v. CSS.supports >-PASS caption-side: _dashed_attribute v. CSS.supports >-PASS caret-color: _camel_cased_attribute v. CSS.supports >-PASS caret-color: _dashed_attribute v. CSS.supports >-PASS clear: _camel_cased_attribute v. CSS.supports >-PASS clip: _camel_cased_attribute v. CSS.supports >-PASS clip-path: _camel_cased_attribute v. CSS.supports >-PASS clip-path: _dashed_attribute v. CSS.supports >-PASS clip-rule: _camel_cased_attribute v. CSS.supports >-PASS clip-rule: _dashed_attribute v. CSS.supports >-PASS color: _camel_cased_attribute v. CSS.supports >-PASS color-adjust: _camel_cased_attribute v. CSS.supports >-PASS color-adjust: _dashed_attribute v. CSS.supports >-PASS color-interpolation: _camel_cased_attribute v. CSS.supports >-PASS color-interpolation: _dashed_attribute v. CSS.supports >-PASS color-interpolation-filters: _camel_cased_attribute v. CSS.supports >-PASS color-interpolation-filters: _dashed_attribute v. CSS.supports >-PASS color-profile: _camel_cased_attribute v. CSS.supports >-PASS color-profile: _dashed_attribute v. CSS.supports >-PASS color-rendering: _camel_cased_attribute v. CSS.supports >-PASS color-rendering: _dashed_attribute v. CSS.supports >-PASS color-scheme: _camel_cased_attribute v. CSS.supports >-PASS color-scheme: _dashed_attribute v. CSS.supports >-PASS column-count: _camel_cased_attribute v. CSS.supports >-PASS column-count: _dashed_attribute v. CSS.supports >-PASS column-fill: _camel_cased_attribute v. CSS.supports >-PASS column-fill: _dashed_attribute v. CSS.supports >-PASS column-gap: _camel_cased_attribute v. CSS.supports >-PASS column-gap: _dashed_attribute v. CSS.supports >-PASS column-progression: _camel_cased_attribute v. CSS.supports >-PASS column-progression: _dashed_attribute v. CSS.supports >-PASS column-rule: _camel_cased_attribute v. CSS.supports >-PASS column-rule: _dashed_attribute v. CSS.supports >-PASS column-rule-color: _camel_cased_attribute v. CSS.supports >-PASS column-rule-color: _dashed_attribute v. CSS.supports >-PASS column-rule-style: _camel_cased_attribute v. CSS.supports >-PASS column-rule-style: _dashed_attribute v. CSS.supports >-PASS column-rule-width: _camel_cased_attribute v. CSS.supports >-PASS column-rule-width: _dashed_attribute v. CSS.supports >-PASS column-span: _camel_cased_attribute v. CSS.supports >-PASS column-span: _dashed_attribute v. CSS.supports >-PASS column-width: _camel_cased_attribute v. CSS.supports >-PASS column-width: _dashed_attribute v. CSS.supports >-PASS columns: _camel_cased_attribute v. CSS.supports >-PASS contain: _camel_cased_attribute v. CSS.supports >-PASS contain-intrinsic-size: _camel_cased_attribute v. CSS.supports >-PASS contain-intrinsic-size: _dashed_attribute v. CSS.supports >-PASS content: _camel_cased_attribute v. CSS.supports >-PASS content-visibility: _camel_cased_attribute v. CSS.supports >-PASS content-visibility: _dashed_attribute v. CSS.supports >-PASS counter-increment: _camel_cased_attribute v. CSS.supports >-PASS counter-increment: _dashed_attribute v. CSS.supports >-PASS counter-reset: _camel_cased_attribute v. CSS.supports >-PASS counter-reset: _dashed_attribute v. CSS.supports >-PASS counter-set: _camel_cased_attribute v. CSS.supports >-PASS counter-set: _dashed_attribute v. CSS.supports >-PASS cursor: _camel_cased_attribute v. CSS.supports >-PASS cx: _camel_cased_attribute v. CSS.supports >-PASS cy: _camel_cased_attribute v. CSS.supports >-PASS d: _camel_cased_attribute v. CSS.supports >-PASS direction: _camel_cased_attribute v. CSS.supports >-PASS display: _camel_cased_attribute v. CSS.supports >-PASS dominant-baseline: _camel_cased_attribute v. CSS.supports >-PASS dominant-baseline: _dashed_attribute v. CSS.supports >-PASS empty-cells: _camel_cased_attribute v. CSS.supports >-PASS empty-cells: _dashed_attribute v. CSS.supports >-PASS enable-background: _camel_cased_attribute v. CSS.supports >-PASS enable-background: _dashed_attribute v. CSS.supports >-PASS fill: _camel_cased_attribute v. CSS.supports >-PASS fill-opacity: _camel_cased_attribute v. CSS.supports >-PASS fill-opacity: _dashed_attribute v. CSS.supports >-PASS fill-rule: _camel_cased_attribute v. CSS.supports >-PASS fill-rule: _dashed_attribute v. CSS.supports >-PASS filter: _camel_cased_attribute v. CSS.supports >-PASS flex: _camel_cased_attribute v. CSS.supports >-PASS flex-basis: _camel_cased_attribute v. CSS.supports >-PASS flex-basis: _dashed_attribute v. CSS.supports >-PASS flex-direction: _camel_cased_attribute v. CSS.supports >-PASS flex-direction: _dashed_attribute v. CSS.supports >-PASS flex-flow: _camel_cased_attribute v. CSS.supports >-PASS flex-flow: _dashed_attribute v. CSS.supports >-PASS flex-grow: _camel_cased_attribute v. CSS.supports >-PASS flex-grow: _dashed_attribute v. CSS.supports >-PASS flex-shrink: _camel_cased_attribute v. CSS.supports >-PASS flex-shrink: _dashed_attribute v. CSS.supports >-PASS flex-wrap: _camel_cased_attribute v. CSS.supports >-PASS flex-wrap: _dashed_attribute v. CSS.supports >-PASS float: _camel_cased_attribute v. CSS.supports >-PASS flood-color: _camel_cased_attribute v. CSS.supports >-PASS flood-color: _dashed_attribute v. CSS.supports >-PASS flood-opacity: _camel_cased_attribute v. CSS.supports >-PASS flood-opacity: _dashed_attribute v. CSS.supports >-PASS font: _camel_cased_attribute v. CSS.supports >-PASS font-display: _camel_cased_attribute v. CSS.supports >-PASS font-display: _dashed_attribute v. CSS.supports >-PASS font-family: _camel_cased_attribute v. CSS.supports >-PASS font-family: _dashed_attribute v. CSS.supports >-PASS font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS font-feature-settings: _dashed_attribute v. CSS.supports >-PASS font-kerning: _camel_cased_attribute v. CSS.supports >-PASS font-kerning: _dashed_attribute v. CSS.supports >-PASS font-language-override: _camel_cased_attribute v. CSS.supports >-PASS font-language-override: _dashed_attribute v. CSS.supports >-PASS font-optical-sizing: _camel_cased_attribute v. CSS.supports >-PASS font-optical-sizing: _dashed_attribute v. CSS.supports >-PASS font-size: _camel_cased_attribute v. CSS.supports >-PASS font-size: _dashed_attribute v. CSS.supports >-PASS font-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS font-size-adjust: _dashed_attribute v. CSS.supports >-PASS font-stretch: _camel_cased_attribute v. CSS.supports >-PASS font-stretch: _dashed_attribute v. CSS.supports >-PASS font-style: _camel_cased_attribute v. CSS.supports >-PASS font-style: _dashed_attribute v. CSS.supports >-PASS font-synthesis: _camel_cased_attribute v. CSS.supports >-PASS font-synthesis: _dashed_attribute v. CSS.supports >-PASS font-variant: _camel_cased_attribute v. CSS.supports >-PASS font-variant: _dashed_attribute v. CSS.supports >-PASS font-variant-alternates: _camel_cased_attribute v. CSS.supports >-PASS font-variant-alternates: _dashed_attribute v. CSS.supports >-PASS font-variant-caps: _camel_cased_attribute v. CSS.supports >-PASS font-variant-caps: _dashed_attribute v. CSS.supports >-PASS font-variant-east-asian: _camel_cased_attribute v. CSS.supports >-PASS font-variant-east-asian: _dashed_attribute v. CSS.supports >-PASS font-variant-ligatures: _camel_cased_attribute v. CSS.supports >-PASS font-variant-ligatures: _dashed_attribute v. CSS.supports >-PASS font-variant-numeric: _camel_cased_attribute v. CSS.supports >-PASS font-variant-numeric: _dashed_attribute v. CSS.supports >-PASS font-variant-position: _camel_cased_attribute v. CSS.supports >-PASS font-variant-position: _dashed_attribute v. CSS.supports >-PASS font-variation-settings: _camel_cased_attribute v. CSS.supports >-PASS font-variation-settings: _dashed_attribute v. CSS.supports >-PASS font-weight: _camel_cased_attribute v. CSS.supports >-PASS font-weight: _dashed_attribute v. CSS.supports >-PASS gap: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-horizontal: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-horizontal: _dashed_attribute v. CSS.supports >-PASS glyph-orientation-vertical: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-vertical: _dashed_attribute v. CSS.supports >-PASS grid: _camel_cased_attribute v. CSS.supports >-PASS grid-area: _camel_cased_attribute v. CSS.supports >-PASS grid-area: _dashed_attribute v. CSS.supports >-PASS grid-auto-columns: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-columns: _dashed_attribute v. CSS.supports >-PASS grid-auto-flow: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-flow: _dashed_attribute v. CSS.supports >-PASS grid-auto-rows: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-rows: _dashed_attribute v. CSS.supports >-PASS grid-column: _camel_cased_attribute v. CSS.supports >-PASS grid-column: _dashed_attribute v. CSS.supports >-PASS grid-column-end: _camel_cased_attribute v. CSS.supports >-PASS grid-column-end: _dashed_attribute v. CSS.supports >-PASS grid-column-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-column-gap: _dashed_attribute v. CSS.supports >-PASS grid-column-start: _camel_cased_attribute v. CSS.supports >-PASS grid-column-start: _dashed_attribute v. CSS.supports >-PASS grid-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-gap: _dashed_attribute v. CSS.supports >-PASS grid-row: _camel_cased_attribute v. CSS.supports >-PASS grid-row: _dashed_attribute v. CSS.supports >-PASS grid-row-end: _camel_cased_attribute v. CSS.supports >-PASS grid-row-end: _dashed_attribute v. CSS.supports >-PASS grid-row-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-row-gap: _dashed_attribute v. CSS.supports >-PASS grid-row-start: _camel_cased_attribute v. CSS.supports >-PASS grid-row-start: _dashed_attribute v. CSS.supports >-PASS grid-template: _camel_cased_attribute v. CSS.supports >-PASS grid-template: _dashed_attribute v. CSS.supports >-PASS grid-template-areas: _camel_cased_attribute v. CSS.supports >-PASS grid-template-areas: _dashed_attribute v. CSS.supports >-PASS grid-template-columns: _camel_cased_attribute v. CSS.supports >-PASS grid-template-columns: _dashed_attribute v. CSS.supports >-PASS grid-template-rows: _camel_cased_attribute v. CSS.supports >-PASS grid-template-rows: _dashed_attribute v. CSS.supports >-PASS hanging-punctuation: _camel_cased_attribute v. CSS.supports >-PASS hanging-punctuation: _dashed_attribute v. CSS.supports >-PASS height: _camel_cased_attribute v. CSS.supports >-PASS hyphens: _camel_cased_attribute v. CSS.supports >-PASS image-orientation: _camel_cased_attribute v. CSS.supports >-PASS image-orientation: _dashed_attribute v. CSS.supports >-PASS image-rendering: _camel_cased_attribute v. CSS.supports >-PASS image-rendering: _dashed_attribute v. CSS.supports >-PASS ime-mode: _camel_cased_attribute v. CSS.supports >-PASS ime-mode: _dashed_attribute v. CSS.supports >-PASS inherits: _camel_cased_attribute v. CSS.supports >-PASS initial-value: _camel_cased_attribute v. CSS.supports >-PASS initial-value: _dashed_attribute v. CSS.supports >-PASS inline-size: _camel_cased_attribute v. CSS.supports >-PASS inline-size: _dashed_attribute v. CSS.supports >-PASS inset: _camel_cased_attribute v. CSS.supports >-PASS inset-block: _camel_cased_attribute v. CSS.supports >-PASS inset-block: _dashed_attribute v. CSS.supports >-PASS inset-block-end: _camel_cased_attribute v. CSS.supports >-PASS inset-block-end: _dashed_attribute v. CSS.supports >-PASS inset-block-start: _camel_cased_attribute v. CSS.supports >-PASS inset-block-start: _dashed_attribute v. CSS.supports >-PASS inset-inline: _camel_cased_attribute v. CSS.supports >-PASS inset-inline: _dashed_attribute v. CSS.supports >-PASS inset-inline-end: _camel_cased_attribute v. CSS.supports >-PASS inset-inline-end: _dashed_attribute v. CSS.supports >-PASS inset-inline-start: _camel_cased_attribute v. CSS.supports >-PASS inset-inline-start: _dashed_attribute v. CSS.supports >-PASS internal-text-autosizing-status: _camel_cased_attribute v. CSS.supports >-PASS internal-text-autosizing-status: _dashed_attribute v. CSS.supports >-PASS isolation: _camel_cased_attribute v. CSS.supports >-PASS justify-content: _camel_cased_attribute v. CSS.supports >-PASS justify-content: _dashed_attribute v. CSS.supports >-PASS justify-items: _camel_cased_attribute v. CSS.supports >-PASS justify-items: _dashed_attribute v. CSS.supports >-PASS justify-self: _camel_cased_attribute v. CSS.supports >-PASS justify-self: _dashed_attribute v. CSS.supports >-PASS kerning: _camel_cased_attribute v. CSS.supports >-PASS layout-grid: _camel_cased_attribute v. CSS.supports >-PASS layout-grid: _dashed_attribute v. CSS.supports >-PASS layout-grid-char: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-char: _dashed_attribute v. CSS.supports >-PASS layout-grid-line: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-line: _dashed_attribute v. CSS.supports >-PASS layout-grid-mode: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-mode: _dashed_attribute v. CSS.supports >-PASS layout-grid-type: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-type: _dashed_attribute v. CSS.supports >-PASS left: _camel_cased_attribute v. CSS.supports >-PASS letter-spacing: _camel_cased_attribute v. CSS.supports >-PASS letter-spacing: _dashed_attribute v. CSS.supports >-PASS lighting-color: _camel_cased_attribute v. CSS.supports >-PASS lighting-color: _dashed_attribute v. CSS.supports >-PASS line-break: _camel_cased_attribute v. CSS.supports >-PASS line-break: _dashed_attribute v. CSS.supports >-PASS line-height: _camel_cased_attribute v. CSS.supports >-PASS line-height: _dashed_attribute v. CSS.supports >-PASS list-style: _camel_cased_attribute v. CSS.supports >-PASS list-style: _dashed_attribute v. CSS.supports >-PASS list-style-image: _camel_cased_attribute v. CSS.supports >-PASS list-style-image: _dashed_attribute v. CSS.supports >-PASS list-style-position: _camel_cased_attribute v. CSS.supports >-PASS list-style-position: _dashed_attribute v. CSS.supports >-PASS list-style-type: _camel_cased_attribute v. CSS.supports >-PASS list-style-type: _dashed_attribute v. CSS.supports >-PASS margin: _camel_cased_attribute v. CSS.supports >-PASS margin-block: _camel_cased_attribute v. CSS.supports >-PASS margin-block: _dashed_attribute v. CSS.supports >-PASS margin-block-end: _camel_cased_attribute v. CSS.supports >-PASS margin-block-end: _dashed_attribute v. CSS.supports >-PASS margin-block-start: _camel_cased_attribute v. CSS.supports >-PASS margin-block-start: _dashed_attribute v. CSS.supports >-PASS margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS margin-bottom: _dashed_attribute v. CSS.supports >-PASS margin-inline: _camel_cased_attribute v. CSS.supports >-PASS margin-inline: _dashed_attribute v. CSS.supports >-PASS margin-inline-end: _camel_cased_attribute v. CSS.supports >-PASS margin-inline-end: _dashed_attribute v. CSS.supports >-PASS margin-inline-start: _camel_cased_attribute v. CSS.supports >-PASS margin-inline-start: _dashed_attribute v. CSS.supports >-PASS margin-left: _camel_cased_attribute v. CSS.supports >-PASS margin-left: _dashed_attribute v. CSS.supports >-PASS margin-right: _camel_cased_attribute v. CSS.supports >-PASS margin-right: _dashed_attribute v. CSS.supports >-PASS margin-top: _camel_cased_attribute v. CSS.supports >-PASS margin-top: _dashed_attribute v. CSS.supports >-PASS marker: _camel_cased_attribute v. CSS.supports >-PASS marker-end: _camel_cased_attribute v. CSS.supports >-PASS marker-end: _dashed_attribute v. CSS.supports >-PASS marker-mid: _camel_cased_attribute v. CSS.supports >-PASS marker-mid: _dashed_attribute v. CSS.supports >-PASS marker-offset: _camel_cased_attribute v. CSS.supports >-PASS marker-offset: _dashed_attribute v. CSS.supports >-PASS marker-start: _camel_cased_attribute v. CSS.supports >-PASS marker-start: _dashed_attribute v. CSS.supports >-PASS mask: _camel_cased_attribute v. CSS.supports >-PASS mask-clip: _camel_cased_attribute v. CSS.supports >-PASS mask-clip: _dashed_attribute v. CSS.supports >-PASS mask-composite: _camel_cased_attribute v. CSS.supports >-PASS mask-composite: _dashed_attribute v. CSS.supports >-PASS mask-image: _camel_cased_attribute v. CSS.supports >-PASS mask-image: _dashed_attribute v. CSS.supports >-PASS mask-mode: _camel_cased_attribute v. CSS.supports >-PASS mask-mode: _dashed_attribute v. CSS.supports >-PASS mask-origin: _camel_cased_attribute v. CSS.supports >-PASS mask-origin: _dashed_attribute v. CSS.supports >-PASS mask-position: _camel_cased_attribute v. CSS.supports >-PASS mask-position: _dashed_attribute v. CSS.supports >-PASS mask-position-x: _camel_cased_attribute v. CSS.supports >-PASS mask-position-x: _dashed_attribute v. CSS.supports >-PASS mask-position-y: _camel_cased_attribute v. CSS.supports >-PASS mask-position-y: _dashed_attribute v. CSS.supports >-PASS mask-repeat: _camel_cased_attribute v. CSS.supports >-PASS mask-repeat: _dashed_attribute v. CSS.supports >-PASS mask-size: _camel_cased_attribute v. CSS.supports >-PASS mask-size: _dashed_attribute v. CSS.supports >-PASS mask-type: _camel_cased_attribute v. CSS.supports >-PASS mask-type: _dashed_attribute v. CSS.supports >-PASS max-block-size: _camel_cased_attribute v. CSS.supports >-PASS max-block-size: _dashed_attribute v. CSS.supports >-PASS max-height: _camel_cased_attribute v. CSS.supports >-PASS max-height: _dashed_attribute v. CSS.supports >-PASS max-inline-size: _camel_cased_attribute v. CSS.supports >-PASS max-inline-size: _dashed_attribute v. CSS.supports >-PASS max-width: _camel_cased_attribute v. CSS.supports >-PASS max-width: _dashed_attribute v. CSS.supports >-PASS max-zoom: _camel_cased_attribute v. CSS.supports >-PASS max-zoom: _dashed_attribute v. CSS.supports >-PASS min-block-size: _camel_cased_attribute v. CSS.supports >-PASS min-block-size: _dashed_attribute v. CSS.supports >-PASS min-height: _camel_cased_attribute v. CSS.supports >-PASS min-height: _dashed_attribute v. CSS.supports >-PASS min-inline-size: _camel_cased_attribute v. CSS.supports >-PASS min-inline-size: _dashed_attribute v. CSS.supports >-PASS min-width: _camel_cased_attribute v. CSS.supports >-PASS min-width: _dashed_attribute v. CSS.supports >-PASS min-zoom: _camel_cased_attribute v. CSS.supports >-PASS min-zoom: _dashed_attribute v. CSS.supports >-PASS mix-blend-mode: _camel_cased_attribute v. CSS.supports >-PASS mix-blend-mode: _dashed_attribute v. CSS.supports >-PASS motion: _camel_cased_attribute v. CSS.supports >-PASS motion-offset: _camel_cased_attribute v. CSS.supports >-PASS motion-offset: _dashed_attribute v. CSS.supports >-PASS motion-path: _camel_cased_attribute v. CSS.supports >-PASS motion-path: _dashed_attribute v. CSS.supports >-PASS motion-rotation: _camel_cased_attribute v. CSS.supports >-PASS motion-rotation: _dashed_attribute v. CSS.supports >-PASS object-fit: _camel_cased_attribute v. CSS.supports >-PASS object-fit: _dashed_attribute v. CSS.supports >-PASS object-position: _camel_cased_attribute v. CSS.supports >-PASS object-position: _dashed_attribute v. CSS.supports >-PASS offset: _camel_cased_attribute v. CSS.supports >-PASS offset-anchor: _camel_cased_attribute v. CSS.supports >-PASS offset-anchor: _dashed_attribute v. CSS.supports >-PASS offset-block-end: _camel_cased_attribute v. CSS.supports >-PASS offset-block-end: _dashed_attribute v. CSS.supports >-PASS offset-block-start: _camel_cased_attribute v. CSS.supports >-PASS offset-block-start: _dashed_attribute v. CSS.supports >-PASS offset-distance: _camel_cased_attribute v. CSS.supports >-PASS offset-distance: _dashed_attribute v. CSS.supports >-PASS offset-inline-end: _camel_cased_attribute v. CSS.supports >-PASS offset-inline-end: _dashed_attribute v. CSS.supports >-PASS offset-inline-start: _camel_cased_attribute v. CSS.supports >-PASS offset-inline-start: _dashed_attribute v. CSS.supports >-PASS offset-path: _camel_cased_attribute v. CSS.supports >-PASS offset-path: _dashed_attribute v. CSS.supports >-PASS offset-rotate: _camel_cased_attribute v. CSS.supports >-PASS offset-rotate: _dashed_attribute v. CSS.supports >-PASS offset-rotation: _camel_cased_attribute v. CSS.supports >-PASS offset-rotation: _dashed_attribute v. CSS.supports >-PASS opacity: _camel_cased_attribute v. CSS.supports >-PASS order: _camel_cased_attribute v. CSS.supports >-PASS orientation: _camel_cased_attribute v. CSS.supports >-PASS orphans: _camel_cased_attribute v. CSS.supports >-PASS outline: _camel_cased_attribute v. CSS.supports >-PASS outline-color: _camel_cased_attribute v. CSS.supports >-PASS outline-color: _dashed_attribute v. CSS.supports >-PASS outline-offset: _camel_cased_attribute v. CSS.supports >-PASS outline-offset: _dashed_attribute v. CSS.supports >-PASS outline-style: _camel_cased_attribute v. CSS.supports >-PASS outline-style: _dashed_attribute v. CSS.supports >-PASS outline-width: _camel_cased_attribute v. CSS.supports >-PASS outline-width: _dashed_attribute v. CSS.supports >-PASS overflow: _camel_cased_attribute v. CSS.supports >-PASS overflow-anchor: _camel_cased_attribute v. CSS.supports >-PASS overflow-anchor: _dashed_attribute v. CSS.supports >-PASS overflow-block: _camel_cased_attribute v. CSS.supports >-PASS overflow-block: _dashed_attribute v. CSS.supports >-PASS overflow-inline: _camel_cased_attribute v. CSS.supports >-PASS overflow-inline: _dashed_attribute v. CSS.supports >-PASS overflow-wrap: _camel_cased_attribute v. CSS.supports >-PASS overflow-wrap: _dashed_attribute v. CSS.supports >-PASS overflow-x: _camel_cased_attribute v. CSS.supports >-PASS overflow-x: _dashed_attribute v. CSS.supports >-PASS overflow-y: _camel_cased_attribute v. CSS.supports >-PASS overflow-y: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-block: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-block: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-inline: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-inline: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-x: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-x: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-y: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-y: _dashed_attribute v. CSS.supports >-PASS padding: _camel_cased_attribute v. CSS.supports >-PASS padding-block: _camel_cased_attribute v. CSS.supports >-PASS padding-block: _dashed_attribute v. CSS.supports >-PASS padding-block-end: _camel_cased_attribute v. CSS.supports >-PASS padding-block-end: _dashed_attribute v. CSS.supports >-PASS padding-block-start: _camel_cased_attribute v. CSS.supports >-PASS padding-block-start: _dashed_attribute v. CSS.supports >-PASS padding-bottom: _camel_cased_attribute v. CSS.supports >-PASS padding-bottom: _dashed_attribute v. CSS.supports >-PASS padding-inline: _camel_cased_attribute v. CSS.supports >-PASS padding-inline: _dashed_attribute v. CSS.supports >-PASS padding-inline-end: _camel_cased_attribute v. CSS.supports >-PASS padding-inline-end: _dashed_attribute v. CSS.supports >-PASS padding-inline-start: _camel_cased_attribute v. CSS.supports >-PASS padding-inline-start: _dashed_attribute v. CSS.supports >-PASS padding-left: _camel_cased_attribute v. CSS.supports >-PASS padding-left: _dashed_attribute v. CSS.supports >-PASS padding-right: _camel_cased_attribute v. CSS.supports >-PASS padding-right: _dashed_attribute v. CSS.supports >-PASS padding-top: _camel_cased_attribute v. CSS.supports >-PASS padding-top: _dashed_attribute v. CSS.supports >-PASS page: _camel_cased_attribute v. CSS.supports >-PASS page-break-after: _camel_cased_attribute v. CSS.supports >-PASS page-break-after: _dashed_attribute v. CSS.supports >-PASS page-break-before: _camel_cased_attribute v. CSS.supports >-PASS page-break-before: _dashed_attribute v. CSS.supports >-PASS page-break-inside: _camel_cased_attribute v. CSS.supports >-PASS page-break-inside: _dashed_attribute v. CSS.supports >-PASS page-orientation: _camel_cased_attribute v. CSS.supports >-PASS page-orientation: _dashed_attribute v. CSS.supports >-PASS paint-order: _camel_cased_attribute v. CSS.supports >-PASS paint-order: _dashed_attribute v. CSS.supports >-PASS pen-action: _camel_cased_attribute v. CSS.supports >-PASS pen-action: _dashed_attribute v. CSS.supports >-PASS perspective: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin: _dashed_attribute v. CSS.supports >-PASS perspective-origin-x: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin-x: _dashed_attribute v. CSS.supports >-PASS perspective-origin-y: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin-y: _dashed_attribute v. CSS.supports >-PASS place-content: _camel_cased_attribute v. CSS.supports >-PASS place-content: _dashed_attribute v. CSS.supports >-PASS place-items: _camel_cased_attribute v. CSS.supports >-PASS place-items: _dashed_attribute v. CSS.supports >-PASS place-self: _camel_cased_attribute v. CSS.supports >-PASS place-self: _dashed_attribute v. CSS.supports >-PASS pointer-events: _camel_cased_attribute v. CSS.supports >-PASS pointer-events: _dashed_attribute v. CSS.supports >-PASS position: _camel_cased_attribute v. CSS.supports >-PASS quotes: _camel_cased_attribute v. CSS.supports >-PASS r: _camel_cased_attribute v. CSS.supports >-PASS resize: _camel_cased_attribute v. CSS.supports >-PASS right: _camel_cased_attribute v. CSS.supports >-PASS rotate: _camel_cased_attribute v. CSS.supports >-PASS row-gap: _camel_cased_attribute v. CSS.supports >-PASS row-gap: _dashed_attribute v. CSS.supports >-PASS ruby-align: _camel_cased_attribute v. CSS.supports >-PASS ruby-align: _dashed_attribute v. CSS.supports >-PASS ruby-overhang: _camel_cased_attribute v. CSS.supports >-PASS ruby-overhang: _dashed_attribute v. CSS.supports >-PASS ruby-position: _camel_cased_attribute v. CSS.supports >-PASS ruby-position: _dashed_attribute v. CSS.supports >-PASS rx: _camel_cased_attribute v. CSS.supports >-PASS ry: _camel_cased_attribute v. CSS.supports >-PASS scale: _camel_cased_attribute v. CSS.supports >-PASS scroll-behavior: _camel_cased_attribute v. CSS.supports >-PASS scroll-behavior: _dashed_attribute v. CSS.supports >-PASS scroll-margin: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block-end: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block-start: _dashed_attribute v. CSS.supports >-PASS scroll-margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline-end: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline-start: _dashed_attribute v. CSS.supports >-PASS scroll-margin-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-left: _dashed_attribute v. CSS.supports >-PASS scroll-margin-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-right: _dashed_attribute v. CSS.supports >-PASS scroll-margin-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-top: _dashed_attribute v. CSS.supports >-PASS scroll-padding: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block-end: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block-start: _dashed_attribute v. CSS.supports >-PASS scroll-padding-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline-end: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline-start: _dashed_attribute v. CSS.supports >-PASS scroll-padding-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-left: _dashed_attribute v. CSS.supports >-PASS scroll-padding-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-right: _dashed_attribute v. CSS.supports >-PASS scroll-padding-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-top: _dashed_attribute v. CSS.supports >-PASS scroll-snap-align: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-align: _dashed_attribute v. CSS.supports >-PASS scroll-snap-coordinate: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-coordinate: _dashed_attribute v. CSS.supports >-PASS scroll-snap-destination: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-destination: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-left: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-right: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-top: _dashed_attribute v. CSS.supports >-PASS scroll-snap-points-x: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-points-x: _dashed_attribute v. CSS.supports >-PASS scroll-snap-points-y: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-points-y: _dashed_attribute v. CSS.supports >-PASS scroll-snap-stop: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-stop: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type-x: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type-x: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type-y: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type-y: _dashed_attribute v. CSS.supports >-PASS scrollbar-color: _camel_cased_attribute v. CSS.supports >-PASS scrollbar-color: _dashed_attribute v. CSS.supports >-PASS scrollbar-width: _camel_cased_attribute v. CSS.supports >-PASS scrollbar-width: _dashed_attribute v. CSS.supports >-PASS shape-image-threshold: _camel_cased_attribute v. CSS.supports >-PASS shape-image-threshold: _dashed_attribute v. CSS.supports >-PASS shape-margin: _camel_cased_attribute v. CSS.supports >-PASS shape-margin: _dashed_attribute v. CSS.supports >-PASS shape-outside: _camel_cased_attribute v. CSS.supports >-PASS shape-outside: _dashed_attribute v. CSS.supports >-PASS shape-rendering: _camel_cased_attribute v. CSS.supports >-PASS shape-rendering: _dashed_attribute v. CSS.supports >-PASS size: _camel_cased_attribute v. CSS.supports >-PASS speak: _camel_cased_attribute v. CSS.supports >-PASS speak-as: _camel_cased_attribute v. CSS.supports >-PASS speak-as: _dashed_attribute v. CSS.supports >-PASS src: _camel_cased_attribute v. CSS.supports >-PASS stop-color: _camel_cased_attribute v. CSS.supports >-PASS stop-color: _dashed_attribute v. CSS.supports >-PASS stop-opacity: _camel_cased_attribute v. CSS.supports >-PASS stop-opacity: _dashed_attribute v. CSS.supports >-PASS stroke: _camel_cased_attribute v. CSS.supports >-PASS stroke-color: _camel_cased_attribute v. CSS.supports >-PASS stroke-color: _dashed_attribute v. CSS.supports >-PASS stroke-dasharray: _camel_cased_attribute v. CSS.supports >-PASS stroke-dasharray: _dashed_attribute v. CSS.supports >-PASS stroke-dashoffset: _camel_cased_attribute v. CSS.supports >-PASS stroke-dashoffset: _dashed_attribute v. CSS.supports >-PASS stroke-linecap: _camel_cased_attribute v. CSS.supports >-PASS stroke-linecap: _dashed_attribute v. CSS.supports >-PASS stroke-linejoin: _camel_cased_attribute v. CSS.supports >-PASS stroke-linejoin: _dashed_attribute v. CSS.supports >-PASS stroke-miterlimit: _camel_cased_attribute v. CSS.supports >-PASS stroke-miterlimit: _dashed_attribute v. CSS.supports >-PASS stroke-opacity: _camel_cased_attribute v. CSS.supports >-PASS stroke-opacity: _dashed_attribute v. CSS.supports >-PASS stroke-width: _camel_cased_attribute v. CSS.supports >-PASS stroke-width: _dashed_attribute v. CSS.supports >-PASS supported-color-schemes: _camel_cased_attribute v. CSS.supports >-PASS supported-color-schemes: _dashed_attribute v. CSS.supports >-PASS syntax: _camel_cased_attribute v. CSS.supports >-PASS tab-size: _camel_cased_attribute v. CSS.supports >-PASS tab-size: _dashed_attribute v. CSS.supports >-PASS table-layout: _camel_cased_attribute v. CSS.supports >-PASS table-layout: _dashed_attribute v. CSS.supports >-PASS text-align: _camel_cased_attribute v. CSS.supports >-PASS text-align: _dashed_attribute v. CSS.supports >-PASS text-align-last: _camel_cased_attribute v. CSS.supports >-PASS text-align-last: _dashed_attribute v. CSS.supports >-PASS text-anchor: _camel_cased_attribute v. CSS.supports >-PASS text-anchor: _dashed_attribute v. CSS.supports >-PASS text-combine-upright: _camel_cased_attribute v. CSS.supports >-PASS text-combine-upright: _dashed_attribute v. CSS.supports >-PASS text-decoration: _camel_cased_attribute v. CSS.supports >-PASS text-decoration: _dashed_attribute v. CSS.supports >-PASS text-decoration-color: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-color: _dashed_attribute v. CSS.supports >-PASS text-decoration-line: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-line: _dashed_attribute v. CSS.supports >-PASS text-decoration-skip: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-skip: _dashed_attribute v. CSS.supports >-PASS text-decoration-skip-ink: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-skip-ink: _dashed_attribute v. CSS.supports >-PASS text-decoration-style: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-style: _dashed_attribute v. CSS.supports >-PASS text-decoration-thickness: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-thickness: _dashed_attribute v. CSS.supports >-PASS text-emphasis: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis: _dashed_attribute v. CSS.supports >-PASS text-emphasis-color: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-color: _dashed_attribute v. CSS.supports >-PASS text-emphasis-position: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-position: _dashed_attribute v. CSS.supports >-PASS text-emphasis-style: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-style: _dashed_attribute v. CSS.supports >-PASS text-indent: _camel_cased_attribute v. CSS.supports >-PASS text-indent: _dashed_attribute v. CSS.supports >-PASS text-justify: _camel_cased_attribute v. CSS.supports >-PASS text-justify: _dashed_attribute v. CSS.supports >-PASS text-kashida: _camel_cased_attribute v. CSS.supports >-PASS text-kashida: _dashed_attribute v. CSS.supports >-PASS text-kashida-space: _camel_cased_attribute v. CSS.supports >-PASS text-kashida-space: _dashed_attribute v. CSS.supports >-PASS text-line-through: _camel_cased_attribute v. CSS.supports >-PASS text-line-through: _dashed_attribute v. CSS.supports >-PASS text-line-through-color: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-color: _dashed_attribute v. CSS.supports >-PASS text-line-through-mode: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-mode: _dashed_attribute v. CSS.supports >-PASS text-line-through-style: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-style: _dashed_attribute v. CSS.supports >-PASS text-line-through-width: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-width: _dashed_attribute v. CSS.supports >-PASS text-orientation: _camel_cased_attribute v. CSS.supports >-PASS text-orientation: _dashed_attribute v. CSS.supports >-PASS text-overflow: _camel_cased_attribute v. CSS.supports >-PASS text-overflow: _dashed_attribute v. CSS.supports >-PASS text-overline: _camel_cased_attribute v. CSS.supports >-PASS text-overline: _dashed_attribute v. CSS.supports >-PASS text-overline-color: _camel_cased_attribute v. CSS.supports >-PASS text-overline-color: _dashed_attribute v. CSS.supports >-PASS text-overline-mode: _camel_cased_attribute v. CSS.supports >-PASS text-overline-mode: _dashed_attribute v. CSS.supports >-PASS text-overline-style: _camel_cased_attribute v. CSS.supports >-PASS text-overline-style: _dashed_attribute v. CSS.supports >-PASS text-overline-width: _camel_cased_attribute v. CSS.supports >-PASS text-overline-width: _dashed_attribute v. CSS.supports >-PASS text-rendering: _camel_cased_attribute v. CSS.supports >-PASS text-rendering: _dashed_attribute v. CSS.supports >-PASS text-shadow: _camel_cased_attribute v. CSS.supports >-PASS text-shadow: _dashed_attribute v. CSS.supports >-PASS text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS text-size-adjust: _dashed_attribute v. CSS.supports >-PASS text-transform: _camel_cased_attribute v. CSS.supports >-PASS text-transform: _dashed_attribute v. CSS.supports >-PASS text-underline: _camel_cased_attribute v. CSS.supports >-PASS text-underline: _dashed_attribute v. CSS.supports >-PASS text-underline-color: _camel_cased_attribute v. CSS.supports >-PASS text-underline-color: _dashed_attribute v. CSS.supports >-PASS text-underline-mode: _camel_cased_attribute v. CSS.supports >-PASS text-underline-mode: _dashed_attribute v. CSS.supports >-PASS text-underline-offset: _camel_cased_attribute v. CSS.supports >-PASS text-underline-offset: _dashed_attribute v. CSS.supports >-PASS text-underline-position: _camel_cased_attribute v. CSS.supports >-PASS text-underline-position: _dashed_attribute v. CSS.supports >-PASS text-underline-style: _camel_cased_attribute v. CSS.supports >-PASS text-underline-style: _dashed_attribute v. CSS.supports >-PASS text-underline-width: _camel_cased_attribute v. CSS.supports >-PASS text-underline-width: _dashed_attribute v. CSS.supports >-PASS top: _camel_cased_attribute v. CSS.supports >-PASS touch-action: _camel_cased_attribute v. CSS.supports >-PASS touch-action: _dashed_attribute v. CSS.supports >-PASS transform: _camel_cased_attribute v. CSS.supports >-PASS transform-box: _camel_cased_attribute v. CSS.supports >-PASS transform-box: _dashed_attribute v. CSS.supports >-PASS transform-origin: _camel_cased_attribute v. CSS.supports >-PASS transform-origin: _dashed_attribute v. CSS.supports >-PASS transform-origin-x: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-x: _dashed_attribute v. CSS.supports >-PASS transform-origin-y: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-y: _dashed_attribute v. CSS.supports >-PASS transform-origin-z: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-z: _dashed_attribute v. CSS.supports >-PASS transform-style: _camel_cased_attribute v. CSS.supports >-PASS transform-style: _dashed_attribute v. CSS.supports >-PASS transition: _camel_cased_attribute v. CSS.supports >-PASS transition-delay: _camel_cased_attribute v. CSS.supports >-PASS transition-delay: _dashed_attribute v. CSS.supports >-PASS transition-duration: _camel_cased_attribute v. CSS.supports >-PASS transition-duration: _dashed_attribute v. CSS.supports >-PASS transition-property: _camel_cased_attribute v. CSS.supports >-PASS transition-property: _dashed_attribute v. CSS.supports >-PASS transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS transition-timing-function: _dashed_attribute v. CSS.supports >-PASS translate: _camel_cased_attribute v. CSS.supports >-PASS unicode-bidi: _camel_cased_attribute v. CSS.supports >-PASS unicode-bidi: _dashed_attribute v. CSS.supports >-PASS unicode-range: _camel_cased_attribute v. CSS.supports >-PASS unicode-range: _dashed_attribute v. CSS.supports >-PASS user-select: _camel_cased_attribute v. CSS.supports >-PASS user-select: _dashed_attribute v. CSS.supports >-PASS user-zoom: _camel_cased_attribute v. CSS.supports >-PASS user-zoom: _dashed_attribute v. CSS.supports >-PASS vector-effect: _camel_cased_attribute v. CSS.supports >-PASS vector-effect: _dashed_attribute v. CSS.supports >-PASS vertical-align: _camel_cased_attribute v. CSS.supports >-PASS vertical-align: _dashed_attribute v. CSS.supports >-PASS viewport-fit: _camel_cased_attribute v. CSS.supports >-PASS viewport-fit: _dashed_attribute v. CSS.supports >-PASS visibility: _camel_cased_attribute v. CSS.supports >-PASS white-space: _camel_cased_attribute v. CSS.supports >-PASS white-space: _dashed_attribute v. CSS.supports >-PASS widows: _camel_cased_attribute v. CSS.supports >-PASS width: _camel_cased_attribute v. CSS.supports >-PASS will-change: _camel_cased_attribute v. CSS.supports >-PASS will-change: _dashed_attribute v. CSS.supports >-PASS word-break: _camel_cased_attribute v. CSS.supports >-PASS word-break: _dashed_attribute v. CSS.supports >-PASS word-spacing: _camel_cased_attribute v. CSS.supports >-PASS word-spacing: _dashed_attribute v. CSS.supports >-PASS word-wrap: _camel_cased_attribute v. CSS.supports >-PASS word-wrap: _dashed_attribute v. CSS.supports >-PASS writing-mode: _camel_cased_attribute v. CSS.supports >-PASS writing-mode: _dashed_attribute v. CSS.supports >-PASS x: _camel_cased_attribute v. CSS.supports >-PASS y: _camel_cased_attribute v. CSS.supports >-PASS z-index: _camel_cased_attribute v. CSS.supports >-PASS z-index: _dashed_attribute v. CSS.supports >-PASS zoom: _camel_cased_attribute v. CSS.supports >- >diff --git a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >index 21412a6173ec..5d89928de397 100644 >--- a/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >+++ b/LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >@@ -1,8 +1,8 @@ > > PASS getComputedStyle returns no style for detached element >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 391 >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 391 >-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 391 >-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 391 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 390 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 390 >+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 390 >+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 390 > PASS getComputedStyle returns no style for shadow tree outside of flattened tree > >diff --git a/LayoutTests/platform/ios-simulator-wk2/TestExpectations b/LayoutTests/platform/ios-simulator-wk2/TestExpectations >index 06235081b7b9..5699bee1177d 100644 >--- a/LayoutTests/platform/ios-simulator-wk2/TestExpectations >+++ b/LayoutTests/platform/ios-simulator-wk2/TestExpectations >@@ -123,8 +123,6 @@ webkit.org/b/217114 [ Release ] compositing/debug-borders-dynamic.html [ Pass Im > > webkit.org/b/217414 [ Release ] imported/w3c/web-platform-tests/user-timing/measure-l3.any.html [ Pass Failure ] > >-webkit.org/b/217419 [ Release ] imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html [ Failure ] >- > webkit.org/b/217461 imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clipPath.svg [ Skip ] > > webkit.org/b/217462 [ Release ] imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https.html [ Pass Failure ] >diff --git a/LayoutTests/platform/ios-wk2/editing/pasteboard/4641033-expected.txt b/LayoutTests/platform/ios-wk2/editing/pasteboard/4641033-expected.txt >index f9822f7975cb..c65c64d682d7 100644 >--- a/LayoutTests/platform/ios-wk2/editing/pasteboard/4641033-expected.txt >+++ b/LayoutTests/platform/ios-wk2/editing/pasteboard/4641033-expected.txt >@@ -18,9 +18,8 @@ layer at (0,0) size 800x600 > text run at (0,20) width 253: "picture of abe followed by a select box." > RenderBlock {DIV} at (0,56) size 784x111 > RenderImage {IMG} at (0,0) size 76x103 >- RenderInline {SPAN} at (0,0) size 4x19 >- RenderText {#text} at (76,88) size 4x19 >- text run at (76,88) width 4: " " >+ RenderText {#text} at (76,88) size 4x19 >+ text run at (76,88) width 4: " " > RenderMenuList {SELECT} at (82,89) size 44x20 [color=#007AFF] [bgcolor=#E9E9EA] [border: (1px solid #FFFFFF)] > RenderBlock (anonymous) at (6,3) size 32x14 > RenderText at (0,0) size 6x14 >diff --git a/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt b/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >new file mode 100644 >index 000000000000..b735d7c49fcf >--- /dev/null >+++ b/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >@@ -0,0 +1,398 @@ >+ >+ >+PASS setup >+PASS stylesheet takes effect >+PASS accent-color >+PASS align-content >+PASS align-items >+PASS align-self >+PASS alignment-baseline >+PASS alt >+PASS animation-composition >+PASS animation-delay >+PASS animation-direction >+PASS animation-duration >+PASS animation-fill-mode >+PASS animation-iteration-count >+PASS animation-name >+PASS animation-play-state >+PASS animation-timing-function >+PASS appearance >+PASS aspect-ratio >+PASS backface-visibility >+PASS background-attachment >+PASS background-blend-mode >+PASS background-clip >+PASS background-color >+PASS background-image >+PASS background-origin >+PASS background-position-x >+PASS background-position-y >+PASS background-repeat >+PASS background-size >+PASS baseline-shift >+PASS block-size >+PASS border-block-end-color >+PASS border-block-end-style >+PASS border-block-end-width >+PASS border-block-start-color >+PASS border-block-start-style >+PASS border-block-start-width >+PASS border-bottom-color >+PASS border-bottom-left-radius >+PASS border-bottom-right-radius >+PASS border-bottom-style >+PASS border-bottom-width >+PASS border-collapse >+PASS border-end-end-radius >+PASS border-end-start-radius >+PASS border-image-outset >+PASS border-image-repeat >+PASS border-image-slice >+PASS border-image-source >+PASS border-image-width >+PASS border-inline-end-color >+PASS border-inline-end-style >+PASS border-inline-end-width >+PASS border-inline-start-color >+PASS border-inline-start-style >+PASS border-inline-start-width >+PASS border-left-color >+PASS border-left-style >+PASS border-left-width >+PASS border-right-color >+PASS border-right-style >+PASS border-right-width >+PASS border-start-end-radius >+PASS border-start-start-radius >+PASS border-top-color >+PASS border-top-left-radius >+PASS border-top-right-radius >+PASS border-top-style >+PASS border-top-width >+PASS bottom >+PASS box-shadow >+PASS box-sizing >+PASS break-after >+PASS break-before >+PASS break-inside >+PASS buffered-rendering >+PASS caption-side >+PASS caret-color >+PASS clear >+PASS clip >+PASS clip-path >+PASS clip-rule >+PASS color >+PASS color-interpolation >+PASS color-interpolation-filters >+PASS color-scheme >+PASS column-count >+PASS column-fill >+PASS column-gap >+PASS column-rule-color >+PASS column-rule-style >+PASS column-rule-width >+PASS column-span >+PASS column-width >+PASS contain >+PASS contain-intrinsic-block-size >+PASS contain-intrinsic-height >+PASS contain-intrinsic-inline-size >+PASS contain-intrinsic-width >+PASS container-name >+PASS container-type >+PASS content >+PASS counter-increment >+PASS counter-reset >+PASS cursor >+PASS cx >+PASS cy >+PASS direction >+PASS display >+PASS dominant-baseline >+PASS empty-cells >+PASS fill >+PASS fill-opacity >+PASS fill-rule >+PASS filter >+PASS flex-basis >+PASS flex-direction >+PASS flex-grow >+PASS flex-shrink >+PASS flex-wrap >+PASS float >+PASS flood-color >+PASS flood-opacity >+PASS font-family >+PASS font-feature-settings >+PASS font-kerning >+PASS font-optical-sizing >+PASS font-palette >+PASS font-size >+PASS font-stretch >+PASS font-style >+PASS font-synthesis >+PASS font-variant-alternates >+PASS font-variant-caps >+PASS font-variant-east-asian >+PASS font-variant-ligatures >+PASS font-variant-numeric >+PASS font-variant-position >+PASS font-variation-settings >+PASS font-weight >+PASS glyph-orientation-horizontal >+PASS glyph-orientation-vertical >+PASS grid-auto-columns >+PASS grid-auto-flow >+PASS grid-auto-rows >+PASS grid-column-end >+PASS grid-column-start >+PASS grid-row-end >+PASS grid-row-start >+PASS grid-template-areas >+PASS grid-template-columns >+PASS grid-template-rows >+PASS hanging-punctuation >+PASS height >+PASS image-orientation >+PASS image-rendering >+PASS inline-size >+PASS input-security >+PASS inset-block-end >+PASS inset-block-start >+PASS inset-inline-end >+PASS inset-inline-start >+PASS isolation >+PASS justify-content >+PASS justify-items >+PASS justify-self >+PASS kerning >+PASS left >+PASS letter-spacing >+PASS lighting-color >+PASS line-break >+PASS line-height >+PASS list-style-image >+PASS list-style-position >+PASS list-style-type >+PASS margin-block-end >+PASS margin-block-start >+PASS margin-bottom >+PASS margin-inline-end >+PASS margin-inline-start >+PASS margin-left >+PASS margin-right >+PASS margin-top >+PASS marker-end >+PASS marker-mid >+PASS marker-start >+PASS mask-clip >+PASS mask-composite >+PASS mask-image >+PASS mask-mode >+PASS mask-origin >+PASS mask-repeat >+PASS mask-size >+PASS mask-type >+PASS math-style >+PASS max-block-size >+PASS max-height >+PASS max-inline-size >+PASS max-width >+PASS min-block-size >+PASS min-height >+PASS min-inline-size >+PASS min-width >+PASS mix-blend-mode >+PASS object-fit >+PASS object-position >+PASS offset-anchor >+PASS offset-distance >+PASS offset-path >+PASS offset-position >+PASS offset-rotate >+PASS opacity >+PASS order >+PASS orphans >+PASS outline-color >+PASS outline-offset >+PASS outline-style >+PASS outline-width >+PASS overflow-wrap >+PASS overflow-x >+PASS overflow-y >+PASS overscroll-behavior-block >+PASS overscroll-behavior-inline >+PASS overscroll-behavior-x >+PASS overscroll-behavior-y >+PASS padding-block-end >+PASS padding-block-start >+PASS padding-bottom >+PASS padding-inline-end >+PASS padding-inline-start >+PASS padding-left >+PASS padding-right >+PASS padding-top >+PASS paint-order >+PASS perspective >+PASS perspective-origin >+PASS pointer-events >+PASS position >+PASS print-color-adjust >+PASS quotes >+PASS r >+PASS resize >+PASS right >+PASS rotate >+PASS row-gap >+PASS rx >+PASS ry >+PASS scale >+PASS scroll-behavior >+PASS scroll-margin-block-end >+PASS scroll-margin-block-start >+PASS scroll-margin-bottom >+PASS scroll-margin-inline-end >+PASS scroll-margin-inline-start >+PASS scroll-margin-left >+PASS scroll-margin-right >+PASS scroll-margin-top >+PASS scroll-padding-block-end >+PASS scroll-padding-block-start >+PASS scroll-padding-bottom >+PASS scroll-padding-inline-end >+PASS scroll-padding-inline-start >+PASS scroll-padding-left >+PASS scroll-padding-right >+PASS scroll-padding-top >+PASS scroll-snap-align >+PASS scroll-snap-stop >+PASS scroll-snap-type >+PASS shape-image-threshold >+PASS shape-margin >+PASS shape-outside >+PASS shape-rendering >+PASS size >+PASS speak-as >+PASS stop-color >+PASS stop-opacity >+PASS stroke >+PASS stroke-color >+PASS stroke-dasharray >+PASS stroke-dashoffset >+PASS stroke-linecap >+PASS stroke-linejoin >+PASS stroke-miterlimit >+PASS stroke-opacity >+PASS stroke-width >+PASS tab-size >+PASS table-layout >+PASS text-align >+PASS text-align-last >+PASS text-anchor >+PASS text-combine-upright >+PASS text-decoration-color >+PASS text-decoration-line >+PASS text-decoration-skip-ink >+PASS text-decoration-style >+PASS text-decoration-thickness >+PASS text-emphasis-color >+PASS text-emphasis-position >+PASS text-emphasis-style >+PASS text-indent >+PASS text-justify >+PASS text-orientation >+PASS text-overflow >+PASS text-rendering >+PASS text-shadow >+PASS text-transform >+PASS text-underline-offset >+PASS text-underline-position >+PASS top >+PASS touch-action >+PASS transform >+PASS transform-box >+PASS transform-origin >+PASS transform-style >+PASS transition-delay >+PASS transition-duration >+PASS transition-property >+PASS transition-timing-function >+PASS translate >+PASS unicode-bidi >+PASS vector-effect >+PASS vertical-align >+PASS visibility >+PASS white-space >+PASS widows >+PASS width >+PASS will-change >+PASS word-break >+PASS word-spacing >+PASS writing-mode >+PASS x >+PASS y >+PASS z-index >+PASS zoom >+PASS -apple-pay-button-style >+PASS -apple-pay-button-type >+PASS -webkit-backdrop-filter >+PASS -webkit-background-clip >+PASS -webkit-background-origin >+PASS -webkit-background-size >+PASS -webkit-border-horizontal-spacing >+PASS -webkit-border-vertical-spacing >+PASS -webkit-box-align >+PASS -webkit-box-decoration-break >+PASS -webkit-box-direction >+PASS -webkit-box-flex >+PASS -webkit-box-flex-group >+PASS -webkit-box-lines >+PASS -webkit-box-ordinal-group >+PASS -webkit-box-orient >+PASS -webkit-box-pack >+PASS -webkit-box-reflect >+PASS -webkit-box-shadow >+PASS -webkit-column-axis >+PASS -webkit-column-progression >+PASS -webkit-cursor-visibility >+PASS -webkit-font-smoothing >+PASS -webkit-hyphenate-character >+PASS -webkit-hyphenate-limit-after >+PASS -webkit-hyphenate-limit-before >+PASS -webkit-hyphenate-limit-lines >+PASS -webkit-hyphens >+PASS -webkit-initial-letter >+PASS -webkit-line-align >+PASS -webkit-line-box-contain >+PASS -webkit-line-clamp >+PASS -webkit-line-grid >+PASS -webkit-line-snap >+PASS -webkit-locale >+PASS -webkit-mask-box-image >+PASS -webkit-mask-box-image-outset >+PASS -webkit-mask-box-image-repeat >+PASS -webkit-mask-box-image-slice >+PASS -webkit-mask-box-image-source >+PASS -webkit-mask-box-image-width >+PASS -webkit-mask-clip >+PASS -webkit-mask-composite >+PASS -webkit-mask-position-x >+PASS -webkit-mask-position-y >+PASS -webkit-mask-source-type >+PASS -webkit-nbsp-mode >+PASS -webkit-overflow-scrolling >+PASS -webkit-rtl-ordering >+PASS -webkit-ruby-position >+PASS -webkit-text-combine >+PASS -webkit-text-fill-color >+PASS -webkit-text-security >+PASS -webkit-text-stroke-color >+PASS -webkit-text-stroke-width >+PASS -webkit-text-zoom >+PASS -webkit-touch-callout >+PASS -webkit-user-drag >+PASS -webkit-user-modify >+PASS -webkit-user-select >+ >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-2-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-2-expected.txt >deleted file mode 100644 >index 5223e4ead07d..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-2-expected.txt >+++ /dev/null >@@ -1,18 +0,0 @@ >-This tests copying and pasting content across shadow boundaries. >-To test manually, copy text blow starting from "world" ending with "rocks", and paste into the green box below. All the text shoul be copied & pasted. >- >-pasted html: >-| <span> >-| id="host" >-| style="-webkit-text-size-adjust: auto;" >-| <span> >-| style="display: contents;" >-| "world" >-| " " >-| "WebKit" >-| <span> >-| style="-webkit-text-size-adjust: auto;" >-| " rocks<#selection-caret>" >- >-text/plain: >-| "world WebKit rocks" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-3-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-3-expected.txt >deleted file mode 100644 >index c6fd5601b2f0..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-3-expected.txt >+++ /dev/null >@@ -1,16 +0,0 @@ >-This tests copying and pasting content across shadow boundaries. >-To test manually, copy text blow starting from "WebKit" ending with "rocks", and paste into the green box below. All the text shoul be copied & pasted. >- >-pasted html: >-| <span> >-| id="host" >-| style="-webkit-text-size-adjust: auto;" >-| <span> >-| style="display: contents;" >-| "world WebKit" >-| <span> >-| style="-webkit-text-size-adjust: auto;" >-| " rocks<#selection-caret>" >- >-text/plain: >-| "world WebKit rocks" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-4-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-4-expected.txt >deleted file mode 100644 >index a5c0dc05a0b1..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-4-expected.txt >+++ /dev/null >@@ -1,13 +0,0 @@ >-This tests copying and pasting content across shadow boundaries. >-To test manually, copy text blow starting from "hello" ending with "Web", and paste into the green box below. All the text shoul be copied & pasted. >- >-pasted html: >-| <span> >-| style="-webkit-text-size-adjust: auto;" >-| "hello " >-| <span> >-| style="-webkit-text-size-adjust: auto; display: contents;" >-| "world Web<#selection-caret>" >- >-text/plain: >-| "hello world Web" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-5-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-5-expected.txt >deleted file mode 100644 >index 6d669943f73a..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-5-expected.txt >+++ /dev/null >@@ -1,16 +0,0 @@ >-This tests copying and pasting content across shadow boundaries. >-To test manually, copy text below, and paste into the green box below. All the text shoul be copied & pasted. >- >-pasted html: >-| <span> >-| id="host" >-| style="-webkit-text-size-adjust: auto;" >-| <span> >-| style="display: contents;" >-| "world" >-| <span> >-| style="-webkit-text-size-adjust: auto;" >-| " WebKit<#selection-caret>" >- >-text/plain: >-| "world WebKit" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1-expected.txt >deleted file mode 100644 >index 42b3ab166a2d..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-across-shadow-boundaries-with-style-1-expected.txt >+++ /dev/null >@@ -1,18 +0,0 @@ >-This tests copying and pasting content across shadow boundaries. >-To test manually, copy text blow starting from "hello" ending with "Web", and paste into the green box below. All the text shoul be copied & pasted. >- >-pasted html: >-| <b> >-| style="-webkit-text-size-adjust: auto;" >-| <span> >-| id="host" >-| "hello " >-| <span> >-| id="host" >-| <span> >-| style="display: contents; color: blue;" >-| "world" >-| " Web<#selection-caret>" >- >-text/plain: >-| "hello world Web" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-with-shadow-content-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/copy-paste-with-shadow-content-expected.txt >deleted file mode 100644 >index b335d2f3350e..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/copy-paste-with-shadow-content-expected.txt >+++ /dev/null >@@ -1,33 +0,0 @@ >-This tests copying and pasting content with a shadow tree. >-To test manually, copy paste the content in the blue box to the green box below. All the text shoul be copied & pasted >- >-pasted: >-| <span> >-| id="host" >-| style="-webkit-text-size-adjust: auto;" >-| "hello " >-| <span> >-| id="host" >-| <span> >-| style="display: contents;" >-| "world" >-| " " >-| "WebKit" >-| " rocks<#selection-caret>" >- >-text/html: >-| <span> >-| id="host" >-| style="-webkit-text-size-adjust: auto;" >-| "hello " >-| <span> >-| id="host" >-| <span> >-| style="display: contents;" >-| "world" >-| " " >-| "WebKit" >-| " rocks<#selection-caret>" >- >-text/plain: >-| "hello world WebKit rocks" >diff --git a/LayoutTests/platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt b/LayoutTests/platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt >deleted file mode 100644 >index c491cd8d5b84..000000000000 >--- a/LayoutTests/platform/ios/editing/pasteboard/reveal-selection-after-pasting-images-expected.txt >+++ /dev/null >@@ -1,16 +0,0 @@ >-This test verifies that we scroll to reveal the selection after pasting images in an editable area. To run the test manually, copy the selected images and paste into the red editable container above. The container should scroll to reveal the caret after the last image. >- >-Scrolled after pasting: >-| <div> >-| style="-webkit-text-size-adjust: auto;" >-| <img> >-| src="resources/mozilla.gif" >-| <div> >-| style="-webkit-text-size-adjust: auto;" >-| <img> >-| src="resources/apple.gif" >-| <div> >-| style="-webkit-text-size-adjust: auto;" >-| <img> >-| src="../resources/abe.png" >-| <#selection-caret> >diff --git a/LayoutTests/platform/ios/fast/editing/mutation-with-display-contents-container-crash-expected.txt b/LayoutTests/platform/ios/fast/editing/mutation-with-display-contents-container-crash-expected.txt >deleted file mode 100644 >index 0163abc9e4aa..000000000000 >--- a/LayoutTests/platform/ios/fast/editing/mutation-with-display-contents-container-crash-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-This test passes if it does not crash. >- >diff --git a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt b/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >deleted file mode 100644 >index ae91e8b1c54c..000000000000 >--- a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >+++ /dev/null >@@ -1,1509 +0,0 @@ >- >-FAIL -apple-color-filter: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >-PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit- >-FAIL -apple-color-filter: _dashed_attribute v. CSS.supports assert_equals: expected true but got false >-PASS -apple-pay-button-style: _camel_cased_attribute v. CSS.supports >-PASS -apple-pay-button-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-pay-button-style: _dashed_attribute v. CSS.supports >-PASS -apple-pay-button-type: _camel_cased_attribute v. CSS.supports >-PASS -apple-pay-button-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-pay-button-type: _dashed_attribute v. CSS.supports >-PASS -apple-trailing-word: _camel_cased_attribute v. CSS.supports >-PASS -apple-trailing-word: _webkit_cased_attribute must only exist for -webkit- >-PASS -apple-trailing-word: _dashed_attribute v. CSS.supports >-PASS -epub-caption-side: _camel_cased_attribute v. CSS.supports >-FAIL -epub-caption-side: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-caption-side: _dashed_attribute v. CSS.supports >-PASS -epub-text-combine: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-combine: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-combine: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis-color: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis-color: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis-color: _dashed_attribute v. CSS.supports >-PASS -epub-text-emphasis-style: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-emphasis-style: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-emphasis-style: _dashed_attribute v. CSS.supports >-PASS -epub-text-orientation: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-orientation: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-orientation: _dashed_attribute v. CSS.supports >-PASS -epub-text-transform: _camel_cased_attribute v. CSS.supports >-FAIL -epub-text-transform: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-text-transform: _dashed_attribute v. CSS.supports >-PASS -epub-word-break: _camel_cased_attribute v. CSS.supports >-FAIL -epub-word-break: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-word-break: _dashed_attribute v. CSS.supports >-PASS -epub-writing-mode: _camel_cased_attribute v. CSS.supports >-FAIL -epub-writing-mode: _webkit_cased_attribute must only exist for -webkit- assert_false: expected false got true >-PASS -epub-writing-mode: _dashed_attribute v. CSS.supports >-PASS -moz-animation: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation: _dashed_attribute v. CSS.supports >-PASS -moz-animation-delay: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-delay: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-delay: _dashed_attribute v. CSS.supports >-PASS -moz-animation-direction: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-direction: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-direction: _dashed_attribute v. CSS.supports >-PASS -moz-animation-duration: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-duration: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-duration: _dashed_attribute v. CSS.supports >-PASS -moz-animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-fill-mode: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS -moz-animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-iteration-count: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS -moz-animation-name: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-name: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-name: _dashed_attribute v. CSS.supports >-PASS -moz-animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-play-state: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-play-state: _dashed_attribute v. CSS.supports >-PASS -moz-animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -moz-animation-timing-function: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-animation-timing-function: _dashed_attribute v. CSS.supports >-PASS -moz-appearance: _camel_cased_attribute v. CSS.supports >-PASS -moz-appearance: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-appearance: _dashed_attribute v. CSS.supports >-PASS -moz-backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS -moz-backface-visibility: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-backface-visibility: _dashed_attribute v. CSS.supports >-PASS -moz-binding: _camel_cased_attribute v. CSS.supports >-PASS -moz-binding: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-binding: _dashed_attribute v. CSS.supports >-PASS -moz-border-bottom-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-bottom-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-bottom-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-color: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-style: _dashed_attribute v. CSS.supports >-PASS -moz-border-end-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-end-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-end-width: _dashed_attribute v. CSS.supports >-PASS -moz-border-image: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-image: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-image: _dashed_attribute v. CSS.supports >-PASS -moz-border-left-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-left-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-left-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-right-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-right-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-right-colors: _dashed_attribute v. CSS.supports >-PASS -moz-border-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-color: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-style: _dashed_attribute v. CSS.supports >-PASS -moz-border-start-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-start-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-start-width: _dashed_attribute v. CSS.supports >-PASS -moz-border-top-colors: _camel_cased_attribute v. CSS.supports >-PASS -moz-border-top-colors: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-border-top-colors: _dashed_attribute v. CSS.supports >-PASS -moz-box-align: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-align: _dashed_attribute v. CSS.supports >-PASS -moz-box-direction: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-direction: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-direction: _dashed_attribute v. CSS.supports >-PASS -moz-box-flex: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-flex: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-flex: _dashed_attribute v. CSS.supports >-PASS -moz-box-ordinal-group: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-ordinal-group: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-ordinal-group: _dashed_attribute v. CSS.supports >-PASS -moz-box-orient: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-orient: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-orient: _dashed_attribute v. CSS.supports >-PASS -moz-box-pack: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-pack: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-pack: _dashed_attribute v. CSS.supports >-PASS -moz-box-sizing: _camel_cased_attribute v. CSS.supports >-PASS -moz-box-sizing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-box-sizing: _dashed_attribute v. CSS.supports >-PASS -moz-column-count: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-count: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-count: _dashed_attribute v. CSS.supports >-PASS -moz-column-fill: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-fill: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-fill: _dashed_attribute v. CSS.supports >-PASS -moz-column-gap: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-gap: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-gap: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-color: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-color: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-color: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-style: _dashed_attribute v. CSS.supports >-PASS -moz-column-rule-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-rule-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-rule-width: _dashed_attribute v. CSS.supports >-PASS -moz-column-span: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-span: _dashed_attribute v. CSS.supports >-PASS -moz-column-width: _camel_cased_attribute v. CSS.supports >-PASS -moz-column-width: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-column-width: _dashed_attribute v. CSS.supports >-PASS -moz-columns: _camel_cased_attribute v. CSS.supports >-PASS -moz-columns: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-columns: _dashed_attribute v. CSS.supports >-PASS -moz-float-edge: _camel_cased_attribute v. CSS.supports >-PASS -moz-float-edge: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-float-edge: _dashed_attribute v. CSS.supports >-PASS -moz-font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS -moz-font-feature-settings: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-font-feature-settings: _dashed_attribute v. CSS.supports >-PASS -moz-font-language-override: _camel_cased_attribute v. CSS.supports >-PASS -moz-font-language-override: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-font-language-override: _dashed_attribute v. CSS.supports >-PASS -moz-force-broken-image-icon: _camel_cased_attribute v. CSS.supports >-PASS -moz-force-broken-image-icon: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-force-broken-image-icon: _dashed_attribute v. CSS.supports >-PASS -moz-hyphens: _camel_cased_attribute v. CSS.supports >-PASS -moz-hyphens: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-hyphens: _dashed_attribute v. CSS.supports >-PASS -moz-image-region: _camel_cased_attribute v. CSS.supports >-PASS -moz-image-region: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-image-region: _dashed_attribute v. CSS.supports >-PASS -moz-margin-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-margin-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-margin-end: _dashed_attribute v. CSS.supports >-PASS -moz-margin-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-margin-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-margin-start: _dashed_attribute v. CSS.supports >-PASS -moz-orient: _camel_cased_attribute v. CSS.supports >-PASS -moz-orient: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-orient: _dashed_attribute v. CSS.supports >-PASS -moz-osx-font-smoothing: _camel_cased_attribute v. CSS.supports >-PASS -moz-osx-font-smoothing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-osx-font-smoothing: _dashed_attribute v. CSS.supports >-PASS -moz-padding-end: _camel_cased_attribute v. CSS.supports >-PASS -moz-padding-end: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-padding-end: _dashed_attribute v. CSS.supports >-PASS -moz-padding-start: _camel_cased_attribute v. CSS.supports >-PASS -moz-padding-start: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-padding-start: _dashed_attribute v. CSS.supports >-PASS -moz-perspective: _camel_cased_attribute v. CSS.supports >-PASS -moz-perspective: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-perspective: _dashed_attribute v. CSS.supports >-PASS -moz-perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS -moz-perspective-origin: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-perspective-origin: _dashed_attribute v. CSS.supports >-PASS -moz-stack-sizing: _camel_cased_attribute v. CSS.supports >-PASS -moz-stack-sizing: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-stack-sizing: _dashed_attribute v. CSS.supports >-PASS -moz-tab-size: _camel_cased_attribute v. CSS.supports >-PASS -moz-tab-size: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-tab-size: _dashed_attribute v. CSS.supports >-PASS -moz-text-align-last: _camel_cased_attribute v. CSS.supports >-PASS -moz-text-align-last: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-text-align-last: _dashed_attribute v. CSS.supports >-PASS -moz-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -moz-text-size-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -moz-transform: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform: _dashed_attribute v. CSS.supports >-PASS -moz-transform-origin: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform-origin: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform-origin: _dashed_attribute v. CSS.supports >-PASS -moz-transform-style: _camel_cased_attribute v. CSS.supports >-PASS -moz-transform-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transform-style: _dashed_attribute v. CSS.supports >-PASS -moz-transition: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition: _dashed_attribute v. CSS.supports >-PASS -moz-transition-delay: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-delay: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-delay: _dashed_attribute v. CSS.supports >-PASS -moz-transition-duration: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-duration: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-duration: _dashed_attribute v. CSS.supports >-PASS -moz-transition-property: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-property: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-property: _dashed_attribute v. CSS.supports >-PASS -moz-transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -moz-transition-timing-function: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-transition-timing-function: _dashed_attribute v. CSS.supports >-PASS -moz-user-focus: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-focus: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-focus: _dashed_attribute v. CSS.supports >-PASS -moz-user-input: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-input: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-input: _dashed_attribute v. CSS.supports >-PASS -moz-user-modify: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-modify: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-modify: _dashed_attribute v. CSS.supports >-PASS -moz-user-select: _camel_cased_attribute v. CSS.supports >-PASS -moz-user-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-user-select: _dashed_attribute v. CSS.supports >-PASS -moz-window-dragging: _camel_cased_attribute v. CSS.supports >-PASS -moz-window-dragging: _webkit_cased_attribute must only exist for -webkit- >-PASS -moz-window-dragging: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-chaining: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-chaining: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-chaining: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit-max: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-limit-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-limit-min: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-points: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-points: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap-points: _dashed_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-type: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zoom-snap-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zoom-snap-type: _dashed_attribute v. CSS.supports >-PASS -ms-content-zooming: _camel_cased_attribute v. CSS.supports >-PASS -ms-content-zooming: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-content-zooming: _dashed_attribute v. CSS.supports >-PASS -ms-flow-from: _camel_cased_attribute v. CSS.supports >-PASS -ms-flow-from: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-flow-from: _dashed_attribute v. CSS.supports >-PASS -ms-flow-into: _camel_cased_attribute v. CSS.supports >-PASS -ms-flow-into: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-flow-into: _dashed_attribute v. CSS.supports >-PASS -ms-font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS -ms-font-feature-settings: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-font-feature-settings: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column-align: _dashed_attribute v. CSS.supports >-PASS -ms-grid-column-span: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-column-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-column-span: _dashed_attribute v. CSS.supports >-PASS -ms-grid-columns: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-columns: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-columns: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row-align: _dashed_attribute v. CSS.supports >-PASS -ms-grid-row-span: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-row-span: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-row-span: _dashed_attribute v. CSS.supports >-PASS -ms-grid-rows: _camel_cased_attribute v. CSS.supports >-PASS -ms-grid-rows: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-grid-rows: _dashed_attribute v. CSS.supports >-PASS -ms-high-contrast-adjust: _camel_cased_attribute v. CSS.supports >-PASS -ms-high-contrast-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-high-contrast-adjust: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-chars: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-chars: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-chars: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-lines: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-lines: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-lines: _dashed_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-zone: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphenate-limit-zone: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphenate-limit-zone: _dashed_attribute v. CSS.supports >-PASS -ms-hyphens: _camel_cased_attribute v. CSS.supports >-PASS -ms-hyphens: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-hyphens: _dashed_attribute v. CSS.supports >-PASS -ms-ime-align: _camel_cased_attribute v. CSS.supports >-PASS -ms-ime-align: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-ime-align: _dashed_attribute v. CSS.supports >-PASS -ms-overflow-style: _camel_cased_attribute v. CSS.supports >-PASS -ms-overflow-style: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-overflow-style: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-chaining: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-chaining: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-chaining: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-x-max: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-x-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-x-min: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-max: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-max: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-y-max: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-min: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-limit-y-min: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-limit-y-min: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-rails: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-rails: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-rails: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-x: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-x: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-points-x: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-y: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-points-y: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-points-y: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-type: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-type: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-type: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-x: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-x: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-x: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-snap-y: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-snap-y: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-snap-y: _dashed_attribute v. CSS.supports >-PASS -ms-scroll-translation: _camel_cased_attribute v. CSS.supports >-PASS -ms-scroll-translation: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-scroll-translation: _dashed_attribute v. CSS.supports >-PASS -ms-text-combine-horizontal: _camel_cased_attribute v. CSS.supports >-PASS -ms-text-combine-horizontal: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-text-combine-horizontal: _dashed_attribute v. CSS.supports >-PASS -ms-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -ms-text-size-adjust: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -ms-touch-select: _camel_cased_attribute v. CSS.supports >-PASS -ms-touch-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-touch-select: _dashed_attribute v. CSS.supports >-PASS -ms-user-select: _camel_cased_attribute v. CSS.supports >-PASS -ms-user-select: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-user-select: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-flow: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-flow: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-flow: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-margin: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-margin: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-margin: _dashed_attribute v. CSS.supports >-PASS -ms-wrap-through: _camel_cased_attribute v. CSS.supports >-PASS -ms-wrap-through: _webkit_cased_attribute must only exist for -webkit- >-PASS -ms-wrap-through: _dashed_attribute v. CSS.supports >-PASS -webkit-align-content: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-content: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-content: _dashed_attribute v. CSS.supports >-PASS -webkit-align-items: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-items: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-items: _dashed_attribute v. CSS.supports >-PASS -webkit-align-self: _camel_cased_attribute v. CSS.supports >-PASS -webkit-align-self: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-align-self: _dashed_attribute v. CSS.supports >-PASS -webkit-animation: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-delay: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-delay: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-delay: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-duration: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-duration: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-duration: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-name: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-name: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-name: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-play-state: _dashed_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-animation-timing-function: _dashed_attribute v. CSS.supports >-PASS -webkit-appearance: _camel_cased_attribute v. CSS.supports >-PASS -webkit-appearance: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-appearance: _dashed_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-backface-visibility: _dashed_attribute v. CSS.supports >-PASS -webkit-background-clip: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-clip: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-clip: _dashed_attribute v. CSS.supports >-PASS -webkit-background-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-background-size: _camel_cased_attribute v. CSS.supports >-PASS -webkit-background-size: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-background-size: _dashed_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-left-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-bottom-right-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-image: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-image: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-image: _dashed_attribute v. CSS.supports >-PASS -webkit-border-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-top-left-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _camel_cased_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-border-top-right-radius: _dashed_attribute v. CSS.supports >-PASS -webkit-box-align: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-align: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-align: _dashed_attribute v. CSS.supports >-PASS -webkit-box-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-box-flex: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-flex: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-flex: _dashed_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-ordinal-group: _dashed_attribute v. CSS.supports >-PASS -webkit-box-orient: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-orient: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-orient: _dashed_attribute v. CSS.supports >-PASS -webkit-box-pack: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-pack: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-pack: _dashed_attribute v. CSS.supports >-PASS -webkit-box-shadow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-shadow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-shadow: _dashed_attribute v. CSS.supports >-PASS -webkit-box-sizing: _camel_cased_attribute v. CSS.supports >-PASS -webkit-box-sizing: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-box-sizing: _dashed_attribute v. CSS.supports >-PASS -webkit-filter: _camel_cased_attribute v. CSS.supports >-PASS -webkit-filter: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-filter: _dashed_attribute v. CSS.supports >-PASS -webkit-flex: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-basis: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-basis: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-basis: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-direction: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-direction: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-direction: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-flow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-flow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-flow: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-grow: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-grow: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-grow: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-shrink: _dashed_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _camel_cased_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-flex-wrap: _dashed_attribute v. CSS.supports >-PASS -webkit-justify-content: _camel_cased_attribute v. CSS.supports >-PASS -webkit-justify-content: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-justify-content: _dashed_attribute v. CSS.supports >-PASS -webkit-line-clamp: _camel_cased_attribute v. CSS.supports >-PASS -webkit-line-clamp: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-line-clamp: _dashed_attribute v. CSS.supports >-PASS -webkit-mask: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-clip: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-clip: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-clip: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-composite: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-composite: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-composite: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-image: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-image: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-image: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-x: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-position-y: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-repeat: _dashed_attribute v. CSS.supports >-PASS -webkit-mask-size: _camel_cased_attribute v. CSS.supports >-PASS -webkit-mask-size: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-mask-size: _dashed_attribute v. CSS.supports >-PASS -webkit-order: _camel_cased_attribute v. CSS.supports >-PASS -webkit-order: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-order: _dashed_attribute v. CSS.supports >-PASS -webkit-perspective: _camel_cased_attribute v. CSS.supports >-PASS -webkit-perspective: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-perspective: _dashed_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-color: _dashed_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _camel_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-text-stroke-width: _dashed_attribute v. CSS.supports >-PASS -webkit-transform: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform: _dashed_attribute v. CSS.supports >-PASS -webkit-transform-origin: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform-origin: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform-origin: _dashed_attribute v. CSS.supports >-PASS -webkit-transform-style: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transform-style: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transform-style: _dashed_attribute v. CSS.supports >-PASS -webkit-transition: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-delay: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-delay: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-delay: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-duration: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-duration: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-duration: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-property: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-property: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-property: _dashed_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-transition-timing-function: _dashed_attribute v. CSS.supports >-PASS -webkit-user-select: _camel_cased_attribute v. CSS.supports >-PASS -webkit-user-select: _webkit_cased_attribute v. CSS.supports >-PASS -webkit-user-select: _dashed_attribute v. CSS.supports >-PASS align-content: _camel_cased_attribute v. CSS.supports >-PASS align-content: _dashed_attribute v. CSS.supports >-PASS align-items: _camel_cased_attribute v. CSS.supports >-PASS align-items: _dashed_attribute v. CSS.supports >-PASS align-self: _camel_cased_attribute v. CSS.supports >-PASS align-self: _dashed_attribute v. CSS.supports >-PASS alignment-baseline: _camel_cased_attribute v. CSS.supports >-PASS alignment-baseline: _dashed_attribute v. CSS.supports >-PASS all: _camel_cased_attribute v. CSS.supports >-PASS alt: _camel_cased_attribute v. CSS.supports >-PASS animation: _camel_cased_attribute v. CSS.supports >-PASS animation-delay: _camel_cased_attribute v. CSS.supports >-PASS animation-delay: _dashed_attribute v. CSS.supports >-PASS animation-direction: _camel_cased_attribute v. CSS.supports >-PASS animation-direction: _dashed_attribute v. CSS.supports >-PASS animation-duration: _camel_cased_attribute v. CSS.supports >-PASS animation-duration: _dashed_attribute v. CSS.supports >-PASS animation-fill-mode: _camel_cased_attribute v. CSS.supports >-PASS animation-fill-mode: _dashed_attribute v. CSS.supports >-PASS animation-iteration-count: _camel_cased_attribute v. CSS.supports >-PASS animation-iteration-count: _dashed_attribute v. CSS.supports >-PASS animation-name: _camel_cased_attribute v. CSS.supports >-PASS animation-name: _dashed_attribute v. CSS.supports >-PASS animation-play-state: _camel_cased_attribute v. CSS.supports >-PASS animation-play-state: _dashed_attribute v. CSS.supports >-PASS animation-timing-function: _camel_cased_attribute v. CSS.supports >-PASS animation-timing-function: _dashed_attribute v. CSS.supports >-PASS appearance: _camel_cased_attribute v. CSS.supports >-PASS backdrop-filter: _camel_cased_attribute v. CSS.supports >-PASS backdrop-filter: _dashed_attribute v. CSS.supports >-PASS backface-visibility: _camel_cased_attribute v. CSS.supports >-PASS backface-visibility: _dashed_attribute v. CSS.supports >-PASS background: _camel_cased_attribute v. CSS.supports >-PASS background-attachment: _camel_cased_attribute v. CSS.supports >-PASS background-attachment: _dashed_attribute v. CSS.supports >-PASS background-blend-mode: _camel_cased_attribute v. CSS.supports >-PASS background-blend-mode: _dashed_attribute v. CSS.supports >-PASS background-clip: _camel_cased_attribute v. CSS.supports >-PASS background-clip: _dashed_attribute v. CSS.supports >-PASS background-color: _camel_cased_attribute v. CSS.supports >-PASS background-color: _dashed_attribute v. CSS.supports >-PASS background-image: _camel_cased_attribute v. CSS.supports >-PASS background-image: _dashed_attribute v. CSS.supports >-PASS background-origin: _camel_cased_attribute v. CSS.supports >-PASS background-origin: _dashed_attribute v. CSS.supports >-PASS background-position: _camel_cased_attribute v. CSS.supports >-PASS background-position: _dashed_attribute v. CSS.supports >-PASS background-position-x: _camel_cased_attribute v. CSS.supports >-PASS background-position-x: _dashed_attribute v. CSS.supports >-PASS background-position-y: _camel_cased_attribute v. CSS.supports >-PASS background-position-y: _dashed_attribute v. CSS.supports >-PASS background-repeat: _camel_cased_attribute v. CSS.supports >-PASS background-repeat: _dashed_attribute v. CSS.supports >-PASS background-repeat-x: _camel_cased_attribute v. CSS.supports >-PASS background-repeat-x: _dashed_attribute v. CSS.supports >-PASS background-repeat-y: _camel_cased_attribute v. CSS.supports >-PASS background-repeat-y: _dashed_attribute v. CSS.supports >-PASS background-size: _camel_cased_attribute v. CSS.supports >-PASS background-size: _dashed_attribute v. CSS.supports >-PASS baseline-shift: _camel_cased_attribute v. CSS.supports >-PASS baseline-shift: _dashed_attribute v. CSS.supports >-PASS block-size: _camel_cased_attribute v. CSS.supports >-PASS block-size: _dashed_attribute v. CSS.supports >-PASS border: _camel_cased_attribute v. CSS.supports >-PASS border-block: _camel_cased_attribute v. CSS.supports >-PASS border-block: _dashed_attribute v. CSS.supports >-PASS border-block-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-color: _dashed_attribute v. CSS.supports >-PASS border-block-end: _camel_cased_attribute v. CSS.supports >-PASS border-block-end: _dashed_attribute v. CSS.supports >-PASS border-block-end-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-color: _dashed_attribute v. CSS.supports >-PASS border-block-end-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-style: _dashed_attribute v. CSS.supports >-PASS border-block-end-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-end-width: _dashed_attribute v. CSS.supports >-PASS border-block-start: _camel_cased_attribute v. CSS.supports >-PASS border-block-start: _dashed_attribute v. CSS.supports >-PASS border-block-start-color: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-color: _dashed_attribute v. CSS.supports >-PASS border-block-start-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-style: _dashed_attribute v. CSS.supports >-PASS border-block-start-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-start-width: _dashed_attribute v. CSS.supports >-PASS border-block-style: _camel_cased_attribute v. CSS.supports >-PASS border-block-style: _dashed_attribute v. CSS.supports >-PASS border-block-width: _camel_cased_attribute v. CSS.supports >-PASS border-block-width: _dashed_attribute v. CSS.supports >-PASS border-bottom: _camel_cased_attribute v. CSS.supports >-PASS border-bottom: _dashed_attribute v. CSS.supports >-PASS border-bottom-color: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-color: _dashed_attribute v. CSS.supports >-PASS border-bottom-left-radius: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-left-radius: _dashed_attribute v. CSS.supports >-PASS border-bottom-right-radius: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-right-radius: _dashed_attribute v. CSS.supports >-PASS border-bottom-style: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-style: _dashed_attribute v. CSS.supports >-PASS border-bottom-width: _camel_cased_attribute v. CSS.supports >-PASS border-bottom-width: _dashed_attribute v. CSS.supports >-PASS border-collapse: _camel_cased_attribute v. CSS.supports >-PASS border-collapse: _dashed_attribute v. CSS.supports >-PASS border-color: _camel_cased_attribute v. CSS.supports >-PASS border-color: _dashed_attribute v. CSS.supports >-PASS border-end-end-radius: _camel_cased_attribute v. CSS.supports >-PASS border-end-end-radius: _dashed_attribute v. CSS.supports >-PASS border-end-start-radius: _camel_cased_attribute v. CSS.supports >-PASS border-end-start-radius: _dashed_attribute v. CSS.supports >-PASS border-image: _camel_cased_attribute v. CSS.supports >-PASS border-image: _dashed_attribute v. CSS.supports >-PASS border-image-outset: _camel_cased_attribute v. CSS.supports >-PASS border-image-outset: _dashed_attribute v. CSS.supports >-PASS border-image-repeat: _camel_cased_attribute v. CSS.supports >-PASS border-image-repeat: _dashed_attribute v. CSS.supports >-PASS border-image-slice: _camel_cased_attribute v. CSS.supports >-PASS border-image-slice: _dashed_attribute v. CSS.supports >-PASS border-image-source: _camel_cased_attribute v. CSS.supports >-PASS border-image-source: _dashed_attribute v. CSS.supports >-PASS border-image-width: _camel_cased_attribute v. CSS.supports >-PASS border-image-width: _dashed_attribute v. CSS.supports >-PASS border-inline: _camel_cased_attribute v. CSS.supports >-PASS border-inline: _dashed_attribute v. CSS.supports >-PASS border-inline-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-color: _dashed_attribute v. CSS.supports >-PASS border-inline-end: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end: _dashed_attribute v. CSS.supports >-PASS border-inline-end-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-color: _dashed_attribute v. CSS.supports >-PASS border-inline-end-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-style: _dashed_attribute v. CSS.supports >-PASS border-inline-end-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-end-width: _dashed_attribute v. CSS.supports >-PASS border-inline-start: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start: _dashed_attribute v. CSS.supports >-PASS border-inline-start-color: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-color: _dashed_attribute v. CSS.supports >-PASS border-inline-start-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-style: _dashed_attribute v. CSS.supports >-PASS border-inline-start-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-start-width: _dashed_attribute v. CSS.supports >-PASS border-inline-style: _camel_cased_attribute v. CSS.supports >-PASS border-inline-style: _dashed_attribute v. CSS.supports >-PASS border-inline-width: _camel_cased_attribute v. CSS.supports >-PASS border-inline-width: _dashed_attribute v. CSS.supports >-PASS border-left: _camel_cased_attribute v. CSS.supports >-PASS border-left: _dashed_attribute v. CSS.supports >-PASS border-left-color: _camel_cased_attribute v. CSS.supports >-PASS border-left-color: _dashed_attribute v. CSS.supports >-PASS border-left-style: _camel_cased_attribute v. CSS.supports >-PASS border-left-style: _dashed_attribute v. CSS.supports >-PASS border-left-width: _camel_cased_attribute v. CSS.supports >-PASS border-left-width: _dashed_attribute v. CSS.supports >-PASS border-radius: _camel_cased_attribute v. CSS.supports >-PASS border-radius: _dashed_attribute v. CSS.supports >-PASS border-right: _camel_cased_attribute v. CSS.supports >-PASS border-right: _dashed_attribute v. CSS.supports >-PASS border-right-color: _camel_cased_attribute v. CSS.supports >-PASS border-right-color: _dashed_attribute v. CSS.supports >-PASS border-right-style: _camel_cased_attribute v. CSS.supports >-PASS border-right-style: _dashed_attribute v. CSS.supports >-PASS border-right-width: _camel_cased_attribute v. CSS.supports >-PASS border-right-width: _dashed_attribute v. CSS.supports >-PASS border-spacing: _camel_cased_attribute v. CSS.supports >-PASS border-spacing: _dashed_attribute v. CSS.supports >-PASS border-start-end-radius: _camel_cased_attribute v. CSS.supports >-PASS border-start-end-radius: _dashed_attribute v. CSS.supports >-PASS border-start-start-radius: _camel_cased_attribute v. CSS.supports >-PASS border-start-start-radius: _dashed_attribute v. CSS.supports >-PASS border-style: _camel_cased_attribute v. CSS.supports >-PASS border-style: _dashed_attribute v. CSS.supports >-PASS border-top: _camel_cased_attribute v. CSS.supports >-PASS border-top: _dashed_attribute v. CSS.supports >-PASS border-top-color: _camel_cased_attribute v. CSS.supports >-PASS border-top-color: _dashed_attribute v. CSS.supports >-PASS border-top-left-radius: _camel_cased_attribute v. CSS.supports >-PASS border-top-left-radius: _dashed_attribute v. CSS.supports >-PASS border-top-right-radius: _camel_cased_attribute v. CSS.supports >-PASS border-top-right-radius: _dashed_attribute v. CSS.supports >-PASS border-top-style: _camel_cased_attribute v. CSS.supports >-PASS border-top-style: _dashed_attribute v. CSS.supports >-PASS border-top-width: _camel_cased_attribute v. CSS.supports >-PASS border-top-width: _dashed_attribute v. CSS.supports >-PASS border-width: _camel_cased_attribute v. CSS.supports >-PASS border-width: _dashed_attribute v. CSS.supports >-PASS bottom: _camel_cased_attribute v. CSS.supports >-PASS box-decoration-break: _camel_cased_attribute v. CSS.supports >-PASS box-decoration-break: _dashed_attribute v. CSS.supports >-PASS box-shadow: _camel_cased_attribute v. CSS.supports >-PASS box-shadow: _dashed_attribute v. CSS.supports >-PASS box-sizing: _camel_cased_attribute v. CSS.supports >-PASS box-sizing: _dashed_attribute v. CSS.supports >-PASS break-after: _camel_cased_attribute v. CSS.supports >-PASS break-after: _dashed_attribute v. CSS.supports >-PASS break-before: _camel_cased_attribute v. CSS.supports >-PASS break-before: _dashed_attribute v. CSS.supports >-PASS break-inside: _camel_cased_attribute v. CSS.supports >-PASS break-inside: _dashed_attribute v. CSS.supports >-PASS buffered-rendering: _camel_cased_attribute v. CSS.supports >-PASS buffered-rendering: _dashed_attribute v. CSS.supports >-PASS caption-side: _camel_cased_attribute v. CSS.supports >-PASS caption-side: _dashed_attribute v. CSS.supports >-PASS caret-color: _camel_cased_attribute v. CSS.supports >-PASS caret-color: _dashed_attribute v. CSS.supports >-PASS clear: _camel_cased_attribute v. CSS.supports >-PASS clip: _camel_cased_attribute v. CSS.supports >-PASS clip-path: _camel_cased_attribute v. CSS.supports >-PASS clip-path: _dashed_attribute v. CSS.supports >-PASS clip-rule: _camel_cased_attribute v. CSS.supports >-PASS clip-rule: _dashed_attribute v. CSS.supports >-PASS color: _camel_cased_attribute v. CSS.supports >-PASS color-adjust: _camel_cased_attribute v. CSS.supports >-PASS color-adjust: _dashed_attribute v. CSS.supports >-PASS color-interpolation: _camel_cased_attribute v. CSS.supports >-PASS color-interpolation: _dashed_attribute v. CSS.supports >-PASS color-interpolation-filters: _camel_cased_attribute v. CSS.supports >-PASS color-interpolation-filters: _dashed_attribute v. CSS.supports >-PASS color-profile: _camel_cased_attribute v. CSS.supports >-PASS color-profile: _dashed_attribute v. CSS.supports >-PASS color-rendering: _camel_cased_attribute v. CSS.supports >-PASS color-rendering: _dashed_attribute v. CSS.supports >-PASS color-scheme: _camel_cased_attribute v. CSS.supports >-PASS color-scheme: _dashed_attribute v. CSS.supports >-PASS column-count: _camel_cased_attribute v. CSS.supports >-PASS column-count: _dashed_attribute v. CSS.supports >-PASS column-fill: _camel_cased_attribute v. CSS.supports >-PASS column-fill: _dashed_attribute v. CSS.supports >-PASS column-gap: _camel_cased_attribute v. CSS.supports >-PASS column-gap: _dashed_attribute v. CSS.supports >-PASS column-progression: _camel_cased_attribute v. CSS.supports >-PASS column-progression: _dashed_attribute v. CSS.supports >-PASS column-rule: _camel_cased_attribute v. CSS.supports >-PASS column-rule: _dashed_attribute v. CSS.supports >-PASS column-rule-color: _camel_cased_attribute v. CSS.supports >-PASS column-rule-color: _dashed_attribute v. CSS.supports >-PASS column-rule-style: _camel_cased_attribute v. CSS.supports >-PASS column-rule-style: _dashed_attribute v. CSS.supports >-PASS column-rule-width: _camel_cased_attribute v. CSS.supports >-PASS column-rule-width: _dashed_attribute v. CSS.supports >-PASS column-span: _camel_cased_attribute v. CSS.supports >-PASS column-span: _dashed_attribute v. CSS.supports >-PASS column-width: _camel_cased_attribute v. CSS.supports >-PASS column-width: _dashed_attribute v. CSS.supports >-PASS columns: _camel_cased_attribute v. CSS.supports >-PASS contain: _camel_cased_attribute v. CSS.supports >-PASS contain-intrinsic-size: _camel_cased_attribute v. CSS.supports >-PASS contain-intrinsic-size: _dashed_attribute v. CSS.supports >-PASS content: _camel_cased_attribute v. CSS.supports >-PASS content-visibility: _camel_cased_attribute v. CSS.supports >-PASS content-visibility: _dashed_attribute v. CSS.supports >-PASS counter-increment: _camel_cased_attribute v. CSS.supports >-PASS counter-increment: _dashed_attribute v. CSS.supports >-PASS counter-reset: _camel_cased_attribute v. CSS.supports >-PASS counter-reset: _dashed_attribute v. CSS.supports >-PASS counter-set: _camel_cased_attribute v. CSS.supports >-PASS counter-set: _dashed_attribute v. CSS.supports >-PASS cursor: _camel_cased_attribute v. CSS.supports >-PASS cx: _camel_cased_attribute v. CSS.supports >-PASS cy: _camel_cased_attribute v. CSS.supports >-PASS d: _camel_cased_attribute v. CSS.supports >-PASS direction: _camel_cased_attribute v. CSS.supports >-PASS display: _camel_cased_attribute v. CSS.supports >-PASS dominant-baseline: _camel_cased_attribute v. CSS.supports >-PASS dominant-baseline: _dashed_attribute v. CSS.supports >-PASS empty-cells: _camel_cased_attribute v. CSS.supports >-PASS empty-cells: _dashed_attribute v. CSS.supports >-PASS enable-background: _camel_cased_attribute v. CSS.supports >-PASS enable-background: _dashed_attribute v. CSS.supports >-PASS fill: _camel_cased_attribute v. CSS.supports >-PASS fill-opacity: _camel_cased_attribute v. CSS.supports >-PASS fill-opacity: _dashed_attribute v. CSS.supports >-PASS fill-rule: _camel_cased_attribute v. CSS.supports >-PASS fill-rule: _dashed_attribute v. CSS.supports >-PASS filter: _camel_cased_attribute v. CSS.supports >-PASS flex: _camel_cased_attribute v. CSS.supports >-PASS flex-basis: _camel_cased_attribute v. CSS.supports >-PASS flex-basis: _dashed_attribute v. CSS.supports >-PASS flex-direction: _camel_cased_attribute v. CSS.supports >-PASS flex-direction: _dashed_attribute v. CSS.supports >-PASS flex-flow: _camel_cased_attribute v. CSS.supports >-PASS flex-flow: _dashed_attribute v. CSS.supports >-PASS flex-grow: _camel_cased_attribute v. CSS.supports >-PASS flex-grow: _dashed_attribute v. CSS.supports >-PASS flex-shrink: _camel_cased_attribute v. CSS.supports >-PASS flex-shrink: _dashed_attribute v. CSS.supports >-PASS flex-wrap: _camel_cased_attribute v. CSS.supports >-PASS flex-wrap: _dashed_attribute v. CSS.supports >-PASS float: _camel_cased_attribute v. CSS.supports >-PASS flood-color: _camel_cased_attribute v. CSS.supports >-PASS flood-color: _dashed_attribute v. CSS.supports >-PASS flood-opacity: _camel_cased_attribute v. CSS.supports >-PASS flood-opacity: _dashed_attribute v. CSS.supports >-PASS font: _camel_cased_attribute v. CSS.supports >-PASS font-display: _camel_cased_attribute v. CSS.supports >-PASS font-display: _dashed_attribute v. CSS.supports >-PASS font-family: _camel_cased_attribute v. CSS.supports >-PASS font-family: _dashed_attribute v. CSS.supports >-PASS font-feature-settings: _camel_cased_attribute v. CSS.supports >-PASS font-feature-settings: _dashed_attribute v. CSS.supports >-PASS font-kerning: _camel_cased_attribute v. CSS.supports >-PASS font-kerning: _dashed_attribute v. CSS.supports >-PASS font-language-override: _camel_cased_attribute v. CSS.supports >-PASS font-language-override: _dashed_attribute v. CSS.supports >-PASS font-optical-sizing: _camel_cased_attribute v. CSS.supports >-PASS font-optical-sizing: _dashed_attribute v. CSS.supports >-PASS font-size: _camel_cased_attribute v. CSS.supports >-PASS font-size: _dashed_attribute v. CSS.supports >-PASS font-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS font-size-adjust: _dashed_attribute v. CSS.supports >-PASS font-stretch: _camel_cased_attribute v. CSS.supports >-PASS font-stretch: _dashed_attribute v. CSS.supports >-PASS font-style: _camel_cased_attribute v. CSS.supports >-PASS font-style: _dashed_attribute v. CSS.supports >-PASS font-synthesis: _camel_cased_attribute v. CSS.supports >-PASS font-synthesis: _dashed_attribute v. CSS.supports >-PASS font-variant: _camel_cased_attribute v. CSS.supports >-PASS font-variant: _dashed_attribute v. CSS.supports >-PASS font-variant-alternates: _camel_cased_attribute v. CSS.supports >-PASS font-variant-alternates: _dashed_attribute v. CSS.supports >-PASS font-variant-caps: _camel_cased_attribute v. CSS.supports >-PASS font-variant-caps: _dashed_attribute v. CSS.supports >-PASS font-variant-east-asian: _camel_cased_attribute v. CSS.supports >-PASS font-variant-east-asian: _dashed_attribute v. CSS.supports >-PASS font-variant-ligatures: _camel_cased_attribute v. CSS.supports >-PASS font-variant-ligatures: _dashed_attribute v. CSS.supports >-PASS font-variant-numeric: _camel_cased_attribute v. CSS.supports >-PASS font-variant-numeric: _dashed_attribute v. CSS.supports >-PASS font-variant-position: _camel_cased_attribute v. CSS.supports >-PASS font-variant-position: _dashed_attribute v. CSS.supports >-PASS font-variation-settings: _camel_cased_attribute v. CSS.supports >-PASS font-variation-settings: _dashed_attribute v. CSS.supports >-PASS font-weight: _camel_cased_attribute v. CSS.supports >-PASS font-weight: _dashed_attribute v. CSS.supports >-PASS gap: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-horizontal: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-horizontal: _dashed_attribute v. CSS.supports >-PASS glyph-orientation-vertical: _camel_cased_attribute v. CSS.supports >-PASS glyph-orientation-vertical: _dashed_attribute v. CSS.supports >-PASS grid: _camel_cased_attribute v. CSS.supports >-PASS grid-area: _camel_cased_attribute v. CSS.supports >-PASS grid-area: _dashed_attribute v. CSS.supports >-PASS grid-auto-columns: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-columns: _dashed_attribute v. CSS.supports >-PASS grid-auto-flow: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-flow: _dashed_attribute v. CSS.supports >-PASS grid-auto-rows: _camel_cased_attribute v. CSS.supports >-PASS grid-auto-rows: _dashed_attribute v. CSS.supports >-PASS grid-column: _camel_cased_attribute v. CSS.supports >-PASS grid-column: _dashed_attribute v. CSS.supports >-PASS grid-column-end: _camel_cased_attribute v. CSS.supports >-PASS grid-column-end: _dashed_attribute v. CSS.supports >-PASS grid-column-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-column-gap: _dashed_attribute v. CSS.supports >-PASS grid-column-start: _camel_cased_attribute v. CSS.supports >-PASS grid-column-start: _dashed_attribute v. CSS.supports >-PASS grid-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-gap: _dashed_attribute v. CSS.supports >-PASS grid-row: _camel_cased_attribute v. CSS.supports >-PASS grid-row: _dashed_attribute v. CSS.supports >-PASS grid-row-end: _camel_cased_attribute v. CSS.supports >-PASS grid-row-end: _dashed_attribute v. CSS.supports >-PASS grid-row-gap: _camel_cased_attribute v. CSS.supports >-PASS grid-row-gap: _dashed_attribute v. CSS.supports >-PASS grid-row-start: _camel_cased_attribute v. CSS.supports >-PASS grid-row-start: _dashed_attribute v. CSS.supports >-PASS grid-template: _camel_cased_attribute v. CSS.supports >-PASS grid-template: _dashed_attribute v. CSS.supports >-PASS grid-template-areas: _camel_cased_attribute v. CSS.supports >-PASS grid-template-areas: _dashed_attribute v. CSS.supports >-PASS grid-template-columns: _camel_cased_attribute v. CSS.supports >-PASS grid-template-columns: _dashed_attribute v. CSS.supports >-PASS grid-template-rows: _camel_cased_attribute v. CSS.supports >-PASS grid-template-rows: _dashed_attribute v. CSS.supports >-PASS hanging-punctuation: _camel_cased_attribute v. CSS.supports >-PASS hanging-punctuation: _dashed_attribute v. CSS.supports >-PASS height: _camel_cased_attribute v. CSS.supports >-PASS hyphens: _camel_cased_attribute v. CSS.supports >-PASS image-orientation: _camel_cased_attribute v. CSS.supports >-PASS image-orientation: _dashed_attribute v. CSS.supports >-PASS image-rendering: _camel_cased_attribute v. CSS.supports >-PASS image-rendering: _dashed_attribute v. CSS.supports >-PASS ime-mode: _camel_cased_attribute v. CSS.supports >-PASS ime-mode: _dashed_attribute v. CSS.supports >-PASS inherits: _camel_cased_attribute v. CSS.supports >-PASS initial-value: _camel_cased_attribute v. CSS.supports >-PASS initial-value: _dashed_attribute v. CSS.supports >-PASS inline-size: _camel_cased_attribute v. CSS.supports >-PASS inline-size: _dashed_attribute v. CSS.supports >-PASS inset: _camel_cased_attribute v. CSS.supports >-PASS inset-block: _camel_cased_attribute v. CSS.supports >-PASS inset-block: _dashed_attribute v. CSS.supports >-PASS inset-block-end: _camel_cased_attribute v. CSS.supports >-PASS inset-block-end: _dashed_attribute v. CSS.supports >-PASS inset-block-start: _camel_cased_attribute v. CSS.supports >-PASS inset-block-start: _dashed_attribute v. CSS.supports >-PASS inset-inline: _camel_cased_attribute v. CSS.supports >-PASS inset-inline: _dashed_attribute v. CSS.supports >-PASS inset-inline-end: _camel_cased_attribute v. CSS.supports >-PASS inset-inline-end: _dashed_attribute v. CSS.supports >-PASS inset-inline-start: _camel_cased_attribute v. CSS.supports >-PASS inset-inline-start: _dashed_attribute v. CSS.supports >-PASS internal-text-autosizing-status: _camel_cased_attribute v. CSS.supports >-PASS internal-text-autosizing-status: _dashed_attribute v. CSS.supports >-PASS isolation: _camel_cased_attribute v. CSS.supports >-PASS justify-content: _camel_cased_attribute v. CSS.supports >-PASS justify-content: _dashed_attribute v. CSS.supports >-PASS justify-items: _camel_cased_attribute v. CSS.supports >-PASS justify-items: _dashed_attribute v. CSS.supports >-PASS justify-self: _camel_cased_attribute v. CSS.supports >-PASS justify-self: _dashed_attribute v. CSS.supports >-PASS kerning: _camel_cased_attribute v. CSS.supports >-PASS layout-grid: _camel_cased_attribute v. CSS.supports >-PASS layout-grid: _dashed_attribute v. CSS.supports >-PASS layout-grid-char: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-char: _dashed_attribute v. CSS.supports >-PASS layout-grid-line: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-line: _dashed_attribute v. CSS.supports >-PASS layout-grid-mode: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-mode: _dashed_attribute v. CSS.supports >-PASS layout-grid-type: _camel_cased_attribute v. CSS.supports >-PASS layout-grid-type: _dashed_attribute v. CSS.supports >-PASS left: _camel_cased_attribute v. CSS.supports >-PASS letter-spacing: _camel_cased_attribute v. CSS.supports >-PASS letter-spacing: _dashed_attribute v. CSS.supports >-PASS lighting-color: _camel_cased_attribute v. CSS.supports >-PASS lighting-color: _dashed_attribute v. CSS.supports >-PASS line-break: _camel_cased_attribute v. CSS.supports >-PASS line-break: _dashed_attribute v. CSS.supports >-PASS line-height: _camel_cased_attribute v. CSS.supports >-PASS line-height: _dashed_attribute v. CSS.supports >-PASS list-style: _camel_cased_attribute v. CSS.supports >-PASS list-style: _dashed_attribute v. CSS.supports >-PASS list-style-image: _camel_cased_attribute v. CSS.supports >-PASS list-style-image: _dashed_attribute v. CSS.supports >-PASS list-style-position: _camel_cased_attribute v. CSS.supports >-PASS list-style-position: _dashed_attribute v. CSS.supports >-PASS list-style-type: _camel_cased_attribute v. CSS.supports >-PASS list-style-type: _dashed_attribute v. CSS.supports >-PASS margin: _camel_cased_attribute v. CSS.supports >-PASS margin-block: _camel_cased_attribute v. CSS.supports >-PASS margin-block: _dashed_attribute v. CSS.supports >-PASS margin-block-end: _camel_cased_attribute v. CSS.supports >-PASS margin-block-end: _dashed_attribute v. CSS.supports >-PASS margin-block-start: _camel_cased_attribute v. CSS.supports >-PASS margin-block-start: _dashed_attribute v. CSS.supports >-PASS margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS margin-bottom: _dashed_attribute v. CSS.supports >-PASS margin-inline: _camel_cased_attribute v. CSS.supports >-PASS margin-inline: _dashed_attribute v. CSS.supports >-PASS margin-inline-end: _camel_cased_attribute v. CSS.supports >-PASS margin-inline-end: _dashed_attribute v. CSS.supports >-PASS margin-inline-start: _camel_cased_attribute v. CSS.supports >-PASS margin-inline-start: _dashed_attribute v. CSS.supports >-PASS margin-left: _camel_cased_attribute v. CSS.supports >-PASS margin-left: _dashed_attribute v. CSS.supports >-PASS margin-right: _camel_cased_attribute v. CSS.supports >-PASS margin-right: _dashed_attribute v. CSS.supports >-PASS margin-top: _camel_cased_attribute v. CSS.supports >-PASS margin-top: _dashed_attribute v. CSS.supports >-PASS marker: _camel_cased_attribute v. CSS.supports >-PASS marker-end: _camel_cased_attribute v. CSS.supports >-PASS marker-end: _dashed_attribute v. CSS.supports >-PASS marker-mid: _camel_cased_attribute v. CSS.supports >-PASS marker-mid: _dashed_attribute v. CSS.supports >-PASS marker-offset: _camel_cased_attribute v. CSS.supports >-PASS marker-offset: _dashed_attribute v. CSS.supports >-PASS marker-start: _camel_cased_attribute v. CSS.supports >-PASS marker-start: _dashed_attribute v. CSS.supports >-PASS mask: _camel_cased_attribute v. CSS.supports >-PASS mask-clip: _camel_cased_attribute v. CSS.supports >-PASS mask-clip: _dashed_attribute v. CSS.supports >-PASS mask-composite: _camel_cased_attribute v. CSS.supports >-PASS mask-composite: _dashed_attribute v. CSS.supports >-PASS mask-image: _camel_cased_attribute v. CSS.supports >-PASS mask-image: _dashed_attribute v. CSS.supports >-PASS mask-mode: _camel_cased_attribute v. CSS.supports >-PASS mask-mode: _dashed_attribute v. CSS.supports >-PASS mask-origin: _camel_cased_attribute v. CSS.supports >-PASS mask-origin: _dashed_attribute v. CSS.supports >-PASS mask-position: _camel_cased_attribute v. CSS.supports >-PASS mask-position: _dashed_attribute v. CSS.supports >-PASS mask-position-x: _camel_cased_attribute v. CSS.supports >-PASS mask-position-x: _dashed_attribute v. CSS.supports >-PASS mask-position-y: _camel_cased_attribute v. CSS.supports >-PASS mask-position-y: _dashed_attribute v. CSS.supports >-PASS mask-repeat: _camel_cased_attribute v. CSS.supports >-PASS mask-repeat: _dashed_attribute v. CSS.supports >-PASS mask-size: _camel_cased_attribute v. CSS.supports >-PASS mask-size: _dashed_attribute v. CSS.supports >-PASS mask-type: _camel_cased_attribute v. CSS.supports >-PASS mask-type: _dashed_attribute v. CSS.supports >-PASS max-block-size: _camel_cased_attribute v. CSS.supports >-PASS max-block-size: _dashed_attribute v. CSS.supports >-PASS max-height: _camel_cased_attribute v. CSS.supports >-PASS max-height: _dashed_attribute v. CSS.supports >-PASS max-inline-size: _camel_cased_attribute v. CSS.supports >-PASS max-inline-size: _dashed_attribute v. CSS.supports >-PASS max-width: _camel_cased_attribute v. CSS.supports >-PASS max-width: _dashed_attribute v. CSS.supports >-PASS max-zoom: _camel_cased_attribute v. CSS.supports >-PASS max-zoom: _dashed_attribute v. CSS.supports >-PASS min-block-size: _camel_cased_attribute v. CSS.supports >-PASS min-block-size: _dashed_attribute v. CSS.supports >-PASS min-height: _camel_cased_attribute v. CSS.supports >-PASS min-height: _dashed_attribute v. CSS.supports >-PASS min-inline-size: _camel_cased_attribute v. CSS.supports >-PASS min-inline-size: _dashed_attribute v. CSS.supports >-PASS min-width: _camel_cased_attribute v. CSS.supports >-PASS min-width: _dashed_attribute v. CSS.supports >-PASS min-zoom: _camel_cased_attribute v. CSS.supports >-PASS min-zoom: _dashed_attribute v. CSS.supports >-PASS mix-blend-mode: _camel_cased_attribute v. CSS.supports >-PASS mix-blend-mode: _dashed_attribute v. CSS.supports >-PASS motion: _camel_cased_attribute v. CSS.supports >-PASS motion-offset: _camel_cased_attribute v. CSS.supports >-PASS motion-offset: _dashed_attribute v. CSS.supports >-PASS motion-path: _camel_cased_attribute v. CSS.supports >-PASS motion-path: _dashed_attribute v. CSS.supports >-PASS motion-rotation: _camel_cased_attribute v. CSS.supports >-PASS motion-rotation: _dashed_attribute v. CSS.supports >-PASS object-fit: _camel_cased_attribute v. CSS.supports >-PASS object-fit: _dashed_attribute v. CSS.supports >-PASS object-position: _camel_cased_attribute v. CSS.supports >-PASS object-position: _dashed_attribute v. CSS.supports >-PASS offset: _camel_cased_attribute v. CSS.supports >-PASS offset-anchor: _camel_cased_attribute v. CSS.supports >-PASS offset-anchor: _dashed_attribute v. CSS.supports >-PASS offset-block-end: _camel_cased_attribute v. CSS.supports >-PASS offset-block-end: _dashed_attribute v. CSS.supports >-PASS offset-block-start: _camel_cased_attribute v. CSS.supports >-PASS offset-block-start: _dashed_attribute v. CSS.supports >-PASS offset-distance: _camel_cased_attribute v. CSS.supports >-PASS offset-distance: _dashed_attribute v. CSS.supports >-PASS offset-inline-end: _camel_cased_attribute v. CSS.supports >-PASS offset-inline-end: _dashed_attribute v. CSS.supports >-PASS offset-inline-start: _camel_cased_attribute v. CSS.supports >-PASS offset-inline-start: _dashed_attribute v. CSS.supports >-PASS offset-path: _camel_cased_attribute v. CSS.supports >-PASS offset-path: _dashed_attribute v. CSS.supports >-PASS offset-rotate: _camel_cased_attribute v. CSS.supports >-PASS offset-rotate: _dashed_attribute v. CSS.supports >-PASS offset-rotation: _camel_cased_attribute v. CSS.supports >-PASS offset-rotation: _dashed_attribute v. CSS.supports >-PASS opacity: _camel_cased_attribute v. CSS.supports >-PASS order: _camel_cased_attribute v. CSS.supports >-PASS orientation: _camel_cased_attribute v. CSS.supports >-PASS orphans: _camel_cased_attribute v. CSS.supports >-PASS outline: _camel_cased_attribute v. CSS.supports >-PASS outline-color: _camel_cased_attribute v. CSS.supports >-PASS outline-color: _dashed_attribute v. CSS.supports >-PASS outline-offset: _camel_cased_attribute v. CSS.supports >-PASS outline-offset: _dashed_attribute v. CSS.supports >-PASS outline-style: _camel_cased_attribute v. CSS.supports >-PASS outline-style: _dashed_attribute v. CSS.supports >-PASS outline-width: _camel_cased_attribute v. CSS.supports >-PASS outline-width: _dashed_attribute v. CSS.supports >-PASS overflow: _camel_cased_attribute v. CSS.supports >-PASS overflow-anchor: _camel_cased_attribute v. CSS.supports >-PASS overflow-anchor: _dashed_attribute v. CSS.supports >-PASS overflow-block: _camel_cased_attribute v. CSS.supports >-PASS overflow-block: _dashed_attribute v. CSS.supports >-PASS overflow-inline: _camel_cased_attribute v. CSS.supports >-PASS overflow-inline: _dashed_attribute v. CSS.supports >-PASS overflow-wrap: _camel_cased_attribute v. CSS.supports >-PASS overflow-wrap: _dashed_attribute v. CSS.supports >-PASS overflow-x: _camel_cased_attribute v. CSS.supports >-PASS overflow-x: _dashed_attribute v. CSS.supports >-PASS overflow-y: _camel_cased_attribute v. CSS.supports >-PASS overflow-y: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-block: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-block: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-inline: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-inline: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-x: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-x: _dashed_attribute v. CSS.supports >-PASS overscroll-behavior-y: _camel_cased_attribute v. CSS.supports >-PASS overscroll-behavior-y: _dashed_attribute v. CSS.supports >-PASS padding: _camel_cased_attribute v. CSS.supports >-PASS padding-block: _camel_cased_attribute v. CSS.supports >-PASS padding-block: _dashed_attribute v. CSS.supports >-PASS padding-block-end: _camel_cased_attribute v. CSS.supports >-PASS padding-block-end: _dashed_attribute v. CSS.supports >-PASS padding-block-start: _camel_cased_attribute v. CSS.supports >-PASS padding-block-start: _dashed_attribute v. CSS.supports >-PASS padding-bottom: _camel_cased_attribute v. CSS.supports >-PASS padding-bottom: _dashed_attribute v. CSS.supports >-PASS padding-inline: _camel_cased_attribute v. CSS.supports >-PASS padding-inline: _dashed_attribute v. CSS.supports >-PASS padding-inline-end: _camel_cased_attribute v. CSS.supports >-PASS padding-inline-end: _dashed_attribute v. CSS.supports >-PASS padding-inline-start: _camel_cased_attribute v. CSS.supports >-PASS padding-inline-start: _dashed_attribute v. CSS.supports >-PASS padding-left: _camel_cased_attribute v. CSS.supports >-PASS padding-left: _dashed_attribute v. CSS.supports >-PASS padding-right: _camel_cased_attribute v. CSS.supports >-PASS padding-right: _dashed_attribute v. CSS.supports >-PASS padding-top: _camel_cased_attribute v. CSS.supports >-PASS padding-top: _dashed_attribute v. CSS.supports >-PASS page: _camel_cased_attribute v. CSS.supports >-PASS page-break-after: _camel_cased_attribute v. CSS.supports >-PASS page-break-after: _dashed_attribute v. CSS.supports >-PASS page-break-before: _camel_cased_attribute v. CSS.supports >-PASS page-break-before: _dashed_attribute v. CSS.supports >-PASS page-break-inside: _camel_cased_attribute v. CSS.supports >-PASS page-break-inside: _dashed_attribute v. CSS.supports >-PASS page-orientation: _camel_cased_attribute v. CSS.supports >-PASS page-orientation: _dashed_attribute v. CSS.supports >-PASS paint-order: _camel_cased_attribute v. CSS.supports >-PASS paint-order: _dashed_attribute v. CSS.supports >-PASS pen-action: _camel_cased_attribute v. CSS.supports >-PASS pen-action: _dashed_attribute v. CSS.supports >-PASS perspective: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin: _dashed_attribute v. CSS.supports >-PASS perspective-origin-x: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin-x: _dashed_attribute v. CSS.supports >-PASS perspective-origin-y: _camel_cased_attribute v. CSS.supports >-PASS perspective-origin-y: _dashed_attribute v. CSS.supports >-PASS place-content: _camel_cased_attribute v. CSS.supports >-PASS place-content: _dashed_attribute v. CSS.supports >-PASS place-items: _camel_cased_attribute v. CSS.supports >-PASS place-items: _dashed_attribute v. CSS.supports >-PASS place-self: _camel_cased_attribute v. CSS.supports >-PASS place-self: _dashed_attribute v. CSS.supports >-PASS pointer-events: _camel_cased_attribute v. CSS.supports >-PASS pointer-events: _dashed_attribute v. CSS.supports >-PASS position: _camel_cased_attribute v. CSS.supports >-PASS quotes: _camel_cased_attribute v. CSS.supports >-PASS r: _camel_cased_attribute v. CSS.supports >-PASS resize: _camel_cased_attribute v. CSS.supports >-PASS right: _camel_cased_attribute v. CSS.supports >-PASS rotate: _camel_cased_attribute v. CSS.supports >-PASS row-gap: _camel_cased_attribute v. CSS.supports >-PASS row-gap: _dashed_attribute v. CSS.supports >-PASS ruby-align: _camel_cased_attribute v. CSS.supports >-PASS ruby-align: _dashed_attribute v. CSS.supports >-PASS ruby-overhang: _camel_cased_attribute v. CSS.supports >-PASS ruby-overhang: _dashed_attribute v. CSS.supports >-PASS ruby-position: _camel_cased_attribute v. CSS.supports >-PASS ruby-position: _dashed_attribute v. CSS.supports >-PASS rx: _camel_cased_attribute v. CSS.supports >-PASS ry: _camel_cased_attribute v. CSS.supports >-PASS scale: _camel_cased_attribute v. CSS.supports >-PASS scroll-behavior: _camel_cased_attribute v. CSS.supports >-PASS scroll-behavior: _dashed_attribute v. CSS.supports >-PASS scroll-margin: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block-end: _dashed_attribute v. CSS.supports >-PASS scroll-margin-block-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-block-start: _dashed_attribute v. CSS.supports >-PASS scroll-margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline-end: _dashed_attribute v. CSS.supports >-PASS scroll-margin-inline-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-inline-start: _dashed_attribute v. CSS.supports >-PASS scroll-margin-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-left: _dashed_attribute v. CSS.supports >-PASS scroll-margin-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-right: _dashed_attribute v. CSS.supports >-PASS scroll-margin-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-margin-top: _dashed_attribute v. CSS.supports >-PASS scroll-padding: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block-end: _dashed_attribute v. CSS.supports >-PASS scroll-padding-block-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-block-start: _dashed_attribute v. CSS.supports >-PASS scroll-padding-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline-end: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline-end: _dashed_attribute v. CSS.supports >-PASS scroll-padding-inline-start: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-inline-start: _dashed_attribute v. CSS.supports >-PASS scroll-padding-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-left: _dashed_attribute v. CSS.supports >-PASS scroll-padding-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-right: _dashed_attribute v. CSS.supports >-PASS scroll-padding-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-padding-top: _dashed_attribute v. CSS.supports >-PASS scroll-snap-align: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-align: _dashed_attribute v. CSS.supports >-PASS scroll-snap-coordinate: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-coordinate: _dashed_attribute v. CSS.supports >-PASS scroll-snap-destination: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-destination: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-bottom: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-bottom: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-left: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-left: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-right: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-right: _dashed_attribute v. CSS.supports >-PASS scroll-snap-margin-top: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-margin-top: _dashed_attribute v. CSS.supports >-PASS scroll-snap-points-x: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-points-x: _dashed_attribute v. CSS.supports >-PASS scroll-snap-points-y: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-points-y: _dashed_attribute v. CSS.supports >-PASS scroll-snap-stop: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-stop: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type-x: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type-x: _dashed_attribute v. CSS.supports >-PASS scroll-snap-type-y: _camel_cased_attribute v. CSS.supports >-PASS scroll-snap-type-y: _dashed_attribute v. CSS.supports >-PASS scrollbar-color: _camel_cased_attribute v. CSS.supports >-PASS scrollbar-color: _dashed_attribute v. CSS.supports >-PASS scrollbar-width: _camel_cased_attribute v. CSS.supports >-PASS scrollbar-width: _dashed_attribute v. CSS.supports >-PASS shape-image-threshold: _camel_cased_attribute v. CSS.supports >-PASS shape-image-threshold: _dashed_attribute v. CSS.supports >-PASS shape-margin: _camel_cased_attribute v. CSS.supports >-PASS shape-margin: _dashed_attribute v. CSS.supports >-PASS shape-outside: _camel_cased_attribute v. CSS.supports >-PASS shape-outside: _dashed_attribute v. CSS.supports >-PASS shape-rendering: _camel_cased_attribute v. CSS.supports >-PASS shape-rendering: _dashed_attribute v. CSS.supports >-PASS size: _camel_cased_attribute v. CSS.supports >-PASS speak: _camel_cased_attribute v. CSS.supports >-PASS speak-as: _camel_cased_attribute v. CSS.supports >-PASS speak-as: _dashed_attribute v. CSS.supports >-PASS src: _camel_cased_attribute v. CSS.supports >-PASS stop-color: _camel_cased_attribute v. CSS.supports >-PASS stop-color: _dashed_attribute v. CSS.supports >-PASS stop-opacity: _camel_cased_attribute v. CSS.supports >-PASS stop-opacity: _dashed_attribute v. CSS.supports >-PASS stroke: _camel_cased_attribute v. CSS.supports >-PASS stroke-color: _camel_cased_attribute v. CSS.supports >-PASS stroke-color: _dashed_attribute v. CSS.supports >-PASS stroke-dasharray: _camel_cased_attribute v. CSS.supports >-PASS stroke-dasharray: _dashed_attribute v. CSS.supports >-PASS stroke-dashoffset: _camel_cased_attribute v. CSS.supports >-PASS stroke-dashoffset: _dashed_attribute v. CSS.supports >-PASS stroke-linecap: _camel_cased_attribute v. CSS.supports >-PASS stroke-linecap: _dashed_attribute v. CSS.supports >-PASS stroke-linejoin: _camel_cased_attribute v. CSS.supports >-PASS stroke-linejoin: _dashed_attribute v. CSS.supports >-PASS stroke-miterlimit: _camel_cased_attribute v. CSS.supports >-PASS stroke-miterlimit: _dashed_attribute v. CSS.supports >-PASS stroke-opacity: _camel_cased_attribute v. CSS.supports >-PASS stroke-opacity: _dashed_attribute v. CSS.supports >-PASS stroke-width: _camel_cased_attribute v. CSS.supports >-PASS stroke-width: _dashed_attribute v. CSS.supports >-PASS supported-color-schemes: _camel_cased_attribute v. CSS.supports >-PASS supported-color-schemes: _dashed_attribute v. CSS.supports >-PASS syntax: _camel_cased_attribute v. CSS.supports >-PASS tab-size: _camel_cased_attribute v. CSS.supports >-PASS tab-size: _dashed_attribute v. CSS.supports >-PASS table-layout: _camel_cased_attribute v. CSS.supports >-PASS table-layout: _dashed_attribute v. CSS.supports >-PASS text-align: _camel_cased_attribute v. CSS.supports >-PASS text-align: _dashed_attribute v. CSS.supports >-PASS text-align-last: _camel_cased_attribute v. CSS.supports >-PASS text-align-last: _dashed_attribute v. CSS.supports >-PASS text-anchor: _camel_cased_attribute v. CSS.supports >-PASS text-anchor: _dashed_attribute v. CSS.supports >-PASS text-combine-upright: _camel_cased_attribute v. CSS.supports >-PASS text-combine-upright: _dashed_attribute v. CSS.supports >-PASS text-decoration: _camel_cased_attribute v. CSS.supports >-PASS text-decoration: _dashed_attribute v. CSS.supports >-PASS text-decoration-color: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-color: _dashed_attribute v. CSS.supports >-PASS text-decoration-line: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-line: _dashed_attribute v. CSS.supports >-PASS text-decoration-skip: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-skip: _dashed_attribute v. CSS.supports >-PASS text-decoration-skip-ink: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-skip-ink: _dashed_attribute v. CSS.supports >-PASS text-decoration-style: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-style: _dashed_attribute v. CSS.supports >-PASS text-decoration-thickness: _camel_cased_attribute v. CSS.supports >-PASS text-decoration-thickness: _dashed_attribute v. CSS.supports >-PASS text-emphasis: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis: _dashed_attribute v. CSS.supports >-PASS text-emphasis-color: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-color: _dashed_attribute v. CSS.supports >-PASS text-emphasis-position: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-position: _dashed_attribute v. CSS.supports >-PASS text-emphasis-style: _camel_cased_attribute v. CSS.supports >-PASS text-emphasis-style: _dashed_attribute v. CSS.supports >-PASS text-indent: _camel_cased_attribute v. CSS.supports >-PASS text-indent: _dashed_attribute v. CSS.supports >-PASS text-justify: _camel_cased_attribute v. CSS.supports >-PASS text-justify: _dashed_attribute v. CSS.supports >-PASS text-kashida: _camel_cased_attribute v. CSS.supports >-PASS text-kashida: _dashed_attribute v. CSS.supports >-PASS text-kashida-space: _camel_cased_attribute v. CSS.supports >-PASS text-kashida-space: _dashed_attribute v. CSS.supports >-PASS text-line-through: _camel_cased_attribute v. CSS.supports >-PASS text-line-through: _dashed_attribute v. CSS.supports >-PASS text-line-through-color: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-color: _dashed_attribute v. CSS.supports >-PASS text-line-through-mode: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-mode: _dashed_attribute v. CSS.supports >-PASS text-line-through-style: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-style: _dashed_attribute v. CSS.supports >-PASS text-line-through-width: _camel_cased_attribute v. CSS.supports >-PASS text-line-through-width: _dashed_attribute v. CSS.supports >-PASS text-orientation: _camel_cased_attribute v. CSS.supports >-PASS text-orientation: _dashed_attribute v. CSS.supports >-PASS text-overflow: _camel_cased_attribute v. CSS.supports >-PASS text-overflow: _dashed_attribute v. CSS.supports >-PASS text-overline: _camel_cased_attribute v. CSS.supports >-PASS text-overline: _dashed_attribute v. CSS.supports >-PASS text-overline-color: _camel_cased_attribute v. CSS.supports >-PASS text-overline-color: _dashed_attribute v. CSS.supports >-PASS text-overline-mode: _camel_cased_attribute v. CSS.supports >-PASS text-overline-mode: _dashed_attribute v. CSS.supports >-PASS text-overline-style: _camel_cased_attribute v. CSS.supports >-PASS text-overline-style: _dashed_attribute v. CSS.supports >-PASS text-overline-width: _camel_cased_attribute v. CSS.supports >-PASS text-overline-width: _dashed_attribute v. CSS.supports >-PASS text-rendering: _camel_cased_attribute v. CSS.supports >-PASS text-rendering: _dashed_attribute v. CSS.supports >-PASS text-shadow: _camel_cased_attribute v. CSS.supports >-PASS text-shadow: _dashed_attribute v. CSS.supports >-PASS text-size-adjust: _camel_cased_attribute v. CSS.supports >-PASS text-size-adjust: _dashed_attribute v. CSS.supports >-PASS text-transform: _camel_cased_attribute v. CSS.supports >-PASS text-transform: _dashed_attribute v. CSS.supports >-PASS text-underline: _camel_cased_attribute v. CSS.supports >-PASS text-underline: _dashed_attribute v. CSS.supports >-PASS text-underline-color: _camel_cased_attribute v. CSS.supports >-PASS text-underline-color: _dashed_attribute v. CSS.supports >-PASS text-underline-mode: _camel_cased_attribute v. CSS.supports >-PASS text-underline-mode: _dashed_attribute v. CSS.supports >-PASS text-underline-offset: _camel_cased_attribute v. CSS.supports >-PASS text-underline-offset: _dashed_attribute v. CSS.supports >-PASS text-underline-position: _camel_cased_attribute v. CSS.supports >-PASS text-underline-position: _dashed_attribute v. CSS.supports >-PASS text-underline-style: _camel_cased_attribute v. CSS.supports >-PASS text-underline-style: _dashed_attribute v. CSS.supports >-PASS text-underline-width: _camel_cased_attribute v. CSS.supports >-PASS text-underline-width: _dashed_attribute v. CSS.supports >-PASS top: _camel_cased_attribute v. CSS.supports >-PASS touch-action: _camel_cased_attribute v. CSS.supports >-PASS touch-action: _dashed_attribute v. CSS.supports >-PASS transform: _camel_cased_attribute v. CSS.supports >-PASS transform-box: _camel_cased_attribute v. CSS.supports >-PASS transform-box: _dashed_attribute v. CSS.supports >-PASS transform-origin: _camel_cased_attribute v. CSS.supports >-PASS transform-origin: _dashed_attribute v. CSS.supports >-PASS transform-origin-x: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-x: _dashed_attribute v. CSS.supports >-PASS transform-origin-y: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-y: _dashed_attribute v. CSS.supports >-PASS transform-origin-z: _camel_cased_attribute v. CSS.supports >-PASS transform-origin-z: _dashed_attribute v. CSS.supports >-PASS transform-style: _camel_cased_attribute v. CSS.supports >-PASS transform-style: _dashed_attribute v. CSS.supports >-PASS transition: _camel_cased_attribute v. CSS.supports >-PASS transition-delay: _camel_cased_attribute v. CSS.supports >-PASS transition-delay: _dashed_attribute v. CSS.supports >-PASS transition-duration: _camel_cased_attribute v. CSS.supports >-PASS transition-duration: _dashed_attribute v. CSS.supports >-PASS transition-property: _camel_cased_attribute v. CSS.supports >-PASS transition-property: _dashed_attribute v. CSS.supports >-PASS transition-timing-function: _camel_cased_attribute v. CSS.supports >-PASS transition-timing-function: _dashed_attribute v. CSS.supports >-PASS translate: _camel_cased_attribute v. CSS.supports >-PASS unicode-bidi: _camel_cased_attribute v. CSS.supports >-PASS unicode-bidi: _dashed_attribute v. CSS.supports >-PASS unicode-range: _camel_cased_attribute v. CSS.supports >-PASS unicode-range: _dashed_attribute v. CSS.supports >-PASS user-select: _camel_cased_attribute v. CSS.supports >-PASS user-select: _dashed_attribute v. CSS.supports >-PASS user-zoom: _camel_cased_attribute v. CSS.supports >-PASS user-zoom: _dashed_attribute v. CSS.supports >-PASS vector-effect: _camel_cased_attribute v. CSS.supports >-PASS vector-effect: _dashed_attribute v. CSS.supports >-PASS vertical-align: _camel_cased_attribute v. CSS.supports >-PASS vertical-align: _dashed_attribute v. CSS.supports >-PASS viewport-fit: _camel_cased_attribute v. CSS.supports >-PASS viewport-fit: _dashed_attribute v. CSS.supports >-PASS visibility: _camel_cased_attribute v. CSS.supports >-PASS white-space: _camel_cased_attribute v. CSS.supports >-PASS white-space: _dashed_attribute v. CSS.supports >-PASS widows: _camel_cased_attribute v. CSS.supports >-PASS width: _camel_cased_attribute v. CSS.supports >-PASS will-change: _camel_cased_attribute v. CSS.supports >-PASS will-change: _dashed_attribute v. CSS.supports >-PASS word-break: _camel_cased_attribute v. CSS.supports >-PASS word-break: _dashed_attribute v. CSS.supports >-PASS word-spacing: _camel_cased_attribute v. CSS.supports >-PASS word-spacing: _dashed_attribute v. CSS.supports >-PASS word-wrap: _camel_cased_attribute v. CSS.supports >-PASS word-wrap: _dashed_attribute v. CSS.supports >-PASS writing-mode: _camel_cased_attribute v. CSS.supports >-PASS writing-mode: _dashed_attribute v. CSS.supports >-PASS x: _camel_cased_attribute v. CSS.supports >-PASS y: _camel_cased_attribute v. CSS.supports >-PASS z-index: _camel_cased_attribute v. CSS.supports >-PASS z-index: _dashed_attribute v. CSS.supports >-PASS zoom: _camel_cased_attribute v. CSS.supports >- >diff --git a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt b/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >index a5eea6c868b1..887ca6c919de 100644 >--- a/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >+++ b/LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >@@ -1,8 +1,8 @@ > > PASS getComputedStyle returns no style for detached element >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 395 >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 395 >-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 395 >-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 395 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 393 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 393 >+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 393 >+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 393 > PASS getComputedStyle returns no style for shadow tree outside of flattened tree > >diff --git a/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt b/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt >deleted file mode 100644 >index bdda0fe93f04..000000000000 >--- a/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt >+++ /dev/null >@@ -1,23 +0,0 @@ >-Tests programmatically setting and getting -webkit-text-size-adjust. >- >-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >- >- >-Initial value of webkitTextSizeAdjust: >-PASS document.getElementById("test").style.webkitTextSizeAdjust is "" >- >-webkitTextSizeAdjust = "auto": >-PASS document.getElementById("test").style.webkitTextSizeAdjust is "auto" >- >-webkitTextSizeAdjust = "none": >-PASS document.getElementById("test").style.webkitTextSizeAdjust is "none" >- >-webkitTextSizeAdjust = "200%": >-PASS document.getElementById("test").style.webkitTextSizeAdjust is "200%" >- >-webkitTextSizeAdjust = "dummy" (invalid value): >-PASS document.getElementById("test").style.webkitTextSizeAdjust is "200%" >-PASS successfullyParsed is true >- >-TEST COMPLETE >- >diff --git a/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html b/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html >deleted file mode 100644 >index c753a52bcf29..000000000000 >--- a/LayoutTests/platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html >+++ /dev/null >@@ -1,35 +0,0 @@ >-<!DOCTYPE html> >-<html> >-<head> >-<script src="../../../../resources/js-test-pre.js"></script> >-<!-- We intentionally do not call window.internal.settings.setTextAutosizingEnabled(true) to test the default port behavior. --> >-</head> >-<body> >-<p id="test">The quick brown fox jumped over the lazy dog.</p> >-<script> >-description("Tests programmatically setting and getting -webkit-text-size-adjust."); >- >-debug("Initial value of webkitTextSizeAdjust:"); >-shouldBeEmptyString('document.getElementById("test").style.webkitTextSizeAdjust'); >- >-debug("<br>webkitTextSizeAdjust = "auto":"); >-document.getElementById("test").style.webkitTextSizeAdjust = "auto"; >-shouldBeEqualToString('document.getElementById("test").style.webkitTextSizeAdjust', "auto"); >- >-debug("<br>webkitTextSizeAdjust = "none":"); >-document.getElementById("test").style.webkitTextSizeAdjust = "none"; >-shouldBeEqualToString('document.getElementById("test").style.webkitTextSizeAdjust', "none"); >- >-debug("<br>webkitTextSizeAdjust = "200%":"); >-document.getElementById("test").style.webkitTextSizeAdjust = "200%"; >-shouldBeEqualToString('document.getElementById("test").style.webkitTextSizeAdjust', "200%"); >- >-debug("<br>webkitTextSizeAdjust = "dummy" (invalid value):"); >-document.getElementById("test").style.webkitTextSizeAdjust = "dummy"; >-shouldBeEqualToString('document.getElementById("test").style.webkitTextSizeAdjust', "200%"); >- >-document.body.removeChild(document.getElementById("test")); >-</script> >-<script src="../../../../resources/js-test-post.js"></script> >-</body> >-</html> >diff --git a/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt b/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >new file mode 100644 >index 000000000000..1407b2257c2a >--- /dev/null >+++ b/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt >@@ -0,0 +1,396 @@ >+ >+ >+PASS setup >+PASS stylesheet takes effect >+PASS accent-color >+PASS align-content >+PASS align-items >+PASS align-self >+PASS alignment-baseline >+PASS alt >+PASS animation-composition >+PASS animation-delay >+PASS animation-direction >+PASS animation-duration >+PASS animation-fill-mode >+PASS animation-iteration-count >+PASS animation-name >+PASS animation-play-state >+PASS animation-timing-function >+PASS appearance >+PASS aspect-ratio >+PASS backface-visibility >+PASS background-attachment >+PASS background-blend-mode >+PASS background-clip >+PASS background-color >+PASS background-image >+PASS background-origin >+PASS background-position-x >+PASS background-position-y >+PASS background-repeat >+PASS background-size >+PASS baseline-shift >+PASS block-size >+PASS border-block-end-color >+PASS border-block-end-style >+PASS border-block-end-width >+PASS border-block-start-color >+PASS border-block-start-style >+PASS border-block-start-width >+PASS border-bottom-color >+PASS border-bottom-left-radius >+PASS border-bottom-right-radius >+PASS border-bottom-style >+PASS border-bottom-width >+PASS border-collapse >+PASS border-end-end-radius >+PASS border-end-start-radius >+PASS border-image-outset >+PASS border-image-repeat >+PASS border-image-slice >+PASS border-image-source >+PASS border-image-width >+PASS border-inline-end-color >+PASS border-inline-end-style >+PASS border-inline-end-width >+PASS border-inline-start-color >+PASS border-inline-start-style >+PASS border-inline-start-width >+PASS border-left-color >+PASS border-left-style >+PASS border-left-width >+PASS border-right-color >+PASS border-right-style >+PASS border-right-width >+PASS border-start-end-radius >+PASS border-start-start-radius >+PASS border-top-color >+PASS border-top-left-radius >+PASS border-top-right-radius >+PASS border-top-style >+PASS border-top-width >+PASS bottom >+PASS box-shadow >+PASS box-sizing >+PASS break-after >+PASS break-before >+PASS break-inside >+PASS buffered-rendering >+PASS caption-side >+PASS caret-color >+PASS clear >+PASS clip >+PASS clip-path >+PASS clip-rule >+PASS color >+PASS color-interpolation >+PASS color-interpolation-filters >+PASS color-scheme >+PASS column-count >+PASS column-fill >+PASS column-gap >+PASS column-rule-color >+PASS column-rule-style >+PASS column-rule-width >+PASS column-span >+PASS column-width >+PASS contain >+PASS contain-intrinsic-block-size >+PASS contain-intrinsic-height >+PASS contain-intrinsic-inline-size >+PASS contain-intrinsic-width >+PASS container-name >+PASS container-type >+PASS content >+PASS counter-increment >+PASS counter-reset >+PASS cursor >+PASS cx >+PASS cy >+PASS direction >+PASS display >+PASS dominant-baseline >+PASS empty-cells >+PASS fill >+PASS fill-opacity >+PASS fill-rule >+PASS filter >+PASS flex-basis >+PASS flex-direction >+PASS flex-grow >+PASS flex-shrink >+PASS flex-wrap >+PASS float >+PASS flood-color >+PASS flood-opacity >+PASS font-family >+PASS font-feature-settings >+PASS font-kerning >+PASS font-optical-sizing >+PASS font-palette >+PASS font-size >+PASS font-stretch >+PASS font-style >+PASS font-synthesis >+PASS font-variant-alternates >+PASS font-variant-caps >+PASS font-variant-east-asian >+PASS font-variant-ligatures >+PASS font-variant-numeric >+PASS font-variant-position >+PASS font-variation-settings >+PASS font-weight >+PASS glyph-orientation-horizontal >+PASS glyph-orientation-vertical >+PASS grid-auto-columns >+PASS grid-auto-flow >+PASS grid-auto-rows >+PASS grid-column-end >+PASS grid-column-start >+PASS grid-row-end >+PASS grid-row-start >+PASS grid-template-areas >+PASS grid-template-columns >+PASS grid-template-rows >+PASS hanging-punctuation >+PASS height >+PASS image-orientation >+PASS image-rendering >+PASS inline-size >+PASS input-security >+PASS inset-block-end >+PASS inset-block-start >+PASS inset-inline-end >+PASS inset-inline-start >+PASS isolation >+PASS justify-content >+PASS justify-items >+PASS justify-self >+PASS kerning >+PASS left >+PASS letter-spacing >+PASS lighting-color >+PASS line-break >+PASS line-height >+PASS list-style-image >+PASS list-style-position >+PASS list-style-type >+PASS margin-block-end >+PASS margin-block-start >+PASS margin-bottom >+PASS margin-inline-end >+PASS margin-inline-start >+PASS margin-left >+PASS margin-right >+PASS margin-top >+PASS marker-end >+PASS marker-mid >+PASS marker-start >+PASS mask-clip >+PASS mask-composite >+PASS mask-image >+PASS mask-mode >+PASS mask-origin >+PASS mask-repeat >+PASS mask-size >+PASS mask-type >+PASS math-style >+PASS max-block-size >+PASS max-height >+PASS max-inline-size >+PASS max-width >+PASS min-block-size >+PASS min-height >+PASS min-inline-size >+PASS min-width >+PASS mix-blend-mode >+PASS object-fit >+PASS object-position >+PASS offset-anchor >+PASS offset-distance >+PASS offset-path >+PASS offset-position >+PASS offset-rotate >+PASS opacity >+PASS order >+PASS orphans >+PASS outline-color >+PASS outline-offset >+PASS outline-style >+PASS outline-width >+PASS overflow-wrap >+PASS overflow-x >+PASS overflow-y >+PASS overscroll-behavior-block >+PASS overscroll-behavior-inline >+PASS overscroll-behavior-x >+PASS overscroll-behavior-y >+PASS padding-block-end >+PASS padding-block-start >+PASS padding-bottom >+PASS padding-inline-end >+PASS padding-inline-start >+PASS padding-left >+PASS padding-right >+PASS padding-top >+PASS paint-order >+PASS perspective >+PASS perspective-origin >+PASS pointer-events >+PASS position >+PASS print-color-adjust >+PASS quotes >+PASS r >+PASS resize >+PASS right >+PASS rotate >+PASS row-gap >+PASS rx >+PASS ry >+PASS scale >+PASS scroll-margin-block-end >+PASS scroll-margin-block-start >+PASS scroll-margin-bottom >+PASS scroll-margin-inline-end >+PASS scroll-margin-inline-start >+PASS scroll-margin-left >+PASS scroll-margin-right >+PASS scroll-margin-top >+PASS scroll-padding-block-end >+PASS scroll-padding-block-start >+PASS scroll-padding-bottom >+PASS scroll-padding-inline-end >+PASS scroll-padding-inline-start >+PASS scroll-padding-left >+PASS scroll-padding-right >+PASS scroll-padding-top >+PASS scroll-snap-align >+PASS scroll-snap-stop >+PASS scroll-snap-type >+PASS shape-image-threshold >+PASS shape-margin >+PASS shape-outside >+PASS shape-rendering >+PASS size >+PASS speak-as >+PASS stop-color >+PASS stop-opacity >+PASS stroke >+PASS stroke-color >+PASS stroke-dasharray >+PASS stroke-dashoffset >+PASS stroke-linecap >+PASS stroke-linejoin >+PASS stroke-miterlimit >+PASS stroke-opacity >+PASS stroke-width >+PASS tab-size >+PASS table-layout >+PASS text-align >+PASS text-align-last >+PASS text-anchor >+PASS text-combine-upright >+PASS text-decoration-color >+PASS text-decoration-line >+PASS text-decoration-skip-ink >+PASS text-decoration-style >+PASS text-decoration-thickness >+PASS text-emphasis-color >+PASS text-emphasis-position >+PASS text-emphasis-style >+PASS text-indent >+PASS text-justify >+PASS text-orientation >+PASS text-overflow >+PASS text-rendering >+PASS text-shadow >+PASS text-transform >+PASS text-underline-offset >+PASS text-underline-position >+PASS top >+PASS touch-action >+PASS transform >+PASS transform-box >+PASS transform-origin >+PASS transform-style >+PASS transition-delay >+PASS transition-duration >+PASS transition-property >+PASS transition-timing-function >+PASS translate >+PASS unicode-bidi >+PASS vector-effect >+PASS vertical-align >+PASS visibility >+PASS white-space >+PASS widows >+PASS width >+PASS will-change >+PASS word-break >+PASS word-spacing >+PASS writing-mode >+PASS x >+PASS y >+PASS z-index >+PASS zoom >+PASS -apple-color-filter >+PASS -apple-pay-button-style >+PASS -apple-pay-button-type >+PASS -webkit-backdrop-filter >+PASS -webkit-background-clip >+PASS -webkit-background-origin >+PASS -webkit-background-size >+PASS -webkit-border-horizontal-spacing >+PASS -webkit-border-vertical-spacing >+PASS -webkit-box-align >+PASS -webkit-box-decoration-break >+PASS -webkit-box-direction >+PASS -webkit-box-flex >+PASS -webkit-box-flex-group >+PASS -webkit-box-lines >+PASS -webkit-box-ordinal-group >+PASS -webkit-box-orient >+PASS -webkit-box-pack >+PASS -webkit-box-reflect >+PASS -webkit-box-shadow >+PASS -webkit-column-axis >+PASS -webkit-column-progression >+PASS -webkit-cursor-visibility >+PASS -webkit-font-smoothing >+PASS -webkit-hyphenate-character >+PASS -webkit-hyphenate-limit-after >+PASS -webkit-hyphenate-limit-before >+PASS -webkit-hyphenate-limit-lines >+PASS -webkit-hyphens >+PASS -webkit-initial-letter >+PASS -webkit-line-align >+PASS -webkit-line-box-contain >+PASS -webkit-line-clamp >+PASS -webkit-line-grid >+PASS -webkit-line-snap >+PASS -webkit-locale >+PASS -webkit-mask-box-image >+PASS -webkit-mask-box-image-outset >+PASS -webkit-mask-box-image-repeat >+PASS -webkit-mask-box-image-slice >+PASS -webkit-mask-box-image-source >+PASS -webkit-mask-box-image-width >+PASS -webkit-mask-clip >+PASS -webkit-mask-composite >+PASS -webkit-mask-position-x >+PASS -webkit-mask-position-y >+PASS -webkit-mask-source-type >+PASS -webkit-nbsp-mode >+PASS -webkit-rtl-ordering >+PASS -webkit-ruby-position >+PASS -webkit-text-combine >+PASS -webkit-text-fill-color >+PASS -webkit-text-security >+PASS -webkit-text-stroke-color >+PASS -webkit-text-stroke-width >+PASS -webkit-text-zoom >+PASS -webkit-user-drag >+PASS -webkit-user-modify >+PASS -webkit-user-select >+ >diff --git a/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt b/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >index 597841567e06..839ab862504f 100644 >--- a/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >+++ b/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt >@@ -560,9 +560,9 @@ PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports > PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports > PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports > PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports >-FAIL -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >-FAIL -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports assert_equals: expected true but got false >-FAIL -webkit-text-size-adjust: _dashed_attribute v. CSS.supports assert_equals: expected true but got false >+PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports >+PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports >+PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports > PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports > PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports > PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports >@@ -891,8 +891,8 @@ PASS flood-color: _dashed_attribute v. CSS.supports > PASS flood-opacity: _camel_cased_attribute v. CSS.supports > PASS flood-opacity: _dashed_attribute v. CSS.supports > PASS font: _camel_cased_attribute v. CSS.supports >-PASS font-display: _camel_cased_attribute v. CSS.supports >-PASS font-display: _dashed_attribute v. CSS.supports >+FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >+FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false > PASS font-family: _camel_cased_attribute v. CSS.supports > PASS font-family: _dashed_attribute v. CSS.supports > PASS font-feature-settings: _camel_cased_attribute v. CSS.supports >@@ -1333,7 +1333,7 @@ PASS size: _camel_cased_attribute v. CSS.supports > PASS speak: _camel_cased_attribute v. CSS.supports > PASS speak-as: _camel_cased_attribute v. CSS.supports > PASS speak-as: _dashed_attribute v. CSS.supports >-PASS src: _camel_cased_attribute v. CSS.supports >+FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false > PASS stop-color: _camel_cased_attribute v. CSS.supports > PASS stop-color: _dashed_attribute v. CSS.supports > PASS stop-opacity: _camel_cased_attribute v. CSS.supports >@@ -1474,8 +1474,8 @@ PASS transition-timing-function: _dashed_attribute v. CSS.supports > PASS translate: _camel_cased_attribute v. CSS.supports > PASS unicode-bidi: _camel_cased_attribute v. CSS.supports > PASS unicode-bidi: _dashed_attribute v. CSS.supports >-PASS unicode-range: _camel_cased_attribute v. CSS.supports >-PASS unicode-range: _dashed_attribute v. CSS.supports >+FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false >+FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false > PASS user-select: _camel_cased_attribute v. CSS.supports > PASS user-select: _dashed_attribute v. CSS.supports > PASS user-zoom: _camel_cased_attribute v. CSS.supports >diff --git a/LayoutTests/platform/mac/fast/events/ondrop-text-html-expected.txt b/LayoutTests/platform/mac/fast/events/ondrop-text-html-expected.txt >index 215bb6542acc..6332ad6e41c7 100644 >--- a/LayoutTests/platform/mac/fast/events/ondrop-text-html-expected.txt >+++ b/LayoutTests/platform/mac/fast/events/ondrop-text-html-expected.txt >@@ -1,4 +1,4 @@ > CONSOLE MESSAGE: text/plain: This test verifies that we can get text/html from the drag object during an ondrop event. >-CONSOLE MESSAGE: text/html: <meta charset="UTF-8"><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-size: medium; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;">This test verifies that we can get text/html from the drag object during an ondrop event.<span class="Apple-converted-space"> </span></span> >+CONSOLE MESSAGE: text/html: <meta charset="UTF-8"><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-size: medium; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;">This test verifies that we can get text/html from the drag object during an ondrop event.<span class="Apple-converted-space"> </span></span> > This test verifies that we can get text/html from the drag object during an ondrop event. This test requires DRT. > PASS >diff --git a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >index 5d89928de397..e4bad02ce5e0 100644 >--- a/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >+++ b/LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt >@@ -1,8 +1,8 @@ > > PASS getComputedStyle returns no style for detached element >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 390 >-FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 390 >-FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 390 >-FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 390 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 388 >+FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 388 >+FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 388 >+FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 388 > PASS getComputedStyle returns no style for shadow tree outside of flattened tree >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 217802
:
427391
|
427435
|
427671
|
427753
|
427807
|
447781
|
456127
|
456722
|
456964
|
456977
|
459330
|
459336
|
459550
|
459624
|
459729
|
459759
|
459784
|
459818
|
460557
|
460586
|
460612
|
460618
|
460619
|
460751
|
460768
|
460823
|
461127
|
461128
|
461129