Source/WebCore/ChangeLog

 12022-04-05 Sam Sneddon <gsnedders@apple.com>
 2
 3 Unify CSS property enablement (-apple-color-filter should not exist on CSSStyleDeclaration by default)
 4 https://bugs.webkit.org/show_bug.cgi?id=217802
 5 <rdar://problem/70600812>
 6
 7 Reviewed by NOBODY (OOPS!).
 8
 9 Additionally, to fix asserts otherwise hit, this fixes CSS.support() to only return true
 10 for properties and not descriptors, even though we consider both categories as properties
 11 internally.
 12
 13 Tests: css3/color-filters/color-filter-exposed-if-enabled.html
 14 imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html
 15 imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html
 16 imported/w3c/web-platform-tests/css/cssom/property-accessors.html
 17
 18 * css/CSSComputedStyleDeclaration.cpp:
 19 (WebCore::CSSComputedStyleDeclaration::CSSComputedStyleDeclaration):
 20 Pre-compute the list of properties which are exposed.
 21 (WebCore::ComputedStyleExtractor::propertyValue):
 22 Move the primary check of exposure to here, avoiding recomputing layout.
 23 (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
 24 Remove all exposure checks, add assert.
 25 (WebCore::CSSComputedStyleDeclaration::length const):
 26 Use list of properties which are exposed.
 27 (WebCore::CSSComputedStyleDeclaration::item const):
 28 Ditto.
 29 * css/CSSComputedStyleDeclaration.h:
 30 Add list of properties which are exposed.
 31 * css/CSSProperties.json:
 32 Fix missing settings-flags/internal-only, where we explicitly checked in code previously.
 33 * css/CSSStyleDeclaration.cpp:
 34 * css/DOMCSSNamespace.cpp:
 35 (WebCore::DOMCSSNamespace::supports):
 36 Check for descriptors & update exposure checks.
 37 * css/PropertySetCSSStyleDeclaration.cpp:
 38 (WebCore::PropertySetCSSStyleDeclaration::length const):
 39 (WebCore::PropertySetCSSStyleDeclaration::item const):
 40 (WebCore::PropertySetCSSStyleDeclaration::getPropertyCSSValue):
 41 (WebCore::PropertySetCSSStyleDeclaration::getPropertyValue):
 42 (WebCore::PropertySetCSSStyleDeclaration::getPropertyPriority):
 43 (WebCore::PropertySetCSSStyleDeclaration::getPropertyShorthand):
 44 (WebCore::PropertySetCSSStyleDeclaration::isPropertyImplicit):
 45 (WebCore::PropertySetCSSStyleDeclaration::setProperty):
 46 (WebCore::PropertySetCSSStyleDeclaration::removeProperty):
 47 (WebCore::PropertySetCSSStyleDeclaration::getPropertyValueInternal):
 48 (WebCore::PropertySetCSSStyleDeclaration::setPropertyInternal):
 49 (WebCore::PropertySetCSSStyleDeclaration::isCSSPropertyExposed const):
 50 * css/PropertySetCSSStyleDeclaration.h:
 51 * css/StyleProperties.cpp:
 52 (WebCore::MutableStyleProperties::setProperty):
 53 (WebCore::StyleProperties::asText const):
 54 * css/makeprop.pl:
 55 Generate new data structures and functions, struct CSSPropertySettings and isCSSPropertyExposed.
 56 * css/parser/CSSParserContext.cpp:
 57 Avoid duplicating having to copy everything explicitly, use struct CSSPropertySettings.
 58 (WebCore::CSSParserContext::CSSParserContext):
 59 (WebCore::operator==):
 60 (WebCore::add):
 61 (WebCore::CSSParserContext::isPropertyRuntimeDisabled const): Deleted.
 62 * css/parser/CSSParserContext.h:
 63 * css/parser/CSSParserFastPaths.cpp:
 64 (WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
 65 Remove unneeded per-property exposure checks.
 66 (WebCore::CSSParserFastPaths::maybeParseValue):
 67 * css/parser/CSSParserImpl.cpp:
 68 (WebCore::CSSParserImpl::consumeCounterStyleRule):
 69 (WebCore::CSSParserImpl::consumeContainerRule):
 70 (WebCore::CSSParserImpl::consumeDeclaration):
 71 * css/parser/CSSPropertyParser.cpp:
 72 (WebCore::cssPropertyID):
 73 (WebCore::CSSPropertyParser::addProperty):
 74 (WebCore::consumeWillChange):
 75 (WebCore::CSSPropertyParser::parseSingleValue):
 76 Remove unneeded per-property exposure checks, replaced with a singular call.
 77 (WebCore::CSSPropertyParser::parseCounterStyleDescriptor):
 78 (WebCore::CSSPropertyParser::parseFontFaceDescriptor):
 79 (WebCore::CSSPropertyParser::parseFontPaletteValuesDescriptor):
 80 (WebCore::CSSPropertyParser::consumeOverscrollBehaviorShorthand):
 81 * css/parser/CSSSelectorParser.cpp:
 82 (WebCore::CSSSelectorParser::consumePseudo):
 83 * inspector/InspectorStyleSheet.cpp:
 84 (WebCore::InspectorStyle::collectProperties const):
 85 Fix the FIXME by using the new isCSSPropertyExposed.
 86 (WebCore::InspectorStyle::styleWithProperties const):
 87 * inspector/agents/InspectorCSSAgent.cpp:
 88 (WebCore::InspectorCSSAgent::InspectorCSSAgent):
 89 (WebCore::InspectorCSSAgent::getSupportedCSSProperties):
 90 Only include exposed CSS properties.
 91 * inspector/agents/InspectorCSSAgent.h:
 92 Hold a reference to the Page to have access to its settings.
 93 * style/StyleBuilderCustom.h:
 94 (WebCore::Style::BuilderCustom::applyValueWillChange):
 95 Use generic exposure check.
 96
1972022-04-04 Matt Woodrow <mattwoodrow@apple.com>
298
399 intersectsWithAncestor should take fragmented boxes into account.

Source/WebCore/css/CSSComputedStyleDeclaration.cpp

@@CSSComputedStyleDeclaration::CSSComputedStyleDeclaration(Element& element, bool
16871687 if (name.startsWith(':'))
16881688 name = name.substring(1);
16891689 m_pseudoElementSpecifier = CSSSelector::pseudoId(CSSSelector::parsePseudoElementType(name));
 1690
 1691 Vector<CSSPropertyID> active;
 1692 active.reserveInitialCapacity(numComputedPropertyIDs);
 1693 for (auto & propertyID : computedPropertyIDs) {
 1694 if (isCSSPropertyExposed(propertyID, &m_element->document().settings()))
 1695 active.uncheckedAppend(propertyID);
 1696 }
 1697 active.shrinkToFit();
 1698
 1699 m_activeComputedPropertyIDs = WTFMove(active);
16901700}
16911701
16921702CSSComputedStyleDeclaration::~CSSComputedStyleDeclaration() = default;

@@RefPtr<CSSValue> ComputedStyleExtractor::propertyValue(CSSPropertyID propertyID,
28532863 if (!styledElement)
28542864 return nullptr;
28552865
 2866 if (!isCSSPropertyExposed(propertyID, &m_element->document().settings())) {
 2867 // Exit quickly, and avoid us ever having to update layout in this case.
 2868 return nullptr;
 2869 }
 2870
28562871 std::unique_ptr<RenderStyle> ownedStyle;
28572872 const RenderStyle* style = nullptr;
28582873 bool forceFullLayout = false;

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
28882903 auto& cssValuePool = CSSValuePool::singleton();
28892904 propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.direction(), style.writingMode());
28902905
 2906 ASSERT(isCSSPropertyExposed(propertyID, &m_element->document().settings()));
 2907
28912908 switch (propertyID) {
28922909 case CSSPropertyInvalid:
2893 #if ENABLE(TEXT_AUTOSIZING)
2894  case CSSPropertyInternalTextAutosizingStatus:
2895 #endif
2896  break;
 2910 return nullptr;
28972911 case CSSPropertyAccentColor: {
2898  if (!m_element->document().settings().accentColorEnabled())
2899  return nullptr;
29002912 if (style.hasAutoAccentColor())
29012913 return cssValuePool.createIdentifierValue(CSSValueAuto);
29022914 return currentColorOrValidColor(&style, style.accentColor());

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
33503362 return cssValuePool.createValue(style.imageResolution(), CSSUnitType::CSS_DPPX);
33513363#endif
33523364 case CSSPropertyInputSecurity:
3353  if (!m_element->document().settings().cssInputSecurityEnabled())
3354  return nullptr;
33553365 return cssValuePool.createValue(style.inputSecurity());
33563366 case CSSPropertyLeft:
33573367 return positionOffsetValue(style, CSSPropertyLeft, renderer);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
34703480 case CSSPropertyOverflowY:
34713481 return cssValuePool.createValue(style.overflowY());
34723482 case CSSPropertyOverscrollBehavior:
3473  if (!m_element->document().settings().overscrollBehaviorEnabled())
3474  return nullptr;
34753483 return cssValuePool.createValue(std::max(style.overscrollBehaviorX(), style.overscrollBehaviorY()));
34763484 case CSSPropertyOverscrollBehaviorX:
3477  if (!m_element->document().settings().overscrollBehaviorEnabled())
3478  return nullptr;
34793485 return cssValuePool.createValue(style.overscrollBehaviorX());
34803486 case CSSPropertyOverscrollBehaviorY:
3481  if (!m_element->document().settings().overscrollBehaviorEnabled())
3482  return nullptr;
34833487 return cssValuePool.createValue(style.overscrollBehaviorY());
34843488 case CSSPropertyPaddingTop:
34853489 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingTop, &RenderBoxModelObject::computedCSSPaddingTop>(style, renderer);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
36923696 case CSSPropertyAppearance:
36933697 return cssValuePool.createValue(style.appearance());
36943698 case CSSPropertyAspectRatio:
3695  if (!m_element->document().settings().aspectRatioEnabled())
3696  return nullptr;
36973699 switch (style.aspectRatioType()) {
36983700 case AspectRatioType::Auto:
36993701 return cssValuePool.createIdentifierValue(CSSValueAuto);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
37143716 ASSERT_NOT_REACHED();
37153717 return nullptr;
37163718 case CSSPropertyContain: {
3717  if (!m_element->document().settings().cssContainmentEnabled())
3718  return nullptr;
37193719 auto containment = style.contain();
37203720 if (!containment)
37213721 return cssValuePool.createIdentifierValue(CSSValueNone);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
37773777 if (style.maskBoxImageSource())
37783778 return style.maskBoxImageSource()->cssValue();
37793779 return cssValuePool.createIdentifierValue(CSSValueNone);
3780  case CSSPropertyWebkitFontSizeDelta:
3781  // Not a real style property -- used by the editing engine -- so has no computed value.
3782  break;
37833780 case CSSPropertyWebkitInitialLetter: {
37843781 auto drop = !style.initialLetterDrop() ? cssValuePool.createIdentifierValue(CSSValueNormal) : cssValuePool.createValue(style.initialLetterDrop(), CSSUnitType::CSS_NUMBER);
37853782 auto size = !style.initialLetterHeight() ? cssValuePool.createIdentifierValue(CSSValueNormal) : cssValuePool.createValue(style.initialLetterHeight(), CSSUnitType::CSS_NUMBER);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
38863883 ASSERT_NOT_REACHED();
38873884 return nullptr;
38883885 case CSSPropertyTranslate:
3889  if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled())
3890  return nullptr;
38913886 return computedTranslate(renderer, style);
38923887 case CSSPropertyScale:
3893  if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled())
3894  return nullptr;
38953888 return computedScale(renderer, style);
38963889 case CSSPropertyRotate:
3897  if (!m_element->document().settings().cssIndividualTransformPropertiesEnabled())
3898  return nullptr;
38993890 return computedRotate(renderer, style);
39003891 case CSSPropertyTransitionDelay:
39013892 case CSSPropertyTransitionDuration:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
41154106 }
41164107#endif
41174108
4118  /* Individual properties not part of the spec */
4119  case CSSPropertyBackgroundRepeatX:
4120  case CSSPropertyBackgroundRepeatY:
4121  break;
4122 
41234109 // Length properties for SVG.
41244110 case CSSPropertyCx:
41254111 return zoomAdjustedPixelValueForLength(style.svgStyle().cx(), style);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
41584144
41594145 /* Unimplemented CSS 3 properties (including CSS3 shorthand properties) */
41604146 case CSSPropertyAll:
4161  break;
 4147 return nullptr;
41624148
41634149 /* Directional properties are resolved by resolveDirectionAwareProperty() before the switch. */
41644150 case CSSPropertyBorderBlockEnd:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
42104196 case CSSPropertyScrollPaddingInlineEnd:
42114197 case CSSPropertyScrollPaddingInlineStart:
42124198 ASSERT_NOT_REACHED();
4213  break;
 4199 return nullptr;
 4200
 4201 // Internal properties should be handled by isCSSPropertyExposed above.
 4202 case CSSPropertyBackgroundRepeatX:
 4203 case CSSPropertyBackgroundRepeatY:
 4204 case CSSPropertyWebkitFontSizeDelta:
 4205 case CSSPropertyWebkitMarqueeDirection:
 4206 case CSSPropertyWebkitMarqueeIncrement:
 4207 case CSSPropertyWebkitMarqueeRepetition:
 4208 case CSSPropertyWebkitMarqueeStyle:
 4209 case CSSPropertyWebkitMarqueeSpeed:
 4210#if ENABLE(TEXT_AUTOSIZING)
 4211 case CSSPropertyInternalTextAutosizingStatus:
 4212#endif
 4213 ASSERT_NOT_REACHED();
 4214 return nullptr;
42144215
42154216 // These are intentionally unimplemented because they are actually descriptors for @counter-style.
42164217 case CSSPropertySystem:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
42224223 case CSSPropertyFallback:
42234224 case CSSPropertySymbols:
42244225 case CSSPropertyAdditiveSymbols:
4225  break;
 4226 return nullptr;
42264227
42274228 /* Unimplemented @font-face properties */
42284229 case CSSPropertySrc:
42294230 case CSSPropertyUnicodeRange:
42304231 case CSSPropertyFontDisplay:
4231  break;
 4232 return nullptr;
42324233
42334234 // Unimplemented @font-palette-values properties
42344235 case CSSPropertyBasePalette:
42354236 case CSSPropertyOverrideColors:
4236  break;
 4237 return nullptr;
42374238
42384239 /* Other unimplemented properties */
42394240 case CSSPropertyPage: // for @page
42404241 case CSSPropertySize: // for @page
4241  break;
 4242 return nullptr;
42424243
42434244 /* Unimplemented -webkit- properties */
42444245 case CSSPropertyWebkitBorderRadius:
4245  case CSSPropertyWebkitMarqueeDirection:
4246  case CSSPropertyWebkitMarqueeIncrement:
4247  case CSSPropertyWebkitMarqueeRepetition:
4248  case CSSPropertyWebkitMarqueeStyle:
4249  case CSSPropertyWebkitMarqueeSpeed:
42504246 case CSSPropertyWebkitMask:
42514247 case CSSPropertyMaskRepeatX:
42524248 case CSSPropertyMaskRepeatY:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
42564252 case CSSPropertyTransformOriginX:
42574253 case CSSPropertyTransformOriginY:
42584254 case CSSPropertyTransformOriginZ:
4259  break;
 4255 return nullptr;
42604256
42614257 case CSSPropertyBufferedRendering:
42624258 case CSSPropertyClipRule:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
42934289 return nullptr;
42944290 }
42954291
 4292 ASSERT_NOT_REACHED();
42964293 return nullptr;
42974294}
42984295

@@unsigned CSSComputedStyleDeclaration::length() const
43124309 if (!style)
43134310 return 0;
43144311
4315  return numComputedPropertyIDs + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size();
 4312 return m_activeComputedPropertyIDs.size() + style->inheritedCustomProperties().size() + style->nonInheritedCustomProperties().size();
43164313}
43174314
43184315String CSSComputedStyleDeclaration::item(unsigned i) const

@@String CSSComputedStyleDeclaration::item(unsigned i) const
43204317 if (i >= length())
43214318 return String();
43224319
4323  if (i < numComputedPropertyIDs)
4324  return getPropertyNameString(computedPropertyIDs[i]);
 4320 if (i < m_activeComputedPropertyIDs.size())
 4321 return getPropertyNameString(m_activeComputedPropertyIDs.at(i));
43254322
43264323 auto* style = m_element->computedStyle(m_pseudoElementSpecifier);
43274324 if (!style)

@@String CSSComputedStyleDeclaration::item(unsigned i) const
43294326
43304327 const auto& inheritedCustomProperties = style->inheritedCustomProperties();
43314328
4332  if (i < numComputedPropertyIDs + inheritedCustomProperties.size()) {
 4329 if (i < m_activeComputedPropertyIDs.size() + inheritedCustomProperties.size()) {
43334330 auto results = copyToVector(inheritedCustomProperties.keys());
4334  return results.at(i - numComputedPropertyIDs);
 4331 return results.at(i - m_activeComputedPropertyIDs.size());
43354332 }
43364333
43374334 const auto& nonInheritedCustomProperties = style->nonInheritedCustomProperties();
43384335 auto results = copyToVector(nonInheritedCustomProperties.keys());
4339  return results.at(i - inheritedCustomProperties.size() - numComputedPropertyIDs);
 4336 return results.at(i - inheritedCustomProperties.size() - m_activeComputedPropertyIDs.size());
43404337}
43414338
43424339bool ComputedStyleExtractor::propertyMatches(CSSPropertyID propertyID, const CSSValue* value)

Source/WebCore/css/CSSComputedStyleDeclaration.h

@@private:
145145 PseudoId m_pseudoElementSpecifier;
146146 bool m_allowVisitedStyle;
147147 unsigned m_refCount { 1 };
 148 Vector<CSSPropertyID> m_activeComputedPropertyIDs;
148149};
149150
150151} // namespace WebCore

Source/WebCore/css/CSSProperties.json

731731 "codegen-properties": {
732732 "custom": "Value",
733733 "high-priority": true,
734  "enable-if": "ENABLE_TEXT_AUTOSIZING"
 734 "enable-if": "ENABLE_TEXT_AUTOSIZING",
 735 "settings-flag": "textAutosizingEnabled"
735736 },
736737 "status": "experimental",
737738 "specification": {

37393740 "offset-position",
37403741 "offset-anchor",
37413742 "offset-rotate"
3742  ]
 3743 ],
 3744 "settings-flag": "cssMotionPathEnabled"
