WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-218880-20211130091450.patch (text/plain), 329.13 KB, created by
Matt Woodrow
on 2021-11-29 12:14:53 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Matt Woodrow
Created:
2021-11-29 12:14:53 PST
Size:
329.13 KB
patch
obsolete
>Subversion Revision: 286228 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index f66ed99f04d787aa477904bc0c06f3e7fa52c140..dd1a4d748e598ce38288b55339bfb781701993f2 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,26 @@ >+2021-11-29 Simon Fraser <simon.fraser@apple.com> >+ >+ Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec >+ https://bugs.webkit.org/show_bug.cgi?id=218880 >+ >+ Reviewed by Darin Adler. >+ >+ * wtf/dtoa.cpp: >+ (WTF::truncateTrailingZeros): >+ (WTF::numberToFixedPrecisionString): >+ (WTF::numberToCSSString): >+ * wtf/dtoa.h: >+ * wtf/dtoa/double-conversion.cc: >+ * wtf/dtoa/double-conversion.h: >+ * wtf/text/StringConcatenateNumbers.h: >+ (WTF::FormattedCSSNumber::create): >+ (WTF::FormattedCSSNumber::length const): >+ (WTF::FormattedCSSNumber::buffer const): >+ (WTF::StringTypeAdapter<FormattedCSSNumber>::StringTypeAdapter): >+ (WTF::StringTypeAdapter<FormattedCSSNumber>::length const): >+ (WTF::StringTypeAdapter<FormattedCSSNumber>::is8Bit const): >+ (WTF::StringTypeAdapter<FormattedCSSNumber>::writeTo const): >+ > 2021-11-24 Antoine Quint <graouts@webkit.org> > > [Model] clean up compile-time flags and condition IDL methods behind them >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 5b60f85c74accb2b649335777f697bdfe71ce418..0eab82ab4dae2efad7f6a4dd1558280274c8b759 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,71 @@ >+2021-11-29 Simon Fraser <simon.fraser@apple.com> >+ >+ Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec >+ https://bugs.webkit.org/show_bug.cgi?id=218880 >+ >+ Reviewed by Darin Adler. >+ >+ * css/CSSComputedStyleDeclaration.cpp: >+ (WebCore::valueForGridPosition): >+ (WebCore::counterToCSSValue): >+ (WebCore::ComputedStyleExtractor::valueForPropertyInStyle): >+ * css/CSSPrimitiveValue.cpp: >+ (WebCore::isValidCSSUnitTypeForDoubleConversion): >+ (WebCore::isStringType): >+ (WebCore::CSSPrimitiveValue::cleanup): >+ (WebCore::CSSPrimitiveValue::doubleValueInternal const): >+ (WebCore::CSSPrimitiveValue::formatNumberValue const): >+ (WebCore::CSSPrimitiveValue::formatIntegerValue const): >+ (WebCore::CSSPrimitiveValue::unitTypeString): >+ (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const): >+ (WebCore::CSSPrimitiveValue::equals const): >+ * css/CSSPrimitiveValue.h: >+ * css/CSSPrimitiveValueMappings.h: >+ (WebCore::CSSPrimitiveValue::operator short const): >+ (WebCore::CSSPrimitiveValue::operator unsigned short const): >+ (WebCore::CSSPrimitiveValue::operator int const): >+ (WebCore::CSSPrimitiveValue::operator unsigned const): >+ (WebCore::CSSPrimitiveValue::operator float const): >+ (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): >+ (WebCore::CSSPrimitiveValue::operator LineClampValue const): >+ (WebCore::CSSPrimitiveValue::operator ColumnSpan const): >+ * css/CSSUnits.cpp: >+ (WebCore::unitCategory): >+ (WebCore::operator<<): >+ * css/CSSUnits.h: >+ * css/DeprecatedCSSOMPrimitiveValue.cpp: >+ (WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType const): >+ * css/MediaQueryEvaluator.cpp: >+ (WebCore::doubleValue): >+ (WebCore::evaluateResolution): >+ (WebCore::devicePixelRatioEvaluate): >+ (WebCore::computeLength): >+ * css/MediaQueryExpression.cpp: >+ (WebCore::featureWithValidPositiveLength): >+ (WebCore::featureWithPositiveInteger): >+ (WebCore::featureWithPositiveNumber): >+ (WebCore::featureWithZeroOrOne): >+ (WebCore::MediaQueryExpression::MediaQueryExpression): >+ * css/StyleProperties.cpp: >+ (WebCore::StyleProperties::getPropertyValue const): >+ * css/calc/CSSCalcCategoryMapping.cpp: >+ (WebCore::calcUnitCategory): >+ (WebCore::calculationCategoryForCombination): >+ (WebCore::hasDoubleValue): >+ * css/calc/CSSCalcPrimitiveValueNode.cpp: >+ (WebCore::CSSCalcPrimitiveValueNode::isNumericValue const): >+ * css/parser/CSSParserImpl.cpp: >+ (WebCore::CSSParserImpl::consumeFontPaletteValuesRule): >+ * css/parser/CSSPropertyParser.cpp: >+ (WebCore::consumeCounter): >+ (WebCore::consumeCounterStyleRange): >+ * css/parser/CSSPropertyParserHelpers.cpp: >+ (WebCore::CSSPropertyParserHelpers::CalcParser::consumeInteger): >+ (WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction): >+ (WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber): >+ * style/StyleBuilderConverter.h: >+ (WebCore::Style::BuilderConverter::createGridPosition): >+ > 2021-11-24 Antoine Quint <graouts@webkit.org> > > [Model] clean up compile-time flags and condition IDL methods behind them >diff --git a/Source/WTF/wtf/dtoa.cpp b/Source/WTF/wtf/dtoa.cpp >index ad47f0678ac15b1b5877f176281559ba4016bef4..66eff5b762de789fe2b47ea4aaa25aa815dde1f1 100644 >--- a/Source/WTF/wtf/dtoa.cpp >+++ b/Source/WTF/wtf/dtoa.cpp >@@ -38,7 +38,7 @@ const char* numberToString(double d, NumberToStringBuffer& buffer) > return builder.Finalize(); > } > >-static inline void truncateTrailingZeros(NumberToStringBuffer& buffer, double_conversion::StringBuilder& builder) >+static inline void truncateTrailingZeros(char* buffer, double_conversion::StringBuilder& builder) > { > size_t length = builder.position(); > size_t decimalPointPosition = 0; >@@ -93,7 +93,7 @@ const char* numberToFixedPrecisionString(double d, unsigned significantFigures, > auto& converter = double_conversion::DoubleToStringConverter::EcmaScriptConverter(); > converter.ToPrecision(d, significantFigures, &builder); > if (shouldTruncateTrailingZeros) >- truncateTrailingZeros(buffer, builder); >+ truncateTrailingZeros(buffer.data(), builder); > return builder.Finalize(); > } > >@@ -119,6 +119,25 @@ const char* numberToFixedWidthString(double d, unsigned decimalPlaces, NumberToS > return builder.Finalize(); > } > >+const char* numberToCSSString(double d, NumberToCSSStringBuffer& buffer) >+{ >+ // Mimic sprintf("%.[precision]f", ...). >+ // "f": Signed value having the form [ â ]dddd.dddd, where dddd is one or more decimal digits. >+ // The number of digits before the decimal point depends on the magnitude of the number, and >+ // the number of digits after the decimal point depends on the requested precision. >+ // "precision": The precision value specifies the number of digits after the decimal point. >+ // If a decimal point appears, at least one digit appears before it. >+ // The value is rounded to the appropriate number of digits. >+ double_conversion::StringBuilder builder(&buffer[0], sizeof(buffer)); >+ auto& converter = double_conversion::DoubleToStringConverter::CSSConverter(); >+ converter.ToFixedUncapped(d, 6, &builder); >+ truncateTrailingZeros(buffer.data(), builder); >+ // If we've truncated the trailing zeros and a trailing decimal, we may have a -0. Remove the negative sign in this case. >+ if (builder.position() == 2 && buffer[0] == '-' && buffer[1] == '0') >+ builder.RemoveCharacters(0, 1); >+ return builder.Finalize(); >+} >+ > namespace Internal { > > double parseDoubleFromLongString(const UChar* string, size_t length, size_t& parsedLength) >diff --git a/Source/WTF/wtf/dtoa.h b/Source/WTF/wtf/dtoa.h >index 092587cf3fd232873e11a03f3ec1634f491e61a2..d6713fdbb5f69952151e606720658625d12fc30f 100644 >--- a/Source/WTF/wtf/dtoa.h >+++ b/Source/WTF/wtf/dtoa.h >@@ -31,6 +31,10 @@ namespace WTF { > // <-> + <21 digits> + decimal point + <100 digits> + null char = 124. > using NumberToStringBuffer = std::array<char, 124>; > >+ >+// <-> + <320 digits> + decimal point + <6 digits> + null char = 329 >+using NumberToCSSStringBuffer = std::array<char, 329>; >+ > WTF_EXPORT_PRIVATE const char* numberToString(float, NumberToStringBuffer&); > WTF_EXPORT_PRIVATE const char* numberToFixedPrecisionString(float, unsigned significantFigures, NumberToStringBuffer&, bool truncateTrailingZeros = false); > WTF_EXPORT_PRIVATE const char* numberToFixedWidthString(float, unsigned decimalPlaces, NumberToStringBuffer&); >@@ -39,6 +43,9 @@ WTF_EXPORT_PRIVATE const char* numberToString(double, NumberToStringBuffer&); > WTF_EXPORT_PRIVATE const char* numberToFixedPrecisionString(double, unsigned significantFigures, NumberToStringBuffer&, bool truncateTrailingZeros = false); > WTF_EXPORT_PRIVATE const char* numberToFixedWidthString(double, unsigned decimalPlaces, NumberToStringBuffer&); > >+// Fixed width with up to 6 decimal places, trailing zeros truncated. >+WTF_EXPORT_PRIVATE const char* numberToCSSString(double, NumberToCSSStringBuffer&); >+ > double parseDouble(const LChar* string, size_t length, size_t& parsedLength); > double parseDouble(const UChar* string, size_t length, size_t& parsedLength); > double parseDouble(StringView, size_t& parsedLength); >diff --git a/Source/WTF/wtf/dtoa/double-conversion.cc b/Source/WTF/wtf/dtoa/double-conversion.cc >index 11cf6e6e7832c356c75bb57fd93f2e80d3b14be6..229b7349f1edf362f4a78fa3b23348de4930e4f4 100644 >--- a/Source/WTF/wtf/dtoa/double-conversion.cc >+++ b/Source/WTF/wtf/dtoa/double-conversion.cc >@@ -56,6 +56,17 @@ const DoubleToStringConverter& DoubleToStringConverter::EcmaScriptConverter() { > return converter; > } > >+const DoubleToStringConverter& DoubleToStringConverter::CSSConverter() { >+ int flags = UNIQUE_ZERO | EMIT_POSITIVE_EXPONENT_SIGN; >+ static DoubleToStringConverter converter(flags, >+ "infinity", >+ "NaN", >+ 'e', >+ -6, 21, >+ 6, 0); >+ return converter; >+} >+ > > bool DoubleToStringConverter::HandleSpecialValues( > double value, >@@ -201,6 +212,29 @@ bool DoubleToStringConverter::ToShortestIeeeNumber( > return true; > } > >+bool DoubleToStringConverter::ToFixedInternal(double value, >+ int requested_digits, >+ char* buffer, >+ int buffer_length, >+ StringBuilder* result_builder) const { >+ // Find a sufficiently precise decimal representation of n. >+ int decimal_point; >+ bool sign; >+ int decimal_rep_length; >+ DoubleToAscii(value, FIXED, requested_digits, >+ buffer, buffer_length, >+ &sign, &decimal_rep_length, &decimal_point); >+ >+ bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); >+ if (sign && (value != 0.0 || !unique_zero)) { >+ result_builder->AddCharacter('-'); >+ } >+ >+ CreateDecimalRepresentation(buffer, decimal_rep_length, decimal_point, >+ requested_digits, result_builder); >+ return true; >+} >+ > > bool DoubleToStringConverter::ToFixed(double value, > int requested_digits, >@@ -215,26 +249,30 @@ bool DoubleToStringConverter::ToFixed(double value, > if (requested_digits > kMaxFixedDigitsAfterPoint) return false; > if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false; > >- // Find a sufficiently precise decimal representation of n. >- int decimal_point; >- bool sign; > // Add space for the '\0' byte. > const int kDecimalRepCapacity = > kMaxFixedDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1; > char decimal_rep[kDecimalRepCapacity]; >- int decimal_rep_length; >- DoubleToAscii(value, FIXED, requested_digits, >- decimal_rep, kDecimalRepCapacity, >- &sign, &decimal_rep_length, &decimal_point); >+ return ToFixedInternal(value, requested_digits, decimal_rep, kDecimalRepCapacity, result_builder); >+} > >- bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0); >- if (sign && (value != 0.0 || !unique_zero)) { >- result_builder->AddCharacter('-'); >+bool DoubleToStringConverter::ToFixedUncapped(double value, >+ int requested_digits, >+ StringBuilder* result_builder) const { >+ // Max double is 1e308, so we could have 310 digits including a negative sign. >+ const int kMaxPossibleDigitsBeforePoint = 310; >+ >+ if (Double(value).IsSpecial()) { >+ return HandleSpecialValues(value, result_builder); > } > >- CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point, >- requested_digits, result_builder); >- return true; >+ if (requested_digits > kMaxFixedDigitsAfterPoint) return false; >+ >+ // Add space for the '\0' byte. >+ const int kDecimalRepCapacity = >+ kMaxPossibleDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1; >+ char decimal_rep[kDecimalRepCapacity]; >+ return ToFixedInternal(value, requested_digits, decimal_rep, kDecimalRepCapacity, result_builder); > } > > >diff --git a/Source/WTF/wtf/dtoa/double-conversion.h b/Source/WTF/wtf/dtoa/double-conversion.h >index 094b77a84f16d87adda32acf4b3aae3d2527aa2e..edf49dc09629e17a8e19006402cebd8debf829e9 100644 >--- a/Source/WTF/wtf/dtoa/double-conversion.h >+++ b/Source/WTF/wtf/dtoa/double-conversion.h >@@ -132,6 +132,8 @@ class DoubleToStringConverter { > // Returns a converter following the EcmaScript specification. > WTF_EXPORT_PRIVATE static const DoubleToStringConverter& EcmaScriptConverter(); > >+ WTF_EXPORT_PRIVATE static const DoubleToStringConverter& CSSConverter(); >+ > // Computes the shortest string of digits that correctly represent the input > // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high > // (see constructor) it then either returns a decimal representation, or an >@@ -201,6 +203,11 @@ class DoubleToStringConverter { > bool ToFixed(double value, > int requested_digits, > StringBuilder* result_builder) const; >+ // The same as ToFixed, except without a limit on the maximum number >+ // of digits before the decimal point. >+ bool ToFixedUncapped(double value, >+ int requested_digits, >+ StringBuilder* result_builder) const; > > // Computes a representation in exponential format with requested_digits > // after the decimal point. The last emitted digit is rounded. >@@ -370,6 +377,11 @@ class DoubleToStringConverter { > int decimal_point, > int digits_after_point, > StringBuilder* result_builder) const; >+ bool ToFixedInternal(double value, >+ int requested_digits, >+ char* buffer, >+ int buffer_length, >+ StringBuilder* result_builder) const; > > const int flags_; > const char* const infinity_symbol_; >diff --git a/Source/WTF/wtf/text/StringConcatenateNumbers.h b/Source/WTF/wtf/text/StringConcatenateNumbers.h >index d10c03721d1807f626baa37cf0a65e0b06d1eec0..30d9bd4fc47e3f06214059cb03b5ef1955935fb0 100644 >--- a/Source/WTF/wtf/text/StringConcatenateNumbers.h >+++ b/Source/WTF/wtf/text/StringConcatenateNumbers.h >@@ -128,6 +128,41 @@ private: > const FormattedNumber& m_number; > }; > >+class FormattedCSSNumber { >+ WTF_MAKE_FAST_ALLOCATED; >+public: >+ static FormattedCSSNumber create(double number) >+ { >+ FormattedCSSNumber numberFormatter; >+ numberToCSSString(number, numberFormatter.m_buffer); >+ numberFormatter.m_length = std::strlen(&numberFormatter.m_buffer[0]); >+ return numberFormatter; >+ } >+ >+ unsigned length() const { return m_length; } >+ const LChar* buffer() const { return reinterpret_cast<const LChar*>(&m_buffer[0]); } >+ >+private: >+ NumberToCSSStringBuffer m_buffer; >+ unsigned m_length; >+}; >+ >+template<> class StringTypeAdapter<FormattedCSSNumber> { >+public: >+ StringTypeAdapter(const FormattedCSSNumber& number) >+ : m_number { number } >+ { >+ } >+ >+ unsigned length() const { return m_number.length(); } >+ bool is8Bit() const { return true; } >+ template<typename CharacterType> void writeTo(CharacterType* destination) const { StringImpl::copyCharacters(destination, m_number.buffer(), m_number.length()); } >+ >+private: >+ const FormattedCSSNumber& m_number; >+}; >+ > } > > using WTF::FormattedNumber; >+using WTF::FormattedCSSNumber; >diff --git a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >index 49a316578258b3688052688caff6f0f8fcb2ecbd..b81f4be6cdcd73afa4389cdc3441c374ec4a11ed 100644 >--- a/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >+++ b/Source/WebCore/css/CSSComputedStyleDeclaration.cpp >@@ -1073,9 +1073,9 @@ static Ref<CSSValue> valueForGridPosition(const GridPosition& position) > auto list = CSSValueList::createSpaceSeparated(); > if (position.isSpan()) { > list->append(cssValuePool.createIdentifierValue(CSSValueSpan)); >- list->append(cssValuePool.createValue(position.spanPosition(), CSSUnitType::CSS_NUMBER)); >+ list->append(cssValuePool.createValue(position.spanPosition(), CSSUnitType::CSS_INTEGER)); > } else >- list->append(cssValuePool.createValue(position.integerPosition(), CSSUnitType::CSS_NUMBER)); >+ list->append(cssValuePool.createValue(position.integerPosition(), CSSUnitType::CSS_INTEGER)); > > if (!position.namedGridLine().isNull()) > list->append(cssValuePool.createCustomIdent(position.namedGridLine())); >@@ -1870,8 +1870,8 @@ static Ref<CSSValue> counterToCSSValue(const RenderStyle& style, CSSPropertyID p > auto list = CSSValueList::createSpaceSeparated(); > for (auto& keyValue : *map) { > list->append(cssValuePool.createCustomIdent(keyValue.key)); >- double number = (propertyID == CSSPropertyCounterIncrement ? keyValue.value.incrementValue : keyValue.value.resetValue).value_or(0); >- list->append(cssValuePool.createValue(number, CSSUnitType::CSS_NUMBER)); >+ int number = (propertyID == CSSPropertyCounterIncrement ? keyValue.value.incrementValue : keyValue.value.resetValue).value_or(0); >+ list->append(cssValuePool.createValue(number, CSSUnitType::CSS_INTEGER)); > } > return list; > } >@@ -2904,11 +2904,11 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyWebkitBoxFlex: > return cssValuePool.createValue(style.boxFlex(), CSSUnitType::CSS_NUMBER); > case CSSPropertyWebkitBoxFlexGroup: >- return cssValuePool.createValue(style.boxFlexGroup(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.boxFlexGroup(), CSSUnitType::CSS_INTEGER); > case CSSPropertyWebkitBoxLines: > return cssValuePool.createValue(style.boxLines()); > case CSSPropertyWebkitBoxOrdinalGroup: >- return cssValuePool.createValue(style.boxOrdinalGroup(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.boxOrdinalGroup(), CSSUnitType::CSS_INTEGER); > case CSSPropertyWebkitBoxOrient: > return cssValuePool.createValue(style.boxOrient()); > case CSSPropertyWebkitBoxPack: >@@ -3025,7 +3025,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyPlaceSelf: > return getCSSPropertyValuesForShorthandProperties(placeSelfShorthand()); > case CSSPropertyOrder: >- return cssValuePool.createValue(style.order(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.order(), CSSUnitType::CSS_INTEGER); > case CSSPropertyFloat: > if (style.display() != DisplayType::None && style.hasOutOfFlowPosition()) > return cssValuePool.createIdentifierValue(CSSValueNone); >@@ -3177,7 +3177,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyWebkitLineClamp: > if (style.lineClamp().isNone()) > return cssValuePool.createIdentifierValue(CSSValueNone); >- return cssValuePool.createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_INTEGER); > case CSSPropertyLineHeight: > return lineHeightFromStyle(style); > case CSSPropertyListStyleImage: >@@ -3263,7 +3263,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyOrphans: > if (style.hasAutoOrphans()) > return cssValuePool.createIdentifierValue(CSSValueAuto); >- return cssValuePool.createValue(style.orphans(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.orphans(), CSSUnitType::CSS_INTEGER); > case CSSPropertyOutlineColor: > return m_allowVisitedStyle ? cssValuePool.createColorValue(style.visitedDependentColor(CSSPropertyOutlineColor)) : currentColorOrValidColor(&style, style.outlineColor()); > case CSSPropertyOutlineOffset: >@@ -3455,7 +3455,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyWidows: > if (style.hasAutoWidows()) > return cssValuePool.createIdentifierValue(CSSValueAuto); >- return cssValuePool.createValue(style.widows(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.widows(), CSSUnitType::CSS_INTEGER); > case CSSPropertyWidth: > if (renderer && !renderer->isRenderSVGModelObject()) { > // According to http://www.w3.org/TR/CSS2/visudet.html#the-width-property, >@@ -3497,7 +3497,7 @@ RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty > case CSSPropertyZIndex: > if (style.hasAutoSpecifiedZIndex()) > return cssValuePool.createIdentifierValue(CSSValueAuto); >- return cssValuePool.createValue(style.specifiedZIndex(), CSSUnitType::CSS_NUMBER); >+ return cssValuePool.createValue(style.specifiedZIndex(), CSSUnitType::CSS_INTEGER); > case CSSPropertyZoom: > return cssValuePool.createValue(style.zoom(), CSSUnitType::CSS_NUMBER); > case CSSPropertyBoxSizing: >diff --git a/Source/WebCore/css/CSSPrimitiveValue.cpp b/Source/WebCore/css/CSSPrimitiveValue.cpp >index f4882aaf1e3da401fd6d8798457a8c8a78e03dc3..07172709e21600de2b8823e2100176d1013800b0 100644 >--- a/Source/WebCore/css/CSSPrimitiveValue.cpp >+++ b/Source/WebCore/css/CSSPrimitiveValue.cpp >@@ -76,6 +76,7 @@ static inline bool isValidCSSUnitTypeForDoubleConversion(CSSUnitType unitType) > case CSSUnitType::CSS_MM: > case CSSUnitType::CSS_MS: > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_PC: > case CSSUnitType::CSS_PERCENTAGE: > case CSSUnitType::CSS_PT: >@@ -174,6 +175,7 @@ static inline bool isStringType(CSSUnitType type) > case CSSUnitType::CSS_MM: > case CSSUnitType::CSS_MS: > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_PAIR: > case CSSUnitType::CSS_PC: > case CSSUnitType::CSS_PERCENTAGE: >@@ -529,6 +531,7 @@ void CSSPrimitiveValue::cleanup() > break; > case CSSUnitType::CSS_DIMENSION: > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_PERCENTAGE: > case CSSUnitType::CSS_EMS: > case CSSUnitType::CSS_QUIRKY_EMS: >@@ -1014,7 +1017,7 @@ std::optional<double> CSSPrimitiveValue::doubleValueInternal(CSSUnitType request > return std::nullopt; > } > >- if (sourceUnitType == CSSUnitType::CSS_NUMBER) { >+ if (sourceUnitType == CSSUnitType::CSS_NUMBER || sourceUnitType == CSSUnitType::CSS_INTEGER) { > // We interpret conversion from CSSUnitType::CSS_NUMBER in the same way as CSSParser::validUnit() while using non-strict mode. > sourceUnitType = canonicalUnitTypeForCategory(targetCategory); > if (sourceUnitType == CSSUnitType::CSS_UNKNOWN) >@@ -1054,6 +1057,11 @@ String CSSPrimitiveValue::stringValue() const > } > > NEVER_INLINE String CSSPrimitiveValue::formatNumberValue(StringView suffix) const >+{ >+ return makeString(FormattedCSSNumber::create(m_value.num), suffix); >+} >+ >+NEVER_INLINE String CSSPrimitiveValue::formatIntegerValue(StringView suffix) const > { > if (m_value.num == std::numeric_limits<double>::infinity()) > return makeString("infinity", suffix); >@@ -1113,6 +1121,7 @@ String CSSPrimitiveValue::unitTypeString(CSSUnitType unitType) > > case CSSUnitType::CSS_UNKNOWN: > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_DIMENSION: > case CSSUnitType::CSS_STRING: > case CSSUnitType::CSS_URI: >@@ -1147,6 +1156,8 @@ ALWAYS_INLINE String CSSPrimitiveValue::formatNumberForCustomCSSText() const > return String(); > case CSSUnitType::CSS_NUMBER: > return formatNumberValue(""); >+ case CSSUnitType::CSS_INTEGER: >+ return formatIntegerValue(""); > case CSSUnitType::CSS_PERCENTAGE: > return formatNumberValue("%"); > case CSSUnitType::CSS_EMS: >@@ -1322,6 +1333,7 @@ bool CSSPrimitiveValue::equals(const CSSPrimitiveValue& other) const > case CSSUnitType::CSS_UNKNOWN: > return false; > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_PERCENTAGE: > case CSSUnitType::CSS_EMS: > case CSSUnitType::CSS_QUIRKY_EMS: >diff --git a/Source/WebCore/css/CSSPrimitiveValue.h b/Source/WebCore/css/CSSPrimitiveValue.h >index 85aac7d3f5f27af3aa662eaa263339067799e8bd..32ff0091641a982879101ed12a9bb8e038418aeb 100644 >--- a/Source/WebCore/css/CSSPrimitiveValue.h >+++ b/Source/WebCore/css/CSSPrimitiveValue.h >@@ -90,6 +90,8 @@ public: > bool isQuirkyEms() const { return primitiveType() == CSSUnitType::CSS_QUIRKY_EMS; } > bool isLength() const { return isLength(static_cast<CSSUnitType>(primitiveType())); } > bool isNumber() const { return primitiveType() == CSSUnitType::CSS_NUMBER; } >+ bool isInteger() const { return primitiveType() == CSSUnitType::CSS_INTEGER; } >+ bool isNumberOrInteger() const { return isNumber() || isInteger(); } > bool isPercentage() const { return primitiveType() == CSSUnitType::CSS_PERCENTAGE; } > bool isPx() const { return primitiveType() == CSSUnitType::CSS_PX; } > bool isRect() const { return primitiveUnitType() == CSSUnitType::CSS_RECT; } >@@ -250,6 +252,7 @@ private: > > ALWAYS_INLINE String formatNumberForCustomCSSText() const; > NEVER_INLINE String formatNumberValue(StringView) const; >+ NEVER_INLINE String formatIntegerValue(StringView) const; > static constexpr bool isFontIndependentLength(CSSUnitType); > static constexpr bool isFontRelativeLength(CSSUnitType); > static constexpr bool isResolution(CSSUnitType); >diff --git a/Source/WebCore/css/CSSPrimitiveValueMappings.h b/Source/WebCore/css/CSSPrimitiveValueMappings.h >index c34f35b1c50b1959678a475a2ba357266782732b..a0e746f572fe80ac834832fa9554222f0ca4ba49 100644 >--- a/Source/WebCore/css/CSSPrimitiveValueMappings.h >+++ b/Source/WebCore/css/CSSPrimitiveValueMappings.h >@@ -59,7 +59,7 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(short i) > > template<> inline CSSPrimitiveValue::operator short() const > { >- if (primitiveUnitType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER) > return clampTo<short>(m_value.num); > > ASSERT_NOT_REACHED(); >@@ -75,7 +75,7 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(unsigned short i) > > template<> inline CSSPrimitiveValue::operator unsigned short() const > { >- if (primitiveType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER) > return value<unsigned short>(); > > ASSERT_NOT_REACHED(); >@@ -84,7 +84,7 @@ template<> inline CSSPrimitiveValue::operator unsigned short() const > > template<> inline CSSPrimitiveValue::operator int() const > { >- if (primitiveType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER) > return value<int>(); > > ASSERT_NOT_REACHED(); >@@ -93,7 +93,7 @@ template<> inline CSSPrimitiveValue::operator int() const > > template<> inline CSSPrimitiveValue::operator unsigned() const > { >- if (primitiveType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER) > return value<unsigned>(); > > ASSERT_NOT_REACHED(); >@@ -110,7 +110,7 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(float i) > > template<> inline CSSPrimitiveValue::operator float() const > { >- if (primitiveType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER) > return value<float>(); > > ASSERT_NOT_REACHED(); >@@ -120,13 +120,13 @@ template<> inline CSSPrimitiveValue::operator float() const > template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineClampValue i) > : CSSValue(PrimitiveClass) > { >- setPrimitiveUnitType(i.isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_NUMBER); >+ setPrimitiveUnitType(i.isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_INTEGER); > m_value.num = static_cast<double>(i.value()); > } > > template<> inline CSSPrimitiveValue::operator LineClampValue() const > { >- if (primitiveType() == CSSUnitType::CSS_NUMBER) >+ if (primitiveType() == CSSUnitType::CSS_INTEGER) > return LineClampValue(value<int>(), LineClamp::LineCount); > > if (primitiveType() == CSSUnitType::CSS_PERCENTAGE) >@@ -219,7 +219,7 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ColumnSpan columnSpan) > template<> inline CSSPrimitiveValue::operator ColumnSpan() const > { > // Map 1 to none for compatibility reasons. >- if (primitiveUnitType() == CSSUnitType::CSS_NUMBER && m_value.num == 1) >+ if ((primitiveUnitType() == CSSUnitType::CSS_NUMBER || primitiveUnitType() == CSSUnitType::CSS_INTEGER) && m_value.num == 1) > return ColumnSpan::None; > > ASSERT(isValueID()); >diff --git a/Source/WebCore/css/CSSUnits.cpp b/Source/WebCore/css/CSSUnits.cpp >index 24cb663e2c5e331e5b2debfd52da45f324b91353..8c39c0b6145b747b971d739f8e54022190fa5953 100644 >--- a/Source/WebCore/css/CSSUnits.cpp >+++ b/Source/WebCore/css/CSSUnits.cpp >@@ -29,6 +29,7 @@ CSSUnitCategory unitCategory(CSSUnitType type) > { > switch (type) { > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > return CSSUnitCategory::Number; > case CSSUnitType::CSS_PERCENTAGE: > return CSSUnitCategory::Percent; >@@ -109,6 +110,7 @@ TextStream& operator<<(TextStream& ts, CSSUnitType unitType) > switch (unitType) { > case CSSUnitType::CSS_UNKNOWN: ts << "unknown"; break; > case CSSUnitType::CSS_NUMBER: ts << "number"; break; >+ case CSSUnitType::CSS_INTEGER: ts << "integer"; break; > case CSSUnitType::CSS_PERCENTAGE: ts << "percentage"; break; > case CSSUnitType::CSS_EMS: ts << "ems"; break; > case CSSUnitType::CSS_EXS: ts << "exs"; break; >diff --git a/Source/WebCore/css/CSSUnits.h b/Source/WebCore/css/CSSUnits.h >index b0f7c2d2f6eabcc73f4cc322a5beaf582f8c0065..387720a1c461501968a8c6dd701271f9ad938c2d 100644 >--- a/Source/WebCore/css/CSSUnits.h >+++ b/Source/WebCore/css/CSSUnits.h >@@ -31,6 +31,7 @@ namespace WebCore { > enum class CSSUnitType : uint8_t { > CSS_UNKNOWN, > CSS_NUMBER, >+ CSS_INTEGER, > CSS_PERCENTAGE, > CSS_EMS, > CSS_EXS, >diff --git a/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp b/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp >index 7db5cba065a935a549912d54bb59b1ee8fa03113..34eebf9e7ccbf76a702cb9fe3ae95f813d966877 100644 >--- a/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp >+++ b/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp >@@ -59,6 +59,7 @@ unsigned short DeprecatedCSSOMPrimitiveValue::primitiveType() const > case CSSUnitType::CSS_GRAD: return CSS_GRAD; > case CSSUnitType::CSS_HZ: return CSS_HZ; > case CSSUnitType::CSS_IDENT: return CSS_IDENT; >+ case CSSUnitType::CSS_INTEGER: return CSS_NUMBER; > case CSSUnitType::CustomIdent: return CSS_IDENT; > case CSSUnitType::CSS_IN: return CSS_IN; > case CSSUnitType::CSS_KHZ: return CSS_KHZ; >diff --git a/Source/WebCore/css/MediaQueryEvaluator.cpp b/Source/WebCore/css/MediaQueryEvaluator.cpp >index 9c00886958d5ae32edd5f76f76843d0bdfaffe70..ba72279c2fc299bd8c4204107fdf5cb8ee2b5837 100644 >--- a/Source/WebCore/css/MediaQueryEvaluator.cpp >+++ b/Source/WebCore/css/MediaQueryEvaluator.cpp >@@ -266,7 +266,7 @@ static bool compareAspectRatioValue(CSSValue* value, int width, int height, Medi > > static std::optional<double> doubleValue(CSSValue* value) > { >- if (!is<CSSPrimitiveValue>(value) || !downcast<CSSPrimitiveValue>(*value).isNumber()) >+ if (!is<CSSPrimitiveValue>(value) || !downcast<CSSPrimitiveValue>(*value).isNumberOrInteger()) > return std::nullopt; > return downcast<CSSPrimitiveValue>(*value).doubleValue(CSSUnitType::CSS_NUMBER); > } >@@ -434,7 +434,7 @@ static bool evaluateResolution(CSSValue* value, Frame& frame, MediaFeaturePrefix > return false; > > auto& resolution = downcast<CSSPrimitiveValue>(*value); >- float resolutionValue = resolution.isNumber() ? resolution.floatValue() : resolution.floatValue(CSSUnitType::CSS_DPPX); >+ float resolutionValue = resolution.isNumberOrInteger() ? resolution.floatValue() : resolution.floatValue(CSSUnitType::CSS_DPPX); > bool result = compareValue(deviceScaleFactor, resolutionValue, op); > LOG_WITH_STREAM(MediaQueries, stream << " evaluateResolution: " << op << " " << resolutionValue << " device scale factor " << deviceScaleFactor << ": " << result); > return result; >@@ -442,7 +442,7 @@ static bool evaluateResolution(CSSValue* value, Frame& frame, MediaFeaturePrefix > > static bool devicePixelRatioEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix op) > { >- return (!value || (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isNumber())) && evaluateResolution(value, frame, op); >+ return (!value || (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isNumberOrInteger())) && evaluateResolution(value, frame, op); > } > > static bool resolutionEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix op) >@@ -491,7 +491,7 @@ static std::optional<double> computeLength(CSSValue* value, bool strict, const C > return std::nullopt; > > auto& primitiveValue = downcast<CSSPrimitiveValue>(*value); >- if (primitiveValue.isNumber()) { >+ if (primitiveValue.isNumberOrInteger()) { > double value = primitiveValue.doubleValue(); > // The only unitless number value allowed in strict mode is zero. > if (strict && value) >diff --git a/Source/WebCore/css/MediaQueryExpression.cpp b/Source/WebCore/css/MediaQueryExpression.cpp >index ca808836f0c188e60a208a1cbc3b10794318e5a4..15d9a10af7b7488d4bc33279fffb69015fe3c232 100644 >--- a/Source/WebCore/css/MediaQueryExpression.cpp >+++ b/Source/WebCore/css/MediaQueryExpression.cpp >@@ -107,7 +107,7 @@ static inline bool featureWithValidDensity(const String& mediaFeature, const CSS > > static inline bool featureWithValidPositiveLength(const String& mediaFeature, const CSSPrimitiveValue& value) > { >- if (!(value.isLength() || (value.isNumber() && !value.doubleValue())) || value.doubleValue() < 0) >+ if (!(value.isLength() || (value.isNumberOrInteger() && !value.doubleValue())) || value.doubleValue() < 0) > return false; > > return mediaFeature == MediaFeatureNames::height >@@ -139,14 +139,14 @@ static inline bool featureExpectingPositiveInteger(const String& mediaFeature) > > static inline bool featureWithPositiveInteger(const String& mediaFeature, const CSSPrimitiveValue& value) > { >- if (!value.isNumber()) >+ if (!value.isInteger()) > return false; > return featureExpectingPositiveInteger(mediaFeature); > } > > static inline bool featureWithPositiveNumber(const String& mediaFeature, const CSSPrimitiveValue& value) > { >- if (!value.isNumber()) >+ if (!value.isNumberOrInteger()) > return false; > > return mediaFeature == MediaFeatureNames::transform3d >@@ -160,7 +160,7 @@ static inline bool featureWithPositiveNumber(const String& mediaFeature, const C > > static inline bool featureWithZeroOrOne(const String& mediaFeature, const CSSPrimitiveValue& value) > { >- if (!value.isNumber() || !(value.doubleValue() == 1 || !value.doubleValue())) >+ if (!value.isNumberOrInteger() || !(value.doubleValue() == 1 || !value.doubleValue())) > return false; > > return mediaFeature == MediaFeatureNames::grid; >@@ -249,7 +249,7 @@ MediaQueryExpression::MediaQueryExpression(const String& feature, CSSParserToken > } > // Create value for media query expression that must have 1 or more values. > if (isAspectRatioFeature(m_mediaFeature)) { >- if (!firstValue->isNumber() || !firstValue->doubleValue()) >+ if (!firstValue->isNumberOrInteger() || !firstValue->doubleValue()) > return; > if (!CSSPropertyParserHelpers::consumeSlashIncludingWhitespace(range)) > return; >diff --git a/Source/WebCore/css/StyleProperties.cpp b/Source/WebCore/css/StyleProperties.cpp >index 186e873da79a4b0cbab8da2840dc812904d3b3b8..119e76913c7ab219ea9280388b85fb6171819de9 100644 >--- a/Source/WebCore/css/StyleProperties.cpp >+++ b/Source/WebCore/css/StyleProperties.cpp >@@ -166,7 +166,7 @@ String StyleProperties::getPropertyValue(CSSPropertyID propertyID) const > case CSSPropertyOpacity: > case CSSPropertyStopOpacity: > case CSSPropertyStrokeOpacity: >- // Opacity percentage values serialize as a fraction in the range 0-1, no "%". >+ // Opacity percentage values serialize as a fraction in the range 0-1, not "%". > if (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isPercentage()) > return makeString(downcast<CSSPrimitiveValue>(*value).doubleValue() / 100); > FALLTHROUGH; >diff --git a/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp b/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp >index 9ef1d4569202ee593523c0da2c82727102f7600c..b514cfdb45aceba02fa64e32a5e8c20466d8a306 100644 >--- a/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp >+++ b/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp >@@ -35,6 +35,7 @@ CalculationCategory calcUnitCategory(CSSUnitType type) > { > switch (type) { > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > return CalculationCategory::Number; > case CSSUnitType::CSS_EMS: > case CSSUnitType::CSS_EXS: >@@ -89,6 +90,7 @@ CalculationCategory calculationCategoryForCombination(CSSUnitType type) > { > switch (type) { > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > return CalculationCategory::Number; > case CSSUnitType::CSS_PX: > case CSSUnitType::CSS_CM: >@@ -161,6 +163,7 @@ bool hasDoubleValue(CSSUnitType type) > { > switch (type) { > case CSSUnitType::CSS_NUMBER: >+ case CSSUnitType::CSS_INTEGER: > case CSSUnitType::CSS_PERCENTAGE: > case CSSUnitType::CSS_EMS: > case CSSUnitType::CSS_EXS: >diff --git a/Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp b/Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp >index b0b4d40922c8735847f11a765fe01dfd1a97c45a..463e1b9ea6f8f892dae901d27f351503143610f3 100644 >--- a/Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp >+++ b/Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp >@@ -67,7 +67,7 @@ CSSCalcPrimitiveValueNode::CSSCalcPrimitiveValueNode(Ref<CSSPrimitiveValue>&& va > // FIXME: Use calcUnitCategory? > bool CSSCalcPrimitiveValueNode::isNumericValue() const > { >- return m_value->isLength() || m_value->isNumber() || m_value->isPercentage() || m_value->isAngle() >+ return m_value->isLength() || m_value->isNumber() || m_value->isInteger() || m_value->isPercentage() || m_value->isAngle() > || m_value->isTime() || m_value->isResolution() || m_value->isFlex() || m_value->isFrequency(); > } > >diff --git a/Source/WebCore/css/parser/CSSParserImpl.cpp b/Source/WebCore/css/parser/CSSParserImpl.cpp >index fda1e4f49c3f15a9e4720e9f2d5005a962e4c02b..db5c5cd4745bde101dcba4350bd6367aee988298 100644 >--- a/Source/WebCore/css/parser/CSSParserImpl.cpp >+++ b/Source/WebCore/css/parser/CSSParserImpl.cpp >@@ -686,7 +686,7 @@ RefPtr<StyleRuleFontPaletteValues> CSSParserImpl::consumeFontPaletteValuesRule(C > std::optional<FontPaletteIndex> basePalette; > if (auto basePaletteValue = properties->getPropertyCSSValue(CSSPropertyBasePalette)) { > const auto& primitiveValue = downcast<CSSPrimitiveValue>(*basePaletteValue); >- if (primitiveValue.isNumber()) >+ if (primitiveValue.isInteger()) > basePalette = FontPaletteIndex(primitiveValue.value<unsigned>()); > else if (primitiveValue.valueID() == CSSValueLight) > basePalette = FontPaletteIndex(FontPaletteIndex::Type::Light); >@@ -699,7 +699,7 @@ RefPtr<StyleRuleFontPaletteValues> CSSParserImpl::consumeFontPaletteValuesRule(C > const auto& list = downcast<CSSValueList>(*overrideColorsValue); > for (const auto& item : list) { > const auto& pair = downcast<CSSFontPaletteValuesOverrideColorsValue>(item.get()); >- if (!pair.key().isNumber()) >+ if (!pair.key().isInteger()) > continue; > unsigned key = pair.key().value<unsigned>(); > Color color = pair.color().isRGBColor() ? pair.color().color() : StyleColor::colorFromKeyword(pair.color().valueID(), { }); >diff --git a/Source/WebCore/css/parser/CSSPropertyParser.cpp b/Source/WebCore/css/parser/CSSPropertyParser.cpp >index 981002500567a2f367855deba5ccfb173c8c0eea..d992cb66e9bd4b214049c16d017ce8ca975cdb13 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParser.cpp >+++ b/Source/WebCore/css/parser/CSSPropertyParser.cpp >@@ -1109,7 +1109,7 @@ static RefPtr<CSSValue> consumeCounter(CSSParserTokenRange& range, int defaultVa > int i = defaultValue; > if (auto counterValue = consumeIntegerRaw(range)) > i = *counterValue; >- list->append(createPrimitiveValuePair(counterName.releaseNonNull(), CSSPrimitiveValue::create(i, CSSUnitType::CSS_NUMBER), Pair::IdenticalValueEncoding::Coalesce)); >+ list->append(createPrimitiveValuePair(counterName.releaseNonNull(), CSSPrimitiveValue::create(i, CSSUnitType::CSS_INTEGER), Pair::IdenticalValueEncoding::Coalesce)); > } while (!range.atEnd()); > return list; > } >@@ -4780,7 +4780,7 @@ static RefPtr<CSSValue> consumeCounterStyleRange(CSSParserTokenRange& range) > > // If the lower bound of any range is higher than the upper bound, the entire descriptor is invalid and must be > // ignored. >- if (lowerBound->isNumber() && upperBound->isNumber() && lowerBound->intValue() > upperBound->intValue()) >+ if (lowerBound->isInteger() && upperBound->isInteger() && lowerBound->intValue() > upperBound->intValue()) > return nullptr; > rangeList->append(createPrimitiveValuePair(lowerBound.releaseNonNull(), upperBound.releaseNonNull(), Pair::IdenticalValueEncoding::DoNotCoalesce)); > } while (consumeCommaIncludingWhitespace(range)); >diff --git a/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp b/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp >index 9cd7fb8c2d0fa0e0976d23eeac231e6e18ffbd66..72f7e7e80469be1edefa347628bf9723a20d7089 100644 >--- a/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp >+++ b/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp >@@ -156,7 +156,7 @@ public: > if (!m_calcValue) > return nullptr; > m_sourceRange = m_range; >- return m_pool.createValue(std::round(std::max(m_calcValue->doubleValue(), minimumValue)), CSSUnitType::CSS_NUMBER); >+ return m_pool.createValue(std::round(std::max(m_calcValue->doubleValue(), minimumValue)), CSSUnitType::CSS_INTEGER); > } > > template<typename IntType> std::optional<IntType> consumeIntegerTypeRaw(double minimumValue) >@@ -264,7 +264,7 @@ template<typename IntType> static RefPtr<CSSPrimitiveValue> consumeIntegerTypeCS > ASSERT(range.peek().type() == FunctionToken); > > if (auto integer = consumeIntegerTypeRawWithKnownTokenTypeFunction<IntType>(range, minimumValue)) >- return pool.createValue(*integer, CSSUnitType::CSS_NUMBER); >+ return pool.createValue(*integer, CSSUnitType::CSS_INTEGER); > return nullptr; > } > >@@ -273,7 +273,7 @@ template<typename IntType> static RefPtr<CSSPrimitiveValue> consumeIntegerTypeCS > ASSERT(range.peek().type() == NumberToken); > > if (auto integer = consumeIntegerTypeRawWithKnownTokenTypeNumber<IntType>(range, minimumValue)) >- return pool.createValue(*integer, CSSUnitType::CSS_NUMBER); >+ return pool.createValue(*integer, CSSUnitType::CSS_INTEGER); > return nullptr; > } > >diff --git a/Source/WebCore/style/StyleBuilderConverter.h b/Source/WebCore/style/StyleBuilderConverter.h >index 08f7904453a8a0a69c5812f7d643374eb9f245ba..e0fb7f12a7d811bacca9ca2c60a1e0683ce16024 100644 >--- a/Source/WebCore/style/StyleBuilderConverter.h >+++ b/Source/WebCore/style/StyleBuilderConverter.h >@@ -1089,7 +1089,7 @@ inline bool BuilderConverter::createGridPosition(const CSSValue& value, GridPosi > } > > int gridLineNumber = 0; >- if (currentValue && currentValue->isNumber()) { >+ if (currentValue && currentValue->isInteger()) { > gridLineNumber = currentValue->intValue(); > ++it; > currentValue = it != values.end() ? &downcast<CSSPrimitiveValue>(it->get()) : nullptr; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 339337fc7f315aaf7e5fcee82f2bf26ef3aec687..20efe2395a542337f85ea7f1dc75b6d7ddab3e36 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,42 @@ >+2021-11-29 Simon Fraser <simon.fraser@apple.com> >+ >+ Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec >+ https://bugs.webkit.org/show_bug.cgi?id=218880 >+ >+ Reviewed by Darin Adler. >+ >+ * css3/calc/font-size-fractional-expected.txt: >+ * css3/calc/simplification-expected.txt: >+ * css3/color-filters/color-filter-parsing.html: >+ * css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt: >+ * css3/filters/backdrop/backdropfilter-property-computed-style.html: >+ * css3/filters/filter-property-computed-style-expected.txt: >+ * css3/filters/filter-property-computed-style.html: >+ * css3/filters/unprefixed-expected.txt: >+ * css3/filters/unprefixed.html: >+ * css3/scroll-snap/scroll-snap-property-computed-style-expected.txt: >+ * css3/scroll-snap/scroll-snap-property-computed-style.js: >+ * fast/css/calc-parsing-expected.txt: >+ * fast/css/calc-parsing-limits-expected.txt: >+ * fast/css/calc-parsing-limits.html: >+ * fast/css/calc-parsing.html: >+ * fast/css/calc-with-angle-time-frequency-expected.txt: >+ * fast/css/calc-with-angle-time-frequency.html: >+ * fast/css/large-value-csstext-expected.txt: >+ * fast/css/line-height-get-computed-style-expected.txt: >+ * fast/css/line-height-get-computed-style.html: >+ * fast/css/parsing-stroke-width-expected.txt: >+ * fast/css/round-trip-values-expected.txt: >+ * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt: >+ * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html: >+ * platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt: >+ * platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt: >+ * svg/css/parse-height-expected.txt: >+ * svg/css/parse-height.html: >+ * svg/css/parse-length-expected.txt: >+ * svg/css/parse-length.html: >+ * transitions/frames-timing-function-expected.txt: >+ > 2021-11-29 Andreu Botella <andreu@andreubotella.com> > > Form payloads with text/plain enctype should have a final \r\n >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index b906c5945286bcc37e509547f480f9fd744a967e..7b91bf756ff6795be9b109b101be3c5142dc30fe 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,40 @@ >+2021-11-29 Simon Fraser <simon.fraser@apple.com> >+ >+ Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec >+ https://bugs.webkit.org/show_bug.cgi?id=218880 >+ >+ Reviewed by Darin Adler. >+ >+ * web-platform-tests/css/css-cascade/revert-val-006-expected.txt: >+ * web-platform-tests/css/css-cascade/revert-val-007-expected.txt: >+ * web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt: >+ * web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt: >+ * web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt: >+ * web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt: >+ * web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt: >+ * web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt: >+ * web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt: >+ * web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt: >+ * web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt: >+ * web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt: >+ * web-platform-tests/css/css-values/calc-numbers-expected.txt: >+ * web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt: >+ * web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt: >+ * web-platform-tests/css/css-values/minmax-number-computed-expected.txt: >+ * web-platform-tests/css/css-values/minmax-number-serialize-expected.txt: >+ * web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt: >+ * web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt: >+ * web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt: >+ * web-platform-tests/html/rendering/dimension-attributes-expected.txt: >+ * web-platform-tests/html/rendering/pixel-length-attributes-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt: >+ * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt: >+ * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt: >+ > 2021-11-29 Antti Koivisto <antti@apple.com> > > [:has() pseudo-class] id invalidation support >diff --git a/LayoutTests/css3/calc/font-size-fractional-expected.txt b/LayoutTests/css3/calc/font-size-fractional-expected.txt >index 39dae74934d365e346919f61aa14872c7ff96f5b..5294212f7d8840ef12b527ba3428a7946b104947 100644 >--- a/LayoutTests/css3/calc/font-size-fractional-expected.txt >+++ b/LayoutTests/css3/calc/font-size-fractional-expected.txt >@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS getComputedStyle(document.getElementById("calc-reduce"), null).lineHeight is "24px" >-PASS getComputedStyle(document.getElementById("calc-reduce"), null).fontSize is "9.600000381469727px" >+PASS getComputedStyle(document.getElementById("calc-reduce"), null).fontSize is "9.6px" > PASS successfullyParsed is true > > TEST COMPLETE >diff --git a/LayoutTests/css3/calc/simplification-expected.txt b/LayoutTests/css3/calc/simplification-expected.txt >index d6e541e26ee88490fbf10ef5614213a7de431985..afdfdee198f1686e3072a285076658bb38138f85 100644 >--- a/LayoutTests/css3/calc/simplification-expected.txt >+++ b/LayoutTests/css3/calc/simplification-expected.txt >@@ -3,18 +3,18 @@ This tests parse time simplification in calc() > 100px * (25 + 5) => calc(3000px) > 100em * (25 - 5) => calc(2000em) > 100ex * (2 * 5 - 5) => calc(500ex) >-100cm * (5 - 4 / 5) => calc(15874.015748031496px) >-100mm * (2.4 * 5 - 8 / 5) => calc(3930.708661417323px) >+100cm * (5 - 4 / 5) => calc(15874.015748px) >+100mm * (2.4 * 5 - 8 / 5) => calc(3930.708661px) > 100in * (6 * (5 - 4) / 8) => calc(7200px) >-1px * (3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + 1/(1 + 1/(1 + 1/(1 + 1)))))))) => calc(3.1415926535583574px) >+1px * (3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + 1/(1 + 1/(1 + 1/(1 + 1)))))))) => calc(3.141593px) > 100pc * 20 + 100rem * 10 - 100ch * 5 + 100pc => calc(-500ch + 33600px + 1000rem) > ((100px + 20 * 5px) * 10 - 5 * (10em * 5 + 10em)) * 2 => calc(-600em + 4000px) > 100px + 1in => calc(196px) > 10 * 10px + 0.5 * 2in => calc(196px) > 100px + 1in + 10% => calc(10% + 196px) > 100px - 1in => calc(4px) >-50cm + 50cm => calc(3779.5275590551178px) >-50cm + 10in + 100mm => calc(3227.7165354330705px) >+50cm + 50cm => calc(3779.527559px) >+50cm + 10in + 100mm => calc(3227.716535px) > 100px + 1em => calc(1em + 100px) > 100px + 1em + 100px => calc(1em + 200px) > 1em + 1rem => calc(1em + 1rem) >diff --git a/LayoutTests/css3/color-filters/color-filter-parsing.html b/LayoutTests/css3/color-filters/color-filter-parsing.html >index 293a5c2e104cf43b0156fbc011309c07388d3570..21c006f1396ac449980fef7c6b5585442a8921ae 100644 >--- a/LayoutTests/css3/color-filters/color-filter-parsing.html >+++ b/LayoutTests/css3/color-filters/color-filter-parsing.html >@@ -41,7 +41,7 @@ testColorFilterParsing("blur(10px)", "none", "blur() is not allowed in -apple-co > > // Argument canonicalization. > testColorFilterParsing("grayscale(30%)", "grayscale(0.3)", "Canonicalize grayscale() argument"); >-testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.75493541569878deg)", "Canonicalize hue-rotate() argument"); >+testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.754935deg)", "Canonicalize hue-rotate() argument"); > > // Negative values. > testColorFilterParsing("brightness(-0.4)", "none", "Negative value for brightness() is invalid"); >diff --git a/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt b/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt >index c885c765acf4e3677171fe53b99912fed9e0baf5..49fab9561c15b8de11caed3d0042cb8a0fc49030 100644 >--- a/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt >+++ b/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt >@@ -105,7 +105,7 @@ PASS subRule.cssText is "hue-rotate(10deg)" > > Radians value : hue-rotate(10rad) > PASS filterStyle.length is 1 >-PASS subRule.cssText is "hue-rotate(572.9577951308232deg)" >+PASS subRule.cssText is "hue-rotate(572.957795deg)" > > Gradians value : hue-rotate(10grad) > PASS filterStyle.length is 1 >diff --git a/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html b/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html >index 30dd222914b1cd0d3fd923191f227bc0c0001cc7..6b864a4b457359b43a07a011148fef58e72cb9cb 100644 >--- a/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html >+++ b/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html >@@ -125,7 +125,7 @@ testComputedFilterRule("Degrees float value converts to integer", > > testComputedFilterRule("Radians value", > "hue-rotate(10rad)", 1, >- ["hue-rotate(572.9577951308232deg)"]); >+ ["hue-rotate(572.957795deg)"]); > > testComputedFilterRule("Gradians value", > "hue-rotate(10grad)", 1, >diff --git a/LayoutTests/css3/filters/filter-property-computed-style-expected.txt b/LayoutTests/css3/filters/filter-property-computed-style-expected.txt >index 42a3540c7fef9582a24c2bfc0894acce0e0ebd58..91c840039d31bc8f704b413b8a2b33fe42311ce5 100644 >--- a/LayoutTests/css3/filters/filter-property-computed-style-expected.txt >+++ b/LayoutTests/css3/filters/filter-property-computed-style-expected.txt >@@ -105,7 +105,7 @@ PASS subRule.cssText is "hue-rotate(10deg)" > > Radians value : hue-rotate(10rad) > PASS filterStyle.length is 1 >-PASS subRule.cssText is "hue-rotate(572.9577951308232deg)" >+PASS subRule.cssText is "hue-rotate(572.957795deg)" > > Gradians value : hue-rotate(10grad) > PASS filterStyle.length is 1 >diff --git a/LayoutTests/css3/filters/filter-property-computed-style.html b/LayoutTests/css3/filters/filter-property-computed-style.html >index f73c5821155f9f2155f7b280a690503a802d8734..343fae716036ee640fa8d6588673cf4dd7c3611a 100644 >--- a/LayoutTests/css3/filters/filter-property-computed-style.html >+++ b/LayoutTests/css3/filters/filter-property-computed-style.html >@@ -125,7 +125,7 @@ testComputedFilterRule("Degrees float value converts to integer", > > testComputedFilterRule("Radians value", > "hue-rotate(10rad)", 1, >- ["hue-rotate(572.9577951308232deg)"]); >+ ["hue-rotate(572.957795deg)"]); > > testComputedFilterRule("Gradians value", > "hue-rotate(10grad)", 1, >diff --git a/LayoutTests/css3/filters/unprefixed-expected.txt b/LayoutTests/css3/filters/unprefixed-expected.txt >index 912eac75306ced41ea4b09e982bae51aff17d358..8dad7186e497bc0ae17a066ba2e66474da06afa8 100644 >--- a/LayoutTests/css3/filters/unprefixed-expected.txt >+++ b/LayoutTests/css3/filters/unprefixed-expected.txt >@@ -105,7 +105,7 @@ PASS subRule.cssText is "hue-rotate(10deg)" > > Radians value : hue-rotate(10rad) > PASS filterStyle.length is 1 >-PASS subRule.cssText is "hue-rotate(572.9577951308232deg)" >+PASS subRule.cssText is "hue-rotate(572.957795deg)" > > Gradians value : hue-rotate(10grad) > PASS filterStyle.length is 1 >diff --git a/LayoutTests/css3/filters/unprefixed.html b/LayoutTests/css3/filters/unprefixed.html >index fb56f732f0bf59a2586f6b7c6bae7f463dd31c8b..ed7d8bf082624cce17f97f0a8468ca6c6b11ad47 100644 >--- a/LayoutTests/css3/filters/unprefixed.html >+++ b/LayoutTests/css3/filters/unprefixed.html >@@ -125,7 +125,7 @@ testComputedFilterRule("Degrees float value converts to integer", > > testComputedFilterRule("Radians value", > "hue-rotate(10rad)", 1, >- ["hue-rotate(572.9577951308232deg)"]); >+ ["hue-rotate(572.957795deg)"]); > > testComputedFilterRule("Gradians value", > "hue-rotate(10grad)", 1, >diff --git a/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt b/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt >index b0d2bc6e05a410a7e409c0885c8bdb657e61bd4a..507c76a07cb37e5553d26293c2299f5589d88ed0 100644 >--- a/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt >+++ b/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt >@@ -134,10 +134,10 @@ PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-rig > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-bottom') is 'calc(10% + 50px)' > > various units: `1em 5mm 2in 4cm` >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding') is '16px 18.89763832092285px 192px 151.1811065673828px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding') is '16px 18.897638px 192px 151.181107px' > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-top') is '16px' >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-left') is '151.1811065673828px' >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-right') is '18.89763832092285px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-left') is '151.181107px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-right') is '18.897638px' > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-bottom') is '192px' > > subpixel values: `10.4375px 6.5px` >@@ -218,10 +218,10 @@ PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-bottom') is '20px' > > various units: `1em 5mm 2in 4cm` >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin') is '16px 18.89763832092285px 192px 151.1811065673828px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin') is '16px 18.897638px 192px 151.181107px' > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-top') is '16px' >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-left') is '151.1811065673828px' >-PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-right') is '18.89763832092285px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-left') is '151.181107px' >+PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-right') is '18.897638px' > PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-bottom') is '192px' > > subpixel values: `10.4375px 6.5px` >diff --git a/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js b/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js >index bbc36fe86d5ecdeaade6a7b9d86023b62821db33..105fe63691da3df442143117ea92243e5f0786d8 100644 >--- a/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js >+++ b/LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js >@@ -60,7 +60,7 @@ testComputedScrollSnapRule("two percentages", "scroll-padding", "10% 20%", "10% > testComputedScrollSnapRule("three lengths", "scroll-padding", "1px 2px 3px", "1px 2px 3px", { top: "1px", left: "2px", right: "2px", bottom: "3px" }); > testComputedScrollSnapRule("four values", "scroll-padding", "50px 10% 20% 50px", "50px 10% 20% 50px", { top: "50px", left: "50px", right: "10%", bottom: "20%" }); > testComputedScrollSnapRule("calc expression", "scroll-padding", "calc(50px + 10%) 20px", "calc(10% + 50px) 20px", { top: "calc(10% + 50px)", left: "20px", right: "20px", bottom: "calc(10% + 50px)" }); >-testComputedScrollSnapRule("various units", "scroll-padding", "1em 5mm 2in 4cm", "16px 18.89763832092285px 192px 151.1811065673828px", { top: "16px", left: "151.1811065673828px", right: "18.89763832092285px", bottom: "192px" }); >+testComputedScrollSnapRule("various units", "scroll-padding", "1em 5mm 2in 4cm", "16px 18.897638px 192px 151.181107px", { top: "16px", left: "151.181107px", right: "18.897638px", bottom: "192px" }); > testComputedScrollSnapRule("subpixel values", "scroll-padding", "10.4375px 6.5px", "10.4375px 6.5px", { top: "10.4375px", left: "6.5px", right: "6.5px", bottom: "10.4375px" }); > > // Test the scroll-snap-margin property >@@ -76,7 +76,7 @@ testComputedScrollSnapRule("single length", "scroll-snap-margin", "10px", "10px" > testComputedScrollSnapRule("two lengths", "scroll-snap-margin", "10px 20px", "10px 20px", { top: "10px", left: "20px", right: "20px", bottom: "10px" }); > testComputedScrollSnapRule("three lengths", "scroll-snap-margin", "1px 2px 3px", "1px 2px 3px", { top: "1px", left: "2px", right: "2px", bottom: "3px" }); > testComputedScrollSnapRule("four lengths", "scroll-snap-margin", "50px 10px 20px 50px", "50px 10px 20px 50px", { top: "50px", left: "50px", right: "10px", bottom: "20px" }); >-testComputedScrollSnapRule("various units", "scroll-snap-margin", "1em 5mm 2in 4cm", "16px 18.89763832092285px 192px 151.1811065673828px", { top: "16px", left: "151.1811065673828px", right: "18.89763832092285px", bottom: "192px" }); >+testComputedScrollSnapRule("various units", "scroll-snap-margin", "1em 5mm 2in 4cm", "16px 18.897638px 192px 151.181107px", { top: "16px", left: "151.181107px", right: "18.897638px", bottom: "192px" }); > testComputedScrollSnapRule("subpixel values", "scroll-snap-margin", "10.4375px 6.5px", "10.4375px 6.5px", { top: "10.4375px", left: "6.5px", right: "6.5px", bottom: "10.4375px" }); > > successfullyParsed = true; >diff --git a/LayoutTests/fast/css/calc-parsing-expected.txt b/LayoutTests/fast/css/calc-parsing-expected.txt >index 01a3ad6b91c7d684b22bee59682721dad82ec9cc..aa521b4dcb12917aedba26f4e5dff4c5f4d34de8 100644 >--- a/LayoutTests/fast/css/calc-parsing-expected.txt >+++ b/LayoutTests/fast/css/calc-parsing-expected.txt >@@ -65,7 +65,7 @@ PASS element.style['width'] is "calc(1000px)" > PASS getComputedStyle(element).getPropertyValue('width') is "1000px" > > element.style["width"] = "calc(1px * sqrt(999))" >-PASS element.style['width'] is "calc(31.606961258558215px)" >+PASS element.style['width'] is "calc(31.606961px)" > PASS getComputedStyle(element).getPropertyValue('width') is "31.59375px" > > element.style["width"] = "calc(1px * pow(2, sqrt(100))" >@@ -73,7 +73,7 @@ PASS element.style['width'] is "calc(1024px)" > PASS getComputedStyle(element).getPropertyValue('width') is "1024px" > > element.style["width"] = "hypot(4px, 5px, 7px, 9px)" >-PASS element.style['width'] is "hypot(13.076696830622021px)" >+PASS element.style['width'] is "hypot(13.076697px)" > PASS getComputedStyle(element).getPropertyValue('width') is "13.0625px" > > element.style["width"] = "hypot(3px, 4px)" >@@ -325,16 +325,16 @@ PASS element.style['min-width'] is "calc(1000px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "1000px" > > element.style["min-width"] = "calc(1px * sqrt(999))" >-PASS element.style['min-width'] is "calc(31.606961258558215px)" >-PASS getComputedStyle(element).getPropertyValue('min-width') is "31.606962203979492px" >+PASS element.style['min-width'] is "calc(31.606961px)" >+PASS getComputedStyle(element).getPropertyValue('min-width') is "31.606962px" > > element.style["min-width"] = "calc(1px * pow(2, sqrt(100))" > PASS element.style['min-width'] is "calc(1024px)" > PASS getComputedStyle(element).getPropertyValue('min-width') is "1024px" > > element.style["min-width"] = "hypot(4px, 5px, 7px, 9px)" >-PASS element.style['min-width'] is "hypot(13.076696830622021px)" >-PASS getComputedStyle(element).getPropertyValue('min-width') is "13.076696395874023px" >+PASS element.style['min-width'] is "hypot(13.076697px)" >+PASS getComputedStyle(element).getPropertyValue('min-width') is "13.076696px" > > element.style["min-width"] = "hypot(3px, 4px)" > PASS element.style['min-width'] is "hypot(5px)" >diff --git a/LayoutTests/fast/css/calc-parsing-limits-expected.txt b/LayoutTests/fast/css/calc-parsing-limits-expected.txt >index 230808cdaeff8335582fb031978c717fc4f17ec8..74ff0728f3524c199e1328a0940b834efe7b0cf3 100644 >--- a/LayoutTests/fast/css/calc-parsing-limits-expected.txt >+++ b/LayoutTests/fast/css/calc-parsing-limits-expected.txt >@@ -17,7 +17,7 @@ PASS testDiv.style['width'] is "calc(898px)" > PASS window.getComputedStyle(testDiv).getPropertyValue('width') is "898px" > > testDiv.style["width"] = "calc( 1000px / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01)" >-PASS testDiv.style['width'] is "calc(362.42644086767854px)" >+PASS testDiv.style['width'] is "calc(362.426441px)" > PASS window.getComputedStyle(testDiv).getPropertyValue('width') is "362.421875px" > PASS successfullyParsed is true > >diff --git a/LayoutTests/fast/css/calc-parsing-limits.html b/LayoutTests/fast/css/calc-parsing-limits.html >index 0bfb38a199c21011ef1264f8ce8d8b76a387b960..7abc7f5a7b8124c127d02419ca17fdae2e610b6d 100644 >--- a/LayoutTests/fast/css/calc-parsing-limits.html >+++ b/LayoutTests/fast/css/calc-parsing-limits.html >@@ -55,7 +55,7 @@ > testExpression(calcWithNestedParens('100px', 102), '999px', '999px'); > > testExpression(calcWithManySubtractions('1000px', '1px', 102), 'calc(898px)', '898px'); >- testExpression(calcWithManyDivisions('1000px', '1.01', 102), 'calc(362.42644086767854px)', '362.421875px'); >+ testExpression(calcWithManyDivisions('1000px', '1.01', 102), 'calc(362.426441px)', '362.421875px'); > </script> > <script src="../../resources/js-test-post.js"></script> > </body> >diff --git a/LayoutTests/fast/css/calc-parsing.html b/LayoutTests/fast/css/calc-parsing.html >index bc7c54ca89aa16f169af1968f710c6a37d29afbb..5bfbaebaae9dafead2e2c047867488826403d8f2 100644 >--- a/LayoutTests/fast/css/calc-parsing.html >+++ b/LayoutTests/fast/css/calc-parsing.html >@@ -45,9 +45,9 @@ > testExpression('calc(100px * pow(2, pow(2, 2)))', 'calc(1600px)', '1600px'); > testExpression('calc(1px * pow(2, 3))', 'calc(8px)', '8px') > testExpression('calc(100px * sqrt(100))', 'calc(1000px)', '1000px'); >- testExpression('calc(1px * sqrt(999))', 'calc(31.606961258558215px)', propertyName == 'width' ? '31.59375px' : '31.606962203979492px'); >+ testExpression('calc(1px * sqrt(999))', 'calc(31.606961px)', propertyName == 'width' ? '31.59375px' : '31.606962px'); > testExpression('calc(1px * pow(2, sqrt(100))', 'calc(1024px)', '1024px'); >- testExpression('hypot(4px, 5px, 7px, 9px)', 'hypot(13.076696830622021px)', propertyName == 'width' ? '13.0625px' : '13.076696395874023px'); >+ testExpression('hypot(4px, 5px, 7px, 9px)', 'hypot(13.076697px)', propertyName == 'width' ? '13.0625px' : '13.076696px'); > testExpression('hypot(3px, 4px)', 'hypot(5px)', '5px'); > testExpression('calc(100px * hypot(3, 4))', 'calc(500px)', '500px'); > testExpression('hypot(-5px)', 'hypot(5px)', '5px'); >diff --git a/LayoutTests/fast/css/calc-with-angle-time-frequency-expected.txt b/LayoutTests/fast/css/calc-with-angle-time-frequency-expected.txt >index 73b1edfe5b5d8891ccaeeeef5ae4201901a06283..453fa454611bfdebd8e08b50e2f06f6d04c01269 100644 >--- a/LayoutTests/fast/css/calc-with-angle-time-frequency-expected.txt >+++ b/LayoutTests/fast/css/calc-with-angle-time-frequency-expected.txt >@@ -7,8 +7,8 @@ testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300deg/2))' > PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(150deg))" > PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(150deg)" > testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300rad/2))' >-PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(8594.366926962348deg))" >-PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(8594.366926962348deg)" >+PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(8594.366927deg))" >+PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(8594.366927deg)" > testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300grad/2))' > PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(135deg))" > PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(135deg)" >diff --git a/LayoutTests/fast/css/calc-with-angle-time-frequency.html b/LayoutTests/fast/css/calc-with-angle-time-frequency.html >index 49136ef4bcc5975d2de3d9ccade84f88b3898a38..6941a6b581e03cb427c73a2e02d9ce3a492a485b 100644 >--- a/LayoutTests/fast/css/calc-with-angle-time-frequency.html >+++ b/LayoutTests/fast/css/calc-with-angle-time-frequency.html >@@ -14,8 +14,8 @@ > shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(150deg)"); > > evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300rad/2))'"); >- shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(8594.366926962348deg))"); >- shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(8594.366926962348deg)"); >+ shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(8594.366927deg))"); >+ shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(8594.366927deg)"); > > evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300grad/2))'"); > shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(135deg))"); >diff --git a/LayoutTests/fast/css/large-value-csstext-expected.txt b/LayoutTests/fast/css/large-value-csstext-expected.txt >index 63f49f63d5a430b3f83186ccdaf6422fdd342841..ce3870b98cb541c9b368b5671e857ac2e1446201 100644 >--- a/LayoutTests/fast/css/large-value-csstext-expected.txt >+++ b/LayoutTests/fast/css/large-value-csstext-expected.txt >@@ -1,4 +1,4 @@ > This test should not crash. > >-1e+254% >-9e-249% >+99999999999999993635870693776759177364257073275700735648394407233581562780527075488933869945869475779810351826094056924551506641653143357437722624094200055601817197027212385681288624374039982763538319739206631507774359582937997162411679696940490282762240% >+0% >diff --git a/LayoutTests/fast/css/line-height-get-computed-style-expected.txt b/LayoutTests/fast/css/line-height-get-computed-style-expected.txt >index f7a2726e2cecee2a880b500b05a86dcf299c3ade..7b1f33a0162a07cdd0c72b0bf0b86d1e74e99636 100644 >--- a/LayoutTests/fast/css/line-height-get-computed-style-expected.txt >+++ b/LayoutTests/fast/css/line-height-get-computed-style-expected.txt >@@ -1,13 +1,13 @@ > >-PASS with font-size: 10px, #target.style['line-height'] = 1e+26 should result in a used line-height of 9.999999146971785e+26px >-PASS with font-size: 10px, #target.style['line-height'] = 2.53821 should result in a used line-height of 25.382099151611328px >-PASS with font-size: 10px, #target.style['line-height'] = 2.6666667 should result in a used line-height of 26.666664123535156px >-PASS with font-size: 10px, #target.style['line-height'] = 2.123456789123457 should result in a used line-height of 21.234567642211914px >+PASS with font-size: 10px, #target.style['line-height'] = 1e+26 should result in a used line-height of 999999914697178458896728064px >+PASS with font-size: 10px, #target.style['line-height'] = 2.53821 should result in a used line-height of 25.382099px >+PASS with font-size: 10px, #target.style['line-height'] = 2.6666667 should result in a used line-height of 26.666664px >+PASS with font-size: 10px, #target.style['line-height'] = 2.123456789123457 should result in a used line-height of 21.234568px > PASS with font-size: 10px, #target.style['line-height'] = 2.5 should result in a used line-height of 25px > PASS with font-size: 10px, #target.style['line-height'] = 2 should result in a used line-height of 20px > PASS with font-size: 10px, #target.style['line-height'] = 1.05 should result in a used line-height of 10.5px >-PASS with font-size: 10px, #target.style['line-height'] = 1.049 should result in a used line-height of 10.489999771118164px >-PASS with font-size: 10px, #target.style['line-height'] = 1.0491 should result in a used line-height of 10.49100112915039px >+PASS with font-size: 10px, #target.style['line-height'] = 1.049 should result in a used line-height of 10.49px >+PASS with font-size: 10px, #target.style['line-height'] = 1.0491 should result in a used line-height of 10.491001px > PASS with font-size: 10px, #target.style['line-height'] = 0 should result in a used line-height of 0px > PASS with font-size: 10px, #target.style['line-height'] = 1 should result in a used line-height of 10px > >diff --git a/LayoutTests/fast/css/line-height-get-computed-style.html b/LayoutTests/fast/css/line-height-get-computed-style.html >index 1c5e5d7a471ec646847d280828100e08965113ff..1b65fcaef0e1738d25774cf15c3573ac0d63e13a 100644 >--- a/LayoutTests/fast/css/line-height-get-computed-style.html >+++ b/LayoutTests/fast/css/line-height-get-computed-style.html >@@ -23,21 +23,18 @@ > }, `with font-size: 10px, #target.style['line-height'] = ${line_height_percent} should result in a used line-height of ${expected_line_height}`) > } > >- // Per spec, CSS numbers shouldn't serialize with exponents. When the following bug is fixed, this expectation will >- // need to be updated. https://bugs.webkit.org/show_bug.cgi?id=218880 >- test_line_height(1e+26, '9.999999146971785e+26px') >+ test_line_height(1e+26, '999999914697178458896728064px') > >- // Per spec, CSS numbers shouldn't serialize with more than 6 digits. When the following bug is fixed, the >- // offending expectations below will need to be updated. https://bugs.webkit.org/show_bug.cgi?id=218880 >- test_line_height(2.53821, '25.382099151611328px') >- test_line_height(2.6666667, '26.666664123535156px') >+ // Per spec, CSS numbers shouldn't serialize with more than 6 decimal places. >+ test_line_height(2.53821, '25.382099px') >+ test_line_height(2.6666667, '26.666664px') > // 20 decimals. >- test_line_height(2.12345678912345678912, '21.234567642211914px') >+ test_line_height(2.12345678912345678912, '21.234568px') > test_line_height(2.5, '25px') > test_line_height(2, '20px') > test_line_height(1.05, '10.5px') >- test_line_height(1.049, '10.489999771118164px') >- test_line_height(1.0491, '10.49100112915039px') >+ test_line_height(1.049, '10.49px') >+ test_line_height(1.0491, '10.491001px') > test_line_height(0, '0px') > test_line_height(1, '10px') > >diff --git a/LayoutTests/fast/css/parsing-stroke-width-expected.txt b/LayoutTests/fast/css/parsing-stroke-width-expected.txt >index a58e3a9a0c8d1eb55a72baf24094ff99b21869d8..9a46aa752019050b32ee0c43f990f1e4d96d3b26 100644 >--- a/LayoutTests/fast/css/parsing-stroke-width-expected.txt >+++ b/LayoutTests/fast/css/parsing-stroke-width-expected.txt >@@ -4,7 +4,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > > > PASS testComputedStyleInherited("stroke-width: 4px;") is "4px" >-FAIL testComputedStyleInherited("stroke-width: 0.01em;") should be 0.01em. Was 0.1599999964237213px. >+FAIL testComputedStyleInherited("stroke-width: 0.01em;") should be 0.01em. Was 0.16px. > PASS testComputedStyleInherited("stroke-width: 10%;") is "10%" > PASS testComputedStyle(";") is "1px" > PASS test("stroke-width: 4px;") is "4px" >diff --git a/LayoutTests/fast/css/round-trip-values-expected.txt b/LayoutTests/fast/css/round-trip-values-expected.txt >index 52111ea6dbb9694510e956f4375295cb6aa9142b..e71406367373fbdb137e6e2e7df34b41d34ee084 100644 >--- a/LayoutTests/fast/css/round-trip-values-expected.txt >+++ b/LayoutTests/fast/css/round-trip-values-expected.txt >@@ -4,24 +4,24 @@ Basic floats > '0.0001' 0.0001 pass > 0.0001 0.0001 pass > '123456.123456' 123456.123456 pass >-'1234567.1234567' 1234567.1234567 pass >-'12345678.12345678' 12345678.12345678 pass >+'1234567.1234567' 1234567.123457 pass >+'12345678.12345678' 12345678.123457 pass > Trailing zeros > '0.00100000' 0.001 pass >-'0.001000001' 0.001000001 pass >-'0.12345000001' 0.12345000001 pass >-'0.12304567' 0.12304567 pass >-'0.12340567' 0.12340567 pass >-'0.12345067' 0.12345067 pass >-'0.12345607' 0.12345607 pass >-'0.12345670' 0.1234567 pass >+'0.001000001' 0.001 pass >+'0.12345000001' 0.12345 pass >+'0.12304567' 0.123046 pass >+'0.12340567' 0.123406 pass >+'0.12345067' 0.123451 pass >+'0.12345607' 0.123456 pass >+'0.12345670' 0.123457 pass > Repeating decimals >-1/3 0.3333333333333333 pass >-123 + 1/3 123.33333333333333 pass >-13/99 0.13131313131313133 pass >-123 + 13/99 123.13131313131314 pass >-100/999 0.1001001001001001 pass >-123 + 100/999 123.10010010010011 pass >+1/3 0.333333 pass >+123 + 1/3 123.333333 pass >+13/99 0.131313 pass >+123 + 13/99 123.131313 pass >+100/999 0.1001 pass >+123 + 100/999 123.1001 pass > Large numbers > 12345678 12345678 pass > 123456789 123456789 pass >@@ -37,8 +37,8 @@ Weird numbers > Number.NaN 12345678901234568 pass > 1/0 12345678901234568 pass > Math.sqrt(-1) 12345678901234568 pass >-1/0.9999 1.000100010001 pass >-1/0.99999 1.000010000100001 pass >-1/0.999999 1.000001000001 pass >-1/0.9999999 1.00000010000001 pass >-1/0.99999999 1.0000000100000002 pass >+1/0.9999 1.0001 pass >+1/0.99999 1.00001 pass >+1/0.999999 1.000001 pass >+1/0.9999999 1 pass >+1/0.99999999 1 pass >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-006-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-006-expected.txt >index 162122eac9891b587471b8e02d30708a117e3d2a..216ea761594aa50315bb9dfcf17ad758816e0edb 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-006-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-006-expected.txt >@@ -1,3 +1,3 @@ > >-FAIL The revert keyword works with @keyframes assert_equals: expected "21.440000534057617px" but got "0px" >+FAIL The revert keyword works with @keyframes assert_equals: expected "21.440001px" but got "0px" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-007-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-007-expected.txt >index ac1f1144584f1b118137d019663e2b12dc7bae08..acecd356079e81032c19d48d5be2e5b9c580497d 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-007-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-007-expected.txt >@@ -1,3 +1,3 @@ > >-FAIL A @keyframe animation with revert works when applied to multiple identical elements assert_equals: expected "21.440000534057617px" but got "0px" >+FAIL A @keyframe animation with revert works when applied to multiple identical elements assert_equals: expected "21.440001px" but got "0px" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt >index 9d8aa867989e3760e17e53c64171cd07f8c38045..9b966d1b428221a4bb50f5f8644c6d2fddea85bf 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt >@@ -1,6 +1,6 @@ > >-FAIL cubic-bezier easing with input progress greater than 1 assert_approx_equals: The left of the animation should be approximately 98.8706654939602 at 230ms expected 98.8706654939602 +/- 0.01 but got 98.89859008789062 >-FAIL cubic-bezier easing with input progress greater than 1 and where the tangent on the upper boundary is infinity assert_approx_equals: The left of the animation should be approximately 106.31755608768113 at 230ms expected 106.31755608768113 +/- 0.01 but got 106.3595962524414 >-FAIL cubic-bezier easing with input progress less than 0 assert_approx_equals: The left of the animation should be approximately -16.589193103032184 at 10ms expected -16.589193103032184 +/- 0.01 but got -17.50836753845215 >-FAIL cubic-bezier easing with input progress less than 0 and where the tangent on the lower boundary is infinity assert_approx_equals: The left of the animation should be approximately 0 at 300ms expected 0 +/- 0.01 but got 512.0774536132812 >+FAIL cubic-bezier easing with input progress greater than 1 assert_approx_equals: The left of the animation should be approximately 98.8706654939602 at 230ms expected 98.8706654939602 +/- 0.01 but got 98.89859 >+FAIL cubic-bezier easing with input progress greater than 1 and where the tangent on the upper boundary is infinity assert_approx_equals: The left of the animation should be approximately 106.31755608768113 at 230ms expected 106.31755608768113 +/- 0.01 but got 106.359596 >+FAIL cubic-bezier easing with input progress less than 0 assert_approx_equals: The left of the animation should be approximately -16.589193103032184 at 10ms expected -16.589193103032184 +/- 0.01 but got -17.508368 >+FAIL cubic-bezier easing with input progress less than 0 and where the tangent on the lower boundary is infinity assert_approx_equals: The left of the animation should be approximately 0 at 300ms expected 0 +/- 0.01 but got 512.077454 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt >index 83e046c01744a77c4c81b32a673a80f3da4a54ad..df6146bc25e59271b3cd88481d81a7810c8812c7 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt >@@ -7,9 +7,9 @@ PASS small-caption should be a supported system font. > PASS status-bar should be a supported system font. > FAIL Property font value 'xx-small serif' assert_equals: expected "9px serif" but got "normal normal normal normal 9px/normal serif" > FAIL Property font value 'normal medium/normal sans-serif' assert_equals: expected "16px sans-serif" but got "normal normal normal normal 16px/normal sans-serif" >-FAIL Property font value 'normal normal xx-large/1.2 cursive' assert_equals: expected "32px / 38.400001525878906px cursive" but got "normal normal normal normal 32px/38.400001525878906px cursive" >+FAIL Property font value 'normal normal xx-large/1.2 cursive' assert_equals: expected "32px / 38.400002px cursive" but got "normal normal normal normal 32px/38.400002px cursive" > FAIL Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy' assert_equals: expected "48px / normal fantasy" but got "normal normal normal normal 48px/normal fantasy" >-FAIL Property font value 'normal normal normal normal smaller monospace' assert_equals: expected "33.33333206176758px monospace" but got "normal normal normal normal 33.33333206176758px/normal monospace" >+FAIL Property font value 'normal normal normal normal smaller monospace' assert_equals: expected "33.333332px monospace" but got "normal normal normal normal 33.333332px/normal monospace" > FAIL Property font value 'normal normal normal italic 10px/normal Menu' assert_true: 'normal normal normal italic 10px/normal Menu' is a supported value for font. expected true got false > FAIL Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_true: 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' is a supported value for font. expected true got false > FAIL Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false >@@ -25,7 +25,7 @@ FAIL Property font value 'normal normal small-caps italic xx-small cursive' asse > FAIL Property font value 'normal normal small-caps lighter medium/normal fantasy' assert_true: 'normal normal small-caps lighter medium/normal fantasy' is a supported value for font. expected true got false > FAIL Property font value 'normal normal small-caps condensed xx-large/1.2 monospace' assert_true: 'normal normal small-caps condensed xx-large/1.2 monospace' is a supported value for font. expected true got false > FAIL Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu' assert_equals: expected "100 48px / normal Menu" but got "normal normal 100 normal 48px/normal Menu" >-FAIL Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' assert_equals: expected "900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal normal 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' assert_equals: expected "900 33.333332px \"Non-Generic Example Family Name\"" but got "normal normal 900 normal 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'normal normal bold italic 10px/normal serif' assert_true: 'normal normal bold italic 10px/normal serif' is a supported value for font. expected true got false > FAIL Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif' assert_true: 'normal normal bolder small-caps 20%/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "700 semi-condensed 0px / normal cursive" but got "normal normal bold semi-condensed 0px/normal cursive" >@@ -33,7 +33,7 @@ FAIL Property font value 'normal normal semi-expanded xx-small fantasy' assert_e > FAIL Property font value 'normal normal expanded normal medium/normal monospace' assert_equals: expected "expanded 13px monospace" but got "normal normal normal expanded 13px/normal monospace" > FAIL Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu' assert_true: 'normal normal extra-expanded italic xx-large/1.2 Menu' is a supported value for font. expected true got false > FAIL Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false >-FAIL Property font value 'normal normal ultra-condensed 100 smaller serif' assert_equals: expected "100 ultra-condensed 33.33333206176758px serif" but got "normal normal 100 ultra-condensed 33.33333206176758px/normal serif" >+FAIL Property font value 'normal normal ultra-condensed 100 smaller serif' assert_equals: expected "100 ultra-condensed 33.333332px serif" but got "normal normal 100 ultra-condensed 33.333332px/normal serif" > FAIL Property font value 'normal italic 10px/normal sans-serif' assert_true: 'normal italic 10px/normal sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'normal italic normal 20%/1.2 cursive' assert_true: 'normal italic normal 20%/1.2 cursive' is a supported value for font. expected true got false > FAIL Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_true: 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false >@@ -57,39 +57,39 @@ FAIL Property font value 'normal small-caps normal xx-small "Non-Generic Example > FAIL Property font value 'normal small-caps normal normal medium/normal serif' assert_equals: expected "small-caps 16px serif" but got "normal small-caps normal normal 16px/normal serif" > FAIL Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif' assert_true: 'normal small-caps normal italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' assert_true: 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' is a supported value for font. expected true got false >-FAIL Property font value 'normal small-caps normal ultra-condensed smaller fantasy' assert_equals: expected "small-caps ultra-condensed 33.33333206176758px fantasy" but got "normal small-caps normal ultra-condensed 33.33333206176758px/normal fantasy" >+FAIL Property font value 'normal small-caps normal ultra-condensed smaller fantasy' assert_equals: expected "small-caps ultra-condensed 33.333332px fantasy" but got "normal small-caps normal ultra-condensed 33.333332px/normal fantasy" > FAIL Property font value 'normal small-caps italic 10px/normal monospace' assert_true: 'normal small-caps italic 10px/normal monospace' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps italic normal 20%/1.2 Menu' assert_true: 'normal small-caps italic normal 20%/1.2 Menu' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps italic extra-condensed xx-small serif' assert_true: 'normal small-caps italic extra-condensed xx-small serif' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps 100 medium/normal sans-serif' assert_equals: expected "small-caps 100 16px sans-serif" but got "normal small-caps 100 normal 16px/normal sans-serif" >-FAIL Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' assert_equals: expected "small-caps 900 32px / 38.400001525878906px cursive" but got "normal small-caps 900 normal 32px/38.400001525878906px cursive" >+FAIL Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' assert_equals: expected "small-caps 900 32px / 38.400002px cursive" but got "normal small-caps 900 normal 32px/38.400002px cursive" > FAIL Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' assert_true: 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false >-FAIL Property font value 'normal small-caps bolder condensed smaller monospace' assert_equals: expected "small-caps 900 condensed 33.33333206176758px monospace" but got "normal small-caps 900 condensed 33.33333206176758px/normal monospace" >+FAIL Property font value 'normal small-caps bolder condensed smaller monospace' assert_equals: expected "small-caps 900 condensed 33.333332px monospace" but got "normal small-caps 900 condensed 33.333332px/normal monospace" > FAIL Property font value 'normal small-caps semi-condensed 10px/normal Menu' assert_equals: expected "small-caps semi-condensed 10px Menu" but got "normal small-caps normal semi-condensed 10px/normal Menu" >-FAIL Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps semi-expanded 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "normal small-caps normal semi-expanded 8px/9.600000381469727px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps semi-expanded 8px / 9.6px \"Non-Generic Example Family Name\"" but got "normal small-caps normal semi-expanded 8px/9.6px \"Non-Generic Example Family Name\"" > FAIL Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false > FAIL Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif' assert_equals: expected "small-caps 700 extra-expanded 9px sans-serif" but got "normal small-caps bold extra-expanded 9px/normal sans-serif" > FAIL Property font value 'normal 100 medium/normal cursive' assert_equals: expected "100 16px cursive" but got "normal normal 100 normal 16px/normal cursive" >-FAIL Property font value 'normal 900 normal xx-large/1.2 fantasy' assert_equals: expected "900 32px / 38.400001525878906px fantasy" but got "normal normal 900 normal 32px/38.400001525878906px fantasy" >+FAIL Property font value 'normal 900 normal xx-large/1.2 fantasy' assert_equals: expected "900 32px / 38.400002px fantasy" but got "normal normal 900 normal 32px/38.400002px fantasy" > FAIL Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace' assert_equals: expected "700 48px / normal monospace" but got "normal normal bold normal 48px/normal monospace" > FAIL Property font value 'normal bolder normal italic smaller Menu' assert_true: 'normal bolder normal italic smaller Menu' is a supported value for font. expected true got false > FAIL Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' assert_true: 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false >-FAIL Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' assert_equals: expected "100 ultra-expanded 8px / 9.600000381469727px serif" but got "normal normal 100 ultra-expanded 8px/9.600000381469727px serif" >+FAIL Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' assert_equals: expected "100 ultra-expanded 8px / 9.6px serif" but got "normal normal 100 ultra-expanded 8px/9.6px serif" > FAIL Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_true: 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'normal bold italic normal xx-small cursive' assert_true: 'normal bold italic normal xx-small cursive' is a supported value for font. expected true got false > FAIL Property font value 'normal bolder italic small-caps medium/normal fantasy' assert_true: 'normal bolder italic small-caps medium/normal fantasy' is a supported value for font. expected true got false > FAIL Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace' assert_true: 'normal lighter italic ultra-condensed xx-large/1.2 monospace' is a supported value for font. expected true got false > FAIL Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 100 48px / normal Menu" but got "normal small-caps 100 normal 48px/normal Menu" >-FAIL Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 33.333332px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'normal bold small-caps italic 10px/normal serif' assert_true: 'normal bold small-caps italic 10px/normal serif' is a supported value for font. expected true got false >-FAIL Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal small-caps 900 extra-condensed 8px/9.600000381469727px sans-serif" >+FAIL Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.6px sans-serif" but got "normal small-caps 900 extra-condensed 8px/9.6px sans-serif" > FAIL Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "700 condensed 0px / normal cursive" but got "normal normal bold condensed 0px/normal cursive" > FAIL Property font value 'normal 100 semi-condensed normal xx-small fantasy' assert_equals: expected "100 semi-condensed 9px fantasy" but got "normal normal 100 semi-condensed 9px/normal fantasy" > FAIL Property font value 'normal 900 semi-expanded italic medium/normal monospace' assert_true: 'normal 900 semi-expanded italic medium/normal monospace' is a supported value for font. expected true got false >-FAIL Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 700 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps bold expanded 32px/38.400001525878906px Menu" >+FAIL Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 700 expanded 32px / 38.400002px Menu" but got "normal small-caps bold expanded 32px/38.400002px Menu" > FAIL Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal normal normal extra-expanded 48px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'normal ultra-expanded normal smaller serif' assert_equals: expected "ultra-expanded 33.33333206176758px serif" but got "normal normal normal ultra-expanded 33.33333206176758px/normal serif" >+FAIL Property font value 'normal ultra-expanded normal smaller serif' assert_equals: expected "ultra-expanded 33.333332px serif" but got "normal normal normal ultra-expanded 33.333332px/normal serif" > FAIL Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif' assert_equals: expected "ultra-condensed 10px sans-serif" but got "normal normal normal ultra-condensed 10px/normal sans-serif" > FAIL Property font value 'normal extra-condensed normal italic 20%/1.2 cursive' assert_true: 'normal extra-condensed normal italic 20%/1.2 cursive' is a supported value for font. expected true got false > FAIL Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_true: 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false >@@ -99,15 +99,15 @@ FAIL Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generi > FAIL Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' assert_true: 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' is a supported value for font. expected true got false > FAIL Property font value 'normal ultra-expanded italic lighter smaller sans-serif' assert_true: 'normal ultra-expanded italic lighter smaller sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'normal ultra-condensed small-caps 10px/normal cursive' assert_equals: expected "small-caps ultra-condensed 10px cursive" but got "normal small-caps normal ultra-condensed 10px/normal cursive" >-FAIL Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' assert_equals: expected "small-caps extra-condensed 8px / 9.600000381469727px fantasy" but got "normal small-caps normal extra-condensed 8px/9.600000381469727px fantasy" >+FAIL Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' assert_equals: expected "small-caps extra-condensed 8px / 9.6px fantasy" but got "normal small-caps normal extra-condensed 8px/9.6px fantasy" > FAIL Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_true: 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' is a supported value for font. expected true got false > FAIL Property font value 'normal semi-condensed small-caps 100 xx-small Menu' assert_equals: expected "small-caps 100 semi-condensed 9px Menu" but got "normal small-caps 100 semi-condensed 9px/normal Menu" > FAIL Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"' assert_equals: expected "900 semi-expanded 16px \"Non-Generic Example Family Name\"" but got "normal normal 900 semi-expanded 16px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'normal expanded bold normal xx-large/1.2 serif' assert_equals: expected "700 expanded 32px / 38.400001525878906px serif" but got "normal normal bold expanded 32px/38.400001525878906px serif" >+FAIL Property font value 'normal expanded bold normal xx-large/1.2 serif' assert_equals: expected "700 expanded 32px / 38.400002px serif" but got "normal normal bold expanded 32px/38.400002px serif" > FAIL Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' assert_true: 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false >-FAIL Property font value 'normal ultra-expanded lighter small-caps smaller cursive' assert_equals: expected "small-caps 700 ultra-expanded 33.33333206176758px cursive" but got "normal small-caps bold ultra-expanded 33.33333206176758px/normal cursive" >+FAIL Property font value 'normal ultra-expanded lighter small-caps smaller cursive' assert_equals: expected "small-caps 700 ultra-expanded 33.333332px cursive" but got "normal small-caps bold ultra-expanded 33.333332px/normal cursive" > FAIL Property font value 'italic 10px/normal fantasy' assert_equals: expected "italic 10px fantasy" but got "italic normal normal normal 10px/normal fantasy" >-FAIL Property font value 'italic normal 20%/1.2 monospace' assert_equals: expected "italic 8px / 9.600000381469727px monospace" but got "italic normal normal normal 8px/9.600000381469727px monospace" >+FAIL Property font value 'italic normal 20%/1.2 monospace' assert_equals: expected "italic 8px / 9.6px monospace" but got "italic normal normal normal 8px/9.6px monospace" > FAIL Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "italic 0px / normal Menu" but got "italic normal normal normal 0px/normal Menu" > FAIL Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"' assert_equals: expected "italic 9px \"Non-Generic Example Family Name\"" but got "italic normal normal normal 9px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'italic normal normal small-caps medium/normal serif' assert_true: 'italic normal normal small-caps medium/normal serif' is a supported value for font. expected true got false >@@ -121,47 +121,47 @@ FAIL Property font value 'italic normal bold xx-small serif' assert_equals: expe > FAIL Property font value 'italic normal bolder normal medium/normal sans-serif' assert_equals: expected "italic 900 16px sans-serif" but got "italic normal 900 normal 16px/normal sans-serif" > FAIL Property font value 'italic normal lighter small-caps xx-large/1.2 cursive' assert_true: 'italic normal lighter small-caps xx-large/1.2 cursive' is a supported value for font. expected true got false > FAIL Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy' assert_equals: expected "italic 100 condensed 48px / normal fantasy" but got "italic normal 100 condensed 48px/normal fantasy" >-FAIL Property font value 'italic normal semi-condensed smaller monospace' assert_equals: expected "italic semi-condensed 33.33333206176758px monospace" but got "italic normal normal semi-condensed 33.33333206176758px/normal monospace" >+FAIL Property font value 'italic normal semi-condensed smaller monospace' assert_equals: expected "italic semi-condensed 33.333332px monospace" but got "italic normal normal semi-condensed 33.333332px/normal monospace" > FAIL Property font value 'italic normal semi-expanded normal 10px/normal Menu' assert_equals: expected "italic semi-expanded 10px Menu" but got "italic normal normal semi-expanded 10px/normal Menu" > FAIL Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_true: 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' is a supported value for font. expected true got false > FAIL Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "italic 900 extra-expanded 0px / normal serif" but got "italic normal 900 extra-expanded 0px/normal serif" > FAIL Property font value 'italic small-caps xx-small sans-serif' assert_equals: expected "italic small-caps 9px sans-serif" but got "italic small-caps normal normal 9px/normal sans-serif" > FAIL Property font value 'italic small-caps normal medium/normal cursive' assert_equals: expected "italic small-caps 16px cursive" but got "italic small-caps normal normal 16px/normal cursive" >-FAIL Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 32px / 38.400001525878906px fantasy" but got "italic small-caps normal normal 32px/38.400001525878906px fantasy" >+FAIL Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 32px / 38.400002px fantasy" but got "italic small-caps normal normal 32px/38.400002px fantasy" > FAIL Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' assert_true: 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' is a supported value for font. expected true got false >-FAIL Property font value 'italic small-caps normal ultra-expanded smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px Menu" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal Menu" >+FAIL Property font value 'italic small-caps normal ultra-expanded smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.333332px Menu" but got "italic small-caps normal ultra-expanded 33.333332px/normal Menu" > FAIL Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 10px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 10px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'italic small-caps lighter normal 20%/1.2 serif' assert_equals: expected "italic small-caps 700 8px / 9.600000381469727px serif" but got "italic small-caps bold normal 8px/9.600000381469727px serif" >+FAIL Property font value 'italic small-caps lighter normal 20%/1.2 serif' assert_equals: expected "italic small-caps 700 8px / 9.6px serif" but got "italic small-caps bold normal 8px/9.6px serif" > FAIL Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "italic small-caps 100 ultra-condensed 0px / normal sans-serif" but got "italic small-caps 100 ultra-condensed 0px/normal sans-serif" > FAIL Property font value 'italic small-caps extra-condensed xx-small cursive' assert_equals: expected "italic small-caps extra-condensed 9px cursive" but got "italic small-caps normal extra-condensed 9px/normal cursive" > FAIL Property font value 'italic small-caps condensed normal medium/normal fantasy' assert_equals: expected "italic small-caps condensed 16px fantasy" but got "italic small-caps normal condensed 16px/normal fantasy" >-FAIL Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 semi-condensed 26px / 31.200000762939453px monospace" but got "italic small-caps 900 semi-condensed 26px/31.200000762939453px monospace" >+FAIL Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 semi-condensed 26px / 31.200001px monospace" but got "italic small-caps 900 semi-condensed 26px/31.200001px monospace" > FAIL Property font value 'italic bold larger/calc(120% + 1.2em) Menu' assert_equals: expected "italic 700 48px / normal Menu" but got "italic normal bold normal 48px/normal Menu" >-FAIL Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' assert_equals: expected "italic 900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "italic normal 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' assert_equals: expected "italic 900 33.333332px \"Non-Generic Example Family Name\"" but got "italic normal 900 normal 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'italic lighter normal normal 10px/normal serif' assert_equals: expected "italic 700 10px serif" but got "italic normal bold normal 10px/normal serif" > FAIL Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif' assert_true: 'italic 100 normal small-caps 20%/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "italic 900 semi-expanded 0px / normal cursive" but got "italic normal 900 semi-expanded 0px/normal cursive" > FAIL Property font value 'italic bold small-caps xx-small fantasy' assert_equals: expected "italic small-caps 700 9px fantasy" but got "italic small-caps bold normal 9px/normal fantasy" > FAIL Property font value 'italic bolder small-caps normal medium/normal monospace' assert_equals: expected "italic small-caps 900 13px monospace" but got "italic small-caps 900 normal 13px/normal monospace" >-FAIL Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' assert_equals: expected "italic small-caps 700 expanded 32px / 38.400001525878906px Menu" but got "italic small-caps bold expanded 32px/38.400001525878906px Menu" >+FAIL Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' assert_equals: expected "italic small-caps 700 expanded 32px / 38.400002px Menu" but got "italic small-caps bold expanded 32px/38.400002px Menu" > FAIL Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "italic 100 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "italic normal 100 extra-expanded 48px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'italic 900 ultra-expanded normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.33333206176758px serif" but got "italic normal 900 ultra-expanded 33.33333206176758px/normal serif" >+FAIL Property font value 'italic 900 ultra-expanded normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.333332px serif" but got "italic normal 900 ultra-expanded 33.333332px/normal serif" > FAIL Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif' assert_equals: expected "italic small-caps 700 ultra-condensed 10px sans-serif" but got "italic small-caps bold ultra-condensed 10px/normal sans-serif" >-FAIL Property font value 'italic extra-condensed 20%/1.2 cursive' assert_equals: expected "italic extra-condensed 8px / 9.600000381469727px cursive" but got "italic normal normal extra-condensed 8px/9.600000381469727px cursive" >+FAIL Property font value 'italic extra-condensed 20%/1.2 cursive' assert_equals: expected "italic extra-condensed 8px / 9.6px cursive" but got "italic normal normal extra-condensed 8px/9.6px cursive" > FAIL Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "italic condensed 0px / normal fantasy" but got "italic normal normal condensed 0px/normal fantasy" > FAIL Property font value 'italic semi-condensed normal normal xx-small monospace' assert_equals: expected "italic semi-condensed 9px monospace" but got "italic normal normal semi-condensed 9px/normal monospace" > FAIL Property font value 'italic semi-expanded normal small-caps medium/normal Menu' assert_true: 'italic semi-expanded normal small-caps medium/normal Menu' is a supported value for font. expected true got false >-FAIL Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic 900 expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "italic normal 900 expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic 900 expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "italic normal 900 expanded 32px/38.400002px \"Non-Generic Example Family Name\"" > FAIL Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif' assert_equals: expected "italic small-caps extra-expanded 48px / normal serif" but got "italic small-caps normal extra-expanded 48px/normal serif" >-FAIL Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px sans-serif" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal sans-serif" >+FAIL Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' assert_equals: expected "italic small-caps ultra-expanded 33.333332px sans-serif" but got "italic small-caps normal ultra-expanded 33.333332px/normal sans-serif" > FAIL Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive' assert_equals: expected "italic small-caps 700 ultra-condensed 10px cursive" but got "italic small-caps bold ultra-condensed 10px/normal cursive" >-FAIL Property font value 'italic extra-condensed 100 20%/1.2 fantasy' assert_equals: expected "italic 100 extra-condensed 8px / 9.600000381469727px fantasy" but got "italic normal 100 extra-condensed 8px/9.600000381469727px fantasy" >+FAIL Property font value 'italic extra-condensed 100 20%/1.2 fantasy' assert_equals: expected "italic 100 extra-condensed 8px / 9.6px fantasy" but got "italic normal 100 extra-condensed 8px/9.6px fantasy" > FAIL Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "italic 900 condensed 0px / normal monospace" but got "italic normal 900 condensed 0px/normal monospace" > FAIL Property font value 'italic semi-condensed bold small-caps xx-small Menu' assert_equals: expected "italic small-caps 700 semi-condensed 9px Menu" but got "italic small-caps bold semi-condensed 9px/normal Menu" > FAIL Property font value 'small-caps medium/normal "Non-Generic Example Family Name"' assert_equals: expected "small-caps 16px \"Non-Generic Example Family Name\"" but got "normal small-caps normal normal 16px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'small-caps normal xx-large/1.2 serif' assert_equals: expected "small-caps 32px / 38.400001525878906px serif" but got "normal small-caps normal normal 32px/38.400001525878906px serif" >+FAIL Property font value 'small-caps normal xx-large/1.2 serif' assert_equals: expected "small-caps 32px / 38.400002px serif" but got "normal small-caps normal normal 32px/38.400002px serif" > FAIL Property font value 'small-caps normal normal larger/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 48px / normal sans-serif" but got "normal small-caps normal normal 48px/normal sans-serif" >-FAIL Property font value 'small-caps normal normal normal smaller cursive' assert_equals: expected "small-caps 33.33333206176758px cursive" but got "normal small-caps normal normal 33.33333206176758px/normal cursive" >+FAIL Property font value 'small-caps normal normal normal smaller cursive' assert_equals: expected "small-caps 33.333332px cursive" but got "normal small-caps normal normal 33.333332px/normal cursive" > FAIL Property font value 'small-caps normal normal italic 10px/normal fantasy' assert_true: 'small-caps normal normal italic 10px/normal fantasy' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal normal bolder 20%/1.2 monospace' assert_true: 'small-caps normal normal bolder 20%/1.2 monospace' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps semi-expanded 0px / normal Menu" but got "normal small-caps normal semi-expanded 0px/normal Menu" >@@ -169,7 +169,7 @@ FAIL Property font value 'small-caps normal italic xx-small "Non-Generic Example > FAIL Property font value 'small-caps normal italic normal medium/normal serif' assert_true: 'small-caps normal italic normal medium/normal serif' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif' assert_true: 'small-caps normal italic lighter xx-large/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' assert_true: 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' is a supported value for font. expected true got false >-FAIL Property font value 'small-caps normal 100 smaller fantasy' assert_equals: expected "small-caps 100 33.33333206176758px fantasy" but got "normal small-caps 100 normal 33.33333206176758px/normal fantasy" >+FAIL Property font value 'small-caps normal 100 smaller fantasy' assert_equals: expected "small-caps 100 33.333332px fantasy" but got "normal small-caps 100 normal 33.333332px/normal fantasy" > FAIL Property font value 'small-caps normal 900 normal 10px/normal monospace' assert_equals: expected "small-caps 900 10px monospace" but got "normal small-caps 900 normal 10px/normal monospace" > FAIL Property font value 'small-caps normal bold italic 20%/1.2 Menu' assert_true: 'small-caps normal bold italic 20%/1.2 Menu' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 extra-expanded 0px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps 900 extra-expanded 0px/normal \"Non-Generic Example Family Name\"" >@@ -177,41 +177,41 @@ FAIL Property font value 'small-caps normal ultra-expanded xx-small serif' asser > FAIL Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif' assert_equals: expected "small-caps ultra-condensed 16px sans-serif" but got "normal small-caps normal ultra-condensed 16px/normal sans-serif" > FAIL Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive' assert_true: 'small-caps normal extra-condensed italic xx-large/1.2 cursive' is a supported value for font. expected true got false > FAIL Property font value 'small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy' assert_equals: expected "small-caps 700 condensed 48px / normal fantasy" but got "normal small-caps bold condensed 48px/normal fantasy" >-FAIL Property font value 'small-caps italic smaller monospace' assert_equals: expected "italic small-caps 33.33333206176758px monospace" but got "italic small-caps normal normal 33.33333206176758px/normal monospace" >+FAIL Property font value 'small-caps italic smaller monospace' assert_equals: expected "italic small-caps 33.333332px monospace" but got "italic small-caps normal normal 33.333332px/normal monospace" > FAIL Property font value 'small-caps italic normal 10px/normal Menu' assert_equals: expected "italic small-caps 10px Menu" but got "italic small-caps normal normal 10px/normal Menu" >-FAIL Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps normal normal 8px/9.600000381469727px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps normal normal 8px/9.6px \"Non-Generic Example Family Name\"" > FAIL Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false > FAIL Property font value 'small-caps italic normal semi-condensed xx-small sans-serif' assert_equals: expected "italic small-caps semi-condensed 9px sans-serif" but got "italic small-caps normal semi-condensed 9px/normal sans-serif" > FAIL Property font value 'small-caps italic 900 medium/normal cursive' assert_equals: expected "italic small-caps 900 16px cursive" but got "italic small-caps 900 normal 16px/normal cursive" >-FAIL Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 700 32px / 38.400001525878906px fantasy" but got "italic small-caps bold normal 32px/38.400001525878906px fantasy" >+FAIL Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 700 32px / 38.400002px fantasy" but got "italic small-caps bold normal 32px/38.400002px fantasy" > FAIL Property font value 'small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace' assert_equals: expected "italic small-caps 900 semi-expanded 48px / normal monospace" but got "italic small-caps 900 semi-expanded 48px/normal monospace" >-FAIL Property font value 'small-caps italic expanded smaller Menu' assert_equals: expected "italic small-caps expanded 33.33333206176758px Menu" but got "italic small-caps normal expanded 33.33333206176758px/normal Menu" >+FAIL Property font value 'small-caps italic expanded smaller Menu' assert_equals: expected "italic small-caps expanded 33.333332px Menu" but got "italic small-caps normal expanded 33.333332px/normal Menu" > FAIL Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps extra-expanded 10px \"Non-Generic Example Family Name\"" but got "italic small-caps normal extra-expanded 10px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' assert_equals: expected "italic small-caps 700 ultra-expanded 8px / 9.600000381469727px serif" but got "italic small-caps bold ultra-expanded 8px/9.600000381469727px serif" >+FAIL Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' assert_equals: expected "italic small-caps 700 ultra-expanded 8px / 9.6px serif" but got "italic small-caps bold ultra-expanded 8px/9.6px serif" > FAIL Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 100 0px / normal sans-serif" but got "normal small-caps 100 normal 0px/normal sans-serif" > FAIL Property font value 'small-caps 900 normal xx-small cursive' assert_equals: expected "small-caps 900 9px cursive" but got "normal small-caps 900 normal 9px/normal cursive" > FAIL Property font value 'small-caps bold normal normal medium/normal fantasy' assert_equals: expected "small-caps 700 16px fantasy" but got "normal small-caps bold normal 16px/normal fantasy" > FAIL Property font value 'small-caps bolder normal italic xx-large/1.2 monospace' assert_true: 'small-caps bolder normal italic xx-large/1.2 monospace' is a supported value for font. expected true got false > FAIL Property font value 'small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 700 ultra-condensed 48px / normal Menu" but got "normal small-caps bold ultra-condensed 48px/normal Menu" >-FAIL Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 100 33.33333206176758px \"Non-Generic Example Family Name\"" but got "italic small-caps 100 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 100 33.333332px \"Non-Generic Example Family Name\"" but got "italic small-caps 100 normal 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'small-caps 900 italic normal 10px/normal serif' assert_equals: expected "italic small-caps 900 10px serif" but got "italic small-caps 900 normal 10px/normal serif" >-FAIL Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "italic small-caps bold extra-condensed 8px/9.600000381469727px sans-serif" >+FAIL Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.6px sans-serif" but got "italic small-caps bold extra-condensed 8px/9.6px sans-serif" > FAIL Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 900 condensed 0px / normal cursive" but got "normal small-caps 900 condensed 0px/normal cursive" > FAIL Property font value 'small-caps lighter semi-condensed normal xx-small fantasy' assert_equals: expected "small-caps 700 semi-condensed 9px fantasy" but got "normal small-caps bold semi-condensed 9px/normal fantasy" > FAIL Property font value 'small-caps 100 semi-expanded italic medium/normal monospace' assert_equals: expected "italic small-caps 100 semi-expanded 13px monospace" but got "italic small-caps 100 semi-expanded 13px/normal monospace" >-FAIL Property font value 'small-caps expanded xx-large/1.2 Menu' assert_equals: expected "small-caps expanded 32px / 38.400001525878906px Menu" but got "normal small-caps normal expanded 32px/38.400001525878906px Menu" >+FAIL Property font value 'small-caps expanded xx-large/1.2 Menu' assert_equals: expected "small-caps expanded 32px / 38.400002px Menu" but got "normal small-caps normal expanded 32px/38.400002px Menu" > FAIL Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps normal extra-expanded 48px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'small-caps ultra-expanded normal normal smaller serif' assert_equals: expected "small-caps ultra-expanded 33.33333206176758px serif" but got "normal small-caps normal ultra-expanded 33.33333206176758px/normal serif" >+FAIL Property font value 'small-caps ultra-expanded normal normal smaller serif' assert_equals: expected "small-caps ultra-expanded 33.333332px serif" but got "normal small-caps normal ultra-expanded 33.333332px/normal serif" > FAIL Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif' assert_true: 'small-caps ultra-condensed normal italic 10px/normal sans-serif' is a supported value for font. expected true got false >-FAIL Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.600000381469727px cursive" but got "normal small-caps 900 extra-condensed 8px/9.600000381469727px cursive" >+FAIL Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.6px cursive" but got "normal small-caps 900 extra-condensed 8px/9.6px cursive" > FAIL Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "italic small-caps condensed 0px / normal fantasy" but got "italic small-caps normal condensed 0px/normal fantasy" > FAIL Property font value 'small-caps semi-condensed italic normal xx-small monospace' assert_equals: expected "italic small-caps semi-condensed 9px monospace" but got "italic small-caps normal semi-condensed 9px/normal monospace" > FAIL Property font value 'small-caps semi-expanded italic bold medium/normal Menu' assert_equals: expected "italic small-caps 700 semi-expanded 16px Menu" but got "italic small-caps bold semi-expanded 16px/normal Menu" >-FAIL Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 expanded 32px/38.400002px \"Non-Generic Example Family Name\"" > FAIL Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif' assert_equals: expected "small-caps 700 extra-expanded 48px / normal serif" but got "normal small-caps bold extra-expanded 48px/normal serif" >-FAIL Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.33333206176758px sans-serif" but got "italic small-caps 100 ultra-expanded 33.33333206176758px/normal sans-serif" >+FAIL Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.333332px sans-serif" but got "italic small-caps 100 ultra-expanded 33.333332px/normal sans-serif" > FAIL Property font value '900 10px/normal cursive' assert_equals: expected "900 10px cursive" but got "normal normal 900 normal 10px/normal cursive" >-FAIL Property font value 'bold normal 20%/1.2 fantasy' assert_equals: expected "700 8px / 9.600000381469727px fantasy" but got "normal normal bold normal 8px/9.600000381469727px fantasy" >+FAIL Property font value 'bold normal 20%/1.2 fantasy' assert_equals: expected "700 8px / 9.6px fantasy" but got "normal normal bold normal 8px/9.6px fantasy" > FAIL Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "900 0px / normal monospace" but got "normal normal 900 normal 0px/normal monospace" > FAIL Property font value 'lighter normal normal normal xx-small Menu' assert_equals: expected "700 9px Menu" but got "normal normal bold normal 9px/normal Menu" > FAIL Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"' assert_true: '100 normal normal italic medium/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false >@@ -225,47 +225,47 @@ FAIL Property font value 'bold normal small-caps xx-small "Non-Generic Example F > FAIL Property font value 'bolder normal small-caps normal medium/normal serif' assert_equals: expected "small-caps 900 16px serif" but got "normal small-caps 900 normal 16px/normal serif" > FAIL Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif' assert_true: 'lighter normal small-caps italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 100 condensed 48px / normal cursive" but got "normal small-caps 100 condensed 48px/normal cursive" >-FAIL Property font value '900 normal semi-condensed smaller fantasy' assert_equals: expected "900 semi-condensed 33.33333206176758px fantasy" but got "normal normal 900 semi-condensed 33.33333206176758px/normal fantasy" >+FAIL Property font value '900 normal semi-condensed smaller fantasy' assert_equals: expected "900 semi-condensed 33.333332px fantasy" but got "normal normal 900 semi-condensed 33.333332px/normal fantasy" > FAIL Property font value 'bold normal semi-expanded normal 10px/normal monospace' assert_equals: expected "700 semi-expanded 10px monospace" but got "normal normal bold semi-expanded 10px/normal monospace" > FAIL Property font value 'bolder normal expanded italic 20%/1.2 Menu' assert_true: 'bolder normal expanded italic 20%/1.2 Menu' is a supported value for font. expected true got false > FAIL Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 700 extra-expanded 0px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps bold extra-expanded 0px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value '100 italic xx-small serif' assert_equals: expected "italic 100 9px serif" but got "italic normal 100 normal 9px/normal serif" > FAIL Property font value '900 italic normal medium/normal sans-serif' assert_equals: expected "italic 900 16px sans-serif" but got "italic normal 900 normal 16px/normal sans-serif" >-FAIL Property font value 'bold italic normal normal xx-large/1.2 cursive' assert_equals: expected "italic 700 32px / 38.400001525878906px cursive" but got "italic normal bold normal 32px/38.400001525878906px cursive" >+FAIL Property font value 'bold italic normal normal xx-large/1.2 cursive' assert_equals: expected "italic 700 32px / 38.400002px cursive" but got "italic normal bold normal 32px/38.400002px cursive" > FAIL Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' assert_true: 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false >-FAIL Property font value 'lighter italic normal ultra-expanded smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.33333206176758px monospace" but got "italic normal bold ultra-expanded 33.33333206176758px/normal monospace" >+FAIL Property font value 'lighter italic normal ultra-expanded smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.333332px monospace" but got "italic normal bold ultra-expanded 33.333332px/normal monospace" > FAIL Property font value '100 italic small-caps 10px/normal Menu' assert_equals: expected "italic small-caps 100 10px Menu" but got "italic small-caps 100 normal 10px/normal Menu" >-FAIL Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 8px/9.600000381469727px \"Non-Generic Example Family Name\"" >+FAIL Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 8px/9.6px \"Non-Generic Example Family Name\"" > FAIL Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "italic small-caps 700 ultra-condensed 0px / normal serif" but got "italic small-caps bold ultra-condensed 0px/normal serif" > FAIL Property font value 'bolder italic extra-condensed xx-small sans-serif' assert_equals: expected "italic 900 extra-condensed 9px sans-serif" but got "italic normal 900 extra-condensed 9px/normal sans-serif" > FAIL Property font value 'lighter italic condensed normal medium/normal cursive' assert_equals: expected "italic 700 condensed 16px cursive" but got "italic normal bold condensed 16px/normal cursive" >-FAIL Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 100 semi-condensed 32px / 38.400001525878906px fantasy" but got "italic small-caps 100 semi-condensed 32px/38.400001525878906px fantasy" >+FAIL Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 100 semi-condensed 32px / 38.400002px fantasy" but got "italic small-caps 100 semi-condensed 32px/38.400002px fantasy" > FAIL Property font value '900 small-caps larger/calc(120% + 1.2em) monospace' assert_equals: expected "small-caps 900 48px / normal monospace" but got "normal small-caps 900 normal 48px/normal monospace" >-FAIL Property font value 'bold small-caps normal smaller Menu' assert_equals: expected "small-caps 700 33.33333206176758px Menu" but got "normal small-caps bold normal 33.33333206176758px/normal Menu" >+FAIL Property font value 'bold small-caps normal smaller Menu' assert_equals: expected "small-caps 700 33.333332px Menu" but got "normal small-caps bold normal 33.333332px/normal Menu" > FAIL Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 10px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 10px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'lighter small-caps normal italic 20%/1.2 serif' assert_true: 'lighter small-caps normal italic 20%/1.2 serif' is a supported value for font. expected true got false > FAIL Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 100 semi-expanded 0px / normal sans-serif" but got "normal small-caps 100 semi-expanded 0px/normal sans-serif" > FAIL Property font value '900 small-caps italic xx-small cursive' assert_equals: expected "italic small-caps 900 9px cursive" but got "italic small-caps 900 normal 9px/normal cursive" > FAIL Property font value 'bold small-caps italic normal medium/normal fantasy' assert_equals: expected "italic small-caps 700 16px fantasy" but got "italic small-caps bold normal 16px/normal fantasy" >-FAIL Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 expanded 26px / 31.200000762939453px monospace" but got "italic small-caps 900 expanded 26px/31.200000762939453px monospace" >+FAIL Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 expanded 26px / 31.200001px monospace" but got "italic small-caps 900 expanded 26px/31.200001px monospace" > FAIL Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 700 extra-expanded 48px / normal Menu" but got "normal small-caps bold extra-expanded 48px/normal Menu" >-FAIL Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 100 ultra-expanded 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal small-caps 100 ultra-expanded 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 100 ultra-expanded 33.333332px \"Non-Generic Example Family Name\"" but got "normal small-caps 100 ultra-expanded 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value '900 small-caps ultra-condensed italic 10px/normal serif' assert_equals: expected "italic small-caps 900 ultra-condensed 10px serif" but got "italic small-caps 900 ultra-condensed 10px/normal serif" >-FAIL Property font value 'bold extra-condensed 20%/1.2 sans-serif' assert_equals: expected "700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal normal bold extra-condensed 8px/9.600000381469727px sans-serif" >+FAIL Property font value 'bold extra-condensed 20%/1.2 sans-serif' assert_equals: expected "700 extra-condensed 8px / 9.6px sans-serif" but got "normal normal bold extra-condensed 8px/9.6px sans-serif" > FAIL Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "900 condensed 0px / normal cursive" but got "normal normal 900 condensed 0px/normal cursive" > FAIL Property font value 'lighter semi-condensed normal normal xx-small fantasy' assert_equals: expected "700 semi-condensed 9px fantasy" but got "normal normal bold semi-condensed 9px/normal fantasy" > FAIL Property font value '100 semi-expanded normal italic medium/normal monospace' assert_true: '100 semi-expanded normal italic medium/normal monospace' is a supported value for font. expected true got false >-FAIL Property font value '900 expanded normal small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps 900 expanded 32px/38.400001525878906px Menu" >+FAIL Property font value '900 expanded normal small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px Menu" but got "normal small-caps 900 expanded 32px/38.400002px Menu" > FAIL Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "italic 700 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "italic normal bold extra-expanded 48px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'bolder ultra-expanded italic normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.33333206176758px serif" but got "italic normal 900 ultra-expanded 33.33333206176758px/normal serif" >+FAIL Property font value 'bolder ultra-expanded italic normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.333332px serif" but got "italic normal 900 ultra-expanded 33.333332px/normal serif" > FAIL Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif' assert_equals: expected "italic small-caps 700 ultra-condensed 10px sans-serif" but got "italic small-caps bold ultra-condensed 10px/normal sans-serif" >-FAIL Property font value '100 extra-condensed small-caps 20%/1.2 cursive' assert_equals: expected "small-caps 100 extra-condensed 8px / 9.600000381469727px cursive" but got "normal small-caps 100 extra-condensed 8px/9.600000381469727px cursive" >+FAIL Property font value '100 extra-condensed small-caps 20%/1.2 cursive' assert_equals: expected "small-caps 100 extra-condensed 8px / 9.6px cursive" but got "normal small-caps 100 extra-condensed 8px/9.6px cursive" > FAIL Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "small-caps 900 condensed 0px / normal fantasy" but got "normal small-caps 900 condensed 0px/normal fantasy" > FAIL Property font value 'bold semi-condensed small-caps italic xx-small monospace' assert_equals: expected "italic small-caps 700 semi-condensed 9px monospace" but got "italic small-caps bold semi-condensed 9px/normal monospace" > FAIL Property font value 'semi-expanded medium/normal Menu' assert_equals: expected "semi-expanded 16px Menu" but got "normal normal normal semi-expanded 16px/normal Menu" >-FAIL Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "normal normal normal expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "normal normal normal expanded 32px/38.400002px \"Non-Generic Example Family Name\"" > FAIL Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif' assert_equals: expected "extra-expanded 48px / normal serif" but got "normal normal normal extra-expanded 48px/normal serif" >-FAIL Property font value 'ultra-expanded normal normal normal smaller sans-serif' assert_equals: expected "ultra-expanded 33.33333206176758px sans-serif" but got "normal normal normal ultra-expanded 33.33333206176758px/normal sans-serif" >+FAIL Property font value 'ultra-expanded normal normal normal smaller sans-serif' assert_equals: expected "ultra-expanded 33.333332px sans-serif" but got "normal normal normal ultra-expanded 33.333332px/normal sans-serif" > FAIL Property font value 'ultra-condensed normal normal italic 10px/normal cursive' assert_true: 'ultra-condensed normal normal italic 10px/normal cursive' is a supported value for font. expected true got false > FAIL Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy' assert_true: 'extra-condensed normal normal small-caps 20%/1.2 fantasy' is a supported value for font. expected true got false > FAIL Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "900 condensed 0px / normal monospace" but got "normal normal 900 condensed 0px/normal monospace" >@@ -273,7 +273,7 @@ FAIL Property font value 'semi-condensed normal italic xx-small Menu' assert_tru > FAIL Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' assert_true: 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false > FAIL Property font value 'expanded normal italic small-caps xx-large/1.2 serif' assert_true: 'expanded normal italic small-caps xx-large/1.2 serif' is a supported value for font. expected true got false > FAIL Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' assert_true: 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false >-FAIL Property font value 'ultra-expanded normal small-caps smaller cursive' assert_equals: expected "small-caps ultra-expanded 33.33333206176758px cursive" but got "normal small-caps normal ultra-expanded 33.33333206176758px/normal cursive" >+FAIL Property font value 'ultra-expanded normal small-caps smaller cursive' assert_equals: expected "small-caps ultra-expanded 33.333332px cursive" but got "normal small-caps normal ultra-expanded 33.333332px/normal cursive" > FAIL Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy' assert_equals: expected "small-caps ultra-condensed 10px fantasy" but got "normal small-caps normal ultra-condensed 10px/normal fantasy" > FAIL Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace' assert_true: 'extra-condensed normal small-caps italic 20%/1.2 monospace' is a supported value for font. expected true got false > FAIL Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 100 condensed 0px / normal Menu" but got "normal small-caps 100 condensed 0px/normal Menu" >@@ -281,37 +281,37 @@ FAIL Property font value 'semi-condensed normal 900 xx-small "Non-Generic Exampl > FAIL Property font value 'semi-expanded normal bold normal medium/normal serif' assert_equals: expected "700 semi-expanded 16px serif" but got "normal normal bold semi-expanded 16px/normal serif" > FAIL Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif' assert_true: 'expanded normal bolder italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false > FAIL Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 700 extra-expanded 48px / normal cursive" but got "normal small-caps bold extra-expanded 48px/normal cursive" >-FAIL Property font value 'ultra-expanded italic smaller fantasy' assert_equals: expected "italic ultra-expanded 33.33333206176758px fantasy" but got "italic normal normal ultra-expanded 33.33333206176758px/normal fantasy" >+FAIL Property font value 'ultra-expanded italic smaller fantasy' assert_equals: expected "italic ultra-expanded 33.333332px fantasy" but got "italic normal normal ultra-expanded 33.333332px/normal fantasy" > FAIL Property font value 'ultra-condensed italic normal 10px/normal monospace' assert_equals: expected "italic ultra-condensed 10px monospace" but got "italic normal normal ultra-condensed 10px/normal monospace" >-FAIL Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' assert_equals: expected "italic extra-condensed 8px / 9.600000381469727px Menu" but got "italic normal normal extra-condensed 8px/9.600000381469727px Menu" >+FAIL Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' assert_equals: expected "italic extra-condensed 8px / 9.6px Menu" but got "italic normal normal extra-condensed 8px/9.6px Menu" > FAIL Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false > FAIL Property font value 'semi-condensed italic normal 100 xx-small serif' assert_equals: expected "italic 100 semi-condensed 9px serif" but got "italic normal 100 semi-condensed 9px/normal serif" > FAIL Property font value 'semi-expanded italic small-caps medium/normal sans-serif' assert_equals: expected "italic small-caps semi-expanded 16px sans-serif" but got "italic small-caps normal semi-expanded 16px/normal sans-serif" >-FAIL Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' assert_equals: expected "italic small-caps expanded 32px / 38.400001525878906px cursive" but got "italic small-caps normal expanded 32px/38.400001525878906px cursive" >+FAIL Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' assert_equals: expected "italic small-caps expanded 32px / 38.400002px cursive" but got "italic small-caps normal expanded 32px/38.400002px cursive" > FAIL Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy' assert_equals: expected "italic small-caps 900 extra-expanded 48px / normal fantasy" but got "italic small-caps 900 extra-expanded 48px/normal fantasy" >-FAIL Property font value 'ultra-expanded italic bold smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.33333206176758px monospace" but got "italic normal bold ultra-expanded 33.33333206176758px/normal monospace" >+FAIL Property font value 'ultra-expanded italic bold smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.333332px monospace" but got "italic normal bold ultra-expanded 33.333332px/normal monospace" > FAIL Property font value 'ultra-condensed italic bolder normal 10px/normal Menu' assert_equals: expected "italic 900 ultra-condensed 10px Menu" but got "italic normal 900 ultra-condensed 10px/normal Menu" >-FAIL Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps bold extra-condensed 8px/9.600000381469727px \"Non-Generic Example Family Name\"" >+FAIL Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps bold extra-condensed 8px/9.6px \"Non-Generic Example Family Name\"" > FAIL Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "small-caps condensed 0px / normal serif" but got "normal small-caps normal condensed 0px/normal serif" > FAIL Property font value 'semi-condensed small-caps normal xx-small sans-serif' assert_equals: expected "small-caps semi-condensed 9px sans-serif" but got "normal small-caps normal semi-condensed 9px/normal sans-serif" > FAIL Property font value 'semi-expanded small-caps normal normal medium/normal cursive' assert_equals: expected "small-caps semi-expanded 16px cursive" but got "normal small-caps normal semi-expanded 16px/normal cursive" > FAIL Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy' assert_true: 'expanded small-caps normal italic xx-large/1.2 fantasy' is a supported value for font. expected true got false > FAIL Property font value 'extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace' assert_equals: expected "small-caps 100 extra-expanded 48px / normal monospace" but got "normal small-caps 100 extra-expanded 48px/normal monospace" >-FAIL Property font value 'ultra-expanded small-caps italic smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px Menu" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal Menu" >+FAIL Property font value 'ultra-expanded small-caps italic smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.333332px Menu" but got "italic small-caps normal ultra-expanded 33.333332px/normal Menu" > FAIL Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps ultra-condensed 10px \"Non-Generic Example Family Name\"" but got "italic small-caps normal ultra-condensed 10px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' assert_equals: expected "italic small-caps 900 extra-condensed 8px / 9.600000381469727px serif" but got "italic small-caps 900 extra-condensed 8px/9.600000381469727px serif" >+FAIL Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' assert_equals: expected "italic small-caps 900 extra-condensed 8px / 9.6px serif" but got "italic small-caps 900 extra-condensed 8px/9.6px serif" > FAIL Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 700 condensed 0px / normal sans-serif" but got "normal small-caps bold condensed 0px/normal sans-serif" > FAIL Property font value 'semi-condensed small-caps bolder normal xx-small cursive' assert_equals: expected "small-caps 900 semi-condensed 9px cursive" but got "normal small-caps 900 semi-condensed 9px/normal cursive" > FAIL Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy' assert_equals: expected "italic small-caps 700 semi-expanded 16px fantasy" but got "italic small-caps bold semi-expanded 16px/normal fantasy" >-FAIL Property font value 'expanded 100 xx-large/1.2 monospace' assert_equals: expected "100 expanded 26px / 31.200000762939453px monospace" but got "normal normal 100 expanded 26px/31.200000762939453px monospace" >+FAIL Property font value 'expanded 100 xx-large/1.2 monospace' assert_equals: expected "100 expanded 26px / 31.200001px monospace" but got "normal normal 100 expanded 26px/31.200001px monospace" > FAIL Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu' assert_equals: expected "900 extra-expanded 48px / normal Menu" but got "normal normal 900 extra-expanded 48px/normal Menu" >-FAIL Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' assert_equals: expected "700 ultra-expanded 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal normal bold ultra-expanded 33.33333206176758px/normal \"Non-Generic Example Family Name\"" >+FAIL Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' assert_equals: expected "700 ultra-expanded 33.333332px \"Non-Generic Example Family Name\"" but got "normal normal bold ultra-expanded 33.333332px/normal \"Non-Generic Example Family Name\"" > FAIL Property font value 'ultra-condensed bolder normal italic 10px/normal serif' assert_true: 'ultra-condensed bolder normal italic 10px/normal serif' is a supported value for font. expected true got false >-FAIL Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' assert_equals: expected "small-caps 700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal small-caps bold extra-condensed 8px/9.600000381469727px sans-serif" >+FAIL Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' assert_equals: expected "small-caps 700 extra-condensed 8px / 9.6px sans-serif" but got "normal small-caps bold extra-condensed 8px/9.6px sans-serif" > FAIL Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "italic 100 condensed 0px / normal cursive" but got "italic normal 100 condensed 0px/normal cursive" > FAIL Property font value 'semi-condensed 900 italic normal xx-small fantasy' assert_equals: expected "italic 900 semi-condensed 9px fantasy" but got "italic normal 900 semi-condensed 9px/normal fantasy" > FAIL Property font value 'semi-expanded bold italic small-caps medium/normal monospace' assert_equals: expected "italic small-caps 700 semi-expanded 13px monospace" but got "italic small-caps bold semi-expanded 13px/normal monospace" >-FAIL Property font value 'expanded bolder small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps 900 expanded 32px/38.400001525878906px Menu" >+FAIL Property font value 'expanded bolder small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px Menu" but got "normal small-caps 900 expanded 32px/38.400002px Menu" > FAIL Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 700 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps bold extra-expanded 48px/normal \"Non-Generic Example Family Name\"" >-FAIL Property font value 'ultra-expanded 100 small-caps italic smaller serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.33333206176758px serif" but got "italic small-caps 100 ultra-expanded 33.33333206176758px/normal serif" >+FAIL Property font value 'ultra-expanded 100 small-caps italic smaller serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.333332px serif" but got "italic small-caps 100 ultra-expanded 33.333332px/normal serif" > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt >index 7ab7a7b2d88d44648e84c8f58a6df122f398a909..58cbc585cb3b300439346a72651677e7deb94a9a 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt >@@ -14,9 +14,9 @@ PASS font-weight(valid): Maximum allowed value should be parsed successfully: 10 > PASS font-weight(invalid): Values above maximum should be rejected: 1000.001 > PASS font-weight(invalid): Extra content after value: 100 a > PASS font-weight(valid): Simple calc value: calc(100.5) >-FAIL font-weight(valid): Out-of-range simple calc value (should be clamped): calc(1001) assert_equals: Unexpected resulting value. expected "calc(1001)" but got "999.9999999999999" >+FAIL font-weight(valid): Out-of-range simple calc value (should be clamped): calc(1001) assert_equals: Unexpected resulting value. expected "calc(1001)" but got "1000" > PASS font-weight(valid): Valid calc expression: calc(100.5*3 + 50.5) >-FAIL font-weight(valid): Valid calc expression with out-of-range value (should be clamped): calc(100.5*3 + 800) assert_equals: Unexpected resulting value. expected "calc(100.5*3 + 800)" but got "999.9999999999999" >+FAIL font-weight(valid): Valid calc expression with out-of-range value (should be clamped): calc(100.5*3 + 800) assert_equals: Unexpected resulting value. expected "calc(100.5*3 + 800)" but got "1000" > PASS font-weight(invalid): Valid calc expression with units: calc(100.5px + 50.5px) > PASS font-weight(valid): Simple range: 100 900 > FAIL font-weight(valid): Simple range with equal upper and lower bounds: 500 500 assert_equals: Unexpected resulting value. expected "500" but got "500 500" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt >index ed6172704076571322d598fc5cc20ccfa6777956..853b3fdab89dd1276707ed6f194eaa7df10b0e5c 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt >@@ -1,5 +1,5 @@ > >-FAIL Test circle with negative easing on clip-path assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.07151274383068085px at 50% 50%)" >-FAIL Test ellipse with negative easing on clip-path assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.07151274383068085px -0.07151274383068085px at 50% 50%)" >+FAIL Test circle with negative easing on clip-path assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.071513px at 50% 50%)" >+FAIL Test ellipse with negative easing on clip-path assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.071513px -0.071513px at 50% 50%)" > PASS Test inset with negative easing on clip-path > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt >index fece2d64e8f91425ed5ac59a995dd4ec0685ba46..9ca1e1f6c8b6d6236183f5c57baa854007cf0a5e 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt >@@ -1,5 +1,5 @@ > >-FAIL Test circle with negative easing on shape-outside assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.07151274383068085px at 50% 50%)" >-FAIL Test ellipse with negative easing on shape-outside assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.07151274383068085px -0.07151274383068085px at 50% 50%)" >+FAIL Test circle with negative easing on shape-outside assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.071513px at 50% 50%)" >+FAIL Test ellipse with negative easing on shape-outside assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.071513px -0.071513px at 50% 50%)" > PASS Test inset with negative easing on shape-outside > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt >index 8226d9ac570d491491ba637dc295c24f48561143..5c33680692aaf745d6211472869ab211fc54801b 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt >@@ -1,5 +1,5 @@ > Rotate via JS > > >-FAIL JS test: Rotate via javascript must show the correct computed rotation assert_equals: expected "matrix(0.866025, 0.5, -0.5, 0.866025, 0, 0)" but got "matrix(0.8660254037844387, 0.49999999999999994, -0.49999999999999994, 0.8660254037844387, 0, 0)" >+PASS JS test: Rotate via javascript must show the correct computed rotation > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt >index 99988e72634e052411b956dec765af68ede32334..5528e9fab29bd25496754237f695ae4337c90a26 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt >@@ -1,76 +1,76 @@ > >-FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0) should be [perspective(400px)] >-FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] >+FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (1) should be [perspective(500px)] >-FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (0) should be [perspective(400px)] >-FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] >+FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (1) should be [perspective(500px)] >-FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions with transition: all: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0) should be [perspective(400px)] >-FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] >+FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (1) should be [perspective(500px)] >-FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (-1) should be [perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0) should be [perspective(400px)] >-FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.25) should be [perspective(421.0526315789474px)] >+FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (0.75) should be [perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (1) should be [perspective(500px)] >-FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL Web Animations: property <transform> from [perspective(400px)] to [perspective(500px)] at (2) should be [perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0) should be [skewX(10rad) perspective(400px)] >-FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] >+FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (1) should be [skewX(20rad) perspective(500px)] >-FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0) should be [skewX(10rad) perspective(400px)] >-FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] >+FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (1) should be [skewX(20rad) perspective(500px)] >-FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions with transition: all: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0) should be [skewX(10rad) perspective(400px)] >-FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] >+FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (1) should be [skewX(20rad) perspective(500px)] >-FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (-1) should be [skewX(0rad) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0) should be [skewX(10rad) perspective(400px)] >-FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, -0.06646824186327419, 1, 0, 0, 0, 0, 1, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, -4.445981448365507, 1, 0, 0, 0, 0, 1, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.25) should be [skewX(12.5rad) perspective(421.0526315789474px)] >+FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (0.75) should be [skewX(17.5rad) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, -4.445981, 1, 0, 0, 0, 0, 1, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (1) should be [skewX(20rad) perspective(500px)] >-FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, -6.4053311966462765, 1, 0, 0, 0, 0, 1, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL Web Animations: property <transform> from [skewX(10rad) perspective(400px)] to [skewX(20rad) perspective(500px)] at (2) should be [skewX(30rad) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, -6.405331, 1, 0, 0, 0, 0, 1, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(1.0) perspective(400px)] >-FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] >+FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] >-FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(1.0) perspective(400px)] >-FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] >+FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] >-FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Transitions with transition: all: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(1.0) perspective(400px)] >-FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] >+FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] >-FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >-FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003003003003003, 0, 0, 0, 1)" [-0.003003003003003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.0029999999084472685, 0, 0, 0, 1)" [-0.0029999999084472685] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL CSS Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 >+FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(0) perspective(333.3333333333333px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003003, 0, 0, 0, 1)" [-0.003003] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -0.003, 0, 0, 0, 1)" [-0.003] expected a number less than 0.00001 but got 0.000999999999999988 > PASS Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(1.0) perspective(400px)] >-FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.0023752969121140144, 0, 0, 0, 1)" [-0.0023752969121140144] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.25, -0.00237499993658066, 0, 0, 0, 1)" [-0.00237499993658066] expected a number less than 0.00001 but got 0.00012504233317246738 >-FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002127659574468085, 0, 0, 0, 1)" [-0.002127659574468085] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.0021250000405311593, 0, 0, 0, 1)" [-0.0021250000405311593] expected a number less than 0.00001 but got 0.0012515453582114101 >+PASS Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.25) should be [scaleZ(1.25) perspective(421.0526315789474px)] >+FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (0.75) should be [scaleZ(1.75) perspective(470.5882352941176px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002128, 0, 0, 0, 1)" [-0.002128] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.75, -0.002125, 0, 0, 0, 1)" [-0.002125] expected a number less than 0.00001 but got 0.0014117647058823361 > PASS Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (1) should be [scaleZ(2) perspective(500px)] >-FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015015015015015015, 0, 0, 0, 1)" [-0.0015015015015015015] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0014999999542236343, 0, 0, 0, 1)" [-0.0014999999542236343] expected a number less than 0.00001 but got 0.0010010315491272097 >+FAIL Web Animations: property <transform> from [scaleZ(1) perspective(400px)] to [scaleZ(2) perspective(500px)] at (2) should be [scaleZ(3) perspective(666.6666666666666px)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.001502, 0, 0, 0, 1)" [-0.001502] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 3, -0.0015, 0, 0, 0, 1)" [-0.0015] expected a number less than 0.00001 but got 0.0013333333333333658 > FAIL CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (-1) should be [scaleZ(2)] assert_less_than: comparing (at index 11 actual value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0.002, 0, 0, 0, 1)" [0.002] and expected value "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" [0] expected a number less than 0.00001 but got 2000.0000000000002 > PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0) should be [scaleZ(2)] > PASS CSS Transitions: property <transform> from [scaleZ(2)] to [scaleZ(2) perspective(500px)] at (0.5) should be [scaleZ(2) perspective(1000px)] >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt >index ad481f9f88fb618029a1f1d74e708860b4a673f7..554d79daa589c15b62495f9b4b16b009f65d208d 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt >@@ -12,11 +12,11 @@ FAIL Interpolation between translate(0%, 50%) and translate(50%, 100%) gives the > FAIL Interpolation between translate3d(0,0,-50px) and translateZ(50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate3d(0px, 0px, 0px)" but got "matrix(1, 0, 0, 1, 0, 0)" > FAIL Interpolation between translate(50px, 0px) and translate(100px, 0px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)" > FAIL Interpolation between translate(50px, -50px) and translate(100px, 50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)" >-FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)" >-FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)" >-FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.7071067811865476, 0.7071067811865475, -0.7071067811865475, 0.7071067811865476, 0, 0)" >-FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.7071067811865476, 0.7071067811865475, 0, 0, -0.7071067811865475, 0.7071067811865476, 0, 0, 0, 0, 1)" >-FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5000000000000002, 0.4999999999999999, 0, 0, -0.4999999999999999, 0.5000000000000002, 0, 0, 0, 0, 1)" >+FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)" >+FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)" >+FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)" >+FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.707107, 0.707107, 0, 0, -0.707107, 0.707107, 0, 0, 0, 0, 1)" >+FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5, 0.5, 0, 0, -0.5, 0.5, 0, 0, 0, 0, 1)" > FAIL Interpolation between scale(1) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5)" but got "matrix(1.5, 0, 0, 1.5, 0, 0)" > FAIL Interpolation between scale(1, 3) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5, 2.5)" but got "matrix(1.5, 0, 0, 2.5, 0, 0)" > FAIL Interpolation between scaleX(1) and scaleX(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scaleX(1.5)" but got "matrix(1.5, 0, 0, 1, 0, 0)" >@@ -29,11 +29,11 @@ FAIL Interpolation between scale(1, 2) and scale(3, 4) gives the correct compute > FAIL Interpolation between scale3d(1, 2, 3) and scale3d(4, 5, 6) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 4.5)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 4.5, 0, 0, 0, 0, 1)" > FAIL Interpolation between scale3d(1, 2, 3) and scale(4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 2)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)" > FAIL Interpolation between scale(1, 2) and scale3d(3, 4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2, 3, 3)" but got "matrix3d(2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1)" >-FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.5773502691896256, 1, 0, 0)" >-FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 0.9999999999999999, 1, 0, 0)" >+FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.57735, 1, 0, 0)" >+FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 1, 1, 0, 0)" > FAIL Interpolation between skewX(0deg) and skewX(180deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(90deg)" but got "matrix(1, 0, 16331239353195370, 1, 0, 0)" >-FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.5773502691896256, 0.5773502691896256, 1, 0, 0)" >-FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.4142135623730951, 0.4142135623730951, 1, 0, 0)" >+FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.57735, 0.57735, 1, 0, 0)" >+FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.414214, 0.414214, 1, 0, 0)" > FAIL Interpolation between perspective(10px) and perspective(2.5px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(4px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.25, 0, 0, 0, 1)" > FAIL Interpolation between perspective(10px) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(20px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.05, 0, 0, 0, 1)" > FAIL Interpolation between perspective(none) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(none)" but got "matrix(1, 0, 0, 1, 0, 0)" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt >index 7a05e6c6dd58c46517d81b5010fc1e1bffe3f6dc..a378349481ed33ce71ca65838ded4c8a98de3d2b 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt >@@ -22,7 +22,7 @@ PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] f > FAIL Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] from add [matrix(1, 0, 0, 1, 100, 0)] to add [matrix(1, 0, 0, 1, 200, 0)] at (1.5) should be [matrix(1, 1, 0, 0, 200, 300)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 200 , 300 ) " but got "matrix ( 1 , 1 , 0 , 0 , 300 , 300 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (-0.5) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 1.28 , 0.84 , - 0.03 , 0.3 , 187.5 , - 37.5 ) " > PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0) should be [matrix(1, 1, 0, 0, 100, 100)] >-FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 159.38 , 65.62 ) " >+FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 159.38 , 65.63 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.95 , 0.63 , - 0.03 , 0.3 , 187.5 , 62.5 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.97 , 0.32 , - 0.04 , 0.63 , 234.38 , 40.63 ) " > PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (1) should be [matrix(1, 0, 0, 1, 300, 0)] >@@ -50,7 +50,7 @@ PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] f > PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] from accumulate [matrix(1, 0, 0, 1, 100, 0)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (1.5) should be [matrix(1, 0, 0, 1, 250, 0)] > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (-0.5) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 1.28 , 0.84 , - 0.03 , 0.3 , 87.5 , - 37.5 ) " > PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0) should be [matrix(1, 1, 0, 0, 0, 100)] >-FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 59.37 , 65.62 ) " >+FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 59.38 , 65.63 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.95 , 0.63 , - 0.03 , 0.3 , 87.5 , 62.5 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.97 , 0.32 , - 0.04 , 0.63 , 134.38 , 40.63 ) " > FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (1) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 200 , 0 ) " >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt >index 1fe78a79b0be72ad28d9b4d860aea24b79c1704e..24c77c9eb1ab8488ab880b40cc310e9bfd7f0833 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt >@@ -1,12 +1,12 @@ > > FAIL 'rotate(acos(0))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(acos(0))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(acos(0))" >-PASS 'rotate(acos(0))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(acos(0))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(asin(1))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(asin(1))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(asin(1))" >-PASS 'rotate(asin(1))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(asin(1))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(acos(pi - pi)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(acos(pi - pi)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(acos(pi - pi)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(asin(pi - pi + 1)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(asin(pi - pi + 1)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(asin(pi - pi + 1)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(atan(infinity)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(atan(infinity)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(atan(infinity)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-numbers-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-numbers-expected.txt >index 26229f8e51203b38a606eb044e067c4bc7ade919..e09e8a1d915164f3a7c20dca9097a6d1882a39e0 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-numbers-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-numbers-expected.txt >@@ -3,7 +3,7 @@ PASS testing tab-size: calc(2 * 3) > PASS testing tab-size: calc(2 * -4) > PASS testing opacity: calc(2 / 4) > PASS testing tab-size: calc(2 / 4) >-FAIL testing opacity: calc(2 / 4) * 1px assert_equals: calc(2 / 4) * 1px should compute to 0.9 expected "0.9" but got "0.8999999761581421" >+PASS testing opacity: calc(2 / 4) * 1px > PASS testing tab-size: calc(1 + 1px) > PASS testing tab-size: calc(1 + 100%) > PASS testing tab-size: calc(100%) >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >index 1f8cf44a7f12d4db084db233ce919fc46ecf17ce..3c2a3f6da63181bee3c1812b45a278409a77fe52 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt >@@ -10,7 +10,7 @@ PASS e.style['opacity'] = "hypot(1 * )" should not set the property value > PASS e.style['opacity'] = "hypot(1 / )" should not set the property value > PASS e.style['opacity'] = "hypot(1 2)" should not set the property value > PASS e.style['opacity'] = "hypot(1, , 2)" should not set the property value >-FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "hypot(2.23606797749979)" >+FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "hypot(2.236068)" > PASS e.style['opacity'] = "sqrt()" should not set the property value > PASS e.style['opacity'] = "sqrt( )" should not set the property value > PASS e.style['opacity'] = "sqrt(,)" should not set the property value >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >index 1e07223b27db8605ffcb934a4e58c209c6248a0a..ed194d243ab79390805f2c54ed46c46e04582be9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt >@@ -1,40 +1,40 @@ > > FAIL 'rotate(min(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(100grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(100grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(90deg, 92deg, 93deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 92deg, 93deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(90deg, 92deg, 93deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(90deg, 92deg, 93deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(93deg, 92deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(93deg, 92deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(93deg, 92deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(93deg, 92deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(90deg, 1.58rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 1.58rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(min(0.25turn, 1.58rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(0.25turn, 1.58rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))" >-PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(81deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(81deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(81deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(81deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(83deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(83deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(83deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(83deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(90deg, 1.57rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg, 1.57rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > FAIL 'rotate(max(0.25turn, 1.57rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(0.25turn, 1.57rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))" >-PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(min(30deg) + max(60deg)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(min(30deg) + max(60deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(min(30deg) + max(60deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(50grad + min(45deg)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(50grad + min(45deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(50grad + min(45deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(min(45deg) + 50grad))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(min(45deg) + 50grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(min(45deg) + 50grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(50grad + max(45deg)))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(50grad + max(45deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(50grad + max(45deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > PASS 'rotate(calc(max(45deg) + 50grad))' as a specified value should serialize as 'rotate(calc(90deg))'. >-PASS 'rotate(calc(max(45deg) + 50grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'. >+PASS 'rotate(calc(max(45deg) + 50grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'. > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-computed-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-computed-expected.txt >index 286ef362660710af8c9224798c1fdba866086d06..e505a874334cc64184464f92915db0173d4baae0 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-computed-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-computed-expected.txt >@@ -3,12 +3,12 @@ PASS min(1) should be used-value-equivalent to 1 > PASS max(1) should be used-value-equivalent to 1 > PASS min(0.2, max(0.1, 0.15)) should be used-value-equivalent to 0.15 > PASS max(0.1, min(0.2, 0.15)) should be used-value-equivalent to 0.15 >-FAIL calc(min(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.15 assert_equals: calc(min(0.1, 0.2) + 0.05) and 0.15 serialize to the same thing in used values. expected "matrix(0.15, 0, 0, 0.15, 0, 0)" but got "matrix(0.15000000000000002, 0, 0, 0.15000000000000002, 0, 0)" >+PASS calc(min(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.15 > PASS calc(min(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.05 > PASS calc(min(0.1, 0.2) * 2) should be used-value-equivalent to 0.2 > PASS calc(min(0.1, 0.2) / 2) should be used-value-equivalent to 0.05 > PASS calc(max(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.25 >-FAIL calc(max(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.15 assert_equals: calc(max(0.1, 0.2) - 0.05) and 0.15 serialize to the same thing in used values. expected "matrix(0.15, 0, 0, 0.15, 0, 0)" but got "matrix(0.15000000000000002, 0, 0, 0.15000000000000002, 0, 0)" >+PASS calc(max(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.15 > PASS calc(max(0.1, 0.2) * 2) should be used-value-equivalent to 0.4 > PASS calc(max(0.1, 0.2) / 2) should be used-value-equivalent to 0.1 > PASS calc(min(0.1, 0.2) + max(0.1, 0.05)) should be used-value-equivalent to 0.2 >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >index 5029737f2c7cbc671f41f9d850623db4ad152007..4d24abaca9259b614d40cfdd47fb6ed9c0c7187f 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt >@@ -1,42 +1,42 @@ > > FAIL 'min(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" > FAIL 'scale(min(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >-FAIL 'min(.1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612" >+PASS 'min(.1)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. > FAIL 'max(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'max(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "max(0.1)" > FAIL 'scale(max(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(max(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(max(0.1))" >-FAIL 'max(.1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612" >+PASS 'max(.1)' as a computed value should serialize as '0.1'. > PASS 'scale(max(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. > FAIL 'min(.1, .2, .3)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1, .2, .3)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" > FAIL 'scale(min(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1, .2, .3))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >-FAIL 'min(.1, .2, .3)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612" >+PASS 'min(.1, .2, .3)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.1, .2, .3))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. > FAIL 'max(.1, .2, .3)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.1, .2, .3)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)" > FAIL 'scale(max(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.1, .2, .3))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))" >-FAIL 'max(.1, .2, .3)' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896" >+PASS 'max(.1, .2, .3)' as a computed value should serialize as '0.3'. > PASS 'scale(max(.1, .2, .3))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. > FAIL 'min(.3, .2, .1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.3, .2, .1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)" > FAIL 'scale(min(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.3, .2, .1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))" >-FAIL 'min(.3, .2, .1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612" >+PASS 'min(.3, .2, .1)' as a computed value should serialize as '0.1'. > PASS 'scale(min(.3, .2, .1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'. > FAIL 'max(.3, .2, .1)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.3, .2, .1)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)" > FAIL 'scale(max(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.3, .2, .1))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))" >-FAIL 'max(.3, .2, .1)' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896" >+PASS 'max(.3, .2, .1)' as a computed value should serialize as '0.3'. > PASS 'scale(max(.3, .2, .1))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. >-FAIL 'calc(min(.1) + min(.2))' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'calc(min(.1) + min(.2))' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "calc(0.30000000000000004)" >-FAIL 'scale(calc(min(.1) + min(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(calc(min(.1) + min(.2)))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(calc(0.30000000000000004))" >-FAIL 'calc(min(.1) + min(.2))' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896" >-FAIL 'scale(calc(min(.1) + min(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. assert_equals: 'scale(calc(min(.1) + min(.2)))' and 'matrix(0.3, 0, 0, 0.3, 0, 0)' should serialize the same in computed values. expected "matrix(0.3, 0, 0, 0.3, 0, 0)" but got "matrix(0.30000000000000004, 0, 0, 0.30000000000000004, 0, 0)" >-FAIL 'calc(max(.1) + max(.2))' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'calc(max(.1) + max(.2))' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "calc(0.30000000000000004)" >-FAIL 'scale(calc(max(.1) + max(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(calc(max(.1) + max(.2)))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(calc(0.30000000000000004))" >-FAIL 'calc(max(.1) + max(.2))' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896" >-FAIL 'scale(calc(max(.1) + max(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. assert_equals: 'scale(calc(max(.1) + max(.2)))' and 'matrix(0.3, 0, 0, 0.3, 0, 0)' should serialize the same in computed values. expected "matrix(0.3, 0, 0, 0.3, 0, 0)" but got "matrix(0.30000000000000004, 0, 0, 0.30000000000000004, 0, 0)" >+PASS 'calc(min(.1) + min(.2))' as a specified value should serialize as 'calc(0.3)'. >+PASS 'scale(calc(min(.1) + min(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. >+PASS 'calc(min(.1) + min(.2))' as a computed value should serialize as '0.3'. >+PASS 'scale(calc(min(.1) + min(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. >+PASS 'calc(max(.1) + max(.2))' as a specified value should serialize as 'calc(0.3)'. >+PASS 'scale(calc(max(.1) + max(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. >+PASS 'calc(max(.1) + max(.2))' as a computed value should serialize as '0.3'. >+PASS 'scale(calc(max(.1) + max(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. > PASS 'calc(.1 + min(.1))' as a specified value should serialize as 'calc(0.2)'. > PASS 'scale(calc(.1 + min(.1)))' as a specified value should serialize as 'scale(calc(0.2))'. >-FAIL 'calc(.1 + min(.1))' as a computed value should serialize as '0.2'. assert_equals: '0.2' should round-trip exactly in computed values. expected "0.2" but got "0.20000000298023224" >+PASS 'calc(.1 + min(.1))' as a computed value should serialize as '0.2'. > PASS 'scale(calc(.1 + min(.1)))' as a computed value should serialize as 'matrix(0.2, 0, 0, 0.2, 0, 0)'. > PASS 'calc(max(.1) + .1)' as a specified value should serialize as 'calc(0.2)'. > PASS 'scale(calc(max(.1) + .1))' as a specified value should serialize as 'scale(calc(0.2))'. >-FAIL 'calc(max(.1) + .1)' as a computed value should serialize as '0.2'. assert_equals: '0.2' should round-trip exactly in computed values. expected "0.2" but got "0.20000000298023224" >+PASS 'calc(max(.1) + .1)' as a computed value should serialize as '0.2'. > PASS 'scale(calc(max(.1) + .1))' as a computed value should serialize as 'matrix(0.2, 0, 0, 0.2, 0, 0)'. > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt >index 4395d1d631cb7804b1ea70fade25ca0fd869299e..2d4bb3c0b517cd0b36dc022446d6abdc7d13ff19 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt >@@ -13,11 +13,11 @@ PASS Testing 'direction'. > FAIL Testing 'display'. assert_equals: Value Test. expected "block" but got "inline" > FAIL Testing 'dominant-baseline'. assert_equals: Value Test. expected "use-script" but got "auto" > FAIL Testing 'fill'. assert_equals: Default value. expected "black" but got "rgb(0, 0, 0)" >-FAIL Testing 'fill-opacity'. assert_equals: Value Test. expected "0.8" but got "0.800000011920929" >+PASS Testing 'fill-opacity'. > PASS Testing 'fill-rule'. > PASS Testing 'filter'. > FAIL Testing 'flood-color'. assert_equals: Default value. expected "" but got "rgb(0, 0, 0)" >-FAIL Testing 'flood-opacity'. assert_equals: Value Test. expected "0.7" but got "0.699999988079071" >+PASS Testing 'flood-opacity'. > FAIL Testing 'font-family'. assert_equals: Default value. expected "Times New Roman" but got "-webkit-standard" > PASS Testing 'font-size'. > FAIL Testing 'font-size-adjust'. assert_equals: Default value. expected "none" but got "" >@@ -29,18 +29,18 @@ FAIL Testing 'glyph-orientation-vertical'. assert_equals: Value Test. expected " > FAIL Testing 'kerning'. assert_equals: Default value. expected "auto" but got "0" > PASS Testing 'letter-spacing'. > FAIL Testing 'lighting-color'. assert_equals: Default value. expected "" but got "rgb(255, 255, 255)" >-FAIL Testing 'opacity'. assert_equals: Value Test. expected "0.11" but got "0.10999999940395355" >+PASS Testing 'opacity'. > FAIL Testing 'overflow'. assert_equals: Value Test. expected "hidden" but got "visible" > FAIL Testing 'pointer-events'. assert_equals: Default value. expected "visiblePainted" but got "auto" > FAIL Testing 'stop-color'. assert_equals: Default value. expected "" but got "rgb(0, 0, 0)" >-FAIL Testing 'stop-opacity'. assert_equals: Value Test. expected "0.225" but got "0.22499999403953552" >+PASS Testing 'stop-opacity'. > FAIL Testing 'stroke'. assert_equals: Default value. expected "" but got "none" > PASS Testing 'stroke-dasharray'. > PASS Testing 'stroke-dashoffset'. > PASS Testing 'stroke-linecap'. > PASS Testing 'stroke-linejoin'. > PASS Testing 'stroke-miterlimit'. >-FAIL Testing 'stroke-opacity'. assert_equals: Value Test. expected "0.221" but got "0.22100000083446503" >+PASS Testing 'stroke-opacity'. > PASS Testing 'stroke-width'. > PASS Testing 'text-anchor'. > FAIL Testing 'text-decoration'. assert_equals: Value Test. expected "underline" but got "none" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt >index 89e7ebe4e66e0484a88d4d42c520b17299ad9431..5d9c9956b2352c62064e33a0484314b89f85849f 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt >@@ -2,5 +2,5 @@ > PASS line-height: normal > PASS line-height: 1 > PASS line-height: 10px >-FAIL line-height: 10% assert_equals: 10% should compute to 1.6px expected "1.6px" but got "1.600000023841858px" >+PASS line-height: 10% > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt >index afeafc54ccbeb944505020c3565323041358b629..2b02768330564d54bb74c550f71b819578590d5a 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt >@@ -303,10 +303,10 @@ PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (0.3) s > PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (0.6) should be [34deg] > PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (1) should be [50deg] > PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (1.5) should be [70deg] >-PASS CSS Transitions: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] >-PASS CSS Transitions with transition: all: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] >-PASS CSS Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] >-PASS Web Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] >+FAIL CSS Transitions: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg " >+FAIL CSS Transitions with transition: all: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg " >+FAIL CSS Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg " >+FAIL Web Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg " > PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (-0.3) should be [auto -2deg] > PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (0) should be [auto 10deg] > PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (0.3) should be [auto 22deg] >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/dimension-attributes-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/dimension-attributes-expected.txt >index c803aa53ec52ee7363ab4b80272fc575ed93ad16..f10fed8c1c41b55a611fcaecc8261cef1f4e0709 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/dimension-attributes-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/dimension-attributes-expected.txt >@@ -3,7 +3,7 @@ PASS <hr width="200"> mapping to width > PASS <hr width="1007"> mapping to width > PASS <hr width=" 00523 "> mapping to width > PASS <hr width="200.25"> mapping to width >-FAIL <hr width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <hr width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <hr width="200."> mapping to width > PASS <hr width="200in"> mapping to width > PASS <hr width="200.25in"> mapping to width >@@ -43,7 +43,7 @@ PASS <iframe width="200"> mapping to width > PASS <iframe width="1007"> mapping to width > PASS <iframe width=" 00523 "> mapping to width > PASS <iframe width="200.25"> mapping to width >-FAIL <iframe width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <iframe width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <iframe width="200."> mapping to width > PASS <iframe width="200in"> mapping to width > PASS <iframe width="200.25in"> mapping to width >@@ -83,7 +83,7 @@ PASS <iframe height="200"> mapping to height > PASS <iframe height="1007"> mapping to height > PASS <iframe height=" 00523 "> mapping to height > PASS <iframe height="200.25"> mapping to height >-FAIL <iframe height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <iframe height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <iframe height="200."> mapping to height > PASS <iframe height="200in"> mapping to height > PASS <iframe height="200.25in"> mapping to height >@@ -123,7 +123,7 @@ PASS <input width="200"> mapping to width > PASS <input width="1007"> mapping to width > PASS <input width=" 00523 "> mapping to width > PASS <input width="200.25"> mapping to width >-FAIL <input width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <input width="200."> mapping to width > PASS <input width="200in"> mapping to width > PASS <input width="200.25in"> mapping to width >@@ -163,7 +163,7 @@ PASS <input height="200"> mapping to height > PASS <input height="1007"> mapping to height > PASS <input height=" 00523 "> mapping to height > PASS <input height="200.25"> mapping to height >-FAIL <input height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <input height="200."> mapping to height > PASS <input height="200in"> mapping to height > PASS <input height="200.25in"> mapping to height >@@ -203,7 +203,7 @@ PASS <marquee width="200"> mapping to width > PASS <marquee width="1007"> mapping to width > PASS <marquee width=" 00523 "> mapping to width > PASS <marquee width="200.25"> mapping to width >-FAIL <marquee width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee width="200."> mapping to width > PASS <marquee width="200in"> mapping to width > PASS <marquee width="200.25in"> mapping to width >@@ -243,7 +243,7 @@ PASS <marquee height="200"> mapping to height > PASS <marquee height="1007"> mapping to height > PASS <marquee height=" 00523 "> mapping to height > PASS <marquee height="200.25"> mapping to height >-FAIL <marquee height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee height="200."> mapping to height > PASS <marquee height="200in"> mapping to height > PASS <marquee height="200.25in"> mapping to height >@@ -283,7 +283,7 @@ PASS <video width="200"> mapping to width > PASS <video width="1007"> mapping to width > PASS <video width=" 00523 "> mapping to width > PASS <video width="200.25"> mapping to width >-FAIL <video width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <video width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <video width="200."> mapping to width > PASS <video width="200in"> mapping to width > PASS <video width="200.25in"> mapping to width >@@ -323,7 +323,7 @@ PASS <video height="200"> mapping to height > PASS <video height="1007"> mapping to height > PASS <video height=" 00523 "> mapping to height > PASS <video height="200.25"> mapping to height >-FAIL <video height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <video height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <video height="200."> mapping to height > PASS <video height="200in"> mapping to height > PASS <video height="200.25in"> mapping to height >@@ -363,7 +363,7 @@ PASS <object width="200"> mapping to width > PASS <object width="1007"> mapping to width > PASS <object width=" 00523 "> mapping to width > PASS <object width="200.25"> mapping to width >-FAIL <object width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <object width="200."> mapping to width > PASS <object width="200in"> mapping to width > PASS <object width="200.25in"> mapping to width >@@ -403,7 +403,7 @@ PASS <object height="200"> mapping to height > PASS <object height="1007"> mapping to height > PASS <object height=" 00523 "> mapping to height > PASS <object height="200.25"> mapping to height >-FAIL <object height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <object height="200."> mapping to height > PASS <object height="200in"> mapping to height > PASS <object height="200.25in"> mapping to height >@@ -443,7 +443,7 @@ PASS <embed width="200"> mapping to width > PASS <embed width="1007"> mapping to width > PASS <embed width=" 00523 "> mapping to width > PASS <embed width="200.25"> mapping to width >-FAIL <embed width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed width="200."> mapping to width > PASS <embed width="200in"> mapping to width > PASS <embed width="200.25in"> mapping to width >@@ -483,7 +483,7 @@ PASS <embed height="200"> mapping to height > PASS <embed height="1007"> mapping to height > PASS <embed height=" 00523 "> mapping to height > PASS <embed height="200.25"> mapping to height >-FAIL <embed height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed height="200."> mapping to height > PASS <embed height="200in"> mapping to height > PASS <embed height="200.25in"> mapping to height >@@ -523,7 +523,7 @@ PASS <img width="200"> mapping to width > PASS <img width="1007"> mapping to width > PASS <img width=" 00523 "> mapping to width > PASS <img width="200.25"> mapping to width >-FAIL <img width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <img width="200."> mapping to width > PASS <img width="200in"> mapping to width > PASS <img width="200.25in"> mapping to width >@@ -563,7 +563,7 @@ PASS <img height="200"> mapping to height > PASS <img height="1007"> mapping to height > PASS <img height=" 00523 "> mapping to height > PASS <img height="200.25"> mapping to height >-FAIL <img height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <img height="200."> mapping to height > PASS <img height="200in"> mapping to height > PASS <img height="200.25in"> mapping to height >@@ -603,7 +603,7 @@ PASS <td width="200"> mapping to width > PASS <td width="1007"> mapping to width > PASS <td width=" 00523 "> mapping to width > PASS <td width="200.25"> mapping to width >-FAIL <td width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <td width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <td width="200."> mapping to width > PASS <td width="200in"> mapping to width > PASS <td width="200.25in"> mapping to width >@@ -643,7 +643,7 @@ PASS <td height="200"> mapping to height > PASS <td height="1007"> mapping to height > PASS <td height=" 00523 "> mapping to height > PASS <td height="200.25"> mapping to height >-FAIL <td height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <td height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <td height="200."> mapping to height > PASS <td height="200in"> mapping to height > PASS <td height="200.25in"> mapping to height >@@ -683,7 +683,7 @@ PASS <table width="200"> mapping to width > PASS <table width="1007"> mapping to width > PASS <table width=" 00523 "> mapping to width > PASS <table width="200.25"> mapping to width >-FAIL <table width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <table width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <table width="200."> mapping to width > PASS <table width="200in"> mapping to width > PASS <table width="200.25in"> mapping to width >@@ -723,7 +723,7 @@ PASS <table height="200"> mapping to height > PASS <table height="1007"> mapping to height > PASS <table height=" 00523 "> mapping to height > PASS <table height="200.25"> mapping to height >-FAIL <table height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <table height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <table height="200."> mapping to height > PASS <table height="200in"> mapping to height > PASS <table height="200.25in"> mapping to height >@@ -763,7 +763,7 @@ PASS <tr height="200"> mapping to height > PASS <tr height="1007"> mapping to height > PASS <tr height=" 00523 "> mapping to height > PASS <tr height="200.25"> mapping to height >-FAIL <tr height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <tr height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px" > PASS <tr height="200."> mapping to height > PASS <tr height="200in"> mapping to height > PASS <tr height="200.25in"> mapping to height >@@ -803,7 +803,7 @@ PASS <col width="200"> mapping to width > PASS <col width="1007"> mapping to width > PASS <col width=" 00523 "> mapping to width > PASS <col width="200.25"> mapping to width >-FAIL <col width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <col width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px" > PASS <col width="200."> mapping to width > PASS <col width="200in"> mapping to width > PASS <col width="200.25in"> mapping to width >@@ -843,7 +843,7 @@ PASS <embed hspace="200"> mapping to marginLeft > PASS <embed hspace="1007"> mapping to marginLeft > PASS <embed hspace=" 00523 "> mapping to marginLeft > PASS <embed hspace="200.25"> mapping to marginLeft >-FAIL <embed hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed hspace="200."> mapping to marginLeft > PASS <embed hspace="200in"> mapping to marginLeft > PASS <embed hspace="200.25in"> mapping to marginLeft >@@ -883,7 +883,7 @@ PASS <embed hspace="200"> mapping to marginRight > PASS <embed hspace="1007"> mapping to marginRight > PASS <embed hspace=" 00523 "> mapping to marginRight > PASS <embed hspace="200.25"> mapping to marginRight >-FAIL <embed hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed hspace="200."> mapping to marginRight > PASS <embed hspace="200in"> mapping to marginRight > PASS <embed hspace="200.25in"> mapping to marginRight >@@ -923,7 +923,7 @@ PASS <embed vspace="200"> mapping to marginTop > PASS <embed vspace="1007"> mapping to marginTop > PASS <embed vspace=" 00523 "> mapping to marginTop > PASS <embed vspace="200.25"> mapping to marginTop >-FAIL <embed vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed vspace="200."> mapping to marginTop > PASS <embed vspace="200in"> mapping to marginTop > PASS <embed vspace="200.25in"> mapping to marginTop >@@ -963,7 +963,7 @@ PASS <embed vspace="200"> mapping to marginBottom > PASS <embed vspace="1007"> mapping to marginBottom > PASS <embed vspace=" 00523 "> mapping to marginBottom > PASS <embed vspace="200.25"> mapping to marginBottom >-FAIL <embed vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <embed vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px" > PASS <embed vspace="200."> mapping to marginBottom > PASS <embed vspace="200in"> mapping to marginBottom > PASS <embed vspace="200.25in"> mapping to marginBottom >@@ -1003,7 +1003,7 @@ PASS <img hspace="200"> mapping to marginLeft > PASS <img hspace="1007"> mapping to marginLeft > PASS <img hspace=" 00523 "> mapping to marginLeft > PASS <img hspace="200.25"> mapping to marginLeft >-FAIL <img hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px" > PASS <img hspace="200."> mapping to marginLeft > PASS <img hspace="200in"> mapping to marginLeft > PASS <img hspace="200.25in"> mapping to marginLeft >@@ -1043,7 +1043,7 @@ PASS <img hspace="200"> mapping to marginRight > PASS <img hspace="1007"> mapping to marginRight > PASS <img hspace=" 00523 "> mapping to marginRight > PASS <img hspace="200.25"> mapping to marginRight >-FAIL <img hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px" > PASS <img hspace="200."> mapping to marginRight > PASS <img hspace="200in"> mapping to marginRight > PASS <img hspace="200.25in"> mapping to marginRight >@@ -1083,7 +1083,7 @@ PASS <img vspace="200"> mapping to marginTop > PASS <img vspace="1007"> mapping to marginTop > PASS <img vspace=" 00523 "> mapping to marginTop > PASS <img vspace="200.25"> mapping to marginTop >-FAIL <img vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px" > PASS <img vspace="200."> mapping to marginTop > PASS <img vspace="200in"> mapping to marginTop > PASS <img vspace="200.25in"> mapping to marginTop >@@ -1123,7 +1123,7 @@ PASS <img vspace="200"> mapping to marginBottom > PASS <img vspace="1007"> mapping to marginBottom > PASS <img vspace=" 00523 "> mapping to marginBottom > PASS <img vspace="200.25"> mapping to marginBottom >-FAIL <img vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <img vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px" > PASS <img vspace="200."> mapping to marginBottom > PASS <img vspace="200in"> mapping to marginBottom > PASS <img vspace="200.25in"> mapping to marginBottom >@@ -1163,7 +1163,7 @@ PASS <object hspace="200"> mapping to marginLeft > PASS <object hspace="1007"> mapping to marginLeft > PASS <object hspace=" 00523 "> mapping to marginLeft > PASS <object hspace="200.25"> mapping to marginLeft >-FAIL <object hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px" > PASS <object hspace="200."> mapping to marginLeft > PASS <object hspace="200in"> mapping to marginLeft > PASS <object hspace="200.25in"> mapping to marginLeft >@@ -1203,7 +1203,7 @@ PASS <object hspace="200"> mapping to marginRight > PASS <object hspace="1007"> mapping to marginRight > PASS <object hspace=" 00523 "> mapping to marginRight > PASS <object hspace="200.25"> mapping to marginRight >-FAIL <object hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px" > PASS <object hspace="200."> mapping to marginRight > PASS <object hspace="200in"> mapping to marginRight > PASS <object hspace="200.25in"> mapping to marginRight >@@ -1243,7 +1243,7 @@ PASS <object vspace="200"> mapping to marginTop > PASS <object vspace="1007"> mapping to marginTop > PASS <object vspace=" 00523 "> mapping to marginTop > PASS <object vspace="200.25"> mapping to marginTop >-FAIL <object vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px" > PASS <object vspace="200."> mapping to marginTop > PASS <object vspace="200in"> mapping to marginTop > PASS <object vspace="200.25in"> mapping to marginTop >@@ -1283,7 +1283,7 @@ PASS <object vspace="200"> mapping to marginBottom > PASS <object vspace="1007"> mapping to marginBottom > PASS <object vspace=" 00523 "> mapping to marginBottom > PASS <object vspace="200.25"> mapping to marginBottom >-FAIL <object vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <object vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px" > PASS <object vspace="200."> mapping to marginBottom > PASS <object vspace="200in"> mapping to marginBottom > PASS <object vspace="200.25in"> mapping to marginBottom >@@ -1323,7 +1323,7 @@ PASS <input hspace="200"> mapping to marginLeft > PASS <input hspace="1007"> mapping to marginLeft > PASS <input hspace=" 00523 "> mapping to marginLeft > PASS <input hspace="200.25"> mapping to marginLeft >-FAIL <input hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px" > PASS <input hspace="200."> mapping to marginLeft > PASS <input hspace="200in"> mapping to marginLeft > PASS <input hspace="200.25in"> mapping to marginLeft >@@ -1363,7 +1363,7 @@ PASS <input hspace="200"> mapping to marginRight > PASS <input hspace="1007"> mapping to marginRight > PASS <input hspace=" 00523 "> mapping to marginRight > PASS <input hspace="200.25"> mapping to marginRight >-FAIL <input hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px" > PASS <input hspace="200."> mapping to marginRight > PASS <input hspace="200in"> mapping to marginRight > PASS <input hspace="200.25in"> mapping to marginRight >@@ -1403,7 +1403,7 @@ PASS <input vspace="200"> mapping to marginTop > PASS <input vspace="1007"> mapping to marginTop > PASS <input vspace=" 00523 "> mapping to marginTop > PASS <input vspace="200.25"> mapping to marginTop >-FAIL <input vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px" > PASS <input vspace="200."> mapping to marginTop > PASS <input vspace="200in"> mapping to marginTop > PASS <input vspace="200.25in"> mapping to marginTop >@@ -1443,7 +1443,7 @@ PASS <input vspace="200"> mapping to marginBottom > PASS <input vspace="1007"> mapping to marginBottom > PASS <input vspace=" 00523 "> mapping to marginBottom > PASS <input vspace="200.25"> mapping to marginBottom >-FAIL <input vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <input vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px" > PASS <input vspace="200."> mapping to marginBottom > PASS <input vspace="200in"> mapping to marginBottom > PASS <input vspace="200.25in"> mapping to marginBottom >@@ -1483,7 +1483,7 @@ PASS <marquee hspace="200"> mapping to marginLeft > PASS <marquee hspace="1007"> mapping to marginLeft > PASS <marquee hspace=" 00523 "> mapping to marginLeft > PASS <marquee hspace="200.25"> mapping to marginLeft >-FAIL <marquee hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee hspace="200."> mapping to marginLeft > PASS <marquee hspace="200in"> mapping to marginLeft > PASS <marquee hspace="200.25in"> mapping to marginLeft >@@ -1523,7 +1523,7 @@ PASS <marquee hspace="200"> mapping to marginRight > PASS <marquee hspace="1007"> mapping to marginRight > PASS <marquee hspace=" 00523 "> mapping to marginRight > PASS <marquee hspace="200.25"> mapping to marginRight >-FAIL <marquee hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee hspace="200."> mapping to marginRight > PASS <marquee hspace="200in"> mapping to marginRight > PASS <marquee hspace="200.25in"> mapping to marginRight >@@ -1563,7 +1563,7 @@ PASS <marquee vspace="200"> mapping to marginTop > PASS <marquee vspace="1007"> mapping to marginTop > PASS <marquee vspace=" 00523 "> mapping to marginTop > PASS <marquee vspace="200.25"> mapping to marginTop >-FAIL <marquee vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee vspace="200."> mapping to marginTop > PASS <marquee vspace="200in"> mapping to marginTop > PASS <marquee vspace="200.25in"> mapping to marginTop >@@ -1603,7 +1603,7 @@ PASS <marquee vspace="200"> mapping to marginBottom > PASS <marquee vspace="1007"> mapping to marginBottom > PASS <marquee vspace=" 00523 "> mapping to marginBottom > PASS <marquee vspace="200.25"> mapping to marginBottom >-FAIL <marquee vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px" >+FAIL <marquee vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px" > PASS <marquee vspace="200."> mapping to marginBottom > PASS <marquee vspace="200in"> mapping to marginBottom > PASS <marquee vspace="200.25in"> mapping to marginBottom >diff --git a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >index 785d37efb7ddca98fe7134c7d09c32dd45fe8886..32da5fb0d2b394bd1e635f4e6185428b0e497198 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >@@ -172,7 +172,7 @@ PASS <body marginwidth="1007"> mapping to marginLeft > PASS <body marginwidth=" 00523 "> mapping to marginLeft > PASS <body marginwidth="200."> mapping to marginLeft > FAIL <body marginwidth="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px" > PASS <body marginwidth="0"> mapping to marginLeft > FAIL <body marginwidth="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" > FAIL <body marginwidth="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" >@@ -193,7 +193,7 @@ PASS <body marginwidth="1007"> mapping to marginRight > PASS <body marginwidth=" 00523 "> mapping to marginRight > PASS <body marginwidth="200."> mapping to marginRight > FAIL <body marginwidth="200.25"> mapping to marginRight assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.699997px" > PASS <body marginwidth="0"> mapping to marginRight > FAIL <body marginwidth="-0"> mapping to marginRight assert_equals: expected "0px" but got "8px" > FAIL <body marginwidth="+0"> mapping to marginRight assert_equals: expected "0px" but got "8px" >@@ -214,7 +214,7 @@ PASS <body leftmargin="1007"> mapping to marginLeft > PASS <body leftmargin=" 00523 "> mapping to marginLeft > PASS <body leftmargin="200."> mapping to marginLeft > FAIL <body leftmargin="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px" >-FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px" > PASS <body leftmargin="0"> mapping to marginLeft > FAIL <body leftmargin="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" > FAIL <body leftmargin="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" >@@ -256,7 +256,7 @@ PASS <body marginheight="1007"> mapping to marginTop > PASS <body marginheight=" 00523 "> mapping to marginTop > PASS <body marginheight="200."> mapping to marginTop > FAIL <body marginheight="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px" > PASS <body marginheight="0"> mapping to marginTop > FAIL <body marginheight="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px" > FAIL <body marginheight="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px" >@@ -277,7 +277,7 @@ PASS <body marginheight="1007"> mapping to marginBottom > PASS <body marginheight=" 00523 "> mapping to marginBottom > PASS <body marginheight="200."> mapping to marginBottom > FAIL <body marginheight="200.25"> mapping to marginBottom assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.699997px" > PASS <body marginheight="0"> mapping to marginBottom > FAIL <body marginheight="-0"> mapping to marginBottom assert_equals: expected "0px" but got "8px" > FAIL <body marginheight="+0"> mapping to marginBottom assert_equals: expected "0px" but got "8px" >@@ -298,7 +298,7 @@ PASS <body topmargin="1007"> mapping to marginTop > PASS <body topmargin=" 00523 "> mapping to marginTop > PASS <body topmargin="200."> mapping to marginTop > FAIL <body topmargin="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px" >-FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px" > PASS <body topmargin="0"> mapping to marginTop > FAIL <body topmargin="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px" > FAIL <body topmargin="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt >index 65f7912c08ba76a58f4a0c95cf6ae68ec670f504..1639fa383189d800fea4f694b51e5d57ee962dd8 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt >@@ -170,8 +170,8 @@ PASS empty-cells (type: discrete) has testAccumulation function > PASS empty-cells: "hide" onto "show" > PASS empty-cells: "show" onto "hide" > PASS fill-opacity (type: opacity) has testAccumulation function >-FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS fill-opacity: [0, 1] number >+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS filter (type: filterList) has testAccumulation function > FAIL filter: same ordered filter functions assert_equals: The value should be blur(30px) brightness(0) at 0ms expected "blur(30px) brightness(0)" but got "blur(30px) brightness(0.4)" > PASS filter: mismatched ordered filter functions >@@ -194,9 +194,9 @@ PASS flex-direction (type: discrete) has testAccumulation function > PASS flex-direction: "row-reverse" onto "row" > PASS flex-direction: "row" onto "row-reverse" > PASS flex-grow (type: positiveNumber) has testAccumulation function >-FAIL flex-grow: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS flex-grow: positive number > PASS flex-shrink (type: positiveNumber) has testAccumulation function >-FAIL flex-shrink: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS flex-shrink: positive number > PASS flex-wrap (type: discrete) has testAccumulation function > PASS flex-wrap: "wrap" onto "nowrap" > PASS flex-wrap: "nowrap" onto "wrap" >@@ -208,8 +208,8 @@ PASS flood-color supports animating as color of #RGBa > PASS flood-color supports animating as color of rgba() > PASS flood-color supports animating as color of hsla() > PASS flood-opacity (type: opacity) has testAccumulation function >-FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS flood-opacity: [0, 1] number >+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS font-stretch (type: percentage) has testAccumulation function > PASS font-stretch: percentage > PASS font-style (type: discrete) has testAccumulation function >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt >index e2cfbabe93682179f5f891bbc6d58ebfc68816ec..ef99d6db5ce75cc8da2d4c26d2a324d13de64f48 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt >@@ -115,18 +115,18 @@ PASS stop-color supports animating as color of #RGBa > PASS stop-color supports animating as color of rgba() > PASS stop-color supports animating as color of hsla() > PASS stop-opacity (type: opacity) has testAccumulation function >-FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS stop-opacity: [0, 1] number >+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS stroke-dasharray (type: dasharray) has testAccumulation function > PASS stroke-dasharray: dasharray > PASS stroke-dasharray (type: discrete) has testAccumulation function > PASS stroke-dasharray: "10px, 20px" onto "none" > PASS stroke-dasharray: "none" onto "10px, 20px" > PASS stroke-miterlimit (type: positiveNumber) has testAccumulation function >-FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS stroke-miterlimit: positive number > PASS stroke-opacity (type: opacity) has testAccumulation function >-FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS stroke-opacity: [0, 1] number >+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS table-layout (type: discrete) has testAccumulation function > PASS table-layout: "fixed" onto "auto" > PASS table-layout: "auto" onto "fixed" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt >index 4ac2b14397f2eee1ecfbc1ce976b4c70ad0def6a..c58d85d7b4243fb201f0061f2cee0690407671c9 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt >@@ -170,8 +170,8 @@ PASS empty-cells (type: discrete) has testAddition function > PASS empty-cells: "hide" onto "show" > PASS empty-cells: "show" onto "hide" > PASS fill-opacity (type: opacity) has testAddition function >-FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS fill-opacity: [0, 1] number >+FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS filter (type: filterList) has testAddition function > FAIL filter: blur on blur assert_equals: The value should be blur(10px) blur(20px) at 0ms expected "blur(10px) blur(20px)" but got "blur(30px)" > FAIL filter: different filter functions assert_equals: The value should be blur(10px) brightness(0.8) at 0ms expected "blur(10px) brightness(0.8)" but got "brightness(0.8)" >@@ -194,9 +194,9 @@ PASS flex-direction (type: discrete) has testAddition function > PASS flex-direction: "row-reverse" onto "row" > PASS flex-direction: "row" onto "row-reverse" > PASS flex-grow (type: positiveNumber) has testAddition function >-FAIL flex-grow: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS flex-grow: positive number > PASS flex-shrink (type: positiveNumber) has testAddition function >-FAIL flex-shrink: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS flex-shrink: positive number > PASS flex-wrap (type: discrete) has testAddition function > PASS flex-wrap: "wrap" onto "nowrap" > PASS flex-wrap: "nowrap" onto "wrap" >@@ -208,8 +208,8 @@ PASS flood-color supports animating as color of #RGBa > PASS flood-color supports animating as color of rgba() > PASS flood-color supports animating as color of hsla() > PASS flood-opacity (type: opacity) has testAddition function >-FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS flood-opacity: [0, 1] number >+FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS font-stretch (type: percentage) has testAddition function > PASS font-stretch: percentage > PASS font-style (type: discrete) has testAddition function >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt >index ad8d3f19dfd30c1cacf5e18c4d3dc01d0a2aae03..749662ba2b785f4ba54c31be646402aacf11ba4a 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt >@@ -115,18 +115,18 @@ PASS stop-color supports animating as color of #RGBa > PASS stop-color supports animating as color of rgba() > PASS stop-color supports animating as color of hsla() > PASS stop-opacity (type: opacity) has testAddition function >-FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS stop-opacity: [0, 1] number >+FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS stroke-dasharray (type: dasharray) has testAddition function > PASS stroke-dasharray: dasharray > PASS stroke-dasharray (type: discrete) has testAddition function > PASS stroke-dasharray: "10px, 20px" onto "none" > PASS stroke-dasharray: "none" onto "10px, 20px" > PASS stroke-miterlimit (type: positiveNumber) has testAddition function >-FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716" >+PASS stroke-miterlimit: positive number > PASS stroke-opacity (type: opacity) has testAddition function >-FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579" >-FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858" >+PASS stroke-opacity: [0, 1] number >+FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1" > PASS table-layout (type: discrete) has testAddition function > PASS table-layout: "fixed" onto "auto" > PASS table-layout: "auto" onto "fixed" >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt >index ef262a07dea9d15b9dc60b58405c7cfb255915f6..b35046e489de2a18eddf24bff1c76593d3c85d16 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt >@@ -204,19 +204,19 @@ PASS empty-cells uses discrete animation when animating between "show" and "hide > PASS empty-cells uses discrete animation when animating between "show" and "hide" with effect easing > PASS empty-cells uses discrete animation when animating between "show" and "hide" with keyframe easing > PASS fill-opacity (type: opacity) has testInterpolation function >-FAIL fill-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929" >+PASS fill-opacity supports animating as a [0, 1] number > PASS filter (type: filterList) has testInterpolation function > PASS filter: blur function > PASS filter: hue-rotate function with same unit(deg) >-FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(2869.79deg) at 500ms expected "hue-rotate(2869.79deg)" but got "hue-rotate(2869.7889756541163deg)" >+FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(2869.79deg) at 500ms expected "hue-rotate(2869.79deg)" but got "hue-rotate(2869.788976deg)" > PASS filter: drop-shadow function >-FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)" >-FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)" >+PASS filter: percentage or numeric-specifiable functions (number value) >+PASS filter: percentage or numeric-specifiable functions (percentage value) > FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)" > FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0) grayscale(1) invert(1) sepia(1) blur(10px)" > FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(0, 0, 255, 0.4) 5px 5px 5px) at 500ms expected "blur(5px) drop-shadow(rgba(0, 0, 255, 0.4) 5px 5px 5px)" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)" > PASS filter: interpolate from none >-FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.989999771118164px) url(\"#f1\")" >+FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.99px) url(\"#f1\")" > PASS flex-basis (type: lengthPercentageOrCalc) has testInterpolation function > PASS flex-basis supports animating as a length > PASS flex-basis supports animating as a length of rem >@@ -235,9 +235,9 @@ PASS flex-direction uses discrete animation when animating between "row" and "ro > PASS flex-direction uses discrete animation when animating between "row" and "row-reverse" with effect easing > PASS flex-direction uses discrete animation when animating between "row" and "row-reverse" with keyframe easing > PASS flex-grow (type: positiveNumber) has testInterpolation function >-FAIL flex-grow supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842" >+PASS flex-grow supports animating as a positive number > PASS flex-shrink (type: positiveNumber) has testInterpolation function >-FAIL flex-shrink supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842" >+PASS flex-shrink supports animating as a positive number > PASS flex-wrap (type: discrete) has testInterpolation function > PASS flex-wrap uses discrete animation when animating between "nowrap" and "wrap" with linear easing > PASS flex-wrap uses discrete animation when animating between "nowrap" and "wrap" with effect easing >@@ -250,7 +250,7 @@ PASS flood-color supports animating as color of #RGBa > PASS flood-color supports animating as color of rgba() > PASS flood-color supports animating as color of hsla() > PASS flood-opacity (type: opacity) has testInterpolation function >-FAIL flood-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929" >+PASS flood-opacity supports animating as a [0, 1] number > PASS font-stretch (type: percentage) has testInterpolation function > PASS font-stretch supports animating as a percentage > PASS font-style (type: discrete) has testInterpolation function >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt >index a76a28733584941a750615f16b5d0108d39b7d30..7871d3ee1d14ca9f2b0df6422d4c59f70331d9dc 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt >@@ -133,10 +133,10 @@ PASS stop-color supports animating as color of #RGBa > PASS stop-color supports animating as color of rgba() > PASS stop-color supports animating as color of hsla() > PASS stop-opacity (type: opacity) has testInterpolation function >-FAIL stop-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929" >+PASS stop-opacity supports animating as a [0, 1] number > PASS stroke-dasharray (type: dasharray) has testInterpolation function > PASS stroke-dasharray supports animating as a percentage >-FAIL stroke-dasharray supports animating as a positive number assert_equals: The value should be 1.3px at 500ms expected "1.3px" but got "1.2999999523162842px" >+PASS stroke-dasharray supports animating as a positive number > PASS stroke-dasharray supports animating as a dasharray (mismatched length) > PASS stroke-dasharray supports animating as a dasharray (mixed lengths and percentages) > PASS stroke-dasharray (type: discrete) has testInterpolation function >@@ -144,9 +144,9 @@ PASS stroke-dasharray uses discrete animation when animating between "none" and > PASS stroke-dasharray uses discrete animation when animating between "none" and "10px, 20px" with effect easing > PASS stroke-dasharray uses discrete animation when animating between "none" and "10px, 20px" with keyframe easing > PASS stroke-miterlimit (type: positiveNumber) has testInterpolation function >-FAIL stroke-miterlimit supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842" >+PASS stroke-miterlimit supports animating as a positive number > PASS stroke-opacity (type: opacity) has testInterpolation function >-FAIL stroke-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929" >+PASS stroke-opacity supports animating as a [0, 1] number > PASS table-layout (type: discrete) has testInterpolation function > PASS table-layout uses discrete animation when animating between "auto" and "fixed" with linear easing > PASS table-layout uses discrete animation when animating between "auto" and "fixed" with effect easing >diff --git a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt >index 9f5962c50ab4600cace77c9006e03e0aeea5193b..f180dc4d238882a0039249954747380fb42f661b 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt >+++ b/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt >@@ -8,7 +8,7 @@ FAIL iteration composition of <number> type animation assert_equals: Animated fl > FAIL iteration composition of <shape> type animation assert_equals: Animated clip style at 0s of the third iteration expected "rect(20px, 20px, 20px, 20px)" but got "rect(0px, 0px, 0px, 0px)" > FAIL iteration composition of <calc()> value animation assert_equals: Animated calc width style at 0s of the third iteration expected "20px" but got "0px" > FAIL iteration composition of <calc()> value animation that the values can'tbe reduced assert_equals: Animated calc width style at 0s of the third iteration expected "40px" but got "0px" >-FAIL iteration composition of opacity animation assert_equals: Animated opacity style at 50s of the first iteration expected "0.2" but got "0.20000000298023224" >+FAIL iteration composition of opacity animation assert_equals: Animated opacity style at 0s of the third iteration expected "0.8" but got "0" > FAIL iteration composition of box-shadow animation assert_equals: Animated box-shadow style at 0s of the third iteration expected "rgb(240, 240, 240) 20px 20px 20px 0px" but got "rgb(0, 0, 0) 0px 0px 0px 0px" > FAIL iteration composition of filter blur animation assert_equals: Animated filter blur style at 0s of the third iteration expected "blur(20px)" but got "blur(0px)" > FAIL iteration composition of filter brightness for different unit animation assert_equals: Animated filter brightness style at 0s of the third iteration expected "brightness(2.6)" but got "brightness(1)" >diff --git a/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt b/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt >index 6bb555109c4929f4fd1e7351a3810f7337c4f735..278d28b18bb18592beb3aecedf36ed241e87dc29 100644 >--- a/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt >+++ b/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt >@@ -9,7 +9,7 @@ PASS volumeSliderContainerStyle.left is "566px" > PASS volumeSliderContainerStyle.top is "226px" > PASS volumeSliderContainerStyle.width is "94px" > PASS volumeSliderContainerStyle.height is "31px" >-PASS volumeSliderContainerStyle.transform is "matrix(6.123233995736766e-17, -1, 1, 6.123233995736766e-17, -30, -26.000000000000004)" >+PASS volumeSliderContainerStyle.transform is "matrix(0, -1, 1, 0, -30, -26)" > PASS volumeSliderStyle.marginLeft is "6px" > PASS volumeSliderStyle.width is "60px" > PASS volumeSliderStyle.height is "16px" >diff --git a/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html b/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html >index ef8695b9b22d47cfd6714563c1fce527037624bb..92a5a3498c1354a4e2239ee06de620cea47d1703 100644 >--- a/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html >+++ b/LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html >@@ -20,7 +20,7 @@ shouldBecomeEqual("mediaControls.volumeSlider.parent.element.parentNode", "media > shouldBeEqualToString("volumeSliderContainerStyle.top", "226px"); > shouldBeEqualToString("volumeSliderContainerStyle.width", "94px"); > shouldBeEqualToString("volumeSliderContainerStyle.height", "31px"); >- shouldBeEqualToString("volumeSliderContainerStyle.transform", "matrix(6.123233995736766e-17, -1, 1, 6.123233995736766e-17, -30, -26.000000000000004)"); >+ shouldBeEqualToString("volumeSliderContainerStyle.transform", "matrix(0, -1, 1, 0, -30, -26)"); > > volumeSliderStyle = window.getComputedStyle(mediaControls.volumeSlider.element); > shouldBeEqualToString("volumeSliderStyle.marginLeft", "6px"); >diff --git a/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt b/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >index b2cd500a359836215bd12f1ac4fc396421c540e2..c4b12f96544eea4720af489f772410fcef080e04 100644 >--- a/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >+++ b/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt >@@ -172,7 +172,7 @@ PASS <body marginwidth="1007"> mapping to marginLeft > PASS <body marginwidth=" 00523 "> mapping to marginLeft > PASS <body marginwidth="200."> mapping to marginLeft > FAIL <body marginwidth="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px" > PASS <body marginwidth="0"> mapping to marginLeft > FAIL <body marginwidth="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" > FAIL <body marginwidth="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" >@@ -193,7 +193,7 @@ PASS <body marginwidth="1007"> mapping to marginRight > PASS <body marginwidth=" 00523 "> mapping to marginRight > PASS <body marginwidth="200."> mapping to marginRight > FAIL <body marginwidth="200.25"> mapping to marginRight assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.699997px" > PASS <body marginwidth="0"> mapping to marginRight > FAIL <body marginwidth="-0"> mapping to marginRight assert_equals: expected "0px" but got "8px" > FAIL <body marginwidth="+0"> mapping to marginRight assert_equals: expected "0px" but got "8px" >@@ -214,7 +214,7 @@ PASS <body leftmargin="1007"> mapping to marginLeft > PASS <body leftmargin=" 00523 "> mapping to marginLeft > PASS <body leftmargin="200."> mapping to marginLeft > FAIL <body leftmargin="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px" >-FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px" > PASS <body leftmargin="0"> mapping to marginLeft > FAIL <body leftmargin="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" > FAIL <body leftmargin="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px" >@@ -256,7 +256,7 @@ PASS <body marginheight="1007"> mapping to marginTop > PASS <body marginheight=" 00523 "> mapping to marginTop > PASS <body marginheight="200."> mapping to marginTop > FAIL <body marginheight="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px" > PASS <body marginheight="0"> mapping to marginTop > FAIL <body marginheight="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px" > FAIL <body marginheight="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px" >@@ -277,7 +277,7 @@ PASS <body marginheight="1007"> mapping to marginBottom > PASS <body marginheight=" 00523 "> mapping to marginBottom > PASS <body marginheight="200."> mapping to marginBottom > FAIL <body marginheight="200.25"> mapping to marginBottom assert_equals: expected "200px" but got "200.25px" >-FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.699997px" > PASS <body marginheight="0"> mapping to marginBottom > FAIL <body marginheight="-0"> mapping to marginBottom assert_equals: expected "0px" but got "8px" > FAIL <body marginheight="+0"> mapping to marginBottom assert_equals: expected "0px" but got "8px" >@@ -298,7 +298,7 @@ PASS <body topmargin="1007"> mapping to marginTop > PASS <body topmargin=" 00523 "> mapping to marginTop > PASS <body topmargin="200."> mapping to marginTop > FAIL <body topmargin="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px" >-FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px" >+FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px" > PASS <body topmargin="0"> mapping to marginTop > FAIL <body topmargin="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px" > FAIL <body topmargin="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px" >diff --git a/LayoutTests/platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt b/LayoutTests/platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt >index 94dece6bbf3faa86c3a0ecd9496803aaa3f1e74d..0e347e909a64bc661a6afecc235d2b0d30322437 100644 >--- a/LayoutTests/platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt >+++ b/LayoutTests/platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt >@@ -7,4 +7,4 @@ PASS successfullyParsed is true > > TEST COMPLETE > >-Computed style height: 20.9921875px >+Computed style height: 20.992188px >diff --git a/LayoutTests/svg/css/parse-height-expected.txt b/LayoutTests/svg/css/parse-height-expected.txt >index 98ec8dc2b86b5be5fc6ff18cc640cd6df6e035b7..cd721f3bf26ca2481e5d2f29d35988b13a715d0f 100644 >--- a/LayoutTests/svg/css/parse-height-expected.txt >+++ b/LayoutTests/svg/css/parse-height-expected.txt >@@ -16,7 +16,7 @@ PASS computedStyle("height", " 100") is "100px" > PASS computedStyle("height", "100 ") is "100px" > PASS computedStyle("height", "100px") is "100px" > PASS computedStyle("height", "1em") is "16px" >-PASS computedStyle("height", "1ex") is "12.800000190734863px" >+PASS computedStyle("height", "1ex") is "12.8px" > PASS computedStyle("height", "20%") is "20%" > PASS computedStyle("height", "100 px") is "auto" > PASS computedStyle("height", "100px;") is "auto" >diff --git a/LayoutTests/svg/css/parse-height.html b/LayoutTests/svg/css/parse-height.html >index eb65bcae83c1fe91494ae25af5c995f938c90f0b..cb0079fb4ba32deac324c79fa0f5e03a71d5c110 100644 >--- a/LayoutTests/svg/css/parse-height.html >+++ b/LayoutTests/svg/css/parse-height.html >@@ -34,7 +34,7 @@ testComputed("height", " 100", "100px"); > testComputed("height", "100 ", "100px"); > testComputed("height", "100px", "100px"); > testComputed("height", "1em", "16px"); >-testComputed("height", "1ex", "12.800000190734863px"); >+testComputed("height", "1ex", "12.8px"); > testComputed("height", "20%", "20%"); > // FIXME: Vieport units not implemented for SVG at the moment. > // testComputed("height", "1vh", "7.869999885559082px"); >diff --git a/LayoutTests/svg/css/parse-length-expected.txt b/LayoutTests/svg/css/parse-length-expected.txt >index 495ed5f46bc1bcbe026619b8803a17c8747d5958..8c374b4aa4adbb1553b9b4d1af83bdb42953625a 100644 >--- a/LayoutTests/svg/css/parse-length-expected.txt >+++ b/LayoutTests/svg/css/parse-length-expected.txt >@@ -45,35 +45,35 @@ PASS computedStyle("cx", " 100") is "100px" > PASS computedStyle("cx", "100 ") is "100px" > PASS computedStyle("cx", "100px") is "100px" > PASS computedStyle("cx", "1em") is "16px" >-PASS computedStyle("cx", "1ex") is "12.800000190734863px" >+PASS computedStyle("cx", "1ex") is "12.8px" > PASS computedStyle("cx", "20%") is "20%" > PASS computedStyle("cx", "-200px") is "-200px" > PASS computedStyle("cy", " 100") is "100px" > PASS computedStyle("cy", "100 ") is "100px" > PASS computedStyle("cy", "100px") is "100px" > PASS computedStyle("cy", "1em") is "16px" >-PASS computedStyle("cy", "1ex") is "12.800000190734863px" >+PASS computedStyle("cy", "1ex") is "12.8px" > PASS computedStyle("cy", "20%") is "20%" > PASS computedStyle("cy", "-200px") is "-200px" > PASS computedStyle("r", " 100") is "100px" > PASS computedStyle("r", "100 ") is "100px" > PASS computedStyle("r", "100px") is "100px" > PASS computedStyle("r", "1em") is "16px" >-PASS computedStyle("r", "1ex") is "12.800000190734863px" >+PASS computedStyle("r", "1ex") is "12.8px" > PASS computedStyle("r", "20%") is "20%" > PASS computedStyle("r", "-200px") is "0px" > PASS computedStyle("rx", " 100") is "100px" > PASS computedStyle("rx", "100 ") is "100px" > PASS computedStyle("rx", "100px") is "100px" > PASS computedStyle("rx", "1em") is "16px" >-PASS computedStyle("rx", "1ex") is "12.800000190734863px" >+PASS computedStyle("rx", "1ex") is "12.8px" > PASS computedStyle("rx", "20%") is "20%" > PASS computedStyle("rx", "-200px") is "auto" > PASS computedStyle("ry", " 100") is "100px" > PASS computedStyle("ry", "100 ") is "100px" > PASS computedStyle("ry", "100px") is "100px" > PASS computedStyle("ry", "1em") is "16px" >-PASS computedStyle("ry", "1ex") is "12.800000190734863px" >+PASS computedStyle("ry", "1ex") is "12.8px" > PASS computedStyle("ry", "20%") is "20%" > PASS computedStyle("ry", "-200px") is "auto" > PASS computedStyle("width", "auto") is "auto" >@@ -81,20 +81,20 @@ PASS computedStyle("width", " 100") is "100px" > PASS computedStyle("width", "100 ") is "100px" > PASS computedStyle("width", "100px") is "100px" > PASS computedStyle("width", "1em") is "16px" >-PASS computedStyle("width", "1ex") is "12.800000190734863px" >+PASS computedStyle("width", "1ex") is "12.8px" > PASS computedStyle("width", "20%") is "20%" > PASS computedStyle("x", " 100") is "100px" > PASS computedStyle("x", "100 ") is "100px" > PASS computedStyle("x", "100px") is "100px" > PASS computedStyle("x", "1em") is "16px" >-PASS computedStyle("x", "1ex") is "12.800000190734863px" >+PASS computedStyle("x", "1ex") is "12.8px" > PASS computedStyle("x", "20%") is "20%" > PASS computedStyle("x", "-200px") is "-200px" > PASS computedStyle("y", " 100") is "100px" > PASS computedStyle("y", "100 ") is "100px" > PASS computedStyle("y", "100px") is "100px" > PASS computedStyle("y", "1em") is "16px" >-PASS computedStyle("y", "1ex") is "12.800000190734863px" >+PASS computedStyle("y", "1ex") is "12.8px" > PASS computedStyle("y", "20%") is "20%" > PASS computedStyle("y", "-200px") is "-200px" > PASS computedStyle("cx", "auto") is "0px" >diff --git a/LayoutTests/svg/css/parse-length.html b/LayoutTests/svg/css/parse-length.html >index 839d446290078c6eefe5f5dc4011925f6674672b..b923b2458fcbbee3e51a678194703140dcf2ff5f 100644 >--- a/LayoutTests/svg/css/parse-length.html >+++ b/LayoutTests/svg/css/parse-length.html >@@ -37,7 +37,7 @@ testComputed("cx", " 100", "100px"); > testComputed("cx", "100 ", "100px"); > testComputed("cx", "100px", "100px"); > testComputed("cx", "1em", "16px"); >-testComputed("cx", "1ex", "12.800000190734863px"); >+testComputed("cx", "1ex", "12.8px"); > testComputed("cx", "20%", "20%"); > testComputed("cx", "-200px", "-200px"); > >@@ -46,7 +46,7 @@ testComputed("cy", " 100", "100px"); > testComputed("cy", "100 ", "100px"); > testComputed("cy", "100px", "100px"); > testComputed("cy", "1em", "16px"); >-testComputed("cy", "1ex", "12.800000190734863px"); >+testComputed("cy", "1ex", "12.8px"); > testComputed("cy", "20%", "20%"); > testComputed("cy", "-200px", "-200px"); > >@@ -55,7 +55,7 @@ testComputed("r", " 100", "100px"); > testComputed("r", "100 ", "100px"); > testComputed("r", "100px", "100px"); > testComputed("r", "1em", "16px"); >-testComputed("r", "1ex", "12.800000190734863px"); >+testComputed("r", "1ex", "12.8px"); > testComputed("r", "20%", "20%"); > testComputed("r", "-200px", "0px"); > >@@ -64,7 +64,7 @@ testComputed("rx", " 100", "100px"); > testComputed("rx", "100 ", "100px"); > testComputed("rx", "100px", "100px"); > testComputed("rx", "1em", "16px"); >-testComputed("rx", "1ex", "12.800000190734863px"); >+testComputed("rx", "1ex", "12.8px"); > testComputed("rx", "20%", "20%"); > testComputed("rx", "-200px", "auto"); > >@@ -73,7 +73,7 @@ testComputed("ry", " 100", "100px"); > testComputed("ry", "100 ", "100px"); > testComputed("ry", "100px", "100px"); > testComputed("ry", "1em", "16px"); >-testComputed("ry", "1ex", "12.800000190734863px"); >+testComputed("ry", "1ex", "12.8px"); > testComputed("ry", "20%", "20%"); > testComputed("ry", "-200px", "auto"); > >@@ -83,7 +83,7 @@ testComputed("width", " 100", "100px"); > testComputed("width", "100 ", "100px"); > testComputed("width", "100px", "100px"); > testComputed("width", "1em", "16px"); >-testComputed("width", "1ex", "12.800000190734863px"); >+testComputed("width", "1ex", "12.8px"); > testComputed("width", "20%", "20%"); > // FIXME: Vieport units not implemented for SVG at the moment. > // testComputed("width", "1vh", "7.869999885559082px"); >@@ -94,7 +94,7 @@ testComputed("x", " 100", "100px"); > testComputed("x", "100 ", "100px"); > testComputed("x", "100px", "100px"); > testComputed("x", "1em", "16px"); >-testComputed("x", "1ex", "12.800000190734863px"); >+testComputed("x", "1ex", "12.8px"); > testComputed("x", "20%", "20%"); > testComputed("x", "-200px", "-200px"); > >@@ -103,7 +103,7 @@ testComputed("y", " 100", "100px"); > testComputed("y", "100 ", "100px"); > testComputed("y", "100px", "100px"); > testComputed("y", "1em", "16px"); >-testComputed("y", "1ex", "12.800000190734863px"); >+testComputed("y", "1ex", "12.8px"); > testComputed("y", "20%", "20%"); > testComputed("y", "-200px", "-200px"); > >diff --git a/LayoutTests/transitions/frames-timing-function-expected.txt b/LayoutTests/transitions/frames-timing-function-expected.txt >index 3e6bc7d9386c45b0573989ff6cd74f006e3ca713..a634c457408cc0d31cc87deae6d674940e580e67 100644 >--- a/LayoutTests/transitions/frames-timing-function-expected.txt >+++ b/LayoutTests/transitions/frames-timing-function-expected.txt >@@ -1,6 +1,6 @@ > The box should move horizontally 200px over 1s, in 4 equal increments. > >-FAIL - "-webkit-transform.4" property for "box" element at 0.25s expected: 50 but saw: matrix(1, 0, 0, 1, 81.71330261230469, 0) >-FAIL - "-webkit-transform.4" property for "box" element at 0.5s expected: 100 but saw: matrix(1, 0, 0, 1, 160.4827880859375, 0) >-FAIL - "-webkit-transform.4" property for "box" element at 0.75s expected: 150 but saw: matrix(1, 0, 0, 1, 192.13755798339844, 0) >+FAIL - "-webkit-transform.4" property for "box" element at 0.25s expected: 50 but saw: matrix(1, 0, 0, 1, 81.713303, 0) >+FAIL - "-webkit-transform.4" property for "box" element at 0.5s expected: 100 but saw: matrix(1, 0, 0, 1, 160.482788, 0) >+FAIL - "-webkit-transform.4" property for "box" element at 0.75s expected: 150 but saw: matrix(1, 0, 0, 1, 192.137558, 0) >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 218880
:
413990
|
414000
|
414187
|
414189
|
414193
|
414194
|
414235
|
437971
|
444718
|
444776
|
444933
|
444977
|
444985
|
444994
|
445324
|
448822
|
448829
|
448889