37433745 },
37443746 "specification": {
37453747 "category": "css-motion-path",

58045806 "-apple-color-filter": {
58055807 "inherited": true,
58065808 "codegen-properties": {
 5809 "settings-flag": "colorFilterEnabled",
58075810 "conditional-converter": "FilterOperations"
58085811 },
58095812 "status": {

69626965 "inherited": true,
69636966 "codegen-properties": {
69646967 "skip-builder": true,
6965  "enable-if": "ENABLE_TEXT_AUTOSIZING"
 6968 "enable-if": "ENABLE_TEXT_AUTOSIZING",
 6969 "internal-only": true
69666970 },
69676971 "status": "non-standard"
69686972 },

Source/WebCore/css/CSSStyleDeclaration.cpp

@@static CSSPropertyID parseJavaScriptCSSPropertyName(const AtomString& propertyNa
199199static CSSPropertyID propertyIDFromJavaScriptCSSPropertyName(const AtomString& propertyName, const Settings* settings)
200200{
201201 auto id = parseJavaScriptCSSPropertyName(propertyName);
202  if (!isEnabledCSSProperty(id) || !isCSSPropertyEnabledBySettings(id, settings))
 202 if (!isCSSPropertyExposed(id, settings))
203203 return CSSPropertyInvalid;
204204 return id;
205205}

Source/WebCore/css/DOMCSSNamespace.cpp

3232
3333#include "CSSMarkup.h"
3434#include "CSSParser.h"
 35#include "CSSPropertyNames.h"
3536#include "CSSPropertyParser.h"
3637#include "Document.h"
3738#include "HighlightRegister.h"

@@bool DOMCSSNamespace::supports(Document& document, const String& property, const
6061 CSSPropertyID propertyID = cssPropertyID(property.stripWhiteSpace());
6162
6263 CSSParserContext parserContext(document);
63  if (parserContext.isPropertyRuntimeDisabled(propertyID))
 64 if (!isCSSPropertyExposed(propertyID, &document.settings()))
6465 return false;
6566
66  if (isInternalCSSProperty(propertyID))
 67 if (CSSProperty::isDescriptorOnly(propertyID))
6768 return false;
6869
6970 if (propertyID == CSSPropertyInvalid)

Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp

@@void PropertySetCSSStyleDeclaration::deref()
147147
148148unsigned PropertySetCSSStyleDeclaration::length() const
149149{
150  return m_propertySet->propertyCount();
 150 unsigned exposed = 0;
 151 for (unsigned i = 0; i < m_propertySet->propertyCount(); i++) {
 152 if (isCSSPropertyExposed(m_propertySet->propertyAt(i).id()))
 153 exposed++;
 154 }
 155 return exposed;
151156}
152157
153158String PropertySetCSSStyleDeclaration::item(unsigned i) const
154159{
 160 for (unsigned j = 0; j <= i && j < m_propertySet->propertyCount(); j++) {
 161 if (!isCSSPropertyExposed(m_propertySet->propertyAt(j).id()))
 162 i++;
 163 }
 164
155165 if (i >= m_propertySet->propertyCount())
156166 return String();
 167
157168 return m_propertySet->propertyAt(i).cssName();
158169}
159170

@@RefPtr<DeprecatedCSSOMValue> PropertySetCSSStyleDeclaration::getPropertyCSSValue
186197 }
187198
188199 CSSPropertyID propertyID = cssPropertyID(propertyName);
189  if (!propertyID)
 200 if (!propertyID || !isCSSPropertyExposed(propertyID))
190201 return nullptr;
191202 return wrapForDeprecatedCSSOM(getPropertyCSSValueInternal(propertyID).get());
192203}

@@String PropertySetCSSStyleDeclaration::getPropertyValue(const String& propertyNa
197208 return m_propertySet->getCustomPropertyValue(propertyName);
198209
199210 CSSPropertyID propertyID = cssPropertyID(propertyName);
200  if (!propertyID)
 211 if (!propertyID || !isCSSPropertyExposed(propertyID))
201212 return String();
202213 return getPropertyValueInternal(propertyID);
203214}

@@String PropertySetCSSStyleDeclaration::getPropertyPriority(const String& propert
208219 return m_propertySet->customPropertyIsImportant(propertyName) ? "important"_s : emptyString();
209220
210221 CSSPropertyID propertyID = cssPropertyID(propertyName);
211  if (!propertyID)
 222 if (!propertyID || !isCSSPropertyExposed(propertyID))
212223 return emptyString();
213224 return m_propertySet->propertyIsImportant(propertyID) ? "important"_s : emptyString();
214225}

@@String PropertySetCSSStyleDeclaration::getPropertyPriority(const String& propert
216227String PropertySetCSSStyleDeclaration::getPropertyShorthand(const String& propertyName)
217228{
218229 CSSPropertyID propertyID = cssPropertyID(propertyName);
219  if (!propertyID)
 230 if (!propertyID || !isCSSPropertyExposed(propertyID))
220231 return String();
221232 return m_propertySet->getPropertyShorthand(propertyID);
222233}

@@String PropertySetCSSStyleDeclaration::getPropertyShorthand(const String& proper
224235bool PropertySetCSSStyleDeclaration::isPropertyImplicit(const String& propertyName)
225236{
226237 CSSPropertyID propertyID = cssPropertyID(propertyName);
227  if (!propertyID)
 238 if (!propertyID || !isCSSPropertyExposed(propertyID))
228239 return false;
229240 return m_propertySet->isPropertyImplicit(propertyID);
230241}

@@ExceptionOr<void> PropertySetCSSStyleDeclaration::setProperty(const String& prop
236247 CSSPropertyID propertyID = cssPropertyID(propertyName);
237248 if (isCustomPropertyName(propertyName))
238249 propertyID = CSSPropertyCustom;
239  if (!propertyID)
 250
 251 if (!propertyID || !isCSSPropertyExposed(propertyID))
240252 return { };
241253
242254 if (!willMutate())

@@ExceptionOr<String> PropertySetCSSStyleDeclaration::removeProperty(const String&
276288 CSSPropertyID propertyID = cssPropertyID(propertyName);
277289 if (isCustomPropertyName(propertyName))
278290 propertyID = CSSPropertyCustom;
279  if (!propertyID)
 291 if (!propertyID || !isCSSPropertyExposed(propertyID))
280292 return String();
281293
282294 if (!willMutate())

@@RefPtr<CSSValue> PropertySetCSSStyleDeclaration::getPropertyCSSValueInternal(CSS
299311
300312String PropertySetCSSStyleDeclaration::getPropertyValueInternal(CSSPropertyID propertyID)
301313{
 314 if (!propertyID || !isCSSPropertyExposed(propertyID))
 315 return { };
 316
302317 String value = m_propertySet->getPropertyValue(propertyID);
303318 CSSPropertyID relatedPropertyID = getRelatedPropertyId(propertyID);
304319 String relatedValue = m_propertySet->getPropertyValue(relatedPropertyID);

@@ExceptionOr<void> PropertySetCSSStyleDeclaration::setPropertyInternal(CSSPropert
317332 if (!willMutate())
318333 return { };
319334
 335 if (!propertyID || !isCSSPropertyExposed(propertyID))
 336 return { };
 337
320338 if (m_propertySet->setProperty(propertyID, value, important, cssParserContext())) {
321339 didMutate(PropertyChanged);
322340 mutationScope.enqueueMutationRecord();

@@ExceptionOr<void> PropertySetCSSStyleDeclaration::setPropertyInternal(CSSPropert
326344 return { };
327345}
328346
 347bool PropertySetCSSStyleDeclaration::isCSSPropertyExposed(CSSPropertyID propertyID) const
 348{
 349 auto parserContext = cssParserContext();
 350 bool parsingDescriptor = parserContext.enclosingRuleType && *parserContext.enclosingRuleType != StyleRuleType::Style;
 351
 352 return ::WebCore::isCSSPropertyExposed(propertyID, &parserContext.propertySettings)
 353 && (!CSSProperty::isDescriptorOnly(propertyID) || parsingDescriptor);
 354}
 355
329356RefPtr<DeprecatedCSSOMValue> PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM(CSSValue* internalValue)
330357{
331358 if (!internalValue)

Source/WebCore/css/PropertySetCSSStyleDeclaration.h

@@private:
8282 ExceptionOr<void> setPropertyInternal(CSSPropertyID, const String& value, bool important) final;
8383
8484 Ref<MutableStyleProperties> copyProperties() const final;
 85 bool isCSSPropertyExposed(CSSPropertyID) const;
8586
8687 RefPtr<DeprecatedCSSOMValue> wrapForDeprecatedCSSOM(CSSValue*);
8788

Source/WebCore/css/StyleProperties.cpp

@@bool StyleProperties::isPropertyImplicit(CSSPropertyID propertyID) const
12221222
12231223bool MutableStyleProperties::setProperty(CSSPropertyID propertyID, const String& value, bool important, CSSParserContext parserContext)
12241224{
1225  if (!isEnabledCSSProperty(propertyID))
 1225 if (!isCSSPropertyExposed(propertyID, &parserContext.propertySettings) && !isInternalCSSProperty(propertyID)) {
 1226 // Allow internal properties as we use them to handle certain DOM-exposed values
 1227 // (e.g. -webkit-font-size-delta from execCommand('FontSizeDelta')).
 1228 ASSERT_NOT_REACHED();
12261229 return false;
 1230 }
12271231
12281232 // Setting the value to an empty string just removes the property in both IE and Gecko.
12291233 // Setting it to null seems to produce less consistent results, but we treat it just the same.

@@String StyleProperties::asText() const
13981402 auto serializeBorderShorthand = [&] (const CSSPropertyID borderProperty, const CSSPropertyID fallbackProperty) {
13991403 // FIXME: Deal with cases where only some of border sides are specified.
14001404 ASSERT(borderProperty - firstCSSProperty < static_cast<CSSPropertyID>(shorthandPropertyAppeared.size()));
1401  if (!shorthandPropertyAppeared[borderProperty - firstCSSProperty] && isEnabledCSSProperty(borderProperty)) {
 1405 if (!shorthandPropertyAppeared[borderProperty - firstCSSProperty]) {
14021406 value = getPropertyValue(borderProperty);
14031407 if (value.isNull())
14041408 shorthandPropertyAppeared.set(borderProperty - firstCSSProperty);

@@String StyleProperties::asText() const
16541658 }
16551659
16561660 unsigned shortPropertyIndex = shorthandPropertyID - firstCSSProperty;
1657  if (shorthandPropertyID && isEnabledCSSProperty(shorthandPropertyID)) {
 1661 if (shorthandPropertyID) {
16581662 ASSERT(shortPropertyIndex < shorthandPropertyUsed.size());
16591663 if (shorthandPropertyUsed[shortPropertyIndex])
16601664 continue;

Source/WebCore/css/makeprop.pl

@@while (my ($groupName, $logicalPropertyGroup) = each %logicalPropertyGroups) {
142142 }
143143}
144144
 145sub uniq(@)
 146{
 147 my %hash = map { $_, 1 } @_;
 148 return keys %hash;
 149}
 150
145151sub matchEnableFlags($)
146152{
147153 my ($enable_flag) = @_;

@@print GPERF << "EOF";
388394#include "RuntimeEnabledFeatures.h"
389395#include "Settings.h"
390396#include <wtf/ASCIICType.h>
 397#include <wtf/Hasher.h>
391398#include <wtf/text/AtomString.h>
392399#include <wtf/text/WTFString.h>
393400#include <string.h>

@@const Property* findProperty(const char* str, unsigned int len)
448455 return CSSPropertyNamesHash::findPropertyImpl(str, len);
449456}
450457
451 bool isInternalCSSProperty(const CSSPropertyID id)
 458bool isInternalCSSProperty(CSSPropertyID id)
452459{
453460 switch (id) {
454461EOF

@@EOF
468475
469476if (%runtimeFlags) {
470477 print GPERF << "EOF";
471 bool isEnabledCSSProperty(const CSSPropertyID id)
 478static bool isEnabledCSSProperty(CSSPropertyID id)
472479{
473480 switch (id) {
474481EOF
475482 foreach my $name (sort keys %runtimeFlags) {
476483 print GPERF " case CSSPropertyID::CSSProperty" . $nameToId{$name} . ":\n";
477  print GPERF " return RuntimeEnabledFeatures::sharedFeatures()." . $runtimeFlags{$name} . "Enabled();\n";
 484 print GPERF " return RuntimeEnabledFeatures::sharedFeatures()." . $runtimeFlags{$name} . "();\n";
478485 }
479486 print GPERF << "EOF";
480487 default:

@@EOF
483490EOF
484491} else {
485492 print GPERF << "EOF";
486 bool isEnabledCSSProperty(const CSSPropertyID)
 493static bool isEnabledCSSProperty(CSSPropertyID)
487494{
488495 return true;
489496EOF

@@EOF
492499print GPERF << "EOF";
493500}
494501
495 bool isCSSPropertyEnabledBySettings(const CSSPropertyID id, const Settings* settings)
 502static bool isCSSPropertyEnabledBySettings(CSSPropertyID id, const Settings* settings)
496503{
497504 if (!settings)
498505 return true;

@@foreach my $name (sort keys %settingsFlags) {
505512 print GPERF " return settings->" . $settingsFlags{$name} . "();\n";
506513}
507514
 515print GPERF << "EOF";
 516 default:
 517 return true;
 518 }
 519}
 520
 521static bool isCSSPropertyEnabledByCSSPropertySettings(CSSPropertyID id, const CSSPropertySettings* settings)
 522{
 523 if (!settings)
 524 return true;
 525
 526 switch (id) {
 527EOF
 528
 529foreach my $name (keys %settingsFlags) {
 530 print GPERF " case CSSPropertyID::CSSProperty" . $nameToId{$name} . ":\n";
 531 print GPERF " return settings->" . $settingsFlags{$name} . ";\n";
 532}
 533
508534print GPERF << "EOF";
509535 default:
510536 return true;

@@print GPERF << "EOF";
512538 return true;
513539}
514540
 541bool isCSSPropertyExposed(CSSPropertyID id, const Settings* settings)
 542{
 543 return isEnabledCSSProperty(id) && isCSSPropertyEnabledBySettings(id, settings) && !isInternalCSSProperty(id);
 544}
 545
 546bool isCSSPropertyExposed(CSSPropertyID id, const CSSPropertySettings* settings)
 547{
 548 return isEnabledCSSProperty(id) && isCSSPropertyEnabledByCSSPropertySettings(id, settings) && !isInternalCSSProperty(id);
 549}
 550
515551const char* getPropertyName(CSSPropertyID id)
516552{
517553 if (id < firstCSSProperty)

@@print GPERF << "EOF";
785821 }
786822}
787823
 824CSSPropertySettings::CSSPropertySettings(const Settings& settings)
 825EOF
 826
 827my $nthSetting = 0;
 828foreach my $name (sort(uniq(values %settingsFlags))) {
 829 print GPERF " ";
 830 if ($nthSetting == 0) {
 831 print GPERF ": ";
 832 } else {
 833 print GPERF ", ";
 834 }
 835 print GPERF $name . " { settings." . $name . "() }\n";
 836 $nthSetting += 1;
 837}
 838
 839print GPERF << "EOF";
 840{
 841}
 842
 843bool operator==(const CSSPropertySettings& a, const CSSPropertySettings& b)
 844{
 845 return true
 846EOF
 847
 848foreach my $name (sort(uniq(values %settingsFlags))) {
 849 print GPERF " && a." . $name . " == b." . $name . "\n";
 850}
 851
 852print GPERF << "EOF";
 853 ;
 854}
 855
 856void add(Hasher& hasher, const CSSPropertySettings& settings)
 857{
 858 unsigned bits = 0
 859EOF
 860
 861$nthSetting = 0;
 862foreach my $name (sort(uniq(values %settingsFlags))) {
 863 print GPERF " | settings." . $name . " << " . $nthSetting . "\n";
 864 $nthSetting += 1;
 865}
 866
 867print GPERF << "EOF";
 868 ;
 869 add(hasher, bits);
 870}
 871
788872} // namespace WebCore
789873
790874IGNORE_WARNINGS_END

@@print HEADER "const size_t numComputedPropertyIDs = $numComputedPropertyIDs;\n";
859943
860944print HEADER << "EOF";
861945
862 bool isInternalCSSProperty(const CSSPropertyID);
863 bool isEnabledCSSProperty(const CSSPropertyID);
864 bool isCSSPropertyEnabledBySettings(const CSSPropertyID, const Settings* = nullptr);
 946struct CSSPropertySettings {
 947 WTF_MAKE_STRUCT_FAST_ALLOCATED;
 948EOF
 949
 950foreach my $name (sort(uniq(values %settingsFlags))) {
 951 print HEADER " bool " . $name . " { false };\n";
 952}
 953
 954print HEADER << "EOF";
 955 CSSPropertySettings() = default;
 956 explicit CSSPropertySettings(const Settings&);
 957};
 958
 959bool operator==(const CSSPropertySettings&, const CSSPropertySettings&);
 960inline bool operator!=(const CSSPropertySettings& a, const CSSPropertySettings& b) { return !(a == b); }
 961void add(Hasher&, const CSSPropertySettings&);
 962
 963bool isInternalCSSProperty(CSSPropertyID);
 964bool isCSSPropertyExposed(CSSPropertyID, const Settings*);
 965bool isCSSPropertyExposed(CSSPropertyID, const CSSPropertySettings*);
865966const char* getPropertyName(CSSPropertyID);
866967const AtomString& getPropertyNameAtomString(CSSPropertyID id);
867968String getPropertyNameString(CSSPropertyID id);

Source/WebCore/css/parser/CSSParserContext.cpp

2727#include "CSSParserContext.h"
2828
2929#include "CSSImageValue.h"
 30#include "CSSPropertyNames.h"
3031#include "Document.h"
3132#include "DocumentLoader.h"
3233#include "Page.h"
33 #include "RuntimeEnabledFeatures.h"
3434#include "Settings.h"
3535#include <wtf/NeverDestroyed.h>
3636

@@CSSParserContext::CSSParserContext(CSSParserMode mode, const URL& baseURL)
4848{
4949 // FIXME: We should turn all of the features on from their WebCore Settings defaults.
5050 if (mode == UASheetMode) {
51  individualTransformPropertiesEnabled = true;
5251 focusVisibleEnabled = true;
53  inputSecurityEnabled = true;
54  containmentEnabled = true;
 52 propertySettings.cssContainmentEnabled = true;
 53 propertySettings.cssIndividualTransformPropertiesEnabled = true;
 54 propertySettings.cssInputSecurityEnabled = true;
5555#if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D)
5656 transformStyleOptimized3DEnabled = true;
5757#endif

@@CSSParserContext::CSSParserContext(const Document& document, const URL& sheetBas
7878 , isHTMLDocument { document.isHTMLDocument() }
7979 , hasDocumentSecurityOrigin { sheetBaseURL.isNull() || document.securityOrigin().canRequest(baseURL) }
8080 , useSystemAppearance { document.page() ? document.page()->useSystemAppearance() : false }
81  , accentColorEnabled { document.settings().accentColorEnabled() }
82  , aspectRatioEnabled { document.settings().aspectRatioEnabled() }
8381 , colorContrastEnabled { document.settings().cssColorContrastEnabled() }
84  , colorFilterEnabled { document.settings().colorFilterEnabled() }
8582 , colorMixEnabled { document.settings().cssColorMixEnabled() }
8683 , constantPropertiesEnabled { document.settings().constantPropertiesEnabled() }
87  , containmentEnabled { document.settings().cssContainmentEnabled() }
88  , counterStyleAtRulesEnabled { document.settings().cssCounterStyleAtRulesEnabled() }
8984 , counterStyleAtRuleImageSymbolsEnabled { document.settings().cssCounterStyleAtRuleImageSymbolsEnabled() }
9085 , cssColor4 { document.settings().cssColor4() }
9186 , deferredCSSParserEnabled { document.settings().deferredCSSParserEnabled() }
92  , individualTransformPropertiesEnabled { document.settings().cssIndividualTransformPropertiesEnabled() }
9387#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
9488 , legacyOverflowScrollingTouchEnabled { shouldEnableLegacyOverflowScrollingTouch(document) }
9589#endif
96  , overscrollBehaviorEnabled { document.settings().overscrollBehaviorEnabled() }
9790 , relativeColorSyntaxEnabled { document.settings().cssRelativeColorSyntaxEnabled() }
98  , scrollBehaviorEnabled { document.settings().CSSOMViewSmoothScrollingEnabled() }
9991 , springTimingFunctionEnabled { document.settings().springTimingFunctionEnabled() }
100 #if ENABLE(TEXT_AUTOSIZING)
101  , textAutosizingEnabled { document.settings().textAutosizingEnabled() }
102 #endif
10392#if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D)
10493 , transformStyleOptimized3DEnabled { document.settings().cssTransformStyleOptimized3DEnabled() }
10594#endif

@@CSSParserContext::CSSParserContext(const Document& document, const URL& sheetBas
10796 , focusVisibleEnabled { document.settings().focusVisibleEnabled() }
10897 , hasPseudoClassEnabled { document.settings().hasPseudoClassEnabled() }
10998 , cascadeLayersEnabled { document.settings().cssCascadeLayersEnabled() }
110  , containerQueriesEnabled { document.settings().cssContainerQueriesEnabled() }
11199 , overflowClipEnabled { document.settings().overflowClipEnabled() }
112100 , gradientPremultipliedAlphaInterpolationEnabled { document.settings().cssGradientPremultipliedAlphaInterpolationEnabled() }
113101 , gradientInterpolationColorSpacesEnabled { document.settings().cssGradientInterpolationColorSpacesEnabled() }
114  , inputSecurityEnabled { document.settings().cssInputSecurityEnabled() }
115102 , subgridEnabled { document.settings().subgridEnabled() }
116 #if ENABLE(ATTACHMENT_ELEMENT)
117  , attachmentEnabled { RuntimeEnabledFeatures::sharedFeatures().attachmentElementEnabled() }
118 #endif
 103 , propertySettings { CSSPropertySettings { document.settings() } }
119104{
120105}
121106

@@bool operator==(const CSSParserContext& a, const CSSParserContext& b)
129114 && a.hasDocumentSecurityOrigin == b.hasDocumentSecurityOrigin
130115 && a.isContentOpaque == b.isContentOpaque
131116 && a.useSystemAppearance == b.useSystemAppearance
132  && a.accentColorEnabled == b.accentColorEnabled
133  && a.aspectRatioEnabled == b.aspectRatioEnabled
134117 && a.colorContrastEnabled == b.colorContrastEnabled
135  && a.colorFilterEnabled == b.colorFilterEnabled
136118 && a.colorMixEnabled == b.colorMixEnabled
137119 && a.constantPropertiesEnabled == b.constantPropertiesEnabled
138  && a.containmentEnabled == b.containmentEnabled
139  && a.counterStyleAtRulesEnabled == b.counterStyleAtRulesEnabled
140120 && a.counterStyleAtRuleImageSymbolsEnabled == b.counterStyleAtRuleImageSymbolsEnabled
141121 && a.cssColor4 == b.cssColor4
142122 && a.deferredCSSParserEnabled == b.deferredCSSParserEnabled
143  && a.individualTransformPropertiesEnabled == b.individualTransformPropertiesEnabled
144123#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
145124 && a.legacyOverflowScrollingTouchEnabled == b.legacyOverflowScrollingTouchEnabled
146125#endif
147  && a.overscrollBehaviorEnabled == b.overscrollBehaviorEnabled
148126 && a.relativeColorSyntaxEnabled == b.relativeColorSyntaxEnabled
149  && a.scrollBehaviorEnabled == b.scrollBehaviorEnabled
150127 && a.springTimingFunctionEnabled == b.springTimingFunctionEnabled
151 #if ENABLE(TEXT_AUTOSIZING)
152  && a.textAutosizingEnabled == b.textAutosizingEnabled
153 #endif
154128#if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D)
155129 && a.transformStyleOptimized3DEnabled == b.transformStyleOptimized3DEnabled
156130#endif

@@bool operator==(const CSSParserContext& a, const CSSParserContext& b)
158132 && a.focusVisibleEnabled == b.focusVisibleEnabled
159133 && a.hasPseudoClassEnabled == b.hasPseudoClassEnabled
160134 && a.cascadeLayersEnabled == b.cascadeLayersEnabled
161  && a.containerQueriesEnabled == b.containerQueriesEnabled
162135 && a.overflowClipEnabled == b.overflowClipEnabled
163136 && a.gradientPremultipliedAlphaInterpolationEnabled == b.gradientPremultipliedAlphaInterpolationEnabled
164137 && a.gradientInterpolationColorSpacesEnabled == b.gradientInterpolationColorSpacesEnabled
165  && a.inputSecurityEnabled == b.inputSecurityEnabled
166 #if ENABLE(ATTACHMENT_ELEMENT)
167  && a.attachmentEnabled == b.attachmentEnabled
168 #endif
169138 && a.subgridEnabled == b.subgridEnabled
 139 && a.propertySettings == b.propertySettings
170140 ;
171141}
172142

@@void add(Hasher& hasher, const CSSParserContext& context)
176146 | context.hasDocumentSecurityOrigin << 1
177147 | context.isContentOpaque << 2
178148 | context.useSystemAppearance << 3
179  | context.aspectRatioEnabled << 4
180  | context.colorContrastEnabled << 5
181  | context.colorFilterEnabled << 6
182  | context.colorMixEnabled << 7
183  | context.constantPropertiesEnabled << 8
184  | context.containmentEnabled << 9
185  | context.cssColor4 << 10
186  | context.deferredCSSParserEnabled << 11
187  | context.individualTransformPropertiesEnabled << 12
 149 | context.colorContrastEnabled << 4
 150 | context.colorMixEnabled << 5
 151 | context.constantPropertiesEnabled << 6
 152 | context.cssColor4 << 7
 153 | context.deferredCSSParserEnabled << 8
188154#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
189  | context.legacyOverflowScrollingTouchEnabled << 13
190 #endif
191  | context.overscrollBehaviorEnabled << 14
192  | context.relativeColorSyntaxEnabled << 15
193  | context.scrollBehaviorEnabled << 16
194  | context.springTimingFunctionEnabled << 17
195 #if ENABLE(TEXT_AUTOSIZING)
196  | context.textAutosizingEnabled << 18
 155 | context.legacyOverflowScrollingTouchEnabled << 9
197156#endif
 157 | context.relativeColorSyntaxEnabled << 10
 158 | context.springTimingFunctionEnabled << 11
198159#if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D)
199  | context.transformStyleOptimized3DEnabled << 19
200 #endif
201  | context.useLegacyBackgroundSizeShorthandBehavior << 20
202  | context.focusVisibleEnabled << 21
203  | context.hasPseudoClassEnabled << 22
204  | context.cascadeLayersEnabled << 23
205  | context.containerQueriesEnabled << 24
206  | context.overflowClipEnabled << 25
207  | context.gradientPremultipliedAlphaInterpolationEnabled << 26
208  | context.gradientInterpolationColorSpacesEnabled << 27
209 #if ENABLE(ATTACHMENT_ELEMENT)
210  | context.attachmentEnabled << 28
211 #endif
212  | context.accentColorEnabled << 29
213  | context.inputSecurityEnabled << 30
214  | context.subgridEnabled << 31
215  | (unsigned long long)context.mode << 32; // This is multiple bits, so keep it last.
216  add(hasher, context.baseURL, context.charset, bits);
217 }
218 
219 bool CSSParserContext::isPropertyRuntimeDisabled(CSSPropertyID property) const
220 {
221  switch (property) {
222  case CSSPropertyAdditiveSymbols:
223  case CSSPropertyFallback:
224  case CSSPropertyPad:
225  case CSSPropertySymbols:
226  case CSSPropertyNegative:
227  case CSSPropertyPrefix:
228  case CSSPropertyRange:
229  case CSSPropertySuffix:
230  case CSSPropertySystem:
231  return !counterStyleAtRulesEnabled;
232  case CSSPropertyAccentColor:
233  return !accentColorEnabled;
234  case CSSPropertyAspectRatio:
235  return !aspectRatioEnabled;
236  case CSSPropertyContain:
237  return !containmentEnabled;
238  case CSSPropertyAppleColorFilter:
239  return !colorFilterEnabled;
240  case CSSPropertyInputSecurity:
241  return !inputSecurityEnabled;
242  case CSSPropertyTranslate:
243  case CSSPropertyRotate:
244  case CSSPropertyScale:
245  return !individualTransformPropertiesEnabled;
246  case CSSPropertyOverscrollBehavior:
247  case CSSPropertyOverscrollBehaviorBlock:
248  case CSSPropertyOverscrollBehaviorInline:
249  case CSSPropertyOverscrollBehaviorX:
250  case CSSPropertyOverscrollBehaviorY:
251  return !overscrollBehaviorEnabled;
252  case CSSPropertyScrollBehavior:
253  return !scrollBehaviorEnabled;
254 #if ENABLE(TEXT_AUTOSIZING) && !PLATFORM(IOS_FAMILY)
255  case CSSPropertyWebkitTextSizeAdjust:
256  return !textAutosizingEnabled;
257 #endif
258 #if ENABLE(OVERFLOW_SCROLLING_TOUCH)
259  case CSSPropertyWebkitOverflowScrolling:
260  return !legacyOverflowScrollingTouchEnabled;
261 #endif
262  default:
263  return false;
264  }
 160 | context.transformStyleOptimized3DEnabled << 12
 161#endif
 162 | context.useLegacyBackgroundSizeShorthandBehavior << 13
 163 | context.focusVisibleEnabled << 14
 164 | context.hasPseudoClassEnabled << 15
 165 | context.cascadeLayersEnabled << 16
 166 | context.overflowClipEnabled << 17
 167 | context.gradientPremultipliedAlphaInterpolationEnabled << 18
 168 | context.gradientInterpolationColorSpacesEnabled << 19
 169 | context.subgridEnabled << 20
 170 | (unsigned long long)context.mode << 21; // This is multiple bits, so keep it last.
 171 add(hasher, context.baseURL, context.charset, context.propertySettings, bits);
265172}
266173
267174ResolvedURL CSSParserContext::completeURL(const String& string) const

Source/WebCore/css/parser/CSSParserContext.h

3636namespace WebCore {
3737
3838class Document;
 39class Settings;
3940
4041struct ResolvedURL;
4142

@@struct CSSParserContext {
5556 bool useSystemAppearance { false };
5657
5758 // Settings.
58  bool accentColorEnabled { false };
59  bool aspectRatioEnabled { false };
6059 bool colorContrastEnabled { false };
61  bool colorFilterEnabled { false };
6260 bool colorMixEnabled { false };
6361 bool constantPropertiesEnabled { false };
64  bool containmentEnabled { false };
65  bool counterStyleAtRulesEnabled { false };
6662 bool counterStyleAtRuleImageSymbolsEnabled { false };
6763 bool cssColor4 { false };
6864 bool deferredCSSParserEnabled { false };
69  bool individualTransformPropertiesEnabled { false };
7065#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
7166 bool legacyOverflowScrollingTouchEnabled { false };
7267#endif
73  bool overscrollBehaviorEnabled { false };
7468 bool relativeColorSyntaxEnabled { false };
75  bool scrollBehaviorEnabled { false };
7669 bool springTimingFunctionEnabled { false };
77 #if ENABLE(TEXT_AUTOSIZING)
78  bool textAutosizingEnabled { false };
79 #endif
8070#if ENABLE(CSS_TRANSFORM_STYLE_OPTIMIZED_3D)
8171 bool transformStyleOptimized3DEnabled { false };
8272#endif

@@struct CSSParserContext {
8474 bool focusVisibleEnabled { false };
8575 bool hasPseudoClassEnabled { false };
8676 bool cascadeLayersEnabled { false };
87  bool containerQueriesEnabled { false };
8877 bool overflowClipEnabled { false };
8978 bool gradientPremultipliedAlphaInterpolationEnabled { false };
9079 bool gradientInterpolationColorSpacesEnabled { false };
91  bool inputSecurityEnabled { false };
9280 bool subgridEnabled { false };
9381
9482 // RuntimeEnabledFeatures.
9583#if ENABLE(ATTACHMENT_ELEMENT)
9684 bool attachmentEnabled { false };
9785#endif
 86 CSSPropertySettings propertySettings;
9887
9988 CSSParserContext(CSSParserMode, const URL& baseURL = URL());
10089 WEBCORE_EXPORT CSSParserContext(const Document&, const URL& baseURL = URL(), const String& charset = emptyString());
101  bool isPropertyRuntimeDisabled(CSSPropertyID) const;
10290 ResolvedURL completeURL(const String&) const;
10391};
10492

Source/WebCore/css/parser/CSSParserFastPaths.cpp

@@bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId
648648 case CSSPropertyImageRendering: // auto | optimizeContrast | pixelated | optimizeSpeed | crispEdges | optimizeQuality | webkit-crispEdges
649649 return valueID == CSSValueAuto || valueID == CSSValueOptimizeSpeed || valueID == CSSValueOptimizeQuality || valueID == CSSValueWebkitCrispEdges || valueID == CSSValueWebkitOptimizeContrast || valueID == CSSValueCrispEdges || valueID == CSSValuePixelated;
650650 case CSSPropertyInputSecurity:
651  if (!context.inputSecurityEnabled)
652  return false;
653651 return valueID == CSSValueAuto || valueID == CSSValueNone;
654652#if ENABLE(CSS_COMPOSITING)
655653 case CSSPropertyIsolation: // auto | isolate

@@bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId
687685 case CSSPropertyOverscrollBehaviorInline:
688686 case CSSPropertyOverscrollBehaviorX:
689687 case CSSPropertyOverscrollBehaviorY:
690  if (!context.overscrollBehaviorEnabled)
691  return false;
692688 return valueID == CSSValueAuto || valueID == CSSValueContain || valueID == CSSValueNone;
693689 case CSSPropertyBreakAfter:
694690 case CSSPropertyBreakBefore:

@@bool CSSParserFastPaths::isValidKeywordPropertyAndValue(CSSPropertyID propertyId
889885 return valueID == CSSValueNormal || valueID == CSSValueHistoricalForms;
890886#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
891887 case CSSPropertyWebkitOverflowScrolling:
892  if (!context.legacyOverflowScrollingTouchEnabled)
893  return false;
894888 return valueID == CSSValueAuto || valueID == CSSValueTouch;
895889#endif
896890#if ENABLE(VARIATION_FONTS)

@@RefPtr<CSSValue> CSSParserFastPaths::maybeParseValue(CSSPropertyID propertyID, S
13951389{
13961390 if (auto result = parseSimpleLengthValue(propertyID, string, context.mode))
13971391 return result;
1398  if (propertyID == CSSPropertyCaretColor || (propertyID == CSSPropertyAccentColor && context.accentColorEnabled))
 1392 if ((propertyID == CSSPropertyCaretColor || propertyID == CSSPropertyAccentColor) && isCSSPropertyExposed(propertyID, &context.propertySettings))
13991393 return parseColorWithAuto(string, context);
14001394 if (CSSProperty::isColorProperty(propertyID))
14011395 return parseColor(string, context);

Source/WebCore/css/parser/CSSParserImpl.cpp

@@RefPtr<StyleRulePage> CSSParserImpl::consumePageRule(CSSParserTokenRange prelude
764764
765765RefPtr<StyleRuleCounterStyle> CSSParserImpl::consumeCounterStyleRule(CSSParserTokenRange prelude, CSSParserTokenRange block)
766766{
767  if (!m_context.counterStyleAtRulesEnabled)
 767 if (!m_context.propertySettings.cssCounterStyleAtRulesEnabled)
768768 return nullptr;
769769
770770 auto rangeCopy = prelude; // For inspector callbacks

@@RefPtr<StyleRuleLayer> CSSParserImpl::consumeLayerRule(CSSParserTokenRange prelu
849849
850850RefPtr<StyleRuleContainer> CSSParserImpl::consumeContainerRule(CSSParserTokenRange prelude, CSSParserTokenRange block)
851851{
852  if (!m_context.containerQueriesEnabled)
 852 if (!m_context.propertySettings.cssContainerQueriesEnabled)
853853 return nullptr;
854854
855855 if (prelude.atEnd())

@@void CSSParserImpl::consumeDeclaration(CSSParserTokenRange range, StyleRuleType
10351035
10361036 size_t propertiesCount = m_parsedProperties.size();
10371037
1038  if (m_context.isPropertyRuntimeDisabled(propertyID) || isInternalCSSProperty(propertyID))
 1038 if (!isCSSPropertyExposed(propertyID, &m_context.propertySettings))
10391039 propertyID = CSSPropertyInvalid;
10401040
10411041 if (propertyID == CSSPropertyInvalid && CSSVariableParser::isValidVariableName(token)) {

Source/WebCore/css/parser/CSSPropertyParser.cpp

@@static CSSPropertyID cssPropertyID(const CharacterType* propertyName, unsigned l
119119 buffer[length] = '\0';
120120
121121 if (auto hashTableEntry = findProperty(buffer, length)) {
122  auto propertyID = static_cast<CSSPropertyID>(hashTableEntry->id);
123  // FIXME: Should take account for flags in settings().
124  if (isEnabledCSSProperty(propertyID))
125  return propertyID;
 122 return static_cast<CSSPropertyID>(hashTableEntry->id);
126123 }
127124 return CSSPropertyInvalid;
128125}

@@CSSPropertyParser::CSSPropertyParser(const CSSParserTokenRange& range, const CSS
212209
213210void CSSPropertyParser::addProperty(CSSPropertyID property, CSSPropertyID currentShorthand, Ref<CSSValue>&& value, bool important, bool implicit)
214211{
215  if (!isEnabledCSSProperty(property))
216  return;
217 
218212 int shorthandIndex = 0;
219213 bool setFromShorthand = false;
220214

@@void CSSPropertyParser::addProperty(CSSPropertyID property, CSSPropertyID curren
225219 shorthandIndex = indexOfShorthandForLonghand(currentShorthand, shorthands);
226220 }
227221
 222 // Allow anything to be set from a shorthand (e.g. the CSS all property always sets everything,
 223 // regardless of whether the longhands are enabled), and allow internal properties as we use
 224 // them to handle certain DOM-exposed values (e.g. -webkit-font-size-delta from
 225 // execCommand('FontSizeDelta')).
 226 ASSERT(isCSSPropertyExposed(property, &m_context.propertySettings) || setFromShorthand || isInternalCSSProperty(property));
 227
228228 m_parsedProperties->append(CSSProperty(property, WTFMove(value), important, setFromShorthand, shorthandIndex, implicit));
229229}
230230

@@static RefPtr<CSSValue> consumeDisplay(CSSParserTokenRange& range)
492492 return CSSValuePool::singleton().createValue(selectShortValue());
493493}
494494
495 static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range)
 495static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range, const CSSParserContext& context)
496496{
497497 if (range.peek().id() == CSSValueAuto)
498498 return consumeIdent(range);

@@static RefPtr<CSSValue> consumeWillChange(CSSParserTokenRange& range)
516516 CSSPropertyID propertyID = cssPropertyID(range.peek().value());
517517 if (propertyID == CSSPropertyWillChange)
518518 return nullptr;
 519 if (!isCSSPropertyExposed(propertyID, &context.propertySettings))
 520 propertyID = CSSPropertyInvalid;
519521 if (propertyID != CSSPropertyInvalid) {
520522 values->append(CSSValuePool::singleton().createIdentifierValue(propertyID));
521523 range.consumeIncludingWhitespace();

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
42064208 if (!CSSParserFastPaths::isPartialKeywordPropertyID(property))
42074209 return nullptr;
42084210 }
 4211
 4212 if (!isCSSPropertyExposed(property, &m_context.propertySettings) && !isInternalCSSProperty(property)) {
 4213 // Allow internal properties as we use them to parse several internal-only-shorthands (e.g. background-repeat),
 4214 // and to handle certain DOM-exposed values (e.g. -webkit-font-size-delta from execCommand('FontSizeDelta')).
 4215 ASSERT_NOT_REACHED();
 4216 return nullptr;
 4217 }
 4218
42094219 switch (property) {
42104220 case CSSPropertyDisplay:
42114221 return consumeDisplay(m_range);
42124222 case CSSPropertyWillChange:
4213  return consumeWillChange(m_range);
 4223 return consumeWillChange(m_range, m_context);
42144224 case CSSPropertyPage:
42154225 return consumePage(m_range);
42164226 case CSSPropertyQuotes:

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
42494259 return consumeTabSize(m_range, m_context.mode);
42504260#if ENABLE(TEXT_AUTOSIZING)
42514261 case CSSPropertyWebkitTextSizeAdjust:
4252  // FIXME: Support toggling the validation of this property via a runtime setting that is independent of
4253  // whether isTextAutosizingEnabled() is true. We want to enable this property on iOS, when simulating
4254  // a iOS device in Safari's responsive design mode and when optionally enabled in DRT/WTR. Otherwise,
4255  // this property should be disabled by default.
4256 #if !PLATFORM(IOS_FAMILY)
4257  if (!m_context.textAutosizingEnabled)
4258  return nullptr;
4259 #endif
42604262 return consumeTextSizeAdjust(m_range, m_context.mode);
42614263#endif
42624264 case CSSPropertyFontSize:

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
43444346 case CSSPropertyScrollSnapType:
43454347 return consumeScrollSnapType(m_range);
43464348 case CSSPropertyScrollBehavior:
4347  if (!m_context.scrollBehaviorEnabled)
4348  return nullptr;
43494349 return consumeScrollBehavior(m_range);
43504350 case CSSPropertyOverscrollBehaviorBlock:
43514351 case CSSPropertyOverscrollBehaviorInline:
43524352 case CSSPropertyOverscrollBehaviorX:
43534353 case CSSPropertyOverscrollBehaviorY:
4354  if (!m_context.overscrollBehaviorEnabled)
4355  return nullptr;
43564354 return consumeOverscrollBehavior(m_range);
43574355 case CSSPropertyClip:
43584356 return consumeClip(m_range, m_context.mode);

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
44274425 case CSSPropertyColumnRuleColor:
44284426 return consumeColor(m_range, m_context);
44294427 case CSSPropertyAccentColor: {
4430  if (!m_context.accentColorEnabled)
4431  return nullptr;
44324428 return consumeColorWithAuto(m_range, m_context);
44334429 }
44344430 case CSSPropertyCaretColor:

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
44704466#endif
44714467 return consumeFilter(m_range, m_context, AllowedFilterFunctions::PixelFilters);
44724468 case CSSPropertyAppleColorFilter:
4473  if (!m_context.colorFilterEnabled)
4474  return nullptr;
44754469 return consumeFilter(m_range, m_context, AllowedFilterFunctions::ColorFilters);
44764470 case CSSPropertyWebkitTextDecorationsInEffect:
44774471 case CSSPropertyTextDecorationLine:

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
44974491 case CSSPropertyTransformOriginZ:
44984492 return consumeLength(m_range, m_context.mode, ValueRange::All);
44994493 case CSSPropertyTranslate:
4500  if (!m_context.individualTransformPropertiesEnabled)
4501  return nullptr;
45024494 return consumeTranslate(m_range, m_context.mode);
45034495 case CSSPropertyScale:
4504  if (!m_context.individualTransformPropertiesEnabled)
4505  return nullptr;
45064496 return consumeScale(m_range, m_context.mode);
45074497 case CSSPropertyRotate:
4508  if (!m_context.individualTransformPropertiesEnabled)
4509  return nullptr;
45104498 return consumeRotate(m_range, m_context.mode);
45114499 case CSSPropertyFill:
45124500 case CSSPropertyStroke:

@@RefPtr<CSSValue> CSSPropertyParser::parseSingleValue(CSSPropertyID property, CSS
46944682 case CSSPropertyAlt:
46954683 return consumeAlt(m_range, m_context);
46964684 case CSSPropertyAspectRatio:
4697  if (!m_context.aspectRatioEnabled)
4698  return nullptr;
46994685 return consumeAspectRatio(m_range);
47004686 case CSSPropertyContain:
4701  if (!m_context.containmentEnabled)
4702  return nullptr;
47034687 return consumeContain(m_range);
47044688 case CSSPropertyTextEmphasisPosition:
47054689 return consumeTextEmphasisPosition(m_range);

@@static RefPtr<CSSValue> consumeCounterStyleSpeakAs(CSSParserTokenRange& range)
49584942
49594943RefPtr<CSSValue> CSSPropertyParser::parseCounterStyleDescriptor(CSSPropertyID propId, CSSParserTokenRange& range, const CSSParserContext& context)
49604944{
4961  if (!context.counterStyleAtRulesEnabled)
4962  return nullptr;
 4945 ASSERT(context.propertySettings.cssCounterStyleAtRulesEnabled && isCSSPropertyExposed(propId, &context.propertySettings));
49634946
49644947 switch (propId) {
49654948 case CSSPropertySystem:

@@bool CSSPropertyParser::parseCounterStyleDescriptor(CSSPropertyID propId, const
49994982
50004983bool CSSPropertyParser::parseFontFaceDescriptor(CSSPropertyID propId)
50014984{
 4985 ASSERT(isCSSPropertyExposed(propId, &m_context.propertySettings));
 4986
50024987 RefPtr<CSSValue> parsedValue;
50034988 switch (propId) {
50044989 case CSSPropertyFontFamily:

@@static RefPtr<CSSValueList> consumeOverrideColorsDescriptor(CSSParserTokenRange&
50995084
51005085bool CSSPropertyParser::parseFontPaletteValuesDescriptor(CSSPropertyID propId)
51015086{
 5087 ASSERT(isCSSPropertyExposed(propId, &m_context.propertySettings));
 5088
51025089 RefPtr<CSSValue> parsedValue;
51035090 switch (propId) {
51045091 case CSSPropertyFontFamily:

@@bool CSSPropertyParser::consumePlaceSelfShorthand(bool important)
61556142bool CSSPropertyParser::consumeOverscrollBehaviorShorthand(bool important)
61566143{
61576144 ASSERT(shorthandForProperty(CSSPropertyOverscrollBehavior).length() == 2);
6158  if (!m_context.overscrollBehaviorEnabled)
6159  return false;
61606145
61616146 if (m_range.atEnd())
61626147 return false;

Source/WebCore/css/parser/CSSSelectorParser.cpp

@@std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumePseudo(CSSParserTok
650650 if (!m_context.hasPseudoClassEnabled && selector->pseudoClassType() == CSSSelector::PseudoClassHas)
651651 return nullptr;
652652#if ENABLE(ATTACHMENT_ELEMENT)
653  if (!m_context.attachmentEnabled && selector->pseudoClassType() == CSSSelector::PseudoClassHasAttachment)
 653 if (!RuntimeEnabledFeatures::sharedFeatures().attachmentElementEnabled() && selector->pseudoClassType() == CSSSelector::PseudoClassHasAttachment)
654654 return nullptr;
655655#endif
656656 }

Source/WebCore/inspector/InspectorStyleSheet.cpp

@@Vector<InspectorStyleProperty> InspectorStyle::collectProperties(bool includeAll
671671 if (includeAll) {
672672 for (auto i = firstCSSProperty; i < lastCSSProperty; ++i) {
673673 auto id = convertToCSSPropertyID(i);
674  // FIXME: Should take account for flags in settings().
675  if (isInternalCSSProperty(id) || !isEnabledCSSProperty(id))
 674 if (!isCSSPropertyExposed(id, m_style->settings()))
676675 continue;
677676
678677 auto name = getPropertyNameString(id);

@@Ref<Protocol::CSS::CSSStyle> InspectorStyle::styleWithProperties() const
720719 CSSPropertyID propertyId = cssPropertyID(name);
721720
722721 // Default "parsedOk" == true.
723  if (!propertyEntry.parsedOk || isInternalCSSProperty(propertyId))
 722 if (!propertyEntry.parsedOk || !isCSSPropertyExposed(propertyId, m_style->settings()))
724723 property->setParsedOk(false);
725724 if (it->hasRawText())
726725 property->setText(it->rawText);

Source/WebCore/inspector/agents/InspectorCSSAgent.cpp

@@CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule& rule)
300300 return downcast<CSSStyleRule>(&rule);
301301}
302302
303 InspectorCSSAgent::InspectorCSSAgent(WebAgentContext& context)
 303InspectorCSSAgent::InspectorCSSAgent(PageAgentContext& context)
304304 : InspectorAgentBase("CSS"_s, context)
305305 , m_frontendDispatcher(makeUnique<CSSFrontendDispatcher>(context.frontendRouter))
306306 , m_backendDispatcher(CSSBackendDispatcher::create(context.backendDispatcher, this))
 307 , m_inspectedPage(context.inspectedPage)
307308 , m_layoutContextTypeChangedTimer(*this, &InspectorCSSAgent::layoutContextTypeChangedTimerFired)
308309{
309310}

@@Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Protocol::CSS::CSSPropertyInfo>>> Insp
847848
848849 for (int i = firstCSSProperty; i <= lastCSSProperty; ++i) {
849850 CSSPropertyID propertyID = convertToCSSPropertyID(i);
850  // FIXME: Should take account for flags in settings().
851  if (isInternalCSSProperty(propertyID) || !isEnabledCSSProperty(propertyID))
 851 if (!isCSSPropertyExposed(propertyID, &m_inspectedPage.settings()))
852852 continue;
853853
854854 auto property = Protocol::CSS::CSSPropertyInfo::create()

@@Protocol::ErrorStringOr<Ref<JSON::ArrayOf<Protocol::CSS::CSSPropertyInfo>>> Insp
867867 if (shorthand.length()) {
868868 auto longhands = JSON::ArrayOf<String>::create();
869869 for (auto longhand : shorthand) {
870  if (isEnabledCSSProperty(longhand))
 870 if (isCSSPropertyExposed(longhand, &m_inspectedPage.settings()))
871871 longhands->addItem(getPropertyNameString(longhand));
872872 }
873  property->setLonghands(WTFMove(longhands));
 873 if (longhands->length())
 874 property->setLonghands(WTFMove(longhands));
874875 }
875876
876877 if (CSSParserFastPaths::isKeywordPropertyID(propertyID)) {

Source/WebCore/inspector/agents/InspectorCSSAgent.h

@@class Element;
5252class Node;
5353class NodeList;
5454class RenderObject;
 55class Settings;
5556class StyleRule;
5657
5758namespace Style {

@@class InspectorCSSAgent final : public InspectorAgentBase , public Inspector::CS
6263 WTF_MAKE_NONCOPYABLE(InspectorCSSAgent);
6364 WTF_MAKE_FAST_ALLOCATED;
6465public:
65  InspectorCSSAgent(WebAgentContext&);
 66 InspectorCSSAgent(PageAgentContext&);
6667 ~InspectorCSSAgent();
6768
6869 class InlineStyleOverrideScope {

@@private:
166167 std::unique_ptr<Inspector::CSSFrontendDispatcher> m_frontendDispatcher;
167168 RefPtr<Inspector::CSSBackendDispatcher> m_backendDispatcher;
168169
 170 Page& m_inspectedPage;
169171 IdToInspectorStyleSheet m_idToInspectorStyleSheet;
170172 CSSStyleSheetToInspectorStyleSheet m_cssStyleSheetToInspectorStyleSheet;
171173 HashMap<Node*, Ref<InspectorStyleSheetForInlineStyle>> m_nodeToInspectorStyleSheet; // bogus "stylesheets" with elements' inline styles

Source/WebCore/style/StyleBuilderCustom.h

@@inline void BuilderCustom::applyValueWillChange(BuilderState& builderState, CSSV
20212021 break;
20222022 default:
20232023 if (primitiveValue.isPropertyID()) {
2024  if (primitiveValue.propertyID() == CSSPropertyContain && !builderState.document().settings().cssContainmentEnabled())
 2024 if (!isCSSPropertyExposed(primitiveValue.propertyID(), &builderState.document().settings()))
20252025 break;
20262026 willChange->addFeature(WillChangeData::Feature::Property, primitiveValue.propertyID());
20272027 }

LayoutTests/ChangeLog

 12022-04-05 Sam Sneddon <gsnedders@apple.com>
 2
 3 Unify CSS property enablement (-apple-color-filter should not exist on CSSStyleDeclaration by default)
 4 https://bugs.webkit.org/show_bug.cgi?id=217802
 5 <rdar://problem/70600812>
 6
 7 Reviewed by NOBODY (OOPS!).
 8
 9 * TestExpectations: Remove debug crash of CSS-supports-CSSStyleDeclaration.html.
 10 * css3/color-filters/color-filter-exposed-if-disabled-expected.txt:
 11 * css3/color-filters/color-filter-exposed-if-disabled.html: Be more thorough.
 12 * css3/color-filters/color-filter-exposed-if-enabled-expected.txt: Added.
 13 * css3/color-filters/color-filter-exposed-if-enabled.html: Added.
 14 * fast/css/webkit-mask-crash-implicit-expected.txt: Removed.
 15 * fast/css/webkit-mask-crash-implicit.html: Removed, due to extensive changes this is not interesting.
 16 * fast/events/input-events-paste-rich-datatransfer-expected.txt: Remove non-exposed properties.
 17 * fast/inspector-support/style-expected.txt: Remove non-exposed properties.
 18 * inspector/css/css-property-expected.txt: Remove non-exposed properties.
 19 * inspector/css/css-property.html: All non-exposed properties should behave the same.
 20 * inspector/css/getSupportedCSSProperties-expected.txt:
 21 * inspector/css/getSupportedCSSProperties.html: Add test for a property which is only internally a shorthand.
 22 * platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
 23 Remove non-exposed properties.
 24 * platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt:
 25 Update for CSS.supports() correctly excluding descriptors.
 26 * platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt:
 27 Update for CSS.supports() correctly excluding descriptors and non-exposed properties.
 28 * platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt:
 29 Update for CSS.supports() correctly excluding descriptors and non-exposed properties.
 30
1312022-04-04 Matt Woodrow <mattwoodrow@apple.com>
232
333 intersectsWithAncestor should take fragmented boxes into account.

LayoutTests/imported/w3c/ChangeLog

 12022-04-05 Sam Sneddon <gsnedders@apple.com>
 2
 3 Unify CSS property enablement (-apple-color-filter should not exist on CSSStyleDeclaration by default)
 4 https://bugs.webkit.org/show_bug.cgi?id=217802
 5 <rdar://problem/70600812>
 6
 7 Reviewed by NOBODY (OOPS!).
 8
 9 * web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
 10 Remove properties that shouldn't be exposed.
 11 * web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt:
 12 Update for CSS.supports() correctly excluding descriptors and non-exposed properties.
 13 * web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration.html:
 14 Move the properties list to properties.json below.
 15 * web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt:
 16 * web-platform-tests/css/css-conditional/js/CSS-supports-L3.html:
 17 Add tests for both one & two arg forms, test descriptors.
 18 * web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt: Added.
 19 * web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html: Added.
 20 * web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt:
 21 * web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt: Added.
 22 * web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html: Added.
 23 * web-platform-tests/css/cssom/property-accessors-expected.txt: Added.
 24 * web-platform-tests/css/cssom/property-accessors.html: Added. This used to ASSERT, but this doesn't.
 25 * web-platform-tests/css/support/properties.json: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration.html.
 26
1272022-04-04 J Pascoe <j_pascoe@apple.com>
228
329 [ iOS 15 ] imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.https.any.worker.html is flaky timing out

LayoutTests/TestExpectations

@@imported/w3c/web-platform-tests/css/css-conditional/css-supports-036.xht [ Image
17611761imported/w3c/web-platform-tests/css/css-conditional/css-supports-038.xht [ ImageOnlyFailure ]
17621762imported/w3c/web-platform-tests/css/css-conditional/css-supports-039.xht [ ImageOnlyFailure ]
17631763
1764 [ Debug ] imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration.html [ Crash ]
1765 
17661764transitions/svg-text-shadow-transition.html [ Failure ]
17671765webkit.org/b/137883 transitions/background-transitions.html [ Failure Pass ]
17681766webkit.org/b/137883 transitions/border-radius-transition.html [ Failure Pass ]

LayoutTests/css3/color-filters/color-filter-exposed-if-disabled-expected.txt

@@Tests that -apple-color-filter is not exposed when the feature is disabled
33On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
44
55
6 FAIL '-apple-color-filter' in document.documentElement.style should be false. Was true.
7 FAIL '-apple-color-filter' in getComputedStyle(document.documentElement) should be false. Was true.
 6PASS '-apple-color-filter' in document.documentElement.style is false
 7PASS document.documentElement.style['-apple-color-filter'] is undefined.
 8PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 9PASS document.documentElement.style.getPropertyPriority('-apple-color-filter') is ""
 10PASS document.documentElement.style.getPropertyShorthand('-apple-color-filter') is null
 11PASS document.documentElement.style.isPropertyImplicit('-apple-color-filter') is false
 12PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter') is null
 13PASS document.documentElement.style.removeProperty('-apple-color-filter') is ""
 14PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 15PASS document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '') is undefined.
 16PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 17PASS '-apple-color-filter' in getComputedStyle(document.documentElement) is false
 18PASS getComputedStyle(document.documentElement)['-apple-color-filter'] is undefined.
 19PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is ""
 20PASS getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter') is ""
 21PASS getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter') is ""
 22PASS getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter') is false
 23PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter') is null
 24PASS getComputedStyle(document.documentElement).removeProperty('-apple-color-filter') threw exception NoModificationAllowedError: The object can not be modified..
 25PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 26PASS getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '') threw exception NoModificationAllowedError: The object can not be modified..
 27PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 28PASS 'AppleColorFilter' in document.documentElement.style is false
 29PASS document.documentElement.style['AppleColorFilter'] is undefined.
 30PASS 'AppleColorFilter' in getComputedStyle(document.documentElement) is false
 31PASS getComputedStyle(document.documentElement)['AppleColorFilter'] is undefined.
832PASS CSS.supports('-apple-color-filter: contrast(1)') is false
933PASS CSS.supports('-apple-color-filter: inherit') is false
 34PASS CSS.supports('-apple-color-filter', 'contrast(1)') is false
 35PASS CSS.supports('-apple-color-filter', 'inherit') is false
 36PASS getComputedStyle(document.getElementById('test1')).color is 'rgb(0, 128, 128)'
 37PASS getComputedStyle(document.getElementById('test2')).color is 'rgb(0, 128, 128)'
1038PASS successfullyParsed is true
11 Some tests failed.
1239
1340TEST COMPLETE
1441

LayoutTests/css3/color-filters/color-filter-exposed-if-disabled.html

33<head>
44<meta charset="utf-8">
55<script src="../../resources/js-test.js"></script>
 6<style>
 7#test1, #test2 {
 8 color: teal;
 9}
 10@supports (-apple-color-filter: contrast(1)) {
 11 #test1 {
 12 color: orange;
 13 }
 14}
 15@supports (-apple-color-filter: inherit) {
 16 #test2 {
 17 color: orange;
 18 }
 19}
 20</style>
621</head>
722<body>
 23<div id=test1></div>
 24<div id=test2></div>
825<script>
926description("Tests that -apple-color-filter is not exposed when the feature is disabled");
1027
1128shouldBeFalse("'-apple-color-filter' in document.documentElement.style");
 29shouldBeUndefined("document.documentElement.style['-apple-color-filter']");
 30
 31document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important");
 32shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 33shouldBeEmptyString("document.documentElement.style.getPropertyPriority('-apple-color-filter')");
 34shouldBeNull("document.documentElement.style.getPropertyShorthand('-apple-color-filter')");
 35shouldBeFalse("document.documentElement.style.isPropertyImplicit('-apple-color-filter')");
 36shouldBeNull("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')");
 37shouldBeEmptyString("document.documentElement.style.removeProperty('-apple-color-filter')");
 38shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 39shouldBeUndefined("document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '')");
 40shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 41document.documentElement.removeAttribute("style");
 42
1243shouldBeFalse("'-apple-color-filter' in getComputedStyle(document.documentElement)");
 44shouldBeUndefined("getComputedStyle(document.documentElement)['-apple-color-filter']");
 45
 46document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important");
 47shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')");
 48shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter')");
 49shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter')");
 50shouldBeFalse("getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter')");
 51shouldBeNull("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')");
 52shouldThrowErrorName("getComputedStyle(document.documentElement).removeProperty('-apple-color-filter')", "NoModificationAllowedError");
 53shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 54shouldThrowErrorName("getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '')", "NoModificationAllowedError");
 55shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 56document.documentElement.removeAttribute("style");
 57
 58shouldBeFalse("'AppleColorFilter' in document.documentElement.style");
 59shouldBeUndefined("document.documentElement.style['AppleColorFilter']");
 60
 61shouldBeFalse("'AppleColorFilter' in getComputedStyle(document.documentElement)");
 62shouldBeUndefined("getComputedStyle(document.documentElement)['AppleColorFilter']");
 63
1364shouldBeFalse("CSS.supports('-apple-color-filter: contrast(1)')");
1465shouldBeFalse("CSS.supports('-apple-color-filter: inherit')");
 66shouldBeFalse("CSS.supports('-apple-color-filter', 'contrast(1)')");
 67shouldBeFalse("CSS.supports('-apple-color-filter', 'inherit')");
 68
 69shouldBe("getComputedStyle(document.getElementById('test1')).color", "'rgb(0, 128, 128)'");
 70shouldBe("getComputedStyle(document.getElementById('test2')).color", "'rgb(0, 128, 128)'");
1571
1672</script>
1773</body>

LayoutTests/css3/color-filters/color-filter-exposed-if-enabled-expected.txt

 1Tests that -apple-color-filter is exposed when the feature is enabled
 2
 3On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 4
 5
 6PASS '-apple-color-filter' in document.documentElement.style is true
 7PASS document.documentElement.style['-apple-color-filter'] is not undefined
 8PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is 'contrast(1)'
 9PASS document.documentElement.style.getPropertyPriority('-apple-color-filter') is 'important'
 10PASS document.documentElement.style.getPropertyShorthand('-apple-color-filter') is null
 11PASS document.documentElement.style.isPropertyImplicit('-apple-color-filter') is false
 12PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter').length is 1
 13PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssValueType is 3
 14PASS document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssText is 'contrast(1)'
 15PASS document.documentElement.style.removeProperty('-apple-color-filter') is 'contrast(1)'
 16PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is ""
 17PASS document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '') is undefined.
 18PASS document.documentElement.style.getPropertyValue('-apple-color-filter') is 'contrast(1)'
 19PASS '-apple-color-filter' in getComputedStyle(document.documentElement) is true
 20PASS getComputedStyle(document.documentElement)['-apple-color-filter'] is not undefined
 21PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)'
 22PASS getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter') is ""
 23PASS getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter') is ""
 24PASS getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter') is false
 25PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter').length is 1
 26PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssValueType is 3
 27PASS getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssText is 'contrast(1)'
 28PASS getComputedStyle(document.documentElement).removeProperty('-apple-color-filter') threw exception NoModificationAllowedError: The object can not be modified..
 29PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)'
 30PASS getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '') threw exception NoModificationAllowedError: The object can not be modified..
 31PASS getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter') is 'contrast(1)'
 32PASS 'AppleColorFilter' in document.documentElement.style is true
 33PASS document.documentElement.style['AppleColorFilter'] is not undefined
 34PASS 'AppleColorFilter' in getComputedStyle(document.documentElement) is true
 35PASS getComputedStyle(document.documentElement)['AppleColorFilter'] is not undefined
 36PASS CSS.supports('-apple-color-filter: contrast(1)') is true
 37PASS CSS.supports('-apple-color-filter: inherit') is true
 38PASS CSS.supports('-apple-color-filter', 'contrast(1)') is true
 39PASS CSS.supports('-apple-color-filter', 'inherit') is true
 40PASS getComputedStyle(document.getElementById('test1')).color is 'rgb(255, 165, 0)'
 41PASS getComputedStyle(document.getElementById('test2')).color is 'rgb(255, 165, 0)'
 42PASS successfullyParsed is true
 43
 44TEST COMPLETE
 45

LayoutTests/css3/color-filters/color-filter-exposed-if-enabled.html

 1<!DOCTYPE html><!-- webkit-test-runner [ ColorFilterEnabled=true ] -->
 2<html>
 3<head>
 4<meta charset="utf-8">
 5<script src="../../resources/js-test.js"></script>
 6<style>
 7#test1, #test2 {
 8 color: teal;
 9}
 10@supports (-apple-color-filter: contrast(1)) {
 11 #test1 {
 12 color: orange;
 13 }
 14}
 15@supports (-apple-color-filter: inherit) {
 16 #test2 {
 17 color: orange;
 18 }
 19}
 20</style>
 21</head>
 22<body>
 23<div id=test1></div>
 24<div id=test2></div>
 25<script>
 26description("Tests that -apple-color-filter is exposed when the feature is enabled");
 27
 28shouldBeTrue("'-apple-color-filter' in document.documentElement.style");
 29shouldNotBe("document.documentElement.style['-apple-color-filter']", "undefined");
 30
 31document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important");
 32shouldBe("document.documentElement.style.getPropertyValue('-apple-color-filter')", "'contrast(1)'");
 33shouldBe("document.documentElement.style.getPropertyPriority('-apple-color-filter')", "'important'");
 34shouldBeNull("document.documentElement.style.getPropertyShorthand('-apple-color-filter')");
 35shouldBeFalse("document.documentElement.style.isPropertyImplicit('-apple-color-filter')");
 36shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter').length", "1");
 37shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssValueType", "3");
 38shouldBe("document.documentElement.style.getPropertyCSSValue('-apple-color-filter')[0].cssText", "'contrast(1)'");
 39shouldBe("document.documentElement.style.removeProperty('-apple-color-filter')", "'contrast(1)'");
 40shouldBeEmptyString("document.documentElement.style.getPropertyValue('-apple-color-filter')");
 41shouldBeUndefined("document.documentElement.style.setProperty('-apple-color-filter', 'contrast(1)', '')");
 42shouldBe("document.documentElement.style.getPropertyValue('-apple-color-filter')", "'contrast(1)'");
 43document.documentElement.removeAttribute("style");
 44
 45shouldBeTrue("'-apple-color-filter' in getComputedStyle(document.documentElement)");
 46shouldNotBe("getComputedStyle(document.documentElement)['-apple-color-filter']", "undefined");
 47
 48document.documentElement.setAttribute("style", "-apple-color-filter: contrast(1) !important");
 49shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'");
 50shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyPriority('-apple-color-filter')");
 51shouldBeEmptyString("getComputedStyle(document.documentElement).getPropertyShorthand('-apple-color-filter')");
 52shouldBeFalse("getComputedStyle(document.documentElement).isPropertyImplicit('-apple-color-filter')");
 53shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter').length", "1");
 54shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssValueType", "3");
 55shouldBe("getComputedStyle(document.documentElement).getPropertyCSSValue('-apple-color-filter')[0].cssText", "'contrast(1)'");
 56shouldThrowErrorName("getComputedStyle(document.documentElement).removeProperty('-apple-color-filter')", "NoModificationAllowedError");
 57shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'");
 58shouldThrowErrorName("getComputedStyle(document.documentElement).setProperty('-apple-color-filter', 'contrast(1)', '')", "NoModificationAllowedError");
 59shouldBe("getComputedStyle(document.documentElement).getPropertyValue('-apple-color-filter')", "'contrast(1)'");
 60document.documentElement.removeAttribute("style");
 61
 62shouldBeTrue("'AppleColorFilter' in document.documentElement.style");
 63shouldNotBe("document.documentElement.style['AppleColorFilter']", "undefined");
 64
 65shouldBeTrue("'AppleColorFilter' in getComputedStyle(document.documentElement)");
 66shouldNotBe("getComputedStyle(document.documentElement)['AppleColorFilter']", "undefined");
 67
 68shouldBeTrue("CSS.supports('-apple-color-filter: contrast(1)')");
 69shouldBeTrue("CSS.supports('-apple-color-filter: inherit')");
 70shouldBeTrue("CSS.supports('-apple-color-filter', 'contrast(1)')");
 71shouldBeTrue("CSS.supports('-apple-color-filter', 'inherit')");
 72
 73shouldBe("getComputedStyle(document.getElementById('test1')).color", "'rgb(255, 165, 0)'");
 74shouldBe("getComputedStyle(document.getElementById('test2')).color", "'rgb(255, 165, 0)'");
 75
 76</script>
 77</body>
 78</html>

LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt

1 PASS document.styleSheets[1].rules[0].style.cssText is "mask-repeat-x: repeat; mask-repeat-y: no-repeat;"
2 PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask') is ""
3 PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat') is "repeat-x"
4 

LayoutTests/fast/css/webkit-mask-crash-implicit.html

1 <!DOCTYPE html>
2 <head>
3 <script src="../../resources/js-test-pre.js"></script>
4 <style>
5 .box {
6 -webkit-mask-repeat: repeat-x; -webkit-mask-repeat-y: inherit;
7 }
8 </style>
9 <script>
10 if (window.internals)
11  testRunner.dumpAsText();
12 shouldBeEqualToString("document.styleSheets[1].rules[0].style.cssText", "mask-repeat-x: repeat; mask-repeat-y: no-repeat;");
13 shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask')", "");
14 shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat')", "repeat-x");
15 </script>
16 </head>
17 <body>
18 </body>
19 </html>

LayoutTests/fast/events/input-events-paste-rich-datatransfer-expected.txt

@@To manually test this, copy and paste into the first contenteditable. The follow
22
33destination after pasting (text/html):
44| <b>
5 | 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;"
 5| 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;"
66| "LayoutTests"
77| <i>
88| "are"

LayoutTests/fast/inspector-support/style-expected.txt

@@background-image: initial (original property was background)
44background-position-x: initial (original property was background)
55background-position-y: initial (original property was background)
66background-size: initial (original property was background)
7 background-repeat-x: initial (original property was background)
8 background-repeat-y: initial (original property was background)
97background-attachment: initial (original property was background)
108background-origin: initial (original property was background)
119background-clip: initial (original property was background)

LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt

@@PASS row-gap
248248PASS rx
249249PASS ry
250250PASS scale
251 PASS scroll-behavior
252251PASS scroll-margin-block
253252PASS scroll-margin-bottom
254253PASS scroll-margin-inline

@@PASS -webkit-text-combine
391390PASS -webkit-text-fill-color
392391PASS -webkit-text-orientation
393392PASS -webkit-text-security
394 PASS -webkit-text-size-adjust
395393PASS -webkit-text-stroke-color
396394PASS -webkit-text-stroke-width
397395PASS -webkit-text-zoom

LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt

11
2 FAIL -apple-color-filter: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 2PASS load properties list
 3PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports
34PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit-
4 FAIL -apple-color-filter: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
 5PASS -apple-color-filter: _dashed_attribute v. CSS.supports
56PASS -apple-pay-button-style: _camel_cased_attribute v. CSS.supports
67PASS -apple-pay-button-style: _webkit_cased_attribute must only exist for -webkit-
78PASS -apple-pay-button-style: _dashed_attribute v. CSS.supports

@@PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports
560561PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports
561562PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports
562563PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports
563 FAIL -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
564 FAIL -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports assert_equals: expected true but got false
565 FAIL -webkit-text-size-adjust: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
 564PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports
 565PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports
 566PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports
566567PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports
567568PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports
568569PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports

@@PASS flood-color: _dashed_attribute v. CSS.supports
891892PASS flood-opacity: _camel_cased_attribute v. CSS.supports
892893PASS flood-opacity: _dashed_attribute v. CSS.supports
893894PASS font: _camel_cased_attribute v. CSS.supports
894 PASS font-display: _camel_cased_attribute v. CSS.supports
895 PASS font-display: _dashed_attribute v. CSS.supports
 895FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 896FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
896897PASS font-family: _camel_cased_attribute v. CSS.supports
897898PASS font-family: _dashed_attribute v. CSS.supports
898899PASS font-feature-settings: _camel_cased_attribute v. CSS.supports

@@PASS size: _camel_cased_attribute v. CSS.supports
13331334PASS speak: _camel_cased_attribute v. CSS.supports
13341335PASS speak-as: _camel_cased_attribute v. CSS.supports
13351336PASS speak-as: _dashed_attribute v. CSS.supports
1336 PASS src: _camel_cased_attribute v. CSS.supports
 1337FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
13371338PASS stop-color: _camel_cased_attribute v. CSS.supports
13381339PASS stop-color: _dashed_attribute v. CSS.supports
13391340PASS stop-opacity: _camel_cased_attribute v. CSS.supports

@@PASS transition-timing-function: _dashed_attribute v. CSS.supports
14741475PASS translate: _camel_cased_attribute v. CSS.supports
14751476PASS unicode-bidi: _camel_cased_attribute v. CSS.supports
14761477PASS unicode-bidi: _dashed_attribute v. CSS.supports
1477 PASS unicode-range: _camel_cased_attribute v. CSS.supports
1478 PASS unicode-range: _dashed_attribute v. CSS.supports
 1478FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 1479FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
14791480PASS user-select: _camel_cased_attribute v. CSS.supports
14801481PASS user-select: _dashed_attribute v. CSS.supports
14811482PASS user-zoom: _camel_cased_attribute v. CSS.supports

LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration.html

77<script src="/resources/testharnessreport.js"></script>
88<div id="testElement"></div>
99<script>
10 // This gigantic list of properties is derived from the union of pretty much everything ever
11 // exposed via CSSStyleDeclaration since 2010 in a major browser; this deliberately includes all
12 // the vendor-prefixed properties _because_ they're often where bugs lie
13 
14 const properties = [
15  "-apple-color-filter",
16  "-apple-pay-button-style",
17  "-apple-pay-button-type",
18  "-apple-trailing-word",
19  "-epub-caption-side",
20  "-epub-text-combine",
21  "-epub-text-emphasis",
22  "-epub-text-emphasis-color",
23  "-epub-text-emphasis-style",
24  "-epub-text-orientation",
25  "-epub-text-transform",
26  "-epub-word-break",
27  "-epub-writing-mode",
28  "-moz-animation",
29  "-moz-animation-delay",
30  "-moz-animation-direction",
31  "-moz-animation-duration",
32  "-moz-animation-fill-mode",
33  "-moz-animation-iteration-count",
34  "-moz-animation-name",
35  "-moz-animation-play-state",
36  "-moz-animation-timing-function",
37  "-moz-appearance",
38  "-moz-backface-visibility",
39  "-moz-binding",
40  "-moz-border-bottom-colors",
41  "-moz-border-end",
42  "-moz-border-end-color",
43  "-moz-border-end-style",
44  "-moz-border-end-width",
45  "-moz-border-image",
46  "-moz-border-left-colors",
47  "-moz-border-right-colors",
48  "-moz-border-start",
49  "-moz-border-start-color",
50  "-moz-border-start-style",
51  "-moz-border-start-width",
52  "-moz-border-top-colors",
53  "-moz-box-align",
54  "-moz-box-direction",
55  "-moz-box-flex",
56  "-moz-box-ordinal-group",
57  "-moz-box-orient",
58  "-moz-box-pack",
59  "-moz-box-sizing",
60  "-moz-column-count",
61  "-moz-column-fill",
62  "-moz-column-gap",
63  "-moz-column-rule",
64  "-moz-column-rule-color",
65  "-moz-column-rule-style",
66  "-moz-column-rule-width",
67  "-moz-column-span",
68  "-moz-column-width",
69  "-moz-columns",
70  "-moz-float-edge",
71  "-moz-font-feature-settings",
72  "-moz-font-language-override",
73  "-moz-force-broken-image-icon",
74  "-moz-hyphens",
75  "-moz-image-region",
76  "-moz-margin-end",
77  "-moz-margin-start",
78  "-moz-orient",
79  "-moz-osx-font-smoothing",
80  "-moz-padding-end",
81  "-moz-padding-start",
82  "-moz-perspective",
83  "-moz-perspective-origin",
84  "-moz-stack-sizing",
85  "-moz-tab-size",
86  "-moz-text-align-last",
87  "-moz-text-size-adjust",
88  "-moz-transform",
89  "-moz-transform-origin",
90  "-moz-transform-style",
91  "-moz-transition",
92  "-moz-transition-delay",
93  "-moz-transition-duration",
94  "-moz-transition-property",
95  "-moz-transition-timing-function",
96  "-moz-user-focus",
97  "-moz-user-input",
98  "-moz-user-modify",
99  "-moz-user-select",
100  "-moz-window-dragging",
101  "-ms-content-zoom-chaining",
102  "-ms-content-zoom-limit",
103  "-ms-content-zoom-limit-max",
104  "-ms-content-zoom-limit-min",
105  "-ms-content-zoom-snap",
106  "-ms-content-zoom-snap-points",
107  "-ms-content-zoom-snap-type",
108  "-ms-content-zooming",
109  "-ms-flow-from",
110  "-ms-flow-into",
111  "-ms-font-feature-settings",
112  "-ms-grid-column",
113  "-ms-grid-column-align",
114  "-ms-grid-column-span",
115  "-ms-grid-columns",
116  "-ms-grid-row",
117  "-ms-grid-row-align",
118  "-ms-grid-row-span",
119  "-ms-grid-rows",
120  "-ms-high-contrast-adjust",
121  "-ms-hyphenate-limit-chars",
122  "-ms-hyphenate-limit-lines",
123  "-ms-hyphenate-limit-zone",
124  "-ms-hyphens",
125  "-ms-ime-align",
126  "-ms-overflow-style",
127  "-ms-scroll-chaining",
128  "-ms-scroll-limit",
129  "-ms-scroll-limit-x-max",
130  "-ms-scroll-limit-x-min",
131  "-ms-scroll-limit-y-max",
132  "-ms-scroll-limit-y-min",
133  "-ms-scroll-rails",
134  "-ms-scroll-snap-points-x",
135  "-ms-scroll-snap-points-y",
136  "-ms-scroll-snap-type",
137  "-ms-scroll-snap-x",
138  "-ms-scroll-snap-y",
139  "-ms-scroll-translation",
140  "-ms-text-combine-horizontal",
141  "-ms-text-size-adjust",
142  "-ms-touch-select",
143  "-ms-user-select",
144  "-ms-wrap-flow",
145  "-ms-wrap-margin",
146  "-ms-wrap-through",
147  "-webkit-align-content",
148  "-webkit-align-items",
149  "-webkit-align-self",
150  "-webkit-animation",
151  "-webkit-animation-delay",
152  "-webkit-animation-direction",
153  "-webkit-animation-duration",
154  "-webkit-animation-fill-mode",
155  "-webkit-animation-iteration-count",
156  "-webkit-animation-name",
157  "-webkit-animation-play-state",
158  "-webkit-animation-timing-function",
159  "-webkit-appearance",
160  "-webkit-backface-visibility",
161  "-webkit-background-clip",
162  "-webkit-background-origin",
163  "-webkit-background-size",
164  "-webkit-border-bottom-left-radius",
165  "-webkit-border-bottom-right-radius",
166  "-webkit-border-image",
167  "-webkit-border-radius",
168  "-webkit-border-top-left-radius",
169  "-webkit-border-top-right-radius",
170  "-webkit-box-align",
171  "-webkit-box-direction",
172  "-webkit-box-flex",
173  "-webkit-box-ordinal-group",
174  "-webkit-box-orient",
175  "-webkit-box-pack",
176  "-webkit-box-shadow",
177  "-webkit-box-sizing",
178  "-webkit-filter",
179  "-webkit-flex",
180  "-webkit-flex-basis",
181  "-webkit-flex-direction",
182  "-webkit-flex-flow",
183  "-webkit-flex-grow",
184  "-webkit-flex-shrink",
185  "-webkit-flex-wrap",
186  "-webkit-justify-content",
187  "-webkit-line-clamp",
188  "-webkit-mask",
189  "-webkit-mask-clip",
190  "-webkit-mask-composite",
191  "-webkit-mask-image",
192  "-webkit-mask-origin",
193  "-webkit-mask-position",
194  "-webkit-mask-position-x",
195  "-webkit-mask-position-y",
196  "-webkit-mask-repeat",
197  "-webkit-mask-size",
198  "-webkit-order",
199  "-webkit-perspective",
200  "-webkit-perspective-origin",
201  "-webkit-text-fill-color",
202  "-webkit-text-size-adjust",
203  "-webkit-text-stroke",
204  "-webkit-text-stroke-color",
205  "-webkit-text-stroke-width",
206  "-webkit-transform",
207  "-webkit-transform-origin",
208  "-webkit-transform-style",
209  "-webkit-transition",
210  "-webkit-transition-delay",
211  "-webkit-transition-duration",
212  "-webkit-transition-property",
213  "-webkit-transition-timing-function",
214  "-webkit-user-select",
215  "align-content",
216  "align-items",
217  "align-self",
218  "alignment-baseline",
219  "all",
220  "alt",
221  "animation",
222  "animation-delay",
223  "animation-direction",
224  "animation-duration",
225  "animation-fill-mode",
226  "animation-iteration-count",
227  "animation-name",
228  "animation-play-state",
229  "animation-timing-function",
230  "appearance",
231  "backdrop-filter",
232  "backface-visibility",
233  "background",
234  "background-attachment",
235  "background-blend-mode",
236  "background-clip",
237  "background-color",
238  "background-image",
239  "background-origin",
240  "background-position",
241  "background-position-x",
242  "background-position-y",
243  "background-repeat",
244  "background-repeat-x",
245  "background-repeat-y",
246  "background-size",
247  "baseline-shift",
248  "block-size",
249  "border",
250  "border-block",
251  "border-block-color",
252  "border-block-end",
253  "border-block-end-color",
254  "border-block-end-style",
255  "border-block-end-width",
256  "border-block-start",
257  "border-block-start-color",
258  "border-block-start-style",
259  "border-block-start-width",
260  "border-block-style",
261  "border-block-width",
262  "border-bottom",
263  "border-bottom-color",
264  "border-bottom-left-radius",
265  "border-bottom-right-radius",
266  "border-bottom-style",
267  "border-bottom-width",
268  "border-collapse",
269  "border-color",
270  "border-end-end-radius",
271  "border-end-start-radius",
272  "border-image",
273  "border-image-outset",
274  "border-image-repeat",
275  "border-image-slice",
276  "border-image-source",
277  "border-image-width",
278  "border-inline",
279  "border-inline-color",
280  "border-inline-end",
281  "border-inline-end-color",
282  "border-inline-end-style",
283  "border-inline-end-width",
284  "border-inline-start",
285  "border-inline-start-color",
286  "border-inline-start-style",
287  "border-inline-start-width",
288  "border-inline-style",
289  "border-inline-width",
290  "border-left",
291  "border-left-color",
292  "border-left-style",
293  "border-left-width",
294  "border-radius",
295  "border-right",
296  "border-right-color",
297  "border-right-style",
298  "border-right-width",
299  "border-spacing",
300  "border-start-end-radius",
301  "border-start-start-radius",
302  "border-style",
303  "border-top",
304  "border-top-color",
305  "border-top-left-radius",
306  "border-top-right-radius",
307  "border-top-style",
308  "border-top-width",
309  "border-width",
310  "bottom",
311  "box-decoration-break",
312  "box-shadow",
313  "box-sizing",
314  "break-after",
315  "break-before",
316  "break-inside",
317  "buffered-rendering",
318  "caption-side",
319  "caret-color",
320  "clear",
321  "clip",
322  "clip-path",
323  "clip-rule",
324  "color",
325  "color-adjust",
326  "color-interpolation",
327  "color-interpolation-filters",
328  "color-profile",
329  "color-rendering",
330  "color-scheme",
331  "column-count",
332  "column-fill",
333  "column-gap",
334  "column-progression",
335  "column-rule",
336  "column-rule-color",
337  "column-rule-style",
338  "column-rule-width",
339  "column-span",
340  "column-width",
341  "columns",
342  "contain",
343  "contain-intrinsic-size",
344  "content",
345  "content-visibility",
346  "counter-increment",
347  "counter-reset",
348  "counter-set",
349  "cursor",
350  "cx",
351  "cy",
352  "d",
353  "direction",
354  "display",
355  "dominant-baseline",
356  "empty-cells",
357  "enable-background",
358  "fill",
359  "fill-opacity",
360  "fill-rule",
361  "filter",
362  "flex",
363  "flex-basis",
364  "flex-direction",
365  "flex-flow",
366  "flex-grow",
367  "flex-shrink",
368  "flex-wrap",
369  "float",
370  "flood-color",
371  "flood-opacity",
372  "font",
373  "font-display",
374  "font-family",
375  "font-feature-settings",
376  "font-kerning",
377  "font-language-override",
378  "font-optical-sizing",
379  "font-size",
380  "font-size-adjust",
381  "font-stretch",
382  "font-style",
383  "font-synthesis",
384  "font-variant",
385  "font-variant-alternates",
386  "font-variant-caps",
387  "font-variant-east-asian",
388  "font-variant-ligatures",
389  "font-variant-numeric",
390  "font-variant-position",
391  "font-variation-settings",
392  "font-weight",
393  "gap",
394  "glyph-orientation-horizontal",
395  "glyph-orientation-vertical",
396  "grid",
397  "grid-area",
398  "grid-auto-columns",
399  "grid-auto-flow",
400  "grid-auto-rows",
401  "grid-column",
402  "grid-column-end",
403  "grid-column-gap",
404  "grid-column-start",
405  "grid-gap",
406  "grid-row",
407  "grid-row-end",
408  "grid-row-gap",
409  "grid-row-start",
410  "grid-template",
411  "grid-template-areas",
412  "grid-template-columns",
413  "grid-template-rows",
414  "hanging-punctuation",
415  "height",
416  "hyphens",
417  "image-orientation",
418  "image-rendering",
419  "ime-mode",
420  "inherits",
421  "initial-value",
422  "inline-size",
423  "inset",
424  "inset-block",
425  "inset-block-end",
426  "inset-block-start",
427  "inset-inline",
428  "inset-inline-end",
429  "inset-inline-start",
430  "internal-text-autosizing-status",
431  "isolation",
432  "justify-content",
433  "justify-items",
434  "justify-self",
435  "kerning",
436  "layout-grid",
437  "layout-grid-char",
438  "layout-grid-line",
439  "layout-grid-mode",
440  "layout-grid-type",
441  "left",
442  "letter-spacing",
443  "lighting-color",
444  "line-break",
445  "line-height",
446  "list-style",
447  "list-style-image",
448  "list-style-position",
449  "list-style-type",
450  "margin",
451  "margin-block",
452  "margin-block-end",
453  "margin-block-start",
454  "margin-bottom",
455  "margin-inline",
456  "margin-inline-end",
457  "margin-inline-start",
458  "margin-left",
459  "margin-right",
460  "margin-top",
461  "marker",
462  "marker-end",
463  "marker-mid",
464  "marker-offset",
465  "marker-start",
466  "mask",
467  "mask-clip",
468  "mask-composite",
469  "mask-image",
470  "mask-mode",
471  "mask-origin",
472  "mask-position",
473  "mask-position-x",
474  "mask-position-y",
475  "mask-repeat",
476  "mask-size",
477  "mask-type",
478  "max-block-size",
479  "max-height",
480  "max-inline-size",
481  "max-width",
482  "max-zoom",
483  "min-block-size",
484  "min-height",
485  "min-inline-size",
486  "min-width",
487  "min-zoom",
488  "mix-blend-mode",
489  "motion",
490  "motion-offset",
491  "motion-path",
492  "motion-rotation",
493  "object-fit",
494  "object-position",
495  "offset",
496  "offset-anchor",
497  "offset-block-end",
498  "offset-block-start",
499  "offset-distance",
500  "offset-inline-end",
501  "offset-inline-start",
502  "offset-path",
503  "offset-rotate",
504  "offset-rotation",
505  "opacity",
506  "order",
507  "orientation",
508  "orphans",
509  "outline",
510  "outline-color",
511  "outline-offset",
512  "outline-style",
513  "outline-width",
514  "overflow",
515  "overflow-anchor",
516  "overflow-block",
517  "overflow-inline",
518  "overflow-wrap",
519  "overflow-x",
520  "overflow-y",
521  "overscroll-behavior",
522  "overscroll-behavior-block",
523  "overscroll-behavior-inline",
524  "overscroll-behavior-x",
525  "overscroll-behavior-y",
526  "padding",
527  "padding-block",
528  "padding-block-end",
529  "padding-block-start",
530  "padding-bottom",
531  "padding-inline",
532  "padding-inline-end",
533  "padding-inline-start",
534  "padding-left",
535  "padding-right",
536  "padding-top",
537  "page",
538  "page-break-after",
539  "page-break-before",
540  "page-break-inside",
541  "page-orientation",
542  "paint-order",
543  "pen-action",
544  "perspective",
545  "perspective-origin",
546  "perspective-origin-x",
547  "perspective-origin-y",
548  "place-content",
549  "place-items",
550  "place-self",
551  "pointer-events",
552  "position",
553  "quotes",
554  "r",
555  "resize",
556  "right",
557  "rotate",
558  "row-gap",
559  "ruby-align",
560  "ruby-overhang",
561  "ruby-position",
562  "rx",
563  "ry",
564  "scale",
565  "scroll-behavior",
566  "scroll-margin",
567  "scroll-margin-block",
568  "scroll-margin-block-end",
569  "scroll-margin-block-start",
570  "scroll-margin-bottom",
571  "scroll-margin-inline",
572  "scroll-margin-inline-end",
573  "scroll-margin-inline-start",
574  "scroll-margin-left",
575  "scroll-margin-right",
576  "scroll-margin-top",
577  "scroll-padding",
578  "scroll-padding-block",
579  "scroll-padding-block-end",
580  "scroll-padding-block-start",
581  "scroll-padding-bottom",
582  "scroll-padding-inline",
583  "scroll-padding-inline-end",
584  "scroll-padding-inline-start",
585  "scroll-padding-left",
586  "scroll-padding-right",
587  "scroll-padding-top",
588  "scroll-snap-align",
589  "scroll-snap-coordinate",
590  "scroll-snap-destination",
591  "scroll-snap-margin",
592  "scroll-snap-margin-bottom",
593  "scroll-snap-margin-left",
594  "scroll-snap-margin-right",
595  "scroll-snap-margin-top",
596  "scroll-snap-points-x",
597  "scroll-snap-points-y",
598  "scroll-snap-stop",
599  "scroll-snap-type",
600  "scroll-snap-type-x",
601  "scroll-snap-type-y",
602  "scrollbar-color",
603  "scrollbar-width",
604  "shape-image-threshold",
605  "shape-margin",
606  "shape-outside",
607  "shape-rendering",
608  "size",
609  "speak",
610  "speak-as",
611  "src",
612  "stop-color",
613  "stop-opacity",
614  "stroke",
615  "stroke-color",
616  "stroke-dasharray",
617  "stroke-dashoffset",
618  "stroke-linecap",
619  "stroke-linejoin",
620  "stroke-miterlimit",
621  "stroke-opacity",
622  "stroke-width",
623  "supported-color-schemes",
624  "syntax",
625  "tab-size",
626  "table-layout",
627  "text-align",
628  "text-align-last",
629  "text-anchor",
630  "text-combine-upright",
631  "text-decoration",
632  "text-decoration-color",
633  "text-decoration-line",
634  "text-decoration-skip",
635  "text-decoration-skip-ink",
636  "text-decoration-style",
637  "text-decoration-thickness",
638  "text-emphasis",
639  "text-emphasis-color",
640  "text-emphasis-position",
641  "text-emphasis-style",
642  "text-indent",
643  "text-justify",
644  "text-kashida",
645  "text-kashida-space",
646  "text-line-through",
647  "text-line-through-color",
648  "text-line-through-mode",
649  "text-line-through-style",
650  "text-line-through-width",
651  "text-orientation",
652  "text-overflow",
653  "text-overline",
654  "text-overline-color",
655  "text-overline-mode",
656  "text-overline-style",
657  "text-overline-width",
658  "text-rendering",
659  "text-shadow",
660  "text-size-adjust",
661  "text-transform",
662  "text-underline",
663  "text-underline-color",
664  "text-underline-mode",
665  "text-underline-offset",
666  "text-underline-position",
667  "text-underline-style",
668  "text-underline-width",
669  "top",
670  "touch-action",
671  "transform",
672  "transform-box",
673  "transform-origin",
674  "transform-origin-x",
675  "transform-origin-y",
676  "transform-origin-z",
677  "transform-style",
678  "transition",
679  "transition-delay",
680  "transition-duration",
681  "transition-property",
682  "transition-timing-function",
683  "translate",
684  "unicode-bidi",
685  "unicode-range",
686  "user-select",
687  "user-zoom",
688  "vector-effect",
689  "vertical-align",
690  "viewport-fit",
691  "visibility",
692  "white-space",
693  "widows",
694  "width",
695  "will-change",
696  "word-break",
697  "word-spacing",
698  "word-wrap",
699  "writing-mode",
700  "x",
701  "y",
702  "z-index",
703  "zoom"
704 ];
705 
70610function CSSPropertyToIDLAttribute(property, lowercaseFirstFlag=false) {
70711 let output = "";
70812 let uppercaseNext = false;

@@function CSSPropertyToIDLAttribute(property, lowercaseFirstFlag=false) {
72630 return output;
72731}
72832
 33// Currently CSSStyleDeclaration is defined to contain all properties as
 34// attributes regardless of where it's accessed from, so just use the
 35// ElementCSSInlineStyle mixin as its easily accessible.
72936const styledecl = document.getElementById("testElement").style;
73037
731 for (let prop of properties) {
732  test(() => {
733  const camelCase = CSSPropertyToIDLAttribute(prop);
734  const supports = CSS.supports(prop, "inherit"); // inherit is always a valid value
735  assert_equals(supports, camelCase in styledecl);
736  }, `${prop}: _camel_cased_attribute v. CSS.supports`);
 38promise_test(async () => {
 39 const response = await fetch("/css/support/properties.json");
 40 const properties = await response.json();
 41
 42 for (let prop of properties) {
 43 test(() => {
 44 const camelCase = CSSPropertyToIDLAttribute(prop);
 45 const supports = CSS.supports(prop, "inherit"); // inherit is always a valid value
 46 assert_equals(supports, camelCase in styledecl);
 47 }, `${prop}: _camel_cased_attribute v. CSS.supports`);
73748
738  if (prop[0] == "-") {
739  if (prop.startsWith("-webkit-")) {
 49 if (prop[0] == "-") {
 50 if (prop.startsWith("-webkit-")) {
 51 test(() => {
 52 const webkitCased = CSSPropertyToIDLAttribute(prop, true);
 53 const supports = CSS.supports(prop, "inherit"); // inherit is always a valid value
 54 assert_equals(supports, webkitCased in styledecl);
 55 }, `${prop}: _webkit_cased_attribute v. CSS.supports`);
 56 } else {
 57 test(() => {
 58 const webkitCased = CSSPropertyToIDLAttribute(prop, true);
 59 assert_false(webkitCased in styledecl);
 60 }, `${prop}: _webkit_cased_attribute must only exist for -webkit-`);
 61 }
 62 }
 63
 64 if (prop.indexOf("-") >= 0) {
74065 test(() => {
741  const webkitCased = CSSPropertyToIDLAttribute(prop, true);
74266 const supports = CSS.supports(prop, "inherit"); // inherit is always a valid value
743  assert_equals(supports, webkitCased in styledecl);
744  }, `${prop}: _webkit_cased_attribute v. CSS.supports`);
745  } else {
746  test(() => {
747  const webkitCased = CSSPropertyToIDLAttribute(prop, true);
748  assert_false(webkitCased in styledecl);
749  }, `${prop}: _webkit_cased_attribute must only exist for -webkit-`);
 67 assert_equals(supports, prop in styledecl);
 68 }, `${prop}: _dashed_attribute v. CSS.supports`);
75069 }
75170 }
75271
753  if (prop.indexOf("-") >= 0) {
754  test(() => {
755  const supports = CSS.supports(prop, "inherit"); // inherit is always a valid value
756  assert_equals(supports, prop in styledecl);
757  }, `${prop}: _dashed_attribute v. CSS.supports`);
758  }
759 }
 72}, "load properties list");
76073
76174</script>

LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3-expected.txt

11
 2PASS Single-argument form allows for declarations with enclosing parentheses
23PASS Single-argument form allows for declarations without enclosing parentheses
34PASS Complex conditions allowed
45PASS general_enclosed still parses
56PASS Variable references always parse
67PASS Variable references in an unknown function always parse
78PASS two argument form succeeds for known property
 9PASS one argument form fails for unknown property
810PASS two argument form fails for unknown property
 11PASS one argument form fails for unknown property (but known descriptor)
 12PASS two argument form fails for unknown property (but known descriptor)
 13PASS one argument form fails for unknown property (but known descriptor, universal value)
 14PASS two argument form fails for unknown property (but known descriptor, universal value)
 15PASS one argument form fails for invalid value
916PASS two argument form fails for invalid value
 17PASS one argument form succeeds for custom property
1018FAIL two argument form succeeds for custom property assert_equals: expected true but got false
1119

LayoutTests/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-L3.html

55<script src="/resources/testharness.js"></script>
66<script src="/resources/testharnessreport.js"></script>
77<script>
 8 test(function() {
 9 assert_equals(CSS.supports("(color: red)"), true);
 10 }, "Single-argument form allows for declarations with enclosing parentheses");
 11
812 test(function() {
913 assert_equals(CSS.supports("color: red"), true);
1014 }, "Single-argument form allows for declarations without enclosing parentheses");

2630 }, "Variable references in an unknown function always parse");
2731
2832 test(function() {
 33 // no one-arg test for this as the with/without enclosing parentheses tests do this
2934 assert_equals(CSS.supports("color", "red"), true);
3035 }, "two argument form succeeds for known property");
3136
 37 test(function() {
 38 assert_equals(CSS.supports("unknownproperty: blah"), false);
 39 }, "one argument form fails for unknown property");
 40
3241 test(function() {
3342 assert_equals(CSS.supports("unknownproperty", "blah"), false);
3443 }, "two argument form fails for unknown property");
3544
 45 test(function() {
 46 // https://github.com/w3c/csswg-drafts/issues/5929
 47 assert_equals(CSS.supports("unicode-range: U+0-7F"), false);
 48 }, "one argument form fails for unknown property (but known descriptor)");
 49
 50 test(function() {
 51 // https://github.com/w3c/csswg-drafts/issues/5929
 52 assert_equals(CSS.supports("unicode-range", "U+0-7F"), false);
 53 }, "two argument form fails for unknown property (but known descriptor)");
 54
 55 test(function() {
 56 // https://github.com/w3c/csswg-drafts/issues/5929
 57 assert_equals(CSS.supports("unicode-range: inherit"), false);
 58 }, "one argument form fails for unknown property (but known descriptor, universal value)");
 59
 60 test(function() {
 61 // https://github.com/w3c/csswg-drafts/issues/5929
 62 assert_equals(CSS.supports("unicode-range", "inherit"), false);
 63 }, "two argument form fails for unknown property (but known descriptor, universal value)");
 64
 65 test(function() {
 66 assert_equals(CSS.supports("width: blah"), false);
 67 }, "one argument form fails for invalid value");
 68
3669 test(function() {
3770 assert_equals(CSS.supports("width", "blah"), false);
3871 }, "two argument form fails for invalid value");
3972
 73 test(function() {
 74 assert_equals(CSS.supports("--foo: blah"), true);
 75 }, "one argument form succeeds for custom property");
 76
4077 test(function() {
4178 assert_equals(CSS.supports("--foo", "blah"), true);
4279 }, "two argument form succeeds for custom property");

LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative-expected.txt

 1
 2PASS a CSSStyleDeclaration for a CSSFontRule contains a unicode-range attribute
 3PASS a CSSStyleDeclaration for a CSSFontRule contains a flex-direction attribute
 4

LayoutTests/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-cssfontrule.tentative.html

 1<!doctype html>
 2<meta charset="utf-8">
 3<title>CSSStyleDeclaration for a CSSFontRule</title>
 4<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface">
 5<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#cssfontfacerule">
 6<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5649#issuecomment-755796005">
 7<script src="/resources/testharness.js"></script>
 8<script src="/resources/testharnessreport.js"></script>
 9<style>
 10@font-face {}
 11</style>
 12<script>
 13
 14const fontFaceRule = document.styleSheets[0].cssRules[0];
 15
 16test(() => {
 17 assert_true("unicode-range" in fontFaceRule.style);
 18 assert_idl_attribute(fontFaceRule.style, "unicode-range");
 19}, "a CSSStyleDeclaration for a CSSFontRule contains a unicode-range attribute");
 20
 21
 22test(() => {
 23 assert_true("flex-direction" in fontFaceRule.style);
 24 assert_idl_attribute(fontFaceRule.style, "flex-direction");
 25}, "a CSSStyleDeclaration for a CSSFontRule contains a flex-direction attribute");
 26
 27</script>

LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt

11
22PASS getComputedStyle returns no style for detached element
3 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 397
4 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 397
5 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 397
6 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 397
 3FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 395
 4FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 395
 5FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 395
 6FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 395
77PASS getComputedStyle returns no style for shadow tree outside of flattened tree
88

LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative-expected.txt

 1
 2PASS load properties list
 3PASS -apple-color-filter: item(x) v. _dashed_attribute
 4PASS -apple-pay-button-style: item(x) v. _dashed_attribute
 5PASS -apple-pay-button-type: item(x) v. _dashed_attribute
 6PASS -apple-trailing-word: item(x) v. _dashed_attribute
 7PASS -epub-caption-side: item(x) v. _dashed_attribute
 8PASS -epub-text-combine: item(x) v. _dashed_attribute
 9PASS -epub-text-emphasis: item(x) v. _dashed_attribute
 10PASS -epub-text-emphasis-color: item(x) v. _dashed_attribute
 11PASS -epub-text-emphasis-style: item(x) v. _dashed_attribute
 12PASS -epub-text-orientation: item(x) v. _dashed_attribute
 13PASS -epub-text-transform: item(x) v. _dashed_attribute
 14PASS -epub-word-break: item(x) v. _dashed_attribute
 15PASS -epub-writing-mode: item(x) v. _dashed_attribute
 16PASS -moz-animation: item(x) v. _dashed_attribute
 17PASS -moz-animation-delay: item(x) v. _dashed_attribute
 18PASS -moz-animation-direction: item(x) v. _dashed_attribute
 19PASS -moz-animation-duration: item(x) v. _dashed_attribute
 20PASS -moz-animation-fill-mode: item(x) v. _dashed_attribute
 21PASS -moz-animation-iteration-count: item(x) v. _dashed_attribute
 22PASS -moz-animation-name: item(x) v. _dashed_attribute
 23PASS -moz-animation-play-state: item(x) v. _dashed_attribute
 24PASS -moz-animation-timing-function: item(x) v. _dashed_attribute
 25PASS -moz-appearance: item(x) v. _dashed_attribute
 26PASS -moz-backface-visibility: item(x) v. _dashed_attribute
 27PASS -moz-binding: item(x) v. _dashed_attribute
 28PASS -moz-border-bottom-colors: item(x) v. _dashed_attribute
 29PASS -moz-border-end: item(x) v. _dashed_attribute
 30PASS -moz-border-end-color: item(x) v. _dashed_attribute
 31PASS -moz-border-end-style: item(x) v. _dashed_attribute
 32PASS -moz-border-end-width: item(x) v. _dashed_attribute
 33PASS -moz-border-image: item(x) v. _dashed_attribute
 34PASS -moz-border-left-colors: item(x) v. _dashed_attribute
 35PASS -moz-border-right-colors: item(x) v. _dashed_attribute
 36PASS -moz-border-start: item(x) v. _dashed_attribute
 37PASS -moz-border-start-color: item(x) v. _dashed_attribute
 38PASS -moz-border-start-style: item(x) v. _dashed_attribute
 39PASS -moz-border-start-width: item(x) v. _dashed_attribute
 40PASS -moz-border-top-colors: item(x) v. _dashed_attribute
 41PASS -moz-box-align: item(x) v. _dashed_attribute
 42PASS -moz-box-direction: item(x) v. _dashed_attribute
 43PASS -moz-box-flex: item(x) v. _dashed_attribute
 44PASS -moz-box-ordinal-group: item(x) v. _dashed_attribute
 45PASS -moz-box-orient: item(x) v. _dashed_attribute
 46PASS -moz-box-pack: item(x) v. _dashed_attribute
 47PASS -moz-box-sizing: item(x) v. _dashed_attribute
 48PASS -moz-column-count: item(x) v. _dashed_attribute
 49PASS -moz-column-fill: item(x) v. _dashed_attribute
 50PASS -moz-column-gap: item(x) v. _dashed_attribute
 51PASS -moz-column-rule: item(x) v. _dashed_attribute
 52PASS -moz-column-rule-color: item(x) v. _dashed_attribute
 53PASS -moz-column-rule-style: item(x) v. _dashed_attribute
 54PASS -moz-column-rule-width: item(x) v. _dashed_attribute
 55PASS -moz-column-span: item(x) v. _dashed_attribute
 56PASS -moz-column-width: item(x) v. _dashed_attribute
 57PASS -moz-columns: item(x) v. _dashed_attribute
 58PASS -moz-float-edge: item(x) v. _dashed_attribute
 59PASS -moz-font-feature-settings: item(x) v. _dashed_attribute
 60PASS -moz-font-language-override: item(x) v. _dashed_attribute
 61PASS -moz-force-broken-image-icon: item(x) v. _dashed_attribute
 62PASS -moz-hyphens: item(x) v. _dashed_attribute
 63PASS -moz-image-region: item(x) v. _dashed_attribute
 64PASS -moz-margin-end: item(x) v. _dashed_attribute
 65PASS -moz-margin-start: item(x) v. _dashed_attribute
 66PASS -moz-orient: item(x) v. _dashed_attribute
 67PASS -moz-osx-font-smoothing: item(x) v. _dashed_attribute
 68PASS -moz-padding-end: item(x) v. _dashed_attribute
 69PASS -moz-padding-start: item(x) v. _dashed_attribute
 70PASS -moz-perspective: item(x) v. _dashed_attribute
 71PASS -moz-perspective-origin: item(x) v. _dashed_attribute
 72PASS -moz-stack-sizing: item(x) v. _dashed_attribute
 73PASS -moz-tab-size: item(x) v. _dashed_attribute
 74PASS -moz-text-align-last: item(x) v. _dashed_attribute
 75PASS -moz-text-size-adjust: item(x) v. _dashed_attribute
 76PASS -moz-transform: item(x) v. _dashed_attribute
 77PASS -moz-transform-origin: item(x) v. _dashed_attribute
 78PASS -moz-transform-style: item(x) v. _dashed_attribute
 79PASS -moz-transition: item(x) v. _dashed_attribute
 80PASS -moz-transition-delay: item(x) v. _dashed_attribute
 81PASS -moz-transition-duration: item(x) v. _dashed_attribute
 82PASS -moz-transition-property: item(x) v. _dashed_attribute
 83PASS -moz-transition-timing-function: item(x) v. _dashed_attribute
 84PASS -moz-user-focus: item(x) v. _dashed_attribute
 85PASS -moz-user-input: item(x) v. _dashed_attribute
 86PASS -moz-user-modify: item(x) v. _dashed_attribute
 87PASS -moz-user-select: item(x) v. _dashed_attribute
 88PASS -moz-window-dragging: item(x) v. _dashed_attribute
 89PASS -ms-content-zoom-chaining: item(x) v. _dashed_attribute
 90PASS -ms-content-zoom-limit: item(x) v. _dashed_attribute
 91PASS -ms-content-zoom-limit-max: item(x) v. _dashed_attribute
 92PASS -ms-content-zoom-limit-min: item(x) v. _dashed_attribute
 93PASS -ms-content-zoom-snap: item(x) v. _dashed_attribute
 94PASS -ms-content-zoom-snap-points: item(x) v. _dashed_attribute
 95PASS -ms-content-zoom-snap-type: item(x) v. _dashed_attribute
 96PASS -ms-content-zooming: item(x) v. _dashed_attribute
 97PASS -ms-flow-from: item(x) v. _dashed_attribute
 98PASS -ms-flow-into: item(x) v. _dashed_attribute
 99PASS -ms-font-feature-settings: item(x) v. _dashed_attribute
 100PASS -ms-grid-column: item(x) v. _dashed_attribute
 101PASS -ms-grid-column-align: item(x) v. _dashed_attribute
 102PASS -ms-grid-column-span: item(x) v. _dashed_attribute
 103PASS -ms-grid-columns: item(x) v. _dashed_attribute
 104PASS -ms-grid-row: item(x) v. _dashed_attribute
 105PASS -ms-grid-row-align: item(x) v. _dashed_attribute
 106PASS -ms-grid-row-span: item(x) v. _dashed_attribute
 107PASS -ms-grid-rows: item(x) v. _dashed_attribute
 108PASS -ms-high-contrast-adjust: item(x) v. _dashed_attribute
 109PASS -ms-hyphenate-limit-chars: item(x) v. _dashed_attribute
 110PASS -ms-hyphenate-limit-lines: item(x) v. _dashed_attribute
 111PASS -ms-hyphenate-limit-zone: item(x) v. _dashed_attribute
 112PASS -ms-hyphens: item(x) v. _dashed_attribute
 113PASS -ms-ime-align: item(x) v. _dashed_attribute
 114PASS -ms-overflow-style: item(x) v. _dashed_attribute
 115PASS -ms-scroll-chaining: item(x) v. _dashed_attribute
 116PASS -ms-scroll-limit: item(x) v. _dashed_attribute
 117PASS -ms-scroll-limit-x-max: item(x) v. _dashed_attribute
 118PASS -ms-scroll-limit-x-min: item(x) v. _dashed_attribute
 119PASS -ms-scroll-limit-y-max: item(x) v. _dashed_attribute
 120PASS -ms-scroll-limit-y-min: item(x) v. _dashed_attribute
 121PASS -ms-scroll-rails: item(x) v. _dashed_attribute
 122PASS -ms-scroll-snap-points-x: item(x) v. _dashed_attribute
 123PASS -ms-scroll-snap-points-y: item(x) v. _dashed_attribute
 124PASS -ms-scroll-snap-type: item(x) v. _dashed_attribute
 125PASS -ms-scroll-snap-x: item(x) v. _dashed_attribute
 126PASS -ms-scroll-snap-y: item(x) v. _dashed_attribute
 127PASS -ms-scroll-translation: item(x) v. _dashed_attribute
 128PASS -ms-text-combine-horizontal: item(x) v. _dashed_attribute
 129PASS -ms-text-size-adjust: item(x) v. _dashed_attribute
 130PASS -ms-touch-select: item(x) v. _dashed_attribute
 131PASS -ms-user-select: item(x) v. _dashed_attribute
 132PASS -ms-wrap-flow: item(x) v. _dashed_attribute
 133PASS -ms-wrap-margin: item(x) v. _dashed_attribute
 134PASS -ms-wrap-through: item(x) v. _dashed_attribute
 135PASS -webkit-align-content: item(x) v. _dashed_attribute
 136PASS -webkit-align-items: item(x) v. _dashed_attribute
 137PASS -webkit-align-self: item(x) v. _dashed_attribute
 138PASS -webkit-animation: item(x) v. _dashed_attribute
 139PASS -webkit-animation-delay: item(x) v. _dashed_attribute
 140PASS -webkit-animation-direction: item(x) v. _dashed_attribute
 141PASS -webkit-animation-duration: item(x) v. _dashed_attribute
 142PASS -webkit-animation-fill-mode: item(x) v. _dashed_attribute
 143PASS -webkit-animation-iteration-count: item(x) v. _dashed_attribute
 144PASS -webkit-animation-name: item(x) v. _dashed_attribute
 145PASS -webkit-animation-play-state: item(x) v. _dashed_attribute
 146PASS -webkit-animation-timing-function: item(x) v. _dashed_attribute
 147PASS -webkit-appearance: item(x) v. _dashed_attribute
 148PASS -webkit-backface-visibility: item(x) v. _dashed_attribute
 149PASS -webkit-background-clip: item(x) v. _dashed_attribute
 150PASS -webkit-background-origin: item(x) v. _dashed_attribute
 151PASS -webkit-background-size: item(x) v. _dashed_attribute
 152PASS -webkit-border-bottom-left-radius: item(x) v. _dashed_attribute
 153PASS -webkit-border-bottom-right-radius: item(x) v. _dashed_attribute
 154PASS -webkit-border-image: item(x) v. _dashed_attribute
 155PASS -webkit-border-radius: item(x) v. _dashed_attribute
 156PASS -webkit-border-top-left-radius: item(x) v. _dashed_attribute
 157PASS -webkit-border-top-right-radius: item(x) v. _dashed_attribute
 158PASS -webkit-box-align: item(x) v. _dashed_attribute
 159PASS -webkit-box-direction: item(x) v. _dashed_attribute
 160PASS -webkit-box-flex: item(x) v. _dashed_attribute
 161PASS -webkit-box-ordinal-group: item(x) v. _dashed_attribute
 162PASS -webkit-box-orient: item(x) v. _dashed_attribute
 163PASS -webkit-box-pack: item(x) v. _dashed_attribute
 164PASS -webkit-box-shadow: item(x) v. _dashed_attribute
 165PASS -webkit-box-sizing: item(x) v. _dashed_attribute
 166PASS -webkit-filter: item(x) v. _dashed_attribute
 167PASS -webkit-flex: item(x) v. _dashed_attribute
 168PASS -webkit-flex-basis: item(x) v. _dashed_attribute
 169PASS -webkit-flex-direction: item(x) v. _dashed_attribute
 170PASS -webkit-flex-flow: item(x) v. _dashed_attribute
 171PASS -webkit-flex-grow: item(x) v. _dashed_attribute
 172PASS -webkit-flex-shrink: item(x) v. _dashed_attribute
 173PASS -webkit-flex-wrap: item(x) v. _dashed_attribute
 174PASS -webkit-justify-content: item(x) v. _dashed_attribute
 175PASS -webkit-line-clamp: item(x) v. _dashed_attribute
 176PASS -webkit-mask: item(x) v. _dashed_attribute
 177PASS -webkit-mask-clip: item(x) v. _dashed_attribute
 178PASS -webkit-mask-composite: item(x) v. _dashed_attribute
 179PASS -webkit-mask-image: item(x) v. _dashed_attribute
 180PASS -webkit-mask-origin: item(x) v. _dashed_attribute
 181PASS -webkit-mask-position: item(x) v. _dashed_attribute
 182PASS -webkit-mask-position-x: item(x) v. _dashed_attribute
 183PASS -webkit-mask-position-y: item(x) v. _dashed_attribute
 184PASS -webkit-mask-repeat: item(x) v. _dashed_attribute
 185PASS -webkit-mask-size: item(x) v. _dashed_attribute
 186PASS -webkit-order: item(x) v. _dashed_attribute
 187PASS -webkit-perspective: item(x) v. _dashed_attribute
 188PASS -webkit-perspective-origin: item(x) v. _dashed_attribute
 189PASS -webkit-text-fill-color: item(x) v. _dashed_attribute
 190PASS -webkit-text-size-adjust: item(x) v. _dashed_attribute
 191PASS -webkit-text-stroke: item(x) v. _dashed_attribute
 192PASS -webkit-text-stroke-color: item(x) v. _dashed_attribute
 193PASS -webkit-text-stroke-width: item(x) v. _dashed_attribute
 194PASS -webkit-transform: item(x) v. _dashed_attribute
 195PASS -webkit-transform-origin: item(x) v. _dashed_attribute
 196PASS -webkit-transform-style: item(x) v. _dashed_attribute
 197PASS -webkit-transition: item(x) v. _dashed_attribute
 198PASS -webkit-transition-delay: item(x) v. _dashed_attribute
 199PASS -webkit-transition-duration: item(x) v. _dashed_attribute
 200PASS -webkit-transition-property: item(x) v. _dashed_attribute
 201PASS -webkit-transition-timing-function: item(x) v. _dashed_attribute
 202PASS -webkit-user-select: item(x) v. _dashed_attribute
 203PASS align-content: item(x) v. _dashed_attribute
 204PASS align-items: item(x) v. _dashed_attribute
 205PASS align-self: item(x) v. _dashed_attribute
 206PASS alignment-baseline: item(x) v. _dashed_attribute
 207PASS all: item(x) v. _dashed_attribute
 208PASS alt: item(x) v. _dashed_attribute
 209PASS animation: item(x) v. _dashed_attribute
 210PASS animation-delay: item(x) v. _dashed_attribute
 211PASS animation-direction: item(x) v. _dashed_attribute
 212PASS animation-duration: item(x) v. _dashed_attribute
 213PASS animation-fill-mode: item(x) v. _dashed_attribute
 214PASS animation-iteration-count: item(x) v. _dashed_attribute
 215PASS animation-name: item(x) v. _dashed_attribute
 216PASS animation-play-state: item(x) v. _dashed_attribute
 217PASS animation-timing-function: item(x) v. _dashed_attribute
 218PASS appearance: item(x) v. _dashed_attribute
 219PASS backdrop-filter: item(x) v. _dashed_attribute
 220PASS backface-visibility: item(x) v. _dashed_attribute
 221PASS background: item(x) v. _dashed_attribute
 222PASS background-attachment: item(x) v. _dashed_attribute
 223PASS background-blend-mode: item(x) v. _dashed_attribute
 224PASS background-clip: item(x) v. _dashed_attribute
 225PASS background-color: item(x) v. _dashed_attribute
 226PASS background-image: item(x) v. _dashed_attribute
 227PASS background-origin: item(x) v. _dashed_attribute
 228PASS background-position: item(x) v. _dashed_attribute
 229PASS background-position-x: item(x) v. _dashed_attribute
 230PASS background-position-y: item(x) v. _dashed_attribute
 231PASS background-repeat: item(x) v. _dashed_attribute
 232PASS background-repeat-x: item(x) v. _dashed_attribute
 233PASS background-repeat-y: item(x) v. _dashed_attribute
 234PASS background-size: item(x) v. _dashed_attribute
 235PASS baseline-shift: item(x) v. _dashed_attribute
 236PASS block-size: item(x) v. _dashed_attribute
 237PASS border: item(x) v. _dashed_attribute
 238PASS border-block: item(x) v. _dashed_attribute
 239PASS border-block-color: item(x) v. _dashed_attribute
 240PASS border-block-end: item(x) v. _dashed_attribute
 241PASS border-block-end-color: item(x) v. _dashed_attribute
 242PASS border-block-end-style: item(x) v. _dashed_attribute
 243PASS border-block-end-width: item(x) v. _dashed_attribute
 244PASS border-block-start: item(x) v. _dashed_attribute
 245PASS border-block-start-color: item(x) v. _dashed_attribute
 246PASS border-block-start-style: item(x) v. _dashed_attribute
 247PASS border-block-start-width: item(x) v. _dashed_attribute
 248PASS border-block-style: item(x) v. _dashed_attribute
 249PASS border-block-width: item(x) v. _dashed_attribute
 250PASS border-bottom: item(x) v. _dashed_attribute
 251PASS border-bottom-color: item(x) v. _dashed_attribute
 252PASS border-bottom-left-radius: item(x) v. _dashed_attribute
 253PASS border-bottom-right-radius: item(x) v. _dashed_attribute
 254PASS border-bottom-style: item(x) v. _dashed_attribute
 255PASS border-bottom-width: item(x) v. _dashed_attribute
 256PASS border-collapse: item(x) v. _dashed_attribute
 257PASS border-color: item(x) v. _dashed_attribute
 258PASS border-end-end-radius: item(x) v. _dashed_attribute
 259PASS border-end-start-radius: item(x) v. _dashed_attribute
 260PASS border-image: item(x) v. _dashed_attribute
 261PASS border-image-outset: item(x) v. _dashed_attribute
 262PASS border-image-repeat: item(x) v. _dashed_attribute
 263PASS border-image-slice: item(x) v. _dashed_attribute
 264PASS border-image-source: item(x) v. _dashed_attribute
 265PASS border-image-width: item(x) v. _dashed_attribute
 266PASS border-inline: item(x) v. _dashed_attribute
 267PASS border-inline-color: item(x) v. _dashed_attribute
 268PASS border-inline-end: item(x) v. _dashed_attribute
 269PASS border-inline-end-color: item(x) v. _dashed_attribute
 270PASS border-inline-end-style: item(x) v. _dashed_attribute
 271PASS border-inline-end-width: item(x) v. _dashed_attribute
 272PASS border-inline-start: item(x) v. _dashed_attribute
 273PASS border-inline-start-color: item(x) v. _dashed_attribute
 274PASS border-inline-start-style: item(x) v. _dashed_attribute
 275PASS border-inline-start-width: item(x) v. _dashed_attribute
 276PASS border-inline-style: item(x) v. _dashed_attribute
 277PASS border-inline-width: item(x) v. _dashed_attribute
 278PASS border-left: item(x) v. _dashed_attribute
 279PASS border-left-color: item(x) v. _dashed_attribute
 280PASS border-left-style: item(x) v. _dashed_attribute
 281PASS border-left-width: item(x) v. _dashed_attribute
 282PASS border-radius: item(x) v. _dashed_attribute
 283PASS border-right: item(x) v. _dashed_attribute
 284PASS border-right-color: item(x) v. _dashed_attribute
 285PASS border-right-style: item(x) v. _dashed_attribute
 286PASS border-right-width: item(x) v. _dashed_attribute
 287PASS border-spacing: item(x) v. _dashed_attribute
 288PASS border-start-end-radius: item(x) v. _dashed_attribute
 289PASS border-start-start-radius: item(x) v. _dashed_attribute
 290PASS border-style: item(x) v. _dashed_attribute
 291PASS border-top: item(x) v. _dashed_attribute
 292PASS border-top-color: item(x) v. _dashed_attribute
 293PASS border-top-left-radius: item(x) v. _dashed_attribute
 294PASS border-top-right-radius: item(x) v. _dashed_attribute
 295PASS border-top-style: item(x) v. _dashed_attribute
 296PASS border-top-width: item(x) v. _dashed_attribute
 297PASS border-width: item(x) v. _dashed_attribute
 298PASS bottom: item(x) v. _dashed_attribute
 299PASS box-decoration-break: item(x) v. _dashed_attribute
 300PASS box-shadow: item(x) v. _dashed_attribute
 301PASS box-sizing: item(x) v. _dashed_attribute
 302PASS break-after: item(x) v. _dashed_attribute
 303PASS break-before: item(x) v. _dashed_attribute
 304PASS break-inside: item(x) v. _dashed_attribute
 305PASS buffered-rendering: item(x) v. _dashed_attribute
 306PASS caption-side: item(x) v. _dashed_attribute
 307PASS caret-color: item(x) v. _dashed_attribute
 308PASS clear: item(x) v. _dashed_attribute
 309PASS clip: item(x) v. _dashed_attribute
 310PASS clip-path: item(x) v. _dashed_attribute
 311PASS clip-rule: item(x) v. _dashed_attribute
 312PASS color: item(x) v. _dashed_attribute
 313PASS color-adjust: item(x) v. _dashed_attribute
 314PASS color-interpolation: item(x) v. _dashed_attribute
 315PASS color-interpolation-filters: item(x) v. _dashed_attribute
 316PASS color-profile: item(x) v. _dashed_attribute
 317PASS color-rendering: item(x) v. _dashed_attribute
 318PASS color-scheme: item(x) v. _dashed_attribute
 319PASS column-count: item(x) v. _dashed_attribute
 320PASS column-fill: item(x) v. _dashed_attribute
 321PASS column-gap: item(x) v. _dashed_attribute
 322PASS column-progression: item(x) v. _dashed_attribute
 323PASS column-rule: item(x) v. _dashed_attribute
 324PASS column-rule-color: item(x) v. _dashed_attribute
 325PASS column-rule-style: item(x) v. _dashed_attribute
 326PASS column-rule-width: item(x) v. _dashed_attribute
 327PASS column-span: item(x) v. _dashed_attribute
 328PASS column-width: item(x) v. _dashed_attribute
 329PASS columns: item(x) v. _dashed_attribute
 330PASS contain: item(x) v. _dashed_attribute
 331PASS contain-intrinsic-size: item(x) v. _dashed_attribute
 332PASS content: item(x) v. _dashed_attribute
 333PASS content-visibility: item(x) v. _dashed_attribute
 334PASS counter-increment: item(x) v. _dashed_attribute
 335PASS counter-reset: item(x) v. _dashed_attribute
 336PASS counter-set: item(x) v. _dashed_attribute
 337PASS cursor: item(x) v. _dashed_attribute
 338PASS cx: item(x) v. _dashed_attribute
 339PASS cy: item(x) v. _dashed_attribute
 340PASS d: item(x) v. _dashed_attribute
 341PASS direction: item(x) v. _dashed_attribute
 342PASS display: item(x) v. _dashed_attribute
 343PASS dominant-baseline: item(x) v. _dashed_attribute
 344PASS empty-cells: item(x) v. _dashed_attribute
 345PASS enable-background: item(x) v. _dashed_attribute
 346PASS fill: item(x) v. _dashed_attribute
 347PASS fill-opacity: item(x) v. _dashed_attribute
 348PASS fill-rule: item(x) v. _dashed_attribute
 349PASS filter: item(x) v. _dashed_attribute
 350PASS flex: item(x) v. _dashed_attribute
 351PASS flex-basis: item(x) v. _dashed_attribute
 352PASS flex-direction: item(x) v. _dashed_attribute
 353PASS flex-flow: item(x) v. _dashed_attribute
 354PASS flex-grow: item(x) v. _dashed_attribute
 355PASS flex-shrink: item(x) v. _dashed_attribute
 356PASS flex-wrap: item(x) v. _dashed_attribute
 357PASS float: item(x) v. _dashed_attribute
 358PASS flood-color: item(x) v. _dashed_attribute
 359PASS flood-opacity: item(x) v. _dashed_attribute
 360PASS font: item(x) v. _dashed_attribute
 361PASS font-display: item(x) v. _dashed_attribute
 362PASS font-family: item(x) v. _dashed_attribute
 363PASS font-feature-settings: item(x) v. _dashed_attribute
 364PASS font-kerning: item(x) v. _dashed_attribute
 365PASS font-language-override: item(x) v. _dashed_attribute
 366PASS font-optical-sizing: item(x) v. _dashed_attribute
 367PASS font-size: item(x) v. _dashed_attribute
 368PASS font-size-adjust: item(x) v. _dashed_attribute
 369PASS font-stretch: item(x) v. _dashed_attribute
 370PASS font-style: item(x) v. _dashed_attribute
 371PASS font-synthesis: item(x) v. _dashed_attribute
 372PASS font-variant: item(x) v. _dashed_attribute
 373PASS font-variant-alternates: item(x) v. _dashed_attribute
 374PASS font-variant-caps: item(x) v. _dashed_attribute
 375PASS font-variant-east-asian: item(x) v. _dashed_attribute
 376PASS font-variant-ligatures: item(x) v. _dashed_attribute
 377PASS font-variant-numeric: item(x) v. _dashed_attribute
 378PASS font-variant-position: item(x) v. _dashed_attribute
 379PASS font-variation-settings: item(x) v. _dashed_attribute
 380PASS font-weight: item(x) v. _dashed_attribute
 381PASS gap: item(x) v. _dashed_attribute
 382PASS glyph-orientation-horizontal: item(x) v. _dashed_attribute
 383PASS glyph-orientation-vertical: item(x) v. _dashed_attribute
 384PASS grid: item(x) v. _dashed_attribute
 385PASS grid-area: item(x) v. _dashed_attribute
 386PASS grid-auto-columns: item(x) v. _dashed_attribute
 387PASS grid-auto-flow: item(x) v. _dashed_attribute
 388PASS grid-auto-rows: item(x) v. _dashed_attribute
 389PASS grid-column: item(x) v. _dashed_attribute
 390PASS grid-column-end: item(x) v. _dashed_attribute
 391PASS grid-column-gap: item(x) v. _dashed_attribute
 392PASS grid-column-start: item(x) v. _dashed_attribute
 393PASS grid-gap: item(x) v. _dashed_attribute
 394PASS grid-row: item(x) v. _dashed_attribute
 395PASS grid-row-end: item(x) v. _dashed_attribute
 396PASS grid-row-gap: item(x) v. _dashed_attribute
 397PASS grid-row-start: item(x) v. _dashed_attribute
 398PASS grid-template: item(x) v. _dashed_attribute
 399PASS grid-template-areas: item(x) v. _dashed_attribute
 400PASS grid-template-columns: item(x) v. _dashed_attribute
 401PASS grid-template-rows: item(x) v. _dashed_attribute
 402PASS hanging-punctuation: item(x) v. _dashed_attribute
 403PASS height: item(x) v. _dashed_attribute
 404PASS hyphens: item(x) v. _dashed_attribute
 405PASS image-orientation: item(x) v. _dashed_attribute
 406PASS image-rendering: item(x) v. _dashed_attribute
 407PASS ime-mode: item(x) v. _dashed_attribute
 408PASS inherits: item(x) v. _dashed_attribute
 409PASS initial-value: item(x) v. _dashed_attribute
 410PASS inline-size: item(x) v. _dashed_attribute
 411PASS inset: item(x) v. _dashed_attribute
 412PASS inset-block: item(x) v. _dashed_attribute
 413PASS inset-block-end: item(x) v. _dashed_attribute
 414PASS inset-block-start: item(x) v. _dashed_attribute
 415PASS inset-inline: item(x) v. _dashed_attribute
 416PASS inset-inline-end: item(x) v. _dashed_attribute
 417PASS inset-inline-start: item(x) v. _dashed_attribute
 418PASS internal-text-autosizing-status: item(x) v. _dashed_attribute
 419PASS isolation: item(x) v. _dashed_attribute
 420PASS justify-content: item(x) v. _dashed_attribute
 421PASS justify-items: item(x) v. _dashed_attribute
 422PASS justify-self: item(x) v. _dashed_attribute
 423PASS kerning: item(x) v. _dashed_attribute
 424PASS layout-grid: item(x) v. _dashed_attribute
 425PASS layout-grid-char: item(x) v. _dashed_attribute
 426PASS layout-grid-line: item(x) v. _dashed_attribute
 427PASS layout-grid-mode: item(x) v. _dashed_attribute
 428PASS layout-grid-type: item(x) v. _dashed_attribute
 429PASS left: item(x) v. _dashed_attribute
 430PASS letter-spacing: item(x) v. _dashed_attribute
 431PASS lighting-color: item(x) v. _dashed_attribute
 432PASS line-break: item(x) v. _dashed_attribute
 433PASS line-height: item(x) v. _dashed_attribute
 434PASS list-style: item(x) v. _dashed_attribute
 435PASS list-style-image: item(x) v. _dashed_attribute
 436PASS list-style-position: item(x) v. _dashed_attribute
 437PASS list-style-type: item(x) v. _dashed_attribute
 438PASS margin: item(x) v. _dashed_attribute
 439PASS margin-block: item(x) v. _dashed_attribute
 440PASS margin-block-end: item(x) v. _dashed_attribute
 441PASS margin-block-start: item(x) v. _dashed_attribute
 442PASS margin-bottom: item(x) v. _dashed_attribute
 443PASS margin-inline: item(x) v. _dashed_attribute
 444PASS margin-inline-end: item(x) v. _dashed_attribute
 445PASS margin-inline-start: item(x) v. _dashed_attribute
 446PASS margin-left: item(x) v. _dashed_attribute
 447PASS margin-right: item(x) v. _dashed_attribute
 448PASS margin-top: item(x) v. _dashed_attribute
 449PASS marker: item(x) v. _dashed_attribute
 450PASS marker-end: item(x) v. _dashed_attribute
 451PASS marker-mid: item(x) v. _dashed_attribute
 452PASS marker-offset: item(x) v. _dashed_attribute
 453PASS marker-start: item(x) v. _dashed_attribute
 454PASS mask: item(x) v. _dashed_attribute
 455PASS mask-clip: item(x) v. _dashed_attribute
 456PASS mask-composite: item(x) v. _dashed_attribute
 457PASS mask-image: item(x) v. _dashed_attribute
 458PASS mask-mode: item(x) v. _dashed_attribute
 459PASS mask-origin: item(x) v. _dashed_attribute
 460PASS mask-position: item(x) v. _dashed_attribute
 461PASS mask-position-x: item(x) v. _dashed_attribute
 462PASS mask-position-y: item(x) v. _dashed_attribute
 463PASS mask-repeat: item(x) v. _dashed_attribute
 464PASS mask-size: item(x) v. _dashed_attribute
 465PASS mask-type: item(x) v. _dashed_attribute
 466PASS max-block-size: item(x) v. _dashed_attribute
 467PASS max-height: item(x) v. _dashed_attribute
 468PASS max-inline-size: item(x) v. _dashed_attribute
 469PASS max-width: item(x) v. _dashed_attribute
 470PASS max-zoom: item(x) v. _dashed_attribute
 471PASS min-block-size: item(x) v. _dashed_attribute
 472PASS min-height: item(x) v. _dashed_attribute
 473PASS min-inline-size: item(x) v. _dashed_attribute
 474PASS min-width: item(x) v. _dashed_attribute
 475PASS min-zoom: item(x) v. _dashed_attribute
 476PASS mix-blend-mode: item(x) v. _dashed_attribute
 477PASS motion: item(x) v. _dashed_attribute
 478PASS motion-offset: item(x) v. _dashed_attribute
 479PASS motion-path: item(x) v. _dashed_attribute
 480PASS motion-rotation: item(x) v. _dashed_attribute
 481PASS object-fit: item(x) v. _dashed_attribute
 482PASS object-position: item(x) v. _dashed_attribute
 483PASS offset: item(x) v. _dashed_attribute
 484PASS offset-anchor: item(x) v. _dashed_attribute
 485PASS offset-block-end: item(x) v. _dashed_attribute
 486PASS offset-block-start: item(x) v. _dashed_attribute
 487PASS offset-distance: item(x) v. _dashed_attribute
 488PASS offset-inline-end: item(x) v. _dashed_attribute
 489PASS offset-inline-start: item(x) v. _dashed_attribute
 490PASS offset-path: item(x) v. _dashed_attribute
 491PASS offset-rotate: item(x) v. _dashed_attribute
 492PASS offset-rotation: item(x) v. _dashed_attribute
 493PASS opacity: item(x) v. _dashed_attribute
 494PASS order: item(x) v. _dashed_attribute
 495PASS orientation: item(x) v. _dashed_attribute
 496PASS orphans: item(x) v. _dashed_attribute
 497PASS outline: item(x) v. _dashed_attribute
 498PASS outline-color: item(x) v. _dashed_attribute
 499PASS outline-offset: item(x) v. _dashed_attribute
 500PASS outline-style: item(x) v. _dashed_attribute
 501PASS outline-width: item(x) v. _dashed_attribute
 502PASS overflow: item(x) v. _dashed_attribute
 503PASS overflow-anchor: item(x) v. _dashed_attribute
 504PASS overflow-block: item(x) v. _dashed_attribute
 505PASS overflow-inline: item(x) v. _dashed_attribute
 506PASS overflow-wrap: item(x) v. _dashed_attribute
 507PASS overflow-x: item(x) v. _dashed_attribute
 508PASS overflow-y: item(x) v. _dashed_attribute
 509PASS overscroll-behavior: item(x) v. _dashed_attribute
 510PASS overscroll-behavior-block: item(x) v. _dashed_attribute
 511PASS overscroll-behavior-inline: item(x) v. _dashed_attribute
 512PASS overscroll-behavior-x: item(x) v. _dashed_attribute
 513PASS overscroll-behavior-y: item(x) v. _dashed_attribute
 514PASS padding: item(x) v. _dashed_attribute
 515PASS padding-block: item(x) v. _dashed_attribute
 516PASS padding-block-end: item(x) v. _dashed_attribute
 517PASS padding-block-start: item(x) v. _dashed_attribute
 518PASS padding-bottom: item(x) v. _dashed_attribute
 519PASS padding-inline: item(x) v. _dashed_attribute
 520PASS padding-inline-end: item(x) v. _dashed_attribute
 521PASS padding-inline-start: item(x) v. _dashed_attribute
 522PASS padding-left: item(x) v. _dashed_attribute
 523PASS padding-right: item(x) v. _dashed_attribute
 524PASS padding-top: item(x) v. _dashed_attribute
 525PASS page: item(x) v. _dashed_attribute
 526PASS page-break-after: item(x) v. _dashed_attribute
 527PASS page-break-before: item(x) v. _dashed_attribute
 528PASS page-break-inside: item(x) v. _dashed_attribute
 529PASS page-orientation: item(x) v. _dashed_attribute
 530PASS paint-order: item(x) v. _dashed_attribute
 531PASS pen-action: item(x) v. _dashed_attribute
 532PASS perspective: item(x) v. _dashed_attribute
 533PASS perspective-origin: item(x) v. _dashed_attribute
 534PASS perspective-origin-x: item(x) v. _dashed_attribute
 535PASS perspective-origin-y: item(x) v. _dashed_attribute
 536PASS place-content: item(x) v. _dashed_attribute
 537PASS place-items: item(x) v. _dashed_attribute
 538PASS place-self: item(x) v. _dashed_attribute
 539PASS pointer-events: item(x) v. _dashed_attribute
 540PASS position: item(x) v. _dashed_attribute
 541PASS quotes: item(x) v. _dashed_attribute
 542PASS r: item(x) v. _dashed_attribute
 543PASS resize: item(x) v. _dashed_attribute
 544PASS right: item(x) v. _dashed_attribute
 545PASS rotate: item(x) v. _dashed_attribute
 546PASS row-gap: item(x) v. _dashed_attribute
 547PASS ruby-align: item(x) v. _dashed_attribute
 548PASS ruby-overhang: item(x) v. _dashed_attribute
 549PASS ruby-position: item(x) v. _dashed_attribute
 550PASS rx: item(x) v. _dashed_attribute
 551PASS ry: item(x) v. _dashed_attribute
 552PASS scale: item(x) v. _dashed_attribute
 553PASS scroll-behavior: item(x) v. _dashed_attribute
 554PASS scroll-margin: item(x) v. _dashed_attribute
 555PASS scroll-margin-block: item(x) v. _dashed_attribute
 556PASS scroll-margin-block-end: item(x) v. _dashed_attribute
 557PASS scroll-margin-block-start: item(x) v. _dashed_attribute
 558PASS scroll-margin-bottom: item(x) v. _dashed_attribute
 559PASS scroll-margin-inline: item(x) v. _dashed_attribute
 560PASS scroll-margin-inline-end: item(x) v. _dashed_attribute
 561PASS scroll-margin-inline-start: item(x) v. _dashed_attribute
 562PASS scroll-margin-left: item(x) v. _dashed_attribute
 563PASS scroll-margin-right: item(x) v. _dashed_attribute
 564PASS scroll-margin-top: item(x) v. _dashed_attribute
 565PASS scroll-padding: item(x) v. _dashed_attribute
 566PASS scroll-padding-block: item(x) v. _dashed_attribute
 567PASS scroll-padding-block-end: item(x) v. _dashed_attribute
 568PASS scroll-padding-block-start: item(x) v. _dashed_attribute
 569PASS scroll-padding-bottom: item(x) v. _dashed_attribute
 570PASS scroll-padding-inline: item(x) v. _dashed_attribute
 571PASS scroll-padding-inline-end: item(x) v. _dashed_attribute
 572PASS scroll-padding-inline-start: item(x) v. _dashed_attribute
 573PASS scroll-padding-left: item(x) v. _dashed_attribute
 574PASS scroll-padding-right: item(x) v. _dashed_attribute
 575PASS scroll-padding-top: item(x) v. _dashed_attribute
 576PASS scroll-snap-align: item(x) v. _dashed_attribute
 577PASS scroll-snap-coordinate: item(x) v. _dashed_attribute
 578PASS scroll-snap-destination: item(x) v. _dashed_attribute
 579PASS scroll-snap-margin: item(x) v. _dashed_attribute
 580PASS scroll-snap-margin-bottom: item(x) v. _dashed_attribute
 581PASS scroll-snap-margin-left: item(x) v. _dashed_attribute
 582PASS scroll-snap-margin-right: item(x) v. _dashed_attribute
 583PASS scroll-snap-margin-top: item(x) v. _dashed_attribute
 584PASS scroll-snap-points-x: item(x) v. _dashed_attribute
 585PASS scroll-snap-points-y: item(x) v. _dashed_attribute
 586PASS scroll-snap-stop: item(x) v. _dashed_attribute
 587PASS scroll-snap-type: item(x) v. _dashed_attribute
 588PASS scroll-snap-type-x: item(x) v. _dashed_attribute
 589PASS scroll-snap-type-y: item(x) v. _dashed_attribute
 590PASS scrollbar-color: item(x) v. _dashed_attribute
 591PASS scrollbar-width: item(x) v. _dashed_attribute
 592PASS shape-image-threshold: item(x) v. _dashed_attribute
 593PASS shape-margin: item(x) v. _dashed_attribute
 594PASS shape-outside: item(x) v. _dashed_attribute
 595PASS shape-rendering: item(x) v. _dashed_attribute
 596PASS size: item(x) v. _dashed_attribute
 597PASS speak: item(x) v. _dashed_attribute
 598PASS speak-as: item(x) v. _dashed_attribute
 599PASS src: item(x) v. _dashed_attribute
 600PASS stop-color: item(x) v. _dashed_attribute
 601PASS stop-opacity: item(x) v. _dashed_attribute
 602PASS stroke: item(x) v. _dashed_attribute
 603PASS stroke-color: item(x) v. _dashed_attribute
 604PASS stroke-dasharray: item(x) v. _dashed_attribute
 605PASS stroke-dashoffset: item(x) v. _dashed_attribute
 606PASS stroke-linecap: item(x) v. _dashed_attribute
 607PASS stroke-linejoin: item(x) v. _dashed_attribute
 608PASS stroke-miterlimit: item(x) v. _dashed_attribute
 609PASS stroke-opacity: item(x) v. _dashed_attribute
 610PASS stroke-width: item(x) v. _dashed_attribute
 611PASS supported-color-schemes: item(x) v. _dashed_attribute
 612PASS syntax: item(x) v. _dashed_attribute
 613PASS tab-size: item(x) v. _dashed_attribute
 614PASS table-layout: item(x) v. _dashed_attribute
 615PASS text-align: item(x) v. _dashed_attribute
 616PASS text-align-last: item(x) v. _dashed_attribute
 617PASS text-anchor: item(x) v. _dashed_attribute
 618PASS text-combine-upright: item(x) v. _dashed_attribute
 619PASS text-decoration: item(x) v. _dashed_attribute
 620PASS text-decoration-color: item(x) v. _dashed_attribute
 621PASS text-decoration-line: item(x) v. _dashed_attribute
 622PASS text-decoration-skip: item(x) v. _dashed_attribute
 623PASS text-decoration-skip-ink: item(x) v. _dashed_attribute
 624PASS text-decoration-style: item(x) v. _dashed_attribute
 625PASS text-decoration-thickness: item(x) v. _dashed_attribute
 626PASS text-emphasis: item(x) v. _dashed_attribute
 627PASS text-emphasis-color: item(x) v. _dashed_attribute
 628PASS text-emphasis-position: item(x) v. _dashed_attribute
 629PASS text-emphasis-style: item(x) v. _dashed_attribute
 630PASS text-indent: item(x) v. _dashed_attribute
 631PASS text-justify: item(x) v. _dashed_attribute
 632PASS text-kashida: item(x) v. _dashed_attribute
 633PASS text-kashida-space: item(x) v. _dashed_attribute
 634PASS text-line-through: item(x) v. _dashed_attribute
 635PASS text-line-through-color: item(x) v. _dashed_attribute
 636PASS text-line-through-mode: item(x) v. _dashed_attribute
 637PASS text-line-through-style: item(x) v. _dashed_attribute
 638PASS text-line-through-width: item(x) v. _dashed_attribute
 639PASS text-orientation: item(x) v. _dashed_attribute
 640PASS text-overflow: item(x) v. _dashed_attribute
 641PASS text-overline: item(x) v. _dashed_attribute
 642PASS text-overline-color: item(x) v. _dashed_attribute
 643PASS text-overline-mode: item(x) v. _dashed_attribute
 644PASS text-overline-style: item(x) v. _dashed_attribute
 645PASS text-overline-width: item(x) v. _dashed_attribute
 646PASS text-rendering: item(x) v. _dashed_attribute
 647PASS text-shadow: item(x) v. _dashed_attribute
 648PASS text-size-adjust: item(x) v. _dashed_attribute
 649PASS text-transform: item(x) v. _dashed_attribute
 650PASS text-underline: item(x) v. _dashed_attribute
 651PASS text-underline-color: item(x) v. _dashed_attribute
 652PASS text-underline-mode: item(x) v. _dashed_attribute
 653PASS text-underline-offset: item(x) v. _dashed_attribute
 654PASS text-underline-position: item(x) v. _dashed_attribute
 655PASS text-underline-style: item(x) v. _dashed_attribute
 656PASS text-underline-width: item(x) v. _dashed_attribute
 657PASS top: item(x) v. _dashed_attribute
 658PASS touch-action: item(x) v. _dashed_attribute
 659PASS transform: item(x) v. _dashed_attribute
 660PASS transform-box: item(x) v. _dashed_attribute
 661PASS transform-origin: item(x) v. _dashed_attribute
 662PASS transform-origin-x: item(x) v. _dashed_attribute
 663PASS transform-origin-y: item(x) v. _dashed_attribute
 664PASS transform-origin-z: item(x) v. _dashed_attribute
 665PASS transform-style: item(x) v. _dashed_attribute
 666PASS transition: item(x) v. _dashed_attribute
 667PASS transition-delay: item(x) v. _dashed_attribute
 668PASS transition-duration: item(x) v. _dashed_attribute
 669PASS transition-property: item(x) v. _dashed_attribute
 670PASS transition-timing-function: item(x) v. _dashed_attribute
 671PASS translate: item(x) v. _dashed_attribute
 672PASS unicode-bidi: item(x) v. _dashed_attribute
 673PASS unicode-range: item(x) v. _dashed_attribute
 674PASS user-select: item(x) v. _dashed_attribute
 675PASS user-zoom: item(x) v. _dashed_attribute
 676PASS vector-effect: item(x) v. _dashed_attribute
 677PASS vertical-align: item(x) v. _dashed_attribute
 678PASS viewport-fit: item(x) v. _dashed_attribute
 679PASS visibility: item(x) v. _dashed_attribute
 680PASS white-space: item(x) v. _dashed_attribute
 681PASS widows: item(x) v. _dashed_attribute
 682PASS width: item(x) v. _dashed_attribute
 683PASS will-change: item(x) v. _dashed_attribute
 684PASS word-break: item(x) v. _dashed_attribute
 685PASS word-spacing: item(x) v. _dashed_attribute
 686PASS word-wrap: item(x) v. _dashed_attribute
 687PASS writing-mode: item(x) v. _dashed_attribute
 688PASS x: item(x) v. _dashed_attribute
 689PASS y: item(x) v. _dashed_attribute
 690PASS z-index: item(x) v. _dashed_attribute
 691PASS zoom: item(x) v. _dashed_attribute
 692

LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-getter-v-properties.tentative.html

 1<!doctype html>
 2<meta charset="utf-8">
 3<title>CSSStyleDeclaration index getter v. attributes</title>
 4<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface">
 5<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2529">
 6<script src="/resources/testharness.js"></script>
 7<script src="/resources/testharnessreport.js"></script>
 8<div id="testElement"></div>
 9<script>
 10
 11/* per spec, the indexed getter gives all supported longhand properties, whereas
 12 attributes are created for all supported properties; this implies the indexed
 13 getter gives a subset of the attributes */
 14
 15const decl = window.getComputedStyle(document.getElementById("testElement"));
 16const declItems = Array.from(decl).sort();
 17
 18// Just give the CSS2 shorthands for now
 19const shorthands = ['border-top', 'border-right', 'border-bottom', 'border-left', 'border', 'font'];
 20
 21promise_test(async () => {
 22 const response = await fetch("/css/support/properties.json");
 23 const properties = await response.json();
 24
 25 for (let prop of properties) {
 26 test(() => {
 27 const hasAttribute = prop in decl;
 28 if (!hasAttribute) {
 29 assert_false(declItems.includes(prop));
 30 } else if (shorthands.includes(prop)) {
 31 assert_false(declItems.includes(prop));
 32 }
 33 }, `${prop}: item(x) v. _dashed_attribute`);
 34 }
 35}, "load properties list");
 36
 37</script>

LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors-expected.txt

 1
 2PASS load properties list
 3PASS -apple-color-filter
 4PASS -apple-pay-button-style
 5PASS -apple-pay-button-type
 6PASS -apple-trailing-word
 7PASS -epub-caption-side
 8PASS -epub-text-combine
 9PASS -epub-text-emphasis
 10PASS -epub-text-emphasis-color
 11PASS -epub-text-emphasis-style
 12PASS -epub-text-orientation
 13PASS -epub-text-transform
 14PASS -epub-word-break
 15PASS -epub-writing-mode
 16PASS -moz-animation
 17PASS -moz-animation-delay
 18PASS -moz-animation-direction
 19PASS -moz-animation-duration
 20PASS -moz-animation-fill-mode
 21PASS -moz-animation-iteration-count
 22PASS -moz-animation-name
 23PASS -moz-animation-play-state
 24PASS -moz-animation-timing-function
 25PASS -moz-appearance
 26PASS -moz-backface-visibility
 27PASS -moz-binding
 28PASS -moz-border-bottom-colors
 29PASS -moz-border-end
 30PASS -moz-border-end-color
 31PASS -moz-border-end-style
 32PASS -moz-border-end-width
 33PASS -moz-border-image
 34PASS -moz-border-left-colors
 35PASS -moz-border-right-colors
 36PASS -moz-border-start
 37PASS -moz-border-start-color
 38PASS -moz-border-start-style
 39PASS -moz-border-start-width
 40PASS -moz-border-top-colors
 41PASS -moz-box-align
 42PASS -moz-box-direction
 43PASS -moz-box-flex
 44PASS -moz-box-ordinal-group
 45PASS -moz-box-orient
 46PASS -moz-box-pack
 47PASS -moz-box-sizing
 48PASS -moz-column-count
 49PASS -moz-column-fill
 50PASS -moz-column-gap
 51PASS -moz-column-rule
 52PASS -moz-column-rule-color
 53PASS -moz-column-rule-style
 54PASS -moz-column-rule-width
 55PASS -moz-column-span
 56PASS -moz-column-width
 57PASS -moz-columns
 58PASS -moz-float-edge
 59PASS -moz-font-feature-settings
 60PASS -moz-font-language-override
 61PASS -moz-force-broken-image-icon
 62PASS -moz-hyphens
 63PASS -moz-image-region
 64PASS -moz-margin-end
 65PASS -moz-margin-start
 66PASS -moz-orient
 67PASS -moz-osx-font-smoothing
 68PASS -moz-padding-end
 69PASS -moz-padding-start
 70PASS -moz-perspective
 71PASS -moz-perspective-origin
 72PASS -moz-stack-sizing
 73PASS -moz-tab-size
 74PASS -moz-text-align-last
 75PASS -moz-text-size-adjust
 76PASS -moz-transform
 77PASS -moz-transform-origin
 78PASS -moz-transform-style
 79PASS -moz-transition
 80PASS -moz-transition-delay
 81PASS -moz-transition-duration
 82PASS -moz-transition-property
 83PASS -moz-transition-timing-function
 84PASS -moz-user-focus
 85PASS -moz-user-input
 86PASS -moz-user-modify
 87PASS -moz-user-select
 88PASS -moz-window-dragging
 89PASS -ms-content-zoom-chaining
 90PASS -ms-content-zoom-limit
 91PASS -ms-content-zoom-limit-max
 92PASS -ms-content-zoom-limit-min
 93PASS -ms-content-zoom-snap
 94PASS -ms-content-zoom-snap-points
 95PASS -ms-content-zoom-snap-type
 96PASS -ms-content-zooming
 97PASS -ms-flow-from
 98PASS -ms-flow-into
 99PASS -ms-font-feature-settings
 100PASS -ms-grid-column
 101PASS -ms-grid-column-align
 102PASS -ms-grid-column-span
 103PASS -ms-grid-columns
 104PASS -ms-grid-row
 105PASS -ms-grid-row-align
 106PASS -ms-grid-row-span
 107PASS -ms-grid-rows
 108PASS -ms-high-contrast-adjust
 109PASS -ms-hyphenate-limit-chars
 110PASS -ms-hyphenate-limit-lines
 111PASS -ms-hyphenate-limit-zone
 112PASS -ms-hyphens
 113PASS -ms-ime-align
 114PASS -ms-overflow-style
 115PASS -ms-scroll-chaining
 116PASS -ms-scroll-limit
 117PASS -ms-scroll-limit-x-max
 118PASS -ms-scroll-limit-x-min
 119PASS -ms-scroll-limit-y-max
 120PASS -ms-scroll-limit-y-min
 121PASS -ms-scroll-rails
 122PASS -ms-scroll-snap-points-x
 123PASS -ms-scroll-snap-points-y
 124PASS -ms-scroll-snap-type
 125PASS -ms-scroll-snap-x
 126PASS -ms-scroll-snap-y
 127PASS -ms-scroll-translation
 128PASS -ms-text-combine-horizontal
 129PASS -ms-text-size-adjust
 130PASS -ms-touch-select
 131PASS -ms-user-select
 132PASS -ms-wrap-flow
 133PASS -ms-wrap-margin
 134PASS -ms-wrap-through
 135PASS -webkit-align-content
 136PASS -webkit-align-items
 137PASS -webkit-align-self
 138PASS -webkit-animation
 139PASS -webkit-animation-delay
 140PASS -webkit-animation-direction
 141PASS -webkit-animation-duration
 142PASS -webkit-animation-fill-mode
 143PASS -webkit-animation-iteration-count
 144PASS -webkit-animation-name
 145PASS -webkit-animation-play-state
 146PASS -webkit-animation-timing-function
 147PASS -webkit-appearance
 148PASS -webkit-backface-visibility
 149PASS -webkit-background-clip
 150PASS -webkit-background-origin
 151PASS -webkit-background-size
 152PASS -webkit-border-bottom-left-radius
 153PASS -webkit-border-bottom-right-radius
 154PASS -webkit-border-image
 155PASS -webkit-border-radius
 156PASS -webkit-border-top-left-radius
 157PASS -webkit-border-top-right-radius
 158PASS -webkit-box-align
 159PASS -webkit-box-direction
 160PASS -webkit-box-flex
 161PASS -webkit-box-ordinal-group
 162PASS -webkit-box-orient
 163PASS -webkit-box-pack
 164PASS -webkit-box-shadow
 165PASS -webkit-box-sizing
 166PASS -webkit-filter
 167PASS -webkit-flex
 168PASS -webkit-flex-basis
 169PASS -webkit-flex-direction
 170PASS -webkit-flex-flow
 171PASS -webkit-flex-grow
 172PASS -webkit-flex-shrink
 173PASS -webkit-flex-wrap
 174PASS -webkit-justify-content
 175PASS -webkit-line-clamp
 176PASS -webkit-mask
 177PASS -webkit-mask-clip
 178PASS -webkit-mask-composite
 179PASS -webkit-mask-image
 180PASS -webkit-mask-origin
 181PASS -webkit-mask-position
 182PASS -webkit-mask-position-x
 183PASS -webkit-mask-position-y
 184PASS -webkit-mask-repeat
 185PASS -webkit-mask-size
 186PASS -webkit-order
 187PASS -webkit-perspective
 188PASS -webkit-perspective-origin
 189PASS -webkit-text-fill-color
 190PASS -webkit-text-size-adjust
 191PASS -webkit-text-stroke
 192PASS -webkit-text-stroke-color
 193PASS -webkit-text-stroke-width
 194PASS -webkit-transform
 195PASS -webkit-transform-origin
 196PASS -webkit-transform-style
 197PASS -webkit-transition
 198PASS -webkit-transition-delay
 199PASS -webkit-transition-duration
 200PASS -webkit-transition-property
 201PASS -webkit-transition-timing-function
 202PASS -webkit-user-select
 203PASS align-content
 204PASS align-items
 205PASS align-self
 206PASS alignment-baseline
 207PASS all
 208PASS alt
 209PASS animation
 210PASS animation-delay
 211PASS animation-direction
 212PASS animation-duration
 213PASS animation-fill-mode
 214PASS animation-iteration-count
 215PASS animation-name
 216PASS animation-play-state
 217PASS animation-timing-function
 218PASS appearance
 219PASS backdrop-filter
 220PASS backface-visibility
 221PASS background
 222PASS background-attachment
 223PASS background-blend-mode
 224PASS background-clip
 225PASS background-color
 226PASS background-image
 227PASS background-origin
 228PASS background-position
 229PASS background-position-x
 230PASS background-position-y
 231PASS background-repeat
 232PASS background-repeat-x
 233PASS background-repeat-y
 234PASS background-size
 235PASS baseline-shift
 236PASS block-size
 237PASS border
 238PASS border-block
 239PASS border-block-color
 240PASS border-block-end
 241PASS border-block-end-color
 242PASS border-block-end-style
 243PASS border-block-end-width
 244PASS border-block-start
 245PASS border-block-start-color
 246PASS border-block-start-style
 247PASS border-block-start-width
 248PASS border-block-style
 249PASS border-block-width
 250PASS border-bottom
 251PASS border-bottom-color
 252PASS border-bottom-left-radius
 253PASS border-bottom-right-radius
 254PASS border-bottom-style
 255PASS border-bottom-width
 256PASS border-collapse
 257PASS border-color
 258PASS border-end-end-radius
 259PASS border-end-start-radius
 260PASS border-image
 261PASS border-image-outset
 262PASS border-image-repeat
 263PASS border-image-slice
 264PASS border-image-source
 265PASS border-image-width
 266PASS border-inline
 267PASS border-inline-color
 268PASS border-inline-end
 269PASS border-inline-end-color
 270PASS border-inline-end-style
 271PASS border-inline-end-width
 272PASS border-inline-start
 273PASS border-inline-start-color
 274PASS border-inline-start-style
 275PASS border-inline-start-width
 276PASS border-inline-style
 277PASS border-inline-width
 278PASS border-left
 279PASS border-left-color
 280PASS border-left-style
 281PASS border-left-width
 282PASS border-radius
 283PASS border-right
 284PASS border-right-color
 285PASS border-right-style
 286PASS border-right-width
 287PASS border-spacing
 288PASS border-start-end-radius
 289PASS border-start-start-radius
 290PASS border-style
 291PASS border-top
 292PASS border-top-color
 293PASS border-top-left-radius
 294PASS border-top-right-radius
 295PASS border-top-style
 296PASS border-top-width
 297PASS border-width
 298PASS bottom
 299PASS box-decoration-break
 300PASS box-shadow
 301PASS box-sizing
 302PASS break-after
 303PASS break-before
 304PASS break-inside
 305PASS buffered-rendering
 306PASS caption-side
 307PASS caret-color
 308PASS clear
 309PASS clip
 310PASS clip-path
 311PASS clip-rule
 312PASS color
 313PASS color-adjust
 314PASS color-interpolation
 315PASS color-interpolation-filters
 316PASS color-profile
 317PASS color-rendering
 318PASS color-scheme
 319PASS column-count
 320PASS column-fill
 321PASS column-gap
 322PASS column-progression
 323PASS column-rule
 324PASS column-rule-color
 325PASS column-rule-style
 326PASS column-rule-width
 327PASS column-span
 328PASS column-width
 329PASS columns
 330PASS contain
 331PASS contain-intrinsic-size
 332PASS content
 333PASS content-visibility
 334PASS counter-increment
 335PASS counter-reset
 336PASS counter-set
 337PASS cursor
 338PASS cx
 339PASS cy
 340PASS d
 341PASS direction
 342PASS display
 343PASS dominant-baseline
 344PASS empty-cells
 345PASS enable-background
 346PASS fill
 347PASS fill-opacity
 348PASS fill-rule
 349PASS filter
 350PASS flex
 351PASS flex-basis
 352PASS flex-direction
 353PASS flex-flow
 354PASS flex-grow
 355PASS flex-shrink
 356PASS flex-wrap
 357PASS float
 358PASS flood-color
 359PASS flood-opacity
 360PASS font
 361PASS font-display
 362PASS font-family
 363PASS font-feature-settings
 364PASS font-kerning
 365PASS font-language-override
 366PASS font-optical-sizing
 367PASS font-size
 368PASS font-size-adjust
 369PASS font-stretch
 370PASS font-style
 371PASS font-synthesis
 372PASS font-variant
 373PASS font-variant-alternates
 374PASS font-variant-caps
 375PASS font-variant-east-asian
 376PASS font-variant-ligatures
 377PASS font-variant-numeric
 378PASS font-variant-position
 379PASS font-variation-settings
 380PASS font-weight
 381PASS gap
 382PASS glyph-orientation-horizontal
 383PASS glyph-orientation-vertical
 384PASS grid
 385PASS grid-area
 386PASS grid-auto-columns
 387PASS grid-auto-flow
 388PASS grid-auto-rows
 389PASS grid-column
 390PASS grid-column-end
 391PASS grid-column-gap
 392PASS grid-column-start
 393PASS grid-gap
 394PASS grid-row
 395PASS grid-row-end
 396PASS grid-row-gap
 397PASS grid-row-start
 398PASS grid-template
 399PASS grid-template-areas
 400PASS grid-template-columns
 401PASS grid-template-rows
 402PASS hanging-punctuation
 403PASS height
 404PASS hyphens
 405PASS image-orientation
 406PASS image-rendering
 407PASS ime-mode
 408PASS inherits
 409PASS initial-value
 410PASS inline-size
 411PASS inset
 412PASS inset-block
 413PASS inset-block-end
 414PASS inset-block-start
 415PASS inset-inline
 416PASS inset-inline-end
 417PASS inset-inline-start
 418PASS internal-text-autosizing-status
 419PASS isolation
 420PASS justify-content
 421PASS justify-items
 422PASS justify-self
 423PASS kerning
 424PASS layout-grid
 425PASS layout-grid-char
 426PASS layout-grid-line
 427PASS layout-grid-mode
 428PASS layout-grid-type
 429PASS left
 430PASS letter-spacing
 431PASS lighting-color
 432PASS line-break
 433PASS line-height
 434PASS list-style
 435PASS list-style-image
 436PASS list-style-position
 437PASS list-style-type
 438PASS margin
 439PASS margin-block
 440PASS margin-block-end
 441PASS margin-block-start
 442PASS margin-bottom
 443PASS margin-inline
 444PASS margin-inline-end
 445PASS margin-inline-start
 446PASS margin-left
 447PASS margin-right
 448PASS margin-top
 449PASS marker
 450PASS marker-end
 451PASS marker-mid
 452PASS marker-offset
 453PASS marker-start
 454PASS mask
 455PASS mask-clip
 456PASS mask-composite
 457PASS mask-image
 458PASS mask-mode
 459PASS mask-origin
 460PASS mask-position
 461PASS mask-position-x
 462PASS mask-position-y
 463PASS mask-repeat
 464PASS mask-size
 465PASS mask-type
 466PASS max-block-size
 467PASS max-height
 468PASS max-inline-size
 469PASS max-width
 470PASS max-zoom
 471PASS min-block-size
 472PASS min-height
 473PASS min-inline-size
 474PASS min-width
 475PASS min-zoom
 476PASS mix-blend-mode
 477PASS motion
 478PASS motion-offset
 479PASS motion-path
 480PASS motion-rotation
 481PASS object-fit
 482PASS object-position
 483PASS offset
 484PASS offset-anchor
 485PASS offset-block-end
 486PASS offset-block-start
 487PASS offset-distance
 488PASS offset-inline-end
 489PASS offset-inline-start
 490PASS offset-path
 491PASS offset-rotate
 492PASS offset-rotation
 493PASS opacity
 494PASS order
 495PASS orientation
 496PASS orphans
 497PASS outline
 498PASS outline-color
 499PASS outline-offset
 500PASS outline-style
 501PASS outline-width
 502PASS overflow
 503PASS overflow-anchor
 504PASS overflow-block
 505PASS overflow-inline
 506PASS overflow-wrap
 507PASS overflow-x
 508PASS overflow-y
 509PASS overscroll-behavior
 510PASS overscroll-behavior-block
 511PASS overscroll-behavior-inline
 512PASS overscroll-behavior-x
 513PASS overscroll-behavior-y
 514PASS padding
 515PASS padding-block
 516PASS padding-block-end
 517PASS padding-block-start
 518PASS padding-bottom
 519PASS padding-inline
 520PASS padding-inline-end
 521PASS padding-inline-start
 522PASS padding-left
 523PASS padding-right
 524PASS padding-top
 525PASS page
 526PASS page-break-after
 527PASS page-break-before
 528PASS page-break-inside
 529PASS page-orientation
 530PASS paint-order
 531PASS pen-action
 532PASS perspective
 533PASS perspective-origin
 534PASS perspective-origin-x
 535PASS perspective-origin-y
 536PASS place-content
 537PASS place-items
 538PASS place-self
 539PASS pointer-events
 540PASS position
 541PASS quotes
 542PASS r
 543PASS resize
 544PASS right
 545PASS rotate
 546PASS row-gap
 547PASS ruby-align
 548PASS ruby-overhang
 549PASS ruby-position
 550PASS rx
 551PASS ry
 552PASS scale
 553PASS scroll-behavior
 554PASS scroll-margin
 555PASS scroll-margin-block
 556PASS scroll-margin-block-end
 557PASS scroll-margin-block-start
 558PASS scroll-margin-bottom
 559PASS scroll-margin-inline
 560PASS scroll-margin-inline-end
 561PASS scroll-margin-inline-start
 562PASS scroll-margin-left
 563PASS scroll-margin-right
 564PASS scroll-margin-top
 565PASS scroll-padding
 566PASS scroll-padding-block
 567PASS scroll-padding-block-end
 568PASS scroll-padding-block-start
 569PASS scroll-padding-bottom
 570PASS scroll-padding-inline
 571PASS scroll-padding-inline-end
 572PASS scroll-padding-inline-start
 573PASS scroll-padding-left
 574PASS scroll-padding-right
 575PASS scroll-padding-top
 576PASS scroll-snap-align
 577PASS scroll-snap-coordinate
 578PASS scroll-snap-destination
 579PASS scroll-snap-margin
 580PASS scroll-snap-margin-bottom
 581PASS scroll-snap-margin-left
 582PASS scroll-snap-margin-right
 583PASS scroll-snap-margin-top
 584PASS scroll-snap-points-x
 585PASS scroll-snap-points-y
 586PASS scroll-snap-stop
 587PASS scroll-snap-type
 588PASS scroll-snap-type-x
 589PASS scroll-snap-type-y
 590PASS scrollbar-color
 591PASS scrollbar-width
 592PASS shape-image-threshold
 593PASS shape-margin
 594PASS shape-outside
 595PASS shape-rendering
 596PASS size
 597PASS speak
 598PASS speak-as
 599PASS src
 600PASS stop-color
 601PASS stop-opacity
 602PASS stroke
 603PASS stroke-color
 604PASS stroke-dasharray
 605PASS stroke-dashoffset
 606PASS stroke-linecap
 607PASS stroke-linejoin
 608PASS stroke-miterlimit
 609PASS stroke-opacity
 610PASS stroke-width
 611PASS supported-color-schemes
 612PASS syntax
 613PASS tab-size
 614PASS table-layout
 615PASS text-align
 616PASS text-align-last
 617PASS text-anchor
 618PASS text-combine-upright
 619PASS text-decoration
 620PASS text-decoration-color
 621PASS text-decoration-line
 622PASS text-decoration-skip
 623PASS text-decoration-skip-ink
 624PASS text-decoration-style
 625PASS text-decoration-thickness
 626PASS text-emphasis
 627PASS text-emphasis-color
 628PASS text-emphasis-position
 629PASS text-emphasis-style
 630PASS text-indent
 631PASS text-justify
 632PASS text-kashida
 633PASS text-kashida-space
 634PASS text-line-through
 635PASS text-line-through-color
 636PASS text-line-through-mode
 637PASS text-line-through-style
 638PASS text-line-through-width
 639PASS text-orientation
 640PASS text-overflow
 641PASS text-overline
 642PASS text-overline-color
 643PASS text-overline-mode
 644PASS text-overline-style
 645PASS text-overline-width
 646PASS text-rendering
 647PASS text-shadow
 648PASS text-size-adjust
 649PASS text-transform
 650PASS text-underline
 651PASS text-underline-color
 652PASS text-underline-mode
 653PASS text-underline-offset
 654PASS text-underline-position
 655PASS text-underline-style
 656PASS text-underline-width
 657PASS top
 658PASS touch-action
 659PASS transform
 660PASS transform-box
 661PASS transform-origin
 662PASS transform-origin-x
 663PASS transform-origin-y
 664PASS transform-origin-z
 665PASS transform-style
 666PASS transition
 667PASS transition-delay
 668PASS transition-duration
 669PASS transition-property
 670PASS transition-timing-function
 671PASS translate
 672PASS unicode-bidi
 673PASS unicode-range
 674PASS user-select
 675PASS user-zoom
 676PASS vector-effect
 677PASS vertical-align
 678PASS viewport-fit
 679PASS visibility
 680PASS white-space
 681PASS widows
 682PASS width
 683PASS will-change
 684PASS word-break
 685PASS word-spacing
 686PASS word-wrap
 687PASS writing-mode
 688PASS x
 689PASS y
 690PASS z-index
 691PASS zoom
 692

LayoutTests/imported/w3c/web-platform-tests/css/cssom/property-accessors.html

 1<!doctype html>
 2<html>
 3<meta charset="utf-8">
 4<title>Accessing properties via CSSStyleDeclaration</title>
 5<link rel="help" href="https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface">
 6<!-- this is really a crash test, but let's claim it's a testharness test -->
 7<script src="/resources/testharness.js"></script>
 8<script src="/resources/testharnessreport.js"></script>
 9<style>
 10@font-face {}
 11</style>
 12<div id="testElement"></div>
 13<script>
 14promise_test(async () => {
 15 const response = await fetch("/css/support/properties.json");
 16 const properties = await response.json();
 17 const el = document.getElementById("testElement");
 18 const decls = [window.getComputedStyle(el), el.style, document.styleSheets[0].cssRules[0].style];
 19
 20 for (const prop of properties) {
 21 test(() => {
 22 for (const decl of decls) {
 23 let _;
 24
 25 _ = decl[prop];
 26 try {
 27 decl[prop] = "nonsense";
 28 } catch {
 29 assert_equals(decl, decls[0]);
 30 }
 31
 32 _ = decl.cssText;
 33 try {
 34 decl.cssText = `${prop}: nonsense`;
 35 } catch {
 36 assert_equals(decl, decls[0]);
 37 }
 38
 39 _ = decl.getPropertyValue(prop);
 40 _ = decl.getPropertyPriority(prop);
 41
 42 if ("getPropertyCSSValue" in decl) {
 43 _ = decl.getPropertyCSSValue(prop);
 44 }
 45
 46 try {
 47 decl.setProperty(prop, "nonsense", "");
 48 } catch {
 49 assert_equals(decl, decls[0]);
 50 }
 51
 52 try {
 53 decl.removeProperty(prop);
 54 } catch {
 55 assert_equals(decl, decls[0]);
 56 }
 57 }
 58 }, prop);
 59 }
 60}, "load properties list");
 61</script>

LayoutTests/imported/w3c/web-platform-tests/css/support/properties.json

 1[
 2 "-apple-color-filter",
 3 "-apple-pay-button-style",
 4 "-apple-pay-button-type",
 5 "-apple-trailing-word",
 6 "-epub-caption-side",
 7 "-epub-text-combine",
 8 "-epub-text-emphasis",
 9 "-epub-text-emphasis-color",
 10 "-epub-text-emphasis-style",
 11 "-epub-text-orientation",
 12 "-epub-text-transform",
 13 "-epub-word-break",
 14 "-epub-writing-mode",
 15 "-moz-animation",
 16 "-moz-animation-delay",
 17 "-moz-animation-direction",
 18 "-moz-animation-duration",
 19 "-moz-animation-fill-mode",
 20 "-moz-animation-iteration-count",
 21 "-moz-animation-name",
 22 "-moz-animation-play-state",
 23 "-moz-animation-timing-function",
 24 "-moz-appearance",
 25 "-moz-backface-visibility",
 26 "-moz-binding",
 27 "-moz-border-bottom-colors",
 28 "-moz-border-end",
 29 "-moz-border-end-color",
 30 "-moz-border-end-style",
 31 "-moz-border-end-width",
 32 "-moz-border-image",
 33 "-moz-border-left-colors",
 34 "-moz-border-right-colors",
 35 "-moz-border-start",
 36 "-moz-border-start-color",
 37 "-moz-border-start-style",
 38 "-moz-border-start-width",
 39 "-moz-border-top-colors",
 40 "-moz-box-align",
 41 "-moz-box-direction",
 42 "-moz-box-flex",
 43 "-moz-box-ordinal-group",
 44 "-moz-box-orient",
 45 "-moz-box-pack",
 46 "-moz-box-sizing",
 47 "-moz-column-count",
 48 "-moz-column-fill",
 49 "-moz-column-gap",
 50 "-moz-column-rule",
 51 "-moz-column-rule-color",
 52 "-moz-column-rule-style",
 53 "-moz-column-rule-width",
 54 "-moz-column-span",
 55 "-moz-column-width",
 56 "-moz-columns",
 57 "-moz-float-edge",
 58 "-moz-font-feature-settings",
 59 "-moz-font-language-override",
 60 "-moz-force-broken-image-icon",
 61 "-moz-hyphens",
 62 "-moz-image-region",
 63 "-moz-margin-end",
 64 "-moz-margin-start",
 65 "-moz-orient",
 66 "-moz-osx-font-smoothing",
 67 "-moz-padding-end",
 68 "-moz-padding-start",
 69 "-moz-perspective",
 70 "-moz-perspective-origin",
 71 "-moz-stack-sizing",
 72 "-moz-tab-size",
 73 "-moz-text-align-last",
 74 "-moz-text-size-adjust",
 75 "-moz-transform",
 76 "-moz-transform-origin",
 77 "-moz-transform-style",
 78 "-moz-transition",
 79 "-moz-transition-delay",
 80 "-moz-transition-duration",
 81 "-moz-transition-property",
 82 "-moz-transition-timing-function",
 83 "-moz-user-focus",
 84 "-moz-user-input",
 85 "-moz-user-modify",
 86 "-moz-user-select",
 87 "-moz-window-dragging",
 88 "-ms-content-zoom-chaining",
 89 "-ms-content-zoom-limit",
 90 "-ms-content-zoom-limit-max",
 91 "-ms-content-zoom-limit-min",
 92 "-ms-content-zoom-snap",
 93 "-ms-content-zoom-snap-points",
 94 "-ms-content-zoom-snap-type",
 95 "-ms-content-zooming",
 96 "-ms-flow-from",
 97 "-ms-flow-into",
 98 "-ms-font-feature-settings",
 99 "-ms-grid-column",
 100 "-ms-grid-column-align",
 101 "-ms-grid-column-span",
 102 "-ms-grid-columns",
 103 "-ms-grid-row",
 104 "-ms-grid-row-align",
 105 "-ms-grid-row-span",
 106 "-ms-grid-rows",
 107 "-ms-high-contrast-adjust",
 108 "-ms-hyphenate-limit-chars",
 109 "-ms-hyphenate-limit-lines",
 110 "-ms-hyphenate-limit-zone",
 111 "-ms-hyphens",
 112 "-ms-ime-align",
 113 "-ms-overflow-style",
 114 "-ms-scroll-chaining",
 115 "-ms-scroll-limit",
 116 "-ms-scroll-limit-x-max",
 117 "-ms-scroll-limit-x-min",
 118 "-ms-scroll-limit-y-max",
 119 "-ms-scroll-limit-y-min",
 120 "-ms-scroll-rails",
 121 "-ms-scroll-snap-points-x",
 122 "-ms-scroll-snap-points-y",
 123 "-ms-scroll-snap-type",
 124 "-ms-scroll-snap-x",
 125 "-ms-scroll-snap-y",
 126 "-ms-scroll-translation",
 127 "-ms-text-combine-horizontal",
 128 "-ms-text-size-adjust",
 129 "-ms-touch-select",
 130 "-ms-user-select",
 131 "-ms-wrap-flow",
 132 "-ms-wrap-margin",
 133 "-ms-wrap-through",
 134 "-webkit-align-content",
 135 "-webkit-align-items",
 136 "-webkit-align-self",
 137 "-webkit-animation",
 138 "-webkit-animation-delay",
 139 "-webkit-animation-direction",
 140 "-webkit-animation-duration",
 141 "-webkit-animation-fill-mode",
 142 "-webkit-animation-iteration-count",
 143 "-webkit-animation-name",
 144 "-webkit-animation-play-state",
 145 "-webkit-animation-timing-function",
 146 "-webkit-appearance",
 147 "-webkit-backface-visibility",
 148 "-webkit-background-clip",
 149 "-webkit-background-origin",
 150 "-webkit-background-size",
 151 "-webkit-border-bottom-left-radius",
 152 "-webkit-border-bottom-right-radius",
 153 "-webkit-border-image",
 154 "-webkit-border-radius",
 155 "-webkit-border-top-left-radius",
 156 "-webkit-border-top-right-radius",
 157 "-webkit-box-align",
 158 "-webkit-box-direction",
 159 "-webkit-box-flex",
 160 "-webkit-box-ordinal-group",
 161 "-webkit-box-orient",
 162 "-webkit-box-pack",
 163 "-webkit-box-shadow",
 164 "-webkit-box-sizing",
 165 "-webkit-filter",
 166 "-webkit-flex",
 167 "-webkit-flex-basis",
 168 "-webkit-flex-direction",
 169 "-webkit-flex-flow",
 170 "-webkit-flex-grow",
 171 "-webkit-flex-shrink",
 172 "-webkit-flex-wrap",
 173 "-webkit-justify-content",
 174 "-webkit-line-clamp",
 175 "-webkit-mask",
 176 "-webkit-mask-clip",
 177 "-webkit-mask-composite",
 178 "-webkit-mask-image",
 179 "-webkit-mask-origin",
 180 "-webkit-mask-position",
 181 "-webkit-mask-position-x",
 182 "-webkit-mask-position-y",
 183 "-webkit-mask-repeat",
 184 "-webkit-mask-size",
 185 "-webkit-order",
 186 "-webkit-perspective",
 187 "-webkit-perspective-origin",
 188 "-webkit-text-fill-color",
 189 "-webkit-text-size-adjust",
 190 "-webkit-text-stroke",
 191 "-webkit-text-stroke-color",
 192 "-webkit-text-stroke-width",
 193 "-webkit-transform",
 194 "-webkit-transform-origin",
 195 "-webkit-transform-style",
 196 "-webkit-transition",
 197 "-webkit-transition-delay",
 198 "-webkit-transition-duration",
 199 "-webkit-transition-property",
 200 "-webkit-transition-timing-function",
 201 "-webkit-user-select",
 202 "align-content",
 203 "align-items",
 204 "align-self",
 205 "alignment-baseline",
 206 "all",
 207 "alt",
 208 "animation",
 209 "animation-delay",
 210 "animation-direction",
 211 "animation-duration",
 212 "animation-fill-mode",
 213 "animation-iteration-count",
 214 "animation-name",
 215 "animation-play-state",
 216 "animation-timing-function",
 217 "appearance",
 218 "backdrop-filter",
 219 "backface-visibility",
 220 "background",
 221 "background-attachment",
 222 "background-blend-mode",
 223 "background-clip",
 224 "background-color",
 225 "background-image",
 226 "background-origin",
 227 "background-position",
 228 "background-position-x",
 229 "background-position-y",
 230 "background-repeat",
 231 "background-repeat-x",
 232 "background-repeat-y",
 233 "background-size",
 234 "baseline-shift",
 235 "block-size",
 236 "border",
 237 "border-block",
 238 "border-block-color",
 239 "border-block-end",
 240 "border-block-end-color",
 241 "border-block-end-style",
 242 "border-block-end-width",
 243 "border-block-start",
 244 "border-block-start-color",
 245 "border-block-start-style",
 246 "border-block-start-width",
 247 "border-block-style",
 248 "border-block-width",
 249 "border-bottom",
 250 "border-bottom-color",
 251 "border-bottom-left-radius",
 252 "border-bottom-right-radius",
 253 "border-bottom-style",
 254 "border-bottom-width",
 255 "border-collapse",
 256 "border-color",
 257 "border-end-end-radius",
 258 "border-end-start-radius",
 259 "border-image",
 260 "border-image-outset",
 261 "border-image-repeat",
 262 "border-image-slice",
 263 "border-image-source",
 264 "border-image-width",
 265 "border-inline",
 266 "border-inline-color",
 267 "border-inline-end",
 268 "border-inline-end-color",
 269 "border-inline-end-style",
 270 "border-inline-end-width",
 271 "border-inline-start",
 272 "border-inline-start-color",
 273 "border-inline-start-style",
 274 "border-inline-start-width",
 275 "border-inline-style",
 276 "border-inline-width",
 277 "border-left",
 278 "border-left-color",
 279 "border-left-style",
 280 "border-left-width",
 281 "border-radius",
 282 "border-right",
 283 "border-right-color",
 284 "border-right-style",
 285 "border-right-width",
 286 "border-spacing",
 287 "border-start-end-radius",
 288 "border-start-start-radius",
 289 "border-style",
 290 "border-top",
 291 "border-top-color",
 292 "border-top-left-radius",
 293 "border-top-right-radius",
 294 "border-top-style",
 295 "border-top-width",
 296 "border-width",
 297 "bottom",
 298 "box-decoration-break",
 299 "box-shadow",
 300 "box-sizing",
 301 "break-after",
 302 "break-before",
 303 "break-inside",
 304 "buffered-rendering",
 305 "caption-side",
 306 "caret-color",
 307 "clear",
 308 "clip",
 309 "clip-path",
 310 "clip-rule",
 311 "color",
 312 "color-adjust",
 313 "color-interpolation",
 314 "color-interpolation-filters",
 315 "color-profile",
 316 "color-rendering",
 317 "color-scheme",
 318 "column-count",
 319 "column-fill",
 320 "column-gap",
 321 "column-progression",
 322 "column-rule",
 323 "column-rule-color",
 324 "column-rule-style",
 325 "column-rule-width",
 326 "column-span",
 327 "column-width",
 328 "columns",
 329 "contain",
 330 "contain-intrinsic-size",
 331 "content",
 332 "content-visibility",
 333 "counter-increment",
 334 "counter-reset",
 335 "counter-set",
 336 "cursor",
 337 "cx",
 338 "cy",
 339 "d",
 340 "direction",
 341 "display",
 342 "dominant-baseline",
 343 "empty-cells",
 344 "enable-background",
 345 "fill",
 346 "fill-opacity",
 347 "fill-rule",
 348 "filter",
 349 "flex",
 350 "flex-basis",
 351 "flex-direction",
 352 "flex-flow",
 353 "flex-grow",
 354 "flex-shrink",
 355 "flex-wrap",
 356 "float",
 357 "flood-color",
 358 "flood-opacity",
 359 "font",
 360 "font-display",
 361 "font-family",
 362 "font-feature-settings",
 363 "font-kerning",
 364 "font-language-override",
 365 "font-optical-sizing",
 366 "font-size",
 367 "font-size-adjust",
 368 "font-stretch",
 369 "font-style",
 370 "font-synthesis",
 371 "font-variant",
 372 "font-variant-alternates",
 373 "font-variant-caps",
 374 "font-variant-east-asian",
 375 "font-variant-ligatures",
 376 "font-variant-numeric",
 377 "font-variant-position",
 378 "font-variation-settings",
 379 "font-weight",
 380 "gap",
 381 "glyph-orientation-horizontal",
 382 "glyph-orientation-vertical",
 383 "grid",
 384 "grid-area",
 385 "grid-auto-columns",
 386 "grid-auto-flow",
 387 "grid-auto-rows",
 388 "grid-column",
 389 "grid-column-end",
 390 "grid-column-gap",
 391 "grid-column-start",
 392 "grid-gap",
 393 "grid-row",
 394 "grid-row-end",
 395 "grid-row-gap",
 396 "grid-row-start",
 397 "grid-template",
 398 "grid-template-areas",
 399 "grid-template-columns",
 400 "grid-template-rows",
 401 "hanging-punctuation",
 402 "height",
 403 "hyphens",
 404 "image-orientation",
 405 "image-rendering",
 406 "ime-mode",
 407 "inherits",
 408 "initial-value",
 409 "inline-size",
 410 "inset",
 411 "inset-block",
 412 "inset-block-end",
 413 "inset-block-start",
 414 "inset-inline",
 415 "inset-inline-end",
 416 "inset-inline-start",
 417 "internal-text-autosizing-status",
 418 "isolation",
 419 "justify-content",
 420 "justify-items",
 421 "justify-self",
 422 "kerning",
 423 "layout-grid",
 424 "layout-grid-char",
 425 "layout-grid-line",
 426 "layout-grid-mode",
 427 "layout-grid-type",
 428 "left",
 429 "letter-spacing",
 430 "lighting-color",
 431 "line-break",
 432 "line-height",
 433 "list-style",
 434 "list-style-image",
 435 "list-style-position",
 436 "list-style-type",
 437 "margin",
 438 "margin-block",
 439 "margin-block-end",
 440 "margin-block-start",
 441 "margin-bottom",
 442 "margin-inline",
 443 "margin-inline-end",
 444 "margin-inline-start",
 445 "margin-left",
 446 "margin-right",
 447 "margin-top",
 448 "marker",
 449 "marker-end",
 450 "marker-mid",
 451 "marker-offset",
 452 "marker-start",
 453 "mask",
 454 "mask-clip",
 455 "mask-composite",
 456 "mask-image",
 457 "mask-mode",
 458 "mask-origin",
 459 "mask-position",
 460 "mask-position-x",
 461 "mask-position-y",
 462 "mask-repeat",
 463 "mask-size",
 464 "mask-type",
 465 "max-block-size",
 466 "max-height",
 467 "max-inline-size",
 468 "max-width",
 469 "max-zoom",
 470 "min-block-size",
 471 "min-height",
 472 "min-inline-size",
 473 "min-width",
 474 "min-zoom",
 475 "mix-blend-mode",
 476 "motion",
 477 "motion-offset",
 478 "motion-path",
 479 "motion-rotation",
 480 "object-fit",
 481 "object-position",
 482 "offset",
 483 "offset-anchor",
 484 "offset-block-end",
 485 "offset-block-start",
 486 "offset-distance",
 487 "offset-inline-end",
 488 "offset-inline-start",
 489 "offset-path",
 490 "offset-rotate",
 491 "offset-rotation",
 492 "opacity",
 493 "order",
 494 "orientation",
 495 "orphans",
 496 "outline",
 497 "outline-color",
 498 "outline-offset",
 499 "outline-style",
 500 "outline-width",
 501 "overflow",
 502 "overflow-anchor",
 503 "overflow-block",
 504 "overflow-inline",
 505 "overflow-wrap",
 506 "overflow-x",
 507 "overflow-y",
 508 "overscroll-behavior",
 509 "overscroll-behavior-block",
 510 "overscroll-behavior-inline",
 511 "overscroll-behavior-x",
 512 "overscroll-behavior-y",
 513 "padding",
 514 "padding-block",
 515 "padding-block-end",
 516 "padding-block-start",
 517 "padding-bottom",
 518 "padding-inline",
 519 "padding-inline-end",
 520 "padding-inline-start",
 521 "padding-left",
 522 "padding-right",
 523 "padding-top",
 524 "page",
 525 "page-break-after",
 526 "page-break-before",
 527 "page-break-inside",
 528 "page-orientation",
 529 "paint-order",
 530 "pen-action",
 531 "perspective",
 532 "perspective-origin",
 533 "perspective-origin-x",
 534 "perspective-origin-y",
 535 "place-content",
 536 "place-items",
 537 "place-self",
 538 "pointer-events",
 539 "position",
 540 "quotes",
 541 "r",
 542 "resize",
 543 "right",
 544 "rotate",
 545 "row-gap",
 546 "ruby-align",
 547 "ruby-overhang",
 548 "ruby-position",
 549 "rx",
 550 "ry",
 551 "scale",
 552 "scroll-behavior",
 553 "scroll-margin",
 554 "scroll-margin-block",
 555 "scroll-margin-block-end",
 556 "scroll-margin-block-start",
 557 "scroll-margin-bottom",
 558 "scroll-margin-inline",
 559 "scroll-margin-inline-end",
 560 "scroll-margin-inline-start",
 561 "scroll-margin-left",
 562 "scroll-margin-right",
 563 "scroll-margin-top",
 564 "scroll-padding",
 565 "scroll-padding-block",
 566 "scroll-padding-block-end",
 567 "scroll-padding-block-start",
 568 "scroll-padding-bottom",
 569 "scroll-padding-inline",
 570 "scroll-padding-inline-end",
 571 "scroll-padding-inline-start",
 572 "scroll-padding-left",
 573 "scroll-padding-right",
 574 "scroll-padding-top",
 575 "scroll-snap-align",
 576 "scroll-snap-coordinate",
 577 "scroll-snap-destination",
 578 "scroll-snap-margin",
 579 "scroll-snap-margin-bottom",
 580 "scroll-snap-margin-left",
 581 "scroll-snap-margin-right",
 582 "scroll-snap-margin-top",
 583 "scroll-snap-points-x",
 584 "scroll-snap-points-y",
 585 "scroll-snap-stop",
 586 "scroll-snap-type",
 587 "scroll-snap-type-x",
 588 "scroll-snap-type-y",
 589 "scrollbar-color",
 590 "scrollbar-width",
 591 "shape-image-threshold",
 592 "shape-margin",
 593 "shape-outside",
 594 "shape-rendering",
 595 "size",
 596 "speak",
 597 "speak-as",
 598 "src",
 599 "stop-color",
 600 "stop-opacity",
 601 "stroke",
 602 "stroke-color",
 603 "stroke-dasharray",
 604 "stroke-dashoffset",
 605 "stroke-linecap",
 606 "stroke-linejoin",
 607 "stroke-miterlimit",
 608 "stroke-opacity",
 609 "stroke-width",
 610 "supported-color-schemes",
 611 "syntax",
 612 "tab-size",
 613 "table-layout",
 614 "text-align",
 615 "text-align-last",
 616 "text-anchor",
 617 "text-combine-upright",
 618 "text-decoration",
 619 "text-decoration-color",
 620 "text-decoration-line",
 621 "text-decoration-skip",
 622 "text-decoration-skip-ink",
 623 "text-decoration-style",
 624 "text-decoration-thickness",
 625 "text-emphasis",
 626 "text-emphasis-color",
 627 "text-emphasis-position",
 628 "text-emphasis-style",
 629 "text-indent",
 630 "text-justify",
 631 "text-kashida",
 632 "text-kashida-space",
 633 "text-line-through",
 634 "text-line-through-color",
 635 "text-line-through-mode",
 636 "text-line-through-style",
 637 "text-line-through-width",
 638 "text-orientation",
 639 "text-overflow",
 640 "text-overline",
 641 "text-overline-color",
 642 "text-overline-mode",
 643 "text-overline-style",
 644 "text-overline-width",
 645 "text-rendering",
 646 "text-shadow",
 647 "text-size-adjust",
 648 "text-transform",
 649 "text-underline",
 650 "text-underline-color",
 651 "text-underline-mode",
 652 "text-underline-offset",
 653 "text-underline-position",
 654 "text-underline-style",
 655 "text-underline-width",
 656 "top",
 657 "touch-action",
 658 "transform",
 659 "transform-box",
 660 "transform-origin",
 661 "transform-origin-x",
 662 "transform-origin-y",
 663 "transform-origin-z",
 664 "transform-style",
 665 "transition",
 666 "transition-delay",
 667 "transition-duration",
 668 "transition-property",
 669 "transition-timing-function",
 670 "translate",
 671 "unicode-bidi",
 672 "unicode-range",
 673 "user-select",
 674 "user-zoom",
 675 "vector-effect",
 676 "vertical-align",
 677 "viewport-fit",
 678 "visibility",
 679 "white-space",
 680 "widows",
 681 "width",
 682 "will-change",
 683 "word-break",
 684 "word-spacing",
 685 "word-wrap",
 686 "writing-mode",
 687 "x",
 688 "y",
 689 "z-index",
 690 "zoom"
 691]

LayoutTests/inspector/css/css-property-expected.txt

@@Testing methods of CSSProperty.
66PASS: "background-repeat" is a valid property.
77PASS: "background-repeat-x" is an invalid property.
88PASS: "background-repeat-invalid" is an invalid property.
9 PASS: "background-repeat-y" is an invalid property.
109
1110-- Running test case: CSSProperty.prototype.get anonymous
1211PASS: "background-repeat" is not an anonymous CSS property.
1312PASS: "background-repeat-x" is not an anonymous CSS property.
1413PASS: "background-repeat-invalid" is not an anonymous CSS property.
15 PASS: "background-repeat-y" is an anonymous CSS property.
1614
1715-- Running test case: CSSProperty.prototype.get implicit
1816PASS: "background-repeat" is not an implicit CSS property.
1917PASS: "background-repeat-x" is not an implicit CSS property.
2018PASS: "background-repeat-invalid" is not an implicit CSS property.
21 PASS: "background-repeat-y" is an implicit CSS property.
2219
2320-- Running test case: CSSProperty.prototype.get value
2421PASS: "background-repeat" has the value "repeat".
2522PASS: "background-repeat-x" has the value "repeat".
2623PASS: "background-repeat-invalid" has the value "repeat".
27 PASS: "background-repeat-y" has the value "repeat".
2824
2925-- Running test case: CSSProperty.prototype.get enabled
3026PASS: "background-repeat" is enabled.
3127PASS: "background-repeat-x" is enabled.
3228PASS: "background-repeat-invalid" is enabled.
3329PASS: "background-color" is disabled.
34 PASS: "background-repeat-y" is enabled.
3530
3631-- Running test case: CSSProperty.prototype.get attached
3732PASS: "background-repeat" is attached.
3833PASS: "background-repeat-x" is attached.
3934PASS: "background-repeat-invalid" is attached.
4035PASS: "background-color" is detached.
41 PASS: "background-repeat-y" is attached.
4236
4337-- Running test case: CSSProperty.prototype.get text
4438PASS: "background-repeat" has the text "background-repeat: repeat;".

@@PASS: "background-repeat-x" has the text "background-repeat-x: repeat;".
4741PASS: "background-repeat-x" has the _text (private) "background-repeat-x: repeat;".
4842PASS: "background-repeat-invalid" has the text "background-repeat-invalid: repeat;".
4943PASS: "background-repeat-invalid" has the _text (private) "background-repeat-invalid: repeat;".
50 PASS: "background-repeat-y" has the text "".
51 PASS: "background-repeat-y" has the _text (private) "".
5244
5345-- Running test case: CSSProperty.prototype.remove
5446PASS: The removed property should no longer be in properties array.

LayoutTests/inspector/css/css-property.html

@@function test() {
4646 switch (property.name) {
4747 case "background-repeat":
4848 case "background-repeat-x":
 49 case "background-repeat-y":
4950 case "background-repeat-invalid":
5051 InspectorTest.expectFalse(property.anonymous, `"${property.name}" is not an anonymous CSS property.`);
5152 break;
52  case "background-repeat-y":
53  InspectorTest.expectThat(property.anonymous, `"${property.name}" is an anonymous CSS property.`);
54  break;
5553 }
5654 }
5755 }

@@function test() {
7270 switch (property.name) {
7371 case "background-repeat":
7472 case "background-repeat-x":
 73 case "background-repeat-y":
7574 case "background-repeat-invalid":
7675 InspectorTest.expectFalse(property.implicit, `"${property.name}" is not an implicit CSS property.`);
7776 break;
78  case "background-repeat-y":
79  InspectorTest.expectThat(property.implicit, `"${property.name}" is an implicit CSS property.`);
80  break;
8177 }
8278 }
8379 }

@@function test() {
183179 InspectorTest.expectEqual(property._text, "background-repeat: repeat;", `"${property.name}" has the _text (private) "background-repeat: repeat;".`);
184180 break;
185181 case "background-repeat-x":
186  InspectorTest.expectEqual(property.text, "background-repeat-x: repeat;", `"${property.name}" has the text "background-repeat-x: repeat;".`);
187  InspectorTest.expectEqual(property._text, "background-repeat-x: repeat;", `"${property.name}" has the _text (private) "background-repeat-x: repeat;".`);
188  break;
189182 case "background-repeat-y":
190  InspectorTest.expectEqual(property.text, "", `"${property.name}" has the text "".`);
191  InspectorTest.expectEqual(property._text, "", `"${property.name}" has the _text (private) "".`);
192  break;
193183 case "background-repeat-invalid":
194  InspectorTest.expectEqual(property.text, "background-repeat-invalid: repeat;", `"${property.name}" has the text "background-repeat-invalid: repeat;".`);
195  InspectorTest.expectEqual(property._text, "background-repeat-invalid: repeat;", `"${property.name}" has the _text (private) "background-repeat-invalid: repeat;".`);
 184 InspectorTest.expectEqual(property.text, `${property.name}: repeat;`, `"${property.name}" has the text "${property.name}: repeat;".`);
 185 InspectorTest.expectEqual(property._text, `${property.name}: repeat;`, `"${property.name}" has the _text (private) "${property.name}: repeat;".`);
196186 break;
197187 }
198188 }

LayoutTests/inspector/css/getSupportedCSSProperties-expected.txt

 1"background-repeat" is supported
 2
13"box-sizing" is supported
24"box-sizing" has aliases:
35 - "-webkit-box-sizing"

LayoutTests/inspector/css/getSupportedCSSProperties.html

@@function test()
1111 let entries = messageObject["result"]["cssProperties"];
1212
1313 const expectedProperties = [
 14 "background-repeat",
1415 "box-sizing",
1516 "filter",
1617 "font-style",

LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt

@@PASS x
333333PASS y
334334PASS z-index
335335PASS zoom
336 PASS -apple-color-filter
337336PASS -webkit-backdrop-filter
338337PASS -webkit-background-clip
339338PASS -webkit-background-origin

LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt

11
 2PASS load properties list
23PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports
34PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit-
45PASS -apple-color-filter: _dashed_attribute v. CSS.supports

@@PASS flood-color: _dashed_attribute v. CSS.supports
891892PASS flood-opacity: _camel_cased_attribute v. CSS.supports
892893PASS flood-opacity: _dashed_attribute v. CSS.supports
893894PASS font: _camel_cased_attribute v. CSS.supports
894 PASS font-display: _camel_cased_attribute v. CSS.supports
895 PASS font-display: _dashed_attribute v. CSS.supports
 895FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 896FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
896897PASS font-family: _camel_cased_attribute v. CSS.supports
897898PASS font-family: _dashed_attribute v. CSS.supports
898899PASS font-feature-settings: _camel_cased_attribute v. CSS.supports

@@PASS size: _camel_cased_attribute v. CSS.supports
13331334PASS speak: _camel_cased_attribute v. CSS.supports
13341335PASS speak-as: _camel_cased_attribute v. CSS.supports
13351336PASS speak-as: _dashed_attribute v. CSS.supports
1336 PASS src: _camel_cased_attribute v. CSS.supports
 1337FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
13371338PASS stop-color: _camel_cased_attribute v. CSS.supports
13381339PASS stop-color: _dashed_attribute v. CSS.supports
13391340PASS stop-opacity: _camel_cased_attribute v. CSS.supports

@@PASS transition-timing-function: _dashed_attribute v. CSS.supports
14741475PASS translate: _camel_cased_attribute v. CSS.supports
14751476PASS unicode-bidi: _camel_cased_attribute v. CSS.supports
14761477PASS unicode-bidi: _dashed_attribute v. CSS.supports
1477 PASS unicode-range: _camel_cased_attribute v. CSS.supports
1478 PASS unicode-range: _dashed_attribute v. CSS.supports
 1478FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 1479FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
14791480PASS user-select: _camel_cased_attribute v. CSS.supports
14801481PASS user-select: _dashed_attribute v. CSS.supports
14811482PASS user-zoom: _camel_cased_attribute v. CSS.supports

LayoutTests/platform/ios/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt

11
2 FAIL -apple-color-filter: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 2PASS load properties list
 3PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports
34PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit-
4 FAIL -apple-color-filter: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
 5PASS -apple-color-filter: _dashed_attribute v. CSS.supports
56PASS -apple-pay-button-style: _camel_cased_attribute v. CSS.supports
67PASS -apple-pay-button-style: _webkit_cased_attribute must only exist for -webkit-
78PASS -apple-pay-button-style: _dashed_attribute v. CSS.supports

@@PASS flood-color: _dashed_attribute v. CSS.supports
891892PASS flood-opacity: _camel_cased_attribute v. CSS.supports
892893PASS flood-opacity: _dashed_attribute v. CSS.supports
893894PASS font: _camel_cased_attribute v. CSS.supports
894 PASS font-display: _camel_cased_attribute v. CSS.supports
895 PASS font-display: _dashed_attribute v. CSS.supports
 895FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 896FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
896897PASS font-family: _camel_cased_attribute v. CSS.supports
897898PASS font-family: _dashed_attribute v. CSS.supports
898899PASS font-feature-settings: _camel_cased_attribute v. CSS.supports

@@PASS size: _camel_cased_attribute v. CSS.supports
13331334PASS speak: _camel_cased_attribute v. CSS.supports
13341335PASS speak-as: _camel_cased_attribute v. CSS.supports
13351336PASS speak-as: _dashed_attribute v. CSS.supports
1336 PASS src: _camel_cased_attribute v. CSS.supports
 1337FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
13371338PASS stop-color: _camel_cased_attribute v. CSS.supports
13381339PASS stop-color: _dashed_attribute v. CSS.supports
13391340PASS stop-opacity: _camel_cased_attribute v. CSS.supports

@@PASS transition-timing-function: _dashed_attribute v. CSS.supports
14741475PASS translate: _camel_cased_attribute v. CSS.supports
14751476PASS unicode-bidi: _camel_cased_attribute v. CSS.supports
14761477PASS unicode-bidi: _dashed_attribute v. CSS.supports
1477 PASS unicode-range: _camel_cased_attribute v. CSS.supports
1478 PASS unicode-range: _dashed_attribute v. CSS.supports
 1478FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 1479FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
14791480PASS user-select: _camel_cased_attribute v. CSS.supports
14801481PASS user-select: _dashed_attribute v. CSS.supports
14811482PASS user-zoom: _camel_cased_attribute v. CSS.supports

LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-conditional/js/CSS-supports-CSSStyleDeclaration-expected.txt

11
 2PASS load properties list
23PASS -apple-color-filter: _camel_cased_attribute v. CSS.supports
34PASS -apple-color-filter: _webkit_cased_attribute must only exist for -webkit-
45PASS -apple-color-filter: _dashed_attribute v. CSS.supports

@@PASS -webkit-perspective-origin: _dashed_attribute v. CSS.supports
560561PASS -webkit-text-fill-color: _camel_cased_attribute v. CSS.supports
561562PASS -webkit-text-fill-color: _webkit_cased_attribute v. CSS.supports
562563PASS -webkit-text-fill-color: _dashed_attribute v. CSS.supports
563 FAIL -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
564 FAIL -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports assert_equals: expected true but got false
565 FAIL -webkit-text-size-adjust: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
 564PASS -webkit-text-size-adjust: _camel_cased_attribute v. CSS.supports
 565PASS -webkit-text-size-adjust: _webkit_cased_attribute v. CSS.supports
 566PASS -webkit-text-size-adjust: _dashed_attribute v. CSS.supports
566567PASS -webkit-text-stroke: _camel_cased_attribute v. CSS.supports
567568PASS -webkit-text-stroke: _webkit_cased_attribute v. CSS.supports
568569PASS -webkit-text-stroke: _dashed_attribute v. CSS.supports

@@PASS flood-color: _dashed_attribute v. CSS.supports
891892PASS flood-opacity: _camel_cased_attribute v. CSS.supports
892893PASS flood-opacity: _dashed_attribute v. CSS.supports
893894PASS font: _camel_cased_attribute v. CSS.supports
894 PASS font-display: _camel_cased_attribute v. CSS.supports
895 PASS font-display: _dashed_attribute v. CSS.supports
 895FAIL font-display: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 896FAIL font-display: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
896897PASS font-family: _camel_cased_attribute v. CSS.supports
897898PASS font-family: _dashed_attribute v. CSS.supports
898899PASS font-feature-settings: _camel_cased_attribute v. CSS.supports

@@PASS size: _camel_cased_attribute v. CSS.supports
13331334PASS speak: _camel_cased_attribute v. CSS.supports
13341335PASS speak-as: _camel_cased_attribute v. CSS.supports
13351336PASS speak-as: _dashed_attribute v. CSS.supports
1336 PASS src: _camel_cased_attribute v. CSS.supports
 1337FAIL src: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
13371338PASS stop-color: _camel_cased_attribute v. CSS.supports
13381339PASS stop-color: _dashed_attribute v. CSS.supports
13391340PASS stop-opacity: _camel_cased_attribute v. CSS.supports

@@PASS transition-timing-function: _dashed_attribute v. CSS.supports
14741475PASS translate: _camel_cased_attribute v. CSS.supports
14751476PASS unicode-bidi: _camel_cased_attribute v. CSS.supports
14761477PASS unicode-bidi: _dashed_attribute v. CSS.supports
1477 PASS unicode-range: _camel_cased_attribute v. CSS.supports
1478 PASS unicode-range: _dashed_attribute v. CSS.supports
 1478FAIL unicode-range: _camel_cased_attribute v. CSS.supports assert_equals: expected true but got false
 1479FAIL unicode-range: _dashed_attribute v. CSS.supports assert_equals: expected true but got false
14791480PASS user-select: _camel_cased_attribute v. CSS.supports
14801481PASS user-select: _dashed_attribute v. CSS.supports
14811482PASS user-zoom: _camel_cased_attribute v. CSS.supports