Changeset 286795 in webkit


Ignore:
Timestamp:
Dec 9, 2021 12:22:34 PM (7 months ago)
Author:
commit-queue@webkit.org
Message:

Unprefix -webkit-mask
https://bugs.webkit.org/show_bug.cgi?id=229082

Patch by Matt Woodrow <matt.woodrow@gmail.com> on 2021-12-09
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.txt:
  • web-platform-tests/css/css-masking/animations/mask-position-interpolation-expected.txt:
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html:
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html:
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
  • web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
  • web-platform-tests/css/css-masking/clip-path/animations/w3c-import.log:
  • web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-001-expected.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-002-expected.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-001-expected.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-002-expected.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-expected.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-font-loading.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html:
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html:
  • web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html:
  • web-platform-tests/css/css-masking/clip-path/reference-mutated.html:
  • web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local.html:
  • web-platform-tests/css/css-masking/clip-path/w3c-import.log:
  • web-platform-tests/css/css-masking/clip-rule/clip-rule-001.html:
  • web-platform-tests/css/css-masking/clip-rule/clip-rule-002.html:
  • web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html:
  • web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-002.html:
  • web-platform-tests/css/css-masking/hit-test/clip-path-element-userspaceonuse-001.html:
  • web-platform-tests/css/css-masking/idlharness.html:
  • web-platform-tests/css/css-masking/inheritance.sub-expected.txt:
  • web-platform-tests/css/css-masking/parsing/mask-position-valid-expected.txt:
  • web-platform-tests/css/css-masking/parsing/mask-valid.sub-expected.txt:

Source/WebCore:

Tests: fast/masking/parsing-webkit-mask.html

imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll.html
svg/masking/mask-external-reference-expected.svg
svg/masking/mask-external-reference.svg

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::createPositionListForLayer):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSImageValue.cpp:

(WebCore::ResolvedURL::isLocalURL const):
(WebCore::CSSImageValue::reresolvedURL const):

  • css/CSSImageValue.h:
  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::create):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator CompositeOperator const):
(WebCore::CSSPrimitiveValue::operator FillBox const):

  • css/CSSProperties.json:
  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapFillMaskMode):

  • css/CSSValueKeywords.in:
  • css/CSSValuePool.h:

(WebCore::CSSValuePool::createValue):

  • css/SVGCSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::svgPropertyValue):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue const):
(WebCore::resolvedClipValue):
(WebCore::isSameAsInitialClipValue):
(WebCore::StyleProperties::getLayeredShorthandValue const):
(WebCore::StyleProperties::asText const):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeMaskClip):
(WebCore::consumePrefixedBackgroundComposite):
(WebCore::consumeBackgroundComposite):
(WebCore::consumeBackgroundComponent):
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::consumeBackgroundPosition):
(WebCore::CSSPropertyParser::consumeBackgroundShorthand):
(WebCore::CSSPropertyParser::parseShorthand):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::consumePositionCoordinates):

  • display/css/DisplayBoxDecorationPainter.cpp:

(WebCore::Display::BoxDecorationPainter::paintFillLayer const):

  • rendering/style/FillLayer.cpp:

(WebCore::clipMax):
(WebCore::FillLayer::computeClipMax const):

  • rendering/style/FillLayer.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::rareNonInheritedDataChangeRequiresLayerRepaint):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasPositionedMask const):

  • rendering/style/RenderStyleConstants.cpp:

(WebCore::operator<<):

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/SVGRenderStyle.cpp:

(WebCore::SVGRenderStyle::SVGRenderStyle):
(WebCore::SVGRenderStyle::operator== const):
(WebCore::SVGRenderStyle::copyNonInheritedFrom):
(WebCore::SVGRenderStyle::diff const):

  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::initialLightingColor):
(WebCore::SVGRenderStyle::y const):
(WebCore::SVGRenderStyle::hasFill const):
(WebCore::SVGRenderStyle::initialMaskerResource): Deleted.
(WebCore::SVGRenderStyle::maskerResource const): Deleted.
(WebCore::SVGRenderStyle::hasMasker const): Deleted.
(WebCore::SVGRenderStyle::isolatesBlending const): Deleted.
(WebCore::SVGRenderStyle::setMaskerResource): Deleted.

  • rendering/style/SVGRenderStyleDefs.cpp:

(WebCore::StyleResourceData::StyleResourceData): Deleted.
(WebCore::StyleResourceData::copy const): Deleted.
(WebCore::StyleResourceData::operator== const): Deleted.

  • rendering/style/SVGRenderStyleDefs.h:

(WebCore::StyleResourceData::create): Deleted.
(WebCore::StyleResourceData::operator!= const): Deleted.

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::imageURL const):
(WebCore::StyleCachedImage::reresolvedURL const):
(WebCore::StyleCachedImage::imageURL): Deleted.

  • rendering/style/StyleCachedImage.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • rendering/svg/SVGRenderSupport.cpp:

(WebCore::SVGRenderSupport::isolatesBlending):
(WebCore::SVGRenderSupport::updateMaskedAncestorShouldIsolateBlending):

  • rendering/svg/SVGRenderTreeAsText.cpp:

(WebCore::writeResources):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::prepareToRenderSVGContent):

  • rendering/svg/SVGResources.cpp:

(WebCore::SVGResources::buildCachedResources):

LayoutTests:

  • fast/masking/parsing-mask-expected.txt:
  • fast/masking/parsing-mask-mode.html:
  • fast/masking/parsing-mask.html:
  • fast/masking/parsing-webkit-mask-expected.txt: Copied from LayoutTests/fast/masking/parsing-mask-expected.txt.
  • fast/masking/parsing-webkit-mask.html: Copied from LayoutTests/fast/masking/parsing-mask.html.
  • platform/mac/imported/w3c/web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.png: Added.
  • platform/mac/imported/w3c/web-platform-tests/css/css-masking/parsing/mask-valid.sub-expected.png: Added.
  • svg/masking/mask-external-reference-expected.svg: Added.
  • svg/masking/mask-external-reference.svg: Added.
  • svg/masking/resources/mask-resource.svg: Added.
Location:
trunk
Files:
12 added
94 edited
15 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r286794 r286795  
     12021-12-09  Matt Woodrow  <matt.woodrow@gmail.com>
     2
     3        Unprefix -webkit-mask
     4        https://bugs.webkit.org/show_bug.cgi?id=229082
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * fast/masking/parsing-mask-expected.txt:
     9        * fast/masking/parsing-mask-mode.html:
     10        * fast/masking/parsing-mask.html:
     11        * fast/masking/parsing-webkit-mask-expected.txt: Copied from LayoutTests/fast/masking/parsing-mask-expected.txt.
     12        * fast/masking/parsing-webkit-mask.html: Copied from LayoutTests/fast/masking/parsing-mask.html.
     13        * platform/mac/imported/w3c/web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.png: Added.
     14        * platform/mac/imported/w3c/web-platform-tests/css/css-masking/parsing/mask-valid.sub-expected.png: Added.
     15        * svg/masking/mask-external-reference-expected.svg: Added.
     16        * svg/masking/mask-external-reference.svg: Added.
     17        * svg/masking/resources/mask-resource.svg: Added.
     18
    1192021-12-09  Tyler Wilcock  <tyler_w@apple.com>
    220
  • trunk/LayoutTests/TestExpectations

    r286763 r286795  
    21882188webkit.org/b/229510 imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html [ ImageOnlyFailure ]
    21892189
    2190 webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html [ ImageOnlyFailure ]
    21912190webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/clip/clip-filter-order.html [ ImageOnlyFailure ]
    2192 webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-clip-exclude.html [ ImageOnlyFailure ]
    2193 webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-url-image-hash.html [ ImageOnlyFailure ]
    2194 webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-url-image.html [ ImageOnlyFailure ]
    21952191webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-url-local-mask.html [ ImageOnlyFailure ]
    21962192webkit.org/b/229370 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-url-remote-mask.html [ ImageOnlyFailure ]
     2193
     2194webkit.org/b/233543 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split.html [ ImageOnlyFailure ]
     2195webkit.org/b/233543 imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-ib-split-2.html [ ImageOnlyFailure ]
     2196
     2197# Subtly different antialiasing on the clip path
     2198imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html [ ImageOnlyFailure ]
    21972199
    21982200# A support file for a test
     
    44724474webkit.org/b/214456 imported/w3c/web-platform-tests/css/css-images/tiled-conic-gradients.html [ ImageOnlyFailure ]
    44734475
     4476webkit.org/b/149828 imported/w3c/web-platform-tests/css/css-images/image-orientation/image-orientation-mask-image.html [ ImageOnlyFailure ]
     4477
    44744478webkit.org/b/214457 imported/w3c/web-platform-tests/css/css-lists/change-list-descendant-display.html [ ImageOnlyFailure ]
    44754479webkit.org/b/214457 imported/w3c/web-platform-tests/css/css-lists/counter-set-001.html [ ImageOnlyFailure ]
  • trunk/LayoutTests/fast/css/getComputedStyle/resources/property-names.js

    r285615 r286795  
    9090    "-webkit-mask-clip": true,
    9191    "-webkit-mask-composite": true,
    92     "-webkit-mask-image": true,
    93     "-webkit-mask-origin": true,
     92    "mask-image": true,
     93    "mask-origin": true,
    9494    "-webkit-mask-position": true,
    95     "-webkit-mask-repeat": true,
    96     "-webkit-mask-size": true,
     95    "mask-repeat": true,
     96    "mask-size": true,
    9797    "-webkit-nbsp-mode": true,
    9898    "order": true,
  • trunk/LayoutTests/fast/css/remove-shorthand-expected.txt

    r286652 r286795  
    5858and adds "".
    5959Removing -webkit-mask
    60 removes "-webkit-mask"
     60removes "mask-image, -webkit-mask-position-x, -webkit-mask-position-y, mask-repeat-x, mask-repeat-y, -webkit-mask"
    6161and adds "".
    6262Removing -webkit-mask-position
    63 removes "-webkit-mask"
    64 and adds "-webkit-mask-image, -webkit-mask-repeat-x, -webkit-mask-repeat-y".
     63removes "-webkit-mask-position-x, -webkit-mask-position-y, -webkit-mask"
     64and adds "".
    6565Removing overflow
    6666removes "overflow"
  • trunk/LayoutTests/fast/css/uri-token-parsing-expected.txt

    r279050 r286795  
    2222#r { list-style-image: url("url(r)"); }
    2323#s { background-image: url("url(s)"); }
    24 #t { -webkit-mask-image: url("url(t)"); }
     24#t { mask-image: url("url(t)"); }
    2525#u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
    2626#v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
     
    4747#r { list-style-image: url("url(r)"); }
    4848#s { background-image: url("url(s)"); }
    49 #t { -webkit-mask-image: url("url(t)"); }
     49#t { mask-image: url("url(t)"); }
    5050#u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
    5151#v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
  • trunk/LayoutTests/fast/css/uri-token-parsing.html

    r279050 r286795  
    9090#r { list-style-image: url("url(r)"); }
    9191#s { background-image: url("url(s)"); }
    92 #t { -webkit-mask-image: url("url(t)"); }
     92#t { mask-image: url("url(t)"); }
    9393#u { -webkit-border-image: url("url(u)") 1 2 3 4 fill stretch round; }
    9494#v { -webkit-mask-box-image: url("url(v)") 1 2 3 4 fill stretch round; }
  • trunk/LayoutTests/fast/css/webkit-mask-crash-implicit-expected.txt

    r278933 r286795  
    1 PASS document.styleSheets[1].rules[0].style.cssText is "-webkit-mask-repeat-x: repeat; -webkit-mask-repeat-y: no-repeat;"
     1PASS document.styleSheets[1].rules[0].style.cssText is "mask-repeat-x: repeat; mask-repeat-y: no-repeat;"
    22PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask') is ""
    33PASS document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat') is "repeat-x"
  • trunk/LayoutTests/fast/css/webkit-mask-crash-implicit.html

    r278933 r286795  
    1010if (window.internals)
    1111    testRunner.dumpAsText();
    12 shouldBeEqualToString("document.styleSheets[1].rules[0].style.cssText", "-webkit-mask-repeat-x: repeat; -webkit-mask-repeat-y: no-repeat;");
     12shouldBeEqualToString("document.styleSheets[1].rules[0].style.cssText", "mask-repeat-x: repeat; mask-repeat-y: no-repeat;");
    1313shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask')", "");
    1414shouldBeEqualToString("document.styleSheets[1].rules[0].style.getPropertyValue('-webkit-mask-repeat')", "repeat-x");
  • trunk/LayoutTests/fast/masking/parsing-mask-expected.txt

    r231359 r286795  
    44
    55
    6 PASS innerStyle("-webkit-mask", "none") is "none"
    7 PASS innerStyle("-webkit-mask", "none, none") is "none, none"
    8 PASS innerStyle("-webkit-mask", "none, none, none") is "none, none, none"
    9 PASS innerStyle("-webkit-mask", "url(file:///image.png), none") is "url(\"file:///image.png\"), none"
    10 PASS innerStyle("-webkit-mask", "none, url(file:///image.png)") is "none, url(\"file:///image.png\")"
    11 PASS innerStyle("-webkit-mask", "top left") is "left top"
    12 PASS innerStyle("-webkit-mask", "bottom right") is "right bottom"
    13 PASS innerStyle("-webkit-mask", "left bottom") is "left bottom"
    14 PASS innerStyle("-webkit-mask", "right top") is "right top"
    15 PASS innerStyle("-webkit-mask", "center") is "center center"
    16 PASS innerStyle("-webkit-mask", "none top") is "none center top"
    17 PASS innerStyle("-webkit-mask", "none bottom") is "none center bottom"
    18 PASS innerStyle("-webkit-mask", "none right") is "none right center"
    19 PASS innerStyle("-webkit-mask", "none top right") is "none right top"
    20 PASS innerStyle("-webkit-mask", "none bottom left") is "none left bottom"
    21 PASS innerStyle("-webkit-mask", "none right") is "none right center"
    22 PASS innerStyle("-webkit-mask", "none left") is "none left center"
    23 PASS innerStyle("-webkit-mask", "center 50%") is "center 50%"
    24 PASS innerStyle("-webkit-mask", "50px 50%") is "50px 50%"
    25 PASS innerStyle("-webkit-mask", "center left") is "left center"
    26 PASS innerStyle("-webkit-mask", "top center") is "center top"
    27 PASS innerStyle("-webkit-mask", "left 10px top 15px") is "left 10px top 15px"
    28 PASS innerStyle("-webkit-mask", "left 10% top 30%") is "left 10% top 30%"
    29 PASS innerStyle("-webkit-mask", "right top 15px") is "right top 15px"
    30 PASS innerStyle("-webkit-mask", "left 10px center") is "left 10px center"
    31 PASS innerStyle("-webkit-mask", "center top 20px") is "center top 20px"
    32 PASS innerStyle("-webkit-mask", "center left 30px") is "left 30px center"
    33 PASS innerStyle("-webkit-mask", "left 20% top") is "left 20% top"
    34 PASS innerStyle("-webkit-mask", "center center") is "center center"
    35 PASS innerStyle("-webkit-mask-position", "left 10px top 15px") is "left 10px top 15px"
    36 PASS innerStyle("-webkit-mask-position", "left 10% top 30%") is "left 10% top 30%"
    37 PASS innerStyle("-webkit-mask-position", "right top 15px") is "right top 15px"
    38 PASS innerStyle("-webkit-mask-position", "left 10px center") is "left 10px center"
    39 PASS innerStyle("-webkit-mask-position", "center top 20px") is "center top 20px"
    40 PASS innerStyle("-webkit-mask-position", "center left 30px") is "left 30px center"
    41 PASS innerStyle("-webkit-mask-position", "left 20% top") is "left 20% top"
    42 PASS innerStyle("-webkit-mask", "none alpha") is "none alpha"
    43 PASS innerStyle("-webkit-mask", "none luminance, none alpha") is "none luminance, none alpha"
    44 PASS innerStyle("-webkit-mask", "none auto, none, none luminance") is "none auto, none, none luminance"
    45 PASS innerStyle("-webkit-mask-source-type", "alpha") is "alpha"
    46 PASS innerStyle("-webkit-mask-source-type", "luminance") is "luminance"
    47 PASS innerStyle("-webkit-mask-source-type", "auto") is "auto"
    48 PASS computedStyle("-webkit-mask-source-type", "alpha") is "alpha"
    49 PASS computedStyle("-webkit-mask-source-type", "auto") is "alpha"
    50 PASS computedStyle("-webkit-mask-source-type", "luminance") is "luminance"
    51 PASS computedStyle("-webkit-mask-source-type", "") is "alpha"
    52 PASS innerStyle("-webkit-mask", "repeat-x") is "repeat-x"
    53 PASS innerStyle("-webkit-mask", "repeat-y") is "repeat-y"
    54 PASS innerStyle("-webkit-mask", "repeat") is "repeat"
    55 PASS innerStyle("-webkit-mask", "space") is "space"
    56 PASS innerStyle("-webkit-mask", "no-repeat") is "no-repeat"
    57 PASS innerStyle("-webkit-mask", "repeat space") is "repeat space"
    58 PASS innerStyle("-webkit-mask", "repeat round") is "repeat round"
    59 PASS innerStyle("-webkit-mask", "repeat no-repeat") is "repeat no-repeat"
    60 PASS innerStyle("-webkit-mask", "repeat space, repeat-x") is "repeat space, repeat-x"
    61 PASS innerStyle("-webkit-mask", "repeat none") is "none repeat"
    62 PASS innerStyle("-webkit-mask", "none repeat") is "none repeat"
    63 PASS innerStyle("-webkit-mask", "padding-box") is "padding-box padding-box"
    64 PASS innerStyle("-webkit-mask", "border-box") is "border-box border-box"
    65 PASS innerStyle("-webkit-mask", "content-box") is "content-box content-box"
    66 PASS innerStyle("-webkit-mask", "padding-box none") is "none padding-box padding-box"
    67 PASS innerStyle("-webkit-mask", "none padding-box") is "none padding-box padding-box"
    68 PASS innerStyle("-webkit-mask", "padding-box content-box") is "padding-box content-box"
    69 PASS innerStyle("-webkit-mask", "content-box content-box") is "content-box content-box"
    70 PASS innerStyle("-webkit-mask", "padding-box border-box") is "padding-box border-box"
    71 PASS innerStyle("-webkit-mask", "padding-box border-box none") is "none padding-box border-box"
    72 PASS innerStyle("-webkit-mask", "none padding-box border-box") is "none padding-box border-box"
    73 PASS innerStyle("-webkit-mask", "none left top / auto") is "none left top / auto"
    74 PASS innerStyle("-webkit-mask", "none left top / auto auto") is "none left top / auto"
    75 PASS innerStyle("-webkit-mask", "none left top / 100%") is "none left top / 100%"
    76 PASS innerStyle("-webkit-mask", "none left top / 100% 100%") is "none left top / 100% 100%"
    77 PASS innerStyle("-webkit-mask", "none left top / 0%") is "none left top / 0%"
    78 PASS innerStyle("-webkit-mask", "none left top / auto 0%") is "none left top / auto 0%"
    79 PASS innerStyle("-webkit-mask", "none left top / cover") is "none left top / cover"
    80 PASS innerStyle("-webkit-mask", "none left top / contain") is "none left top / contain"
    81 PASS innerStyle("-webkit-mask", "none left 20px top 10px / contain") is "none left 20px top 10px / contain"
    82 PASS innerStyle("-webkit-mask", "none left 20px top / contain") is "none left 20px top / contain"
    83 PASS innerStyle("-webkit-mask", "none padding-box content-box") is "none padding-box content-box"
    84 PASS innerStyle("-webkit-mask", "none padding-box") is "none padding-box padding-box"
    85 PASS innerStyle("-webkit-mask", "none top") is "none center top"
    86 PASS innerStyle("-webkit-mask", "none center right 20px") is "none right 20px center"
    87 PASS innerStyle("-webkit-mask", "none border-box left top") is "none left top border-box border-box"
    88 PASS innerStyle("-webkit-mask", "none border-box left top 20px") is "none left top 20px border-box border-box"
    89 PASS innerStyle("-webkit-mask", "none border-box content-box left top repeat-x") is "none left top repeat-x border-box content-box"
    90 PASS innerStyle("-webkit-mask", "none border-box content-box left top / auto repeat-x") is "none left top / auto repeat-x border-box content-box"
    91 PASS innerStyle("-webkit-mask", "none border-box content-box right 0px center / auto repeat-x") is "none right 0px center / auto repeat-x border-box content-box"
    92 PASS innerStyle("-webkit-mask", "top none left") is ""
    93 PASS innerStyle("-webkit-mask", "right none bottom") is ""
    94 PASS innerStyle("-webkit-mask", "right right") is ""
    95 PASS innerStyle("-webkit-mask", "left left") is ""
    96 PASS innerStyle("-webkit-mask", "top top") is ""
    97 PASS innerStyle("-webkit-mask", "bottom bottom") is ""
    98 PASS innerStyle("-webkit-mask", "50% none 50%") is ""
    99 PASS innerStyle("-webkit-mask", "repeat-x repeat-x") is ""
    100 PASS innerStyle("-webkit-mask", "space repeat-y") is ""
    101 PASS innerStyle("-webkit-mask", "repeat space space") is ""
    102 PASS innerStyle("-webkit-mask", "padding-box border-box content-box") is ""
    103 PASS innerStyle("-webkit-mask", "none / auto") is ""
    104 PASS innerStyle("-webkit-mask", "none repeat-x / auto") is ""
    105 PASS innerStyle("-webkit-mask", "none border-box / auto") is ""
    106 PASS innerStyle("-webkit-mask", "none top left / cover 100%") is ""
    107 PASS innerStyle("-webkit-mask", "scroll") is ""
    108 PASS innerStyle("-webkit-mask", "fixed") is ""
    109 PASS innerStyle("-webkit-mask", "local") is ""
    110 PASS innerStyle("-webkit-mask", "space scroll") is ""
    111 PASS innerStyle("-webkit-mask", "none scroll") is ""
    112 PASS innerStyle("-webkit-mask", "none top left / auto repeat-x scroll border-box border-box") is ""
    113 PASS innerStyle("-webkit-mask", "right top left") is ""
    114 PASS innerStyle("-webkit-mask", "center left center") is ""
    115 PASS innerStyle("-webkit-mask", "center top center") is ""
    116 PASS innerStyle("-webkit-mask", "center right bottom") is ""
    117 PASS innerStyle("-webkit-mask", "top solid bottom") is ""
    118 PASS innerStyle("-webkit-mask", "none top left right center top / auto repeat-x scroll border-box border-box") is ""
    119 PASS innerStyle("-webkit-mask", "none center center 20px / auto repeat-x scroll border-box border-box") is ""
    120 PASS innerStyle("-webkit-mask", "none top 20px right 30px center / auto repeat-x scroll border-box border-box") is ""
    121 PASS innerStyle("-webkit-mask", "none top 20px top 30px / auto repeat-x scroll border-box border-box") is ""
    122 PASS innerStyle("-webkit-mask", "none top 20px bottom / auto repeat-x scroll border-box border-box") is ""
    123 PASS innerStyle("-webkit-mask", "none alpha, none auto alpha") is ""
    124 PASS innerStyle("-webkit-mask", "none alpha luminance") is ""
    125 PASS innerStyle("-webkit-mask-source-type", "rubbish") is ""
    126 PASS innerStyle("-webkit-mask-source-type", "") is ""
    127 PASS innerStyle("-webkit-mask-source-type", "center") is ""
    128 PASS innerStyle("-webkit-mask-source-type", "repeat") is ""
     6PASS innerStyle("mask", "none") is "none"
     7PASS innerStyle("mask", "none, none") is "none, none"
     8PASS innerStyle("mask", "none, none, none") is "none, none, none"
     9PASS innerStyle("mask", "url(file:///image.png), none") is "url(\"file:///image.png\"), none"
     10PASS innerStyle("mask", "none, url(file:///image.png)") is "none, url(\"file:///image.png\")"
     11PASS innerStyle("mask", "top left") is "left top"
     12PASS innerStyle("mask", "bottom right") is "right bottom"
     13PASS innerStyle("mask", "left bottom") is "left bottom"
     14PASS innerStyle("mask", "right top") is "right top"
     15PASS innerStyle("mask", "center") is "center center"
     16PASS innerStyle("mask", "none top") is "none center top"
     17PASS innerStyle("mask", "none bottom") is "none center bottom"
     18PASS innerStyle("mask", "none right") is "none right center"
     19PASS innerStyle("mask", "none top right") is "none right top"
     20PASS innerStyle("mask", "none bottom left") is "none left bottom"
     21PASS innerStyle("mask", "none right") is "none right center"
     22PASS innerStyle("mask", "none left") is "none left center"
     23PASS innerStyle("mask", "center 50%") is "center 50%"
     24PASS innerStyle("mask", "50px 50%") is "50px 50%"
     25PASS innerStyle("mask", "center left") is "left center"
     26PASS innerStyle("mask", "top center") is "center top"
     27PASS innerStyle("mask", "left 10px top 15px") is "left 10px top 15px"
     28PASS innerStyle("mask", "left 10% top 30%") is "left 10% top 30%"
     29PASS innerStyle("mask", "right top 15px") is "right top 15px"
     30PASS innerStyle("mask", "left 10px center") is "left 10px center"
     31PASS innerStyle("mask", "center top 20px") is "center top 20px"
     32PASS innerStyle("mask", "center left 30px") is "left 30px center"
     33PASS innerStyle("mask", "left 20% top") is "left 20% top"
     34PASS innerStyle("mask", "center center") is "center center"
     35PASS innerStyle("mask-position", "left 10px top 15px") is "left 10px top 15px"
     36PASS innerStyle("mask-position", "left 10% top 30%") is "left 10% top 30%"
     37PASS innerStyle("mask-position", "right top 15px") is ""
     38PASS innerStyle("mask-position", "left 10px center") is ""
     39PASS innerStyle("mask-position", "center top 20px") is ""
     40PASS innerStyle("mask-position", "center left 30px") is ""
     41PASS innerStyle("mask-position", "left 20% top") is ""
     42PASS innerStyle("mask", "none alpha") is "none alpha"
     43PASS innerStyle("mask", "none luminance, none alpha") is "none luminance, none alpha"
     44PASS innerStyle("mask", "none match-source, none, none luminance") is "none match-source, none, none luminance"
     45PASS innerStyle("mask-mode", "alpha") is "alpha"
     46PASS innerStyle("mask-mode", "luminance") is "luminance"
     47PASS innerStyle("mask-mode", "match-source") is "match-source"
     48PASS computedStyle("mask-mode", "alpha") is "alpha"
     49PASS computedStyle("mask-mode", "match-source") is "match-source"
     50PASS computedStyle("mask-mode", "luminance") is "luminance"
     51PASS computedStyle("mask-mode", "") is "match-source"
     52PASS innerStyle("mask", "repeat-x") is "repeat-x"
     53PASS innerStyle("mask", "repeat-y") is "repeat-y"
     54PASS innerStyle("mask", "repeat") is "repeat"
     55PASS innerStyle("mask", "space") is "space"
     56PASS innerStyle("mask", "no-repeat") is "no-repeat"
     57PASS innerStyle("mask", "repeat space") is "repeat space"
     58PASS innerStyle("mask", "repeat round") is "repeat round"
     59PASS innerStyle("mask", "repeat no-repeat") is "repeat no-repeat"
     60PASS innerStyle("mask", "repeat space, repeat-x") is "repeat space, repeat-x"
     61PASS innerStyle("mask", "repeat none") is "none repeat"
     62PASS innerStyle("mask", "none repeat") is "none repeat"
     63PASS innerStyle("mask", "padding-box") is "padding-box"
     64PASS innerStyle("mask", "border-box") is "border-box"
     65PASS innerStyle("mask", "content-box") is "content-box"
     66PASS innerStyle("mask", "padding-box none") is "none padding-box"
     67PASS innerStyle("mask", "none padding-box") is "none padding-box"
     68PASS innerStyle("mask", "padding-box content-box") is "padding-box content-box"
     69PASS innerStyle("mask", "content-box content-box") is "content-box"
     70PASS innerStyle("mask", "padding-box border-box") is "padding-box border-box"
     71PASS innerStyle("mask", "padding-box border-box none") is "none padding-box border-box"
     72PASS innerStyle("mask", "none padding-box border-box") is "none padding-box border-box"
     73PASS innerStyle("mask", "none left top / auto") is "none left top / auto"
     74PASS innerStyle("mask", "none left top / auto auto") is "none left top / auto"
     75PASS innerStyle("mask", "none left top / 100%") is "none left top / 100%"
     76PASS innerStyle("mask", "none left top / 100% 100%") is "none left top / 100% 100%"
     77PASS innerStyle("mask", "none left top / 0%") is "none left top / 0%"
     78PASS innerStyle("mask", "none left top / auto 0%") is "none left top / auto 0%"
     79PASS innerStyle("mask", "none left top / cover") is "none left top / cover"
     80PASS innerStyle("mask", "none left top / contain") is "none left top / contain"
     81PASS innerStyle("mask", "none left 20px top 10px / contain") is "none left 20px top 10px / contain"
     82PASS innerStyle("mask", "none left 20px top / contain") is "none left 20px top / contain"
     83PASS innerStyle("mask", "none padding-box content-box") is "none padding-box content-box"
     84PASS innerStyle("mask", "none padding-box") is "none padding-box"
     85PASS innerStyle("mask", "none top") is "none center top"
     86PASS innerStyle("mask", "none center right 20px") is "none right 20px center"
     87PASS innerStyle("mask", "none border-box left top") is "none left top border-box"
     88PASS innerStyle("mask", "none border-box left top 20px") is "none left top 20px border-box"
     89PASS innerStyle("mask", "none border-box content-box left top repeat-x") is "none left top repeat-x border-box content-box"
     90PASS innerStyle("mask", "none border-box content-box left top / auto repeat-x") is "none left top / auto repeat-x border-box content-box"
     91PASS innerStyle("mask", "none border-box content-box right 0px center / auto repeat-x") is "none right 0px center / auto repeat-x border-box content-box"
     92PASS computedStyle("mask", "top left") is "none 0% 0% / auto repeat border-box border-box add match-source"
     93PASS computedStyle("mask", "bottom right") is "none 100% 100% / auto repeat border-box border-box add match-source"
     94PASS computedStyle("mask", "left bottom") is "none 0% 100% / auto repeat border-box border-box add match-source"
     95PASS computedStyle("mask", "right top") is "none 100% 0% / auto repeat border-box border-box add match-source"
     96PASS computedStyle("mask", "center") is "none 50% 50% / auto repeat border-box border-box add match-source"
     97PASS computedStyle("mask", "none top") is "none 50% 0% / auto repeat border-box border-box add match-source"
     98PASS computedStyle("mask", "none bottom") is "none 50% 100% / auto repeat border-box border-box add match-source"
     99PASS computedStyle("mask", "none right") is "none 100% 50% / auto repeat border-box border-box add match-source"
     100PASS computedStyle("mask", "none top right") is "none 100% 0% / auto repeat border-box border-box add match-source"
     101PASS computedStyle("mask", "none bottom left") is "none 0% 100% / auto repeat border-box border-box add match-source"
     102PASS computedStyle("mask", "none right") is "none 100% 50% / auto repeat border-box border-box add match-source"
     103PASS computedStyle("mask", "none left") is "none 0% 50% / auto repeat border-box border-box add match-source"
     104PASS computedStyle("mask", "center 50%") is "none 50% 50% / auto repeat border-box border-box add match-source"
     105PASS computedStyle("mask", "50px 50%") is "none 50px 50% / auto repeat border-box border-box add match-source"
     106PASS computedStyle("mask", "center left") is "none 0% 50% / auto repeat border-box border-box add match-source"
     107PASS computedStyle("mask", "top center") is "none 50% 0% / auto repeat border-box border-box add match-source"
     108PASS computedStyle("mask", "left 10px top 15px") is "none 10px 15px / auto repeat border-box border-box add match-source"
     109PASS computedStyle("mask", "left 10% top 30%") is "none 10% 30% / auto repeat border-box border-box add match-source"
     110PASS computedStyle("mask", "right top 15px") is "none 100% 15px / auto repeat border-box border-box add match-source"
     111PASS computedStyle("mask", "left 10px center") is "none 10px 50% / auto repeat border-box border-box add match-source"
     112PASS computedStyle("mask", "center top 20px") is "none 50% 20px / auto repeat border-box border-box add match-source"
     113PASS computedStyle("mask", "center left 30px") is "none 30px 50% / auto repeat border-box border-box add match-source"
     114PASS computedStyle("mask", "left 20% top") is "none 20% 0% / auto repeat border-box border-box add match-source"
     115PASS computedStyle("mask", "center center") is "none 50% 50% / auto repeat border-box border-box add match-source"
     116PASS computedStyle("mask", "repeat-x") is "none 0% 0% / auto repeat-x border-box border-box add match-source"
     117PASS computedStyle("mask", "repeat-y") is "none 0% 0% / auto repeat-y border-box border-box add match-source"
     118PASS computedStyle("mask", "repeat") is "none 0% 0% / auto repeat border-box border-box add match-source"
     119PASS computedStyle("mask", "space") is "none 0% 0% / auto space border-box border-box add match-source"
     120PASS computedStyle("mask", "no-repeat") is "none 0% 0% / auto no-repeat border-box border-box add match-source"
     121PASS computedStyle("mask", "repeat space") is "none 0% 0% / auto repeat space border-box border-box add match-source"
     122PASS computedStyle("mask", "repeat round") is "none 0% 0% / auto repeat round border-box border-box add match-source"
     123PASS computedStyle("mask", "repeat no-repeat") is "none 0% 0% / auto repeat-x border-box border-box add match-source"
     124PASS computedStyle("mask", "repeat none") is "none 0% 0% / auto repeat border-box border-box add match-source"
     125PASS computedStyle("mask", "none repeat") is "none 0% 0% / auto repeat border-box border-box add match-source"
     126PASS computedStyle("mask", "padding-box") is "none 0% 0% / auto repeat padding-box padding-box add match-source"
     127PASS computedStyle("mask", "border-box") is "none 0% 0% / auto repeat border-box border-box add match-source"
     128PASS computedStyle("mask", "content-box") is "none 0% 0% / auto repeat content-box content-box add match-source"
     129PASS computedStyle("mask", "padding-box none") is "none 0% 0% / auto repeat padding-box padding-box add match-source"
     130PASS computedStyle("mask", "none padding-box") is "none 0% 0% / auto repeat padding-box padding-box add match-source"
     131PASS computedStyle("mask", "padding-box content-box") is "none 0% 0% / auto repeat padding-box content-box add match-source"
     132PASS computedStyle("mask", "content-box content-box") is "none 0% 0% / auto repeat content-box content-box add match-source"
     133PASS computedStyle("mask", "padding-box border-box") is "none 0% 0% / auto repeat padding-box border-box add match-source"
     134PASS computedStyle("mask", "padding-box border-box none") is "none 0% 0% / auto repeat padding-box border-box add match-source"
     135PASS computedStyle("mask", "none padding-box border-box") is "none 0% 0% / auto repeat padding-box border-box add match-source"
     136PASS computedStyle("mask", "none left top / auto") is "none 0% 0% / auto repeat border-box border-box add match-source"
     137PASS computedStyle("mask", "none left top / auto auto") is "none 0% 0% / auto repeat border-box border-box add match-source"
     138PASS computedStyle("mask", "none left top / 100%") is "none 0% 0% / 100% repeat border-box border-box add match-source"
     139PASS computedStyle("mask", "none left top / 0%") is "none 0% 0% / 0% repeat border-box border-box add match-source"
     140PASS computedStyle("mask", "none left top / auto 0%") is "none 0% 0% / auto 0% repeat border-box border-box add match-source"
     141PASS computedStyle("mask", "none left top / cover") is "none 0% 0% / cover repeat border-box border-box add match-source"
     142PASS computedStyle("mask", "none left top / contain") is "none 0% 0% / contain repeat border-box border-box add match-source"
     143PASS computedStyle("mask", "none left 20px top 10px / contain") is "none 20px 10px / contain repeat border-box border-box add match-source"
     144PASS computedStyle("mask", "none left 20px top / contain") is "none 20px 0% / contain repeat border-box border-box add match-source"
     145PASS computedStyle("mask", "none padding-box content-box") is "none 0% 0% / auto repeat padding-box content-box add match-source"
     146PASS computedStyle("mask", "none padding-box") is "none 0% 0% / auto repeat padding-box padding-box add match-source"
     147PASS computedStyle("mask", "none top") is "none 50% 0% / auto repeat border-box border-box add match-source"
     148PASS computedStyle("mask", "none center right 20px") is "none right 20px 50% / auto repeat border-box border-box add match-source"
     149PASS computedStyle("mask", "none border-box left top") is "none 0% 0% / auto repeat border-box border-box add match-source"
     150PASS computedStyle("mask", "none border-box left top 20px") is "none 0% 20px / auto repeat border-box border-box add match-source"
     151PASS computedStyle("mask", "none border-box content-box left top repeat-x") is "none 0% 0% / auto repeat-x border-box content-box add match-source"
     152PASS computedStyle("mask", "none border-box content-box left top / auto repeat-x") is "none 0% 0% / auto repeat-x border-box content-box add match-source"
     153PASS computedStyle("mask", "none border-box content-box right 0px center / auto repeat-x") is "none right 0px 50% / auto repeat-x border-box content-box add match-source"
     154PASS innerStyle("mask", "top none left") is ""
     155PASS innerStyle("mask", "right none bottom") is ""
     156PASS innerStyle("mask", "right right") is ""
     157PASS innerStyle("mask", "left left") is ""
     158PASS innerStyle("mask", "top top") is ""
     159PASS innerStyle("mask", "bottom bottom") is ""
     160PASS innerStyle("mask", "50% none 50%") is ""
     161PASS innerStyle("mask", "repeat-x repeat-x") is ""
     162PASS innerStyle("mask", "space repeat-y") is ""
     163PASS innerStyle("mask", "repeat space space") is ""
     164PASS innerStyle("mask", "padding-box border-box content-box") is ""
     165PASS innerStyle("mask", "none / auto") is ""
     166PASS innerStyle("mask", "none repeat-x / auto") is ""
     167PASS innerStyle("mask", "none border-box / auto") is ""
     168PASS innerStyle("mask", "none top left / cover 100%") is ""
     169PASS innerStyle("mask", "scroll") is ""
     170PASS innerStyle("mask", "fixed") is ""
     171PASS innerStyle("mask", "local") is ""
     172PASS innerStyle("mask", "space scroll") is ""
     173PASS innerStyle("mask", "none scroll") is ""
     174PASS innerStyle("mask", "none top left / auto repeat-x scroll border-box border-box") is ""
     175PASS innerStyle("mask", "right top left") is ""
     176PASS innerStyle("mask", "center left center") is ""
     177PASS innerStyle("mask", "center top center") is ""
     178PASS innerStyle("mask", "center right bottom") is ""
     179PASS innerStyle("mask", "top solid bottom") is ""
     180PASS innerStyle("mask", "none top left right center top / auto repeat-x scroll border-box border-box") is ""
     181PASS innerStyle("mask", "none center center 20px / auto repeat-x scroll border-box border-box") is ""
     182PASS innerStyle("mask", "none top 20px right 30px center / auto repeat-x scroll border-box border-box") is ""
     183PASS innerStyle("mask", "none top 20px top 30px / auto repeat-x scroll border-box border-box") is ""
     184PASS innerStyle("mask", "none top 20px bottom / auto repeat-x scroll border-box border-box") is ""
     185PASS innerStyle("mask", "none alpha, none match-source alpha") is ""
     186PASS innerStyle("mask", "none alpha luminance") is ""
     187PASS innerStyle("mask-mode", "auto") is ""
     188PASS innerStyle("mask-mode", "rubbish") is ""
     189PASS innerStyle("mask-mode", "") is ""
     190PASS innerStyle("mask-mode", "center") is ""
     191PASS innerStyle("mask-mode", "repeat") is ""
     192PASS innerStyle("mask-position-x", "left") is ""
     193PASS innerStyle("mask-position-y", "top") is ""
     194PASS innerStyle("mask-repeat-x", "repeat") is ""
     195PASS innerStyle("mask-repeat-y", "repeat") is ""
    129196PASS successfullyParsed is true
    130197
  • trunk/LayoutTests/fast/masking/parsing-mask-mode.html

    r282143 r286795  
    1111                var div = document.createElement('div');
    1212                document.body.appendChild(div);
    13                 div.style.setProperty("-webkit-mask-image", "none, none, none, none");
    14                 div.style.setProperty("-webkit-mask-mode", value);
     13                div.style.setProperty("mask-image", "none, none, none, none");
     14                div.style.setProperty("mask-mode", value);
    1515
    16                 var computedValue = getComputedStyle(div).getPropertyValue("-webkit-mask-mode");
     16                var computedValue = getComputedStyle(div).getPropertyValue("mask-mode");
    1717                document.body.removeChild(div);
    1818
  • trunk/LayoutTests/fast/masking/parsing-mask.html

    r231359 r286795  
    3737function negativeTest(property, value) {
    3838    testInner(property, value, null);
    39     // FIXME: Computed style not yet implemented.
    4039    // testComputed(property, value, 'none');
    4140}
    4241
    4342// test mask-image
    44 testInner("-webkit-mask", "none", "none");
    45 testInner("-webkit-mask", "none, none", "none, none");
    46 testInner("-webkit-mask", "none, none, none", "none, none, none");
    47 testInner("-webkit-mask", "url(file:///image.png), none", "url(\"file:///image.png\"), none");
    48 testInner("-webkit-mask", "none, url(file:///image.png)", "none, url(\"file:///image.png\")");
     43testInner("mask", "none", "none");
     44testInner("mask", "none, none", "none, none");
     45testInner("mask", "none, none, none", "none, none, none");
     46testInner("mask", "url(file:///image.png), none", "url(\"file:///image.png\"), none");
     47testInner("mask", "none, url(file:///image.png)", "none, url(\"file:///image.png\")");
    4948
    5049
    5150// test mask-position
    52 testInner("-webkit-mask", "top left", "left top");
    53 testInner("-webkit-mask", "bottom right", "right bottom");
    54 testInner("-webkit-mask", "left bottom", "left bottom");
    55 testInner("-webkit-mask", "right top", "right top");
    56 testInner("-webkit-mask", "center", "center center");
    57 testInner("-webkit-mask", "none top", "none center top");
    58 testInner("-webkit-mask", "none bottom", "none center bottom");
    59 testInner("-webkit-mask", "none right", "none right center");
    60 testInner("-webkit-mask", "none top right", "none right top");
    61 testInner("-webkit-mask", "none bottom left", "none left bottom");
    62 testInner("-webkit-mask", "none right", "none right center");
    63 testInner("-webkit-mask", "none left", "none left center");
    64 testInner("-webkit-mask", "center 50%", "center 50%");
    65 testInner("-webkit-mask", "50px 50%", "50px 50%");
    66 testInner("-webkit-mask", "center left", "left center");
    67 testInner("-webkit-mask", "top center", "center top");
    68 testInner("-webkit-mask", "left 10px top 15px", "left 10px top 15px");
    69 testInner("-webkit-mask", "left 10% top 30%", "left 10% top 30%");
    70 testInner("-webkit-mask", "right top 15px", "right top 15px");
    71 testInner("-webkit-mask", "left 10px center", "left 10px center");
    72 testInner("-webkit-mask", "center top 20px", "center top 20px");
    73 testInner("-webkit-mask", "center left 30px", "left 30px center");
    74 testInner("-webkit-mask", "left 20% top", "left 20% top");
    75 testInner("-webkit-mask", "center center", "center center");
    76 
    77 testInner("-webkit-mask-position", "left 10px top 15px", "left 10px top 15px");
    78 testInner("-webkit-mask-position", "left 10% top 30%", "left 10% top 30%");
    79 testInner("-webkit-mask-position", "right top 15px", "right top 15px");
    80 testInner("-webkit-mask-position", "left 10px center", "left 10px center");
    81 testInner("-webkit-mask-position", "center top 20px", "center top 20px");
    82 testInner("-webkit-mask-position", "center left 30px", "left 30px center");
    83 testInner("-webkit-mask-position", "left 20% top", "left 20% top");
    84 
    85 // test mask-source-type
    86 testInner("-webkit-mask", "none alpha", "none alpha");
    87 testInner("-webkit-mask", "none luminance, none alpha", "none luminance, none alpha");
    88 testInner("-webkit-mask", "none auto, none, none luminance", "none auto, none, none luminance");
    89 testInner("-webkit-mask-source-type", "alpha", "alpha");
    90 testInner("-webkit-mask-source-type", "luminance", "luminance");
    91 testInner("-webkit-mask-source-type", "auto", "auto");
    92 testComputed("-webkit-mask-source-type", "alpha", "alpha");
    93 testComputed("-webkit-mask-source-type", "auto", "alpha");
    94 testComputed("-webkit-mask-source-type", "luminance", "luminance");
    95 testComputed("-webkit-mask-source-type", "", "alpha");
     51testInner("mask", "top left", "left top");
     52testInner("mask", "bottom right", "right bottom");
     53testInner("mask", "left bottom", "left bottom");
     54testInner("mask", "right top", "right top");
     55testInner("mask", "center", "center center");
     56testInner("mask", "none top", "none center top");
     57testInner("mask", "none bottom", "none center bottom");
     58testInner("mask", "none right", "none right center");
     59testInner("mask", "none top right", "none right top");
     60testInner("mask", "none bottom left", "none left bottom");
     61testInner("mask", "none right", "none right center");
     62testInner("mask", "none left", "none left center");
     63testInner("mask", "center 50%", "center 50%");
     64testInner("mask", "50px 50%", "50px 50%");
     65testInner("mask", "center left", "left center");
     66testInner("mask", "top center", "center top");
     67testInner("mask", "left 10px top 15px", "left 10px top 15px");
     68testInner("mask", "left 10% top 30%", "left 10% top 30%");
     69testInner("mask", "right top 15px", "right top 15px");
     70testInner("mask", "left 10px center", "left 10px center");
     71testInner("mask", "center top 20px", "center top 20px");
     72testInner("mask", "center left 30px", "left 30px center");
     73testInner("mask", "left 20% top", "left 20% top");
     74testInner("mask", "center center", "center center");
     75
     76testInner("mask-position", "left 10px top 15px", "left 10px top 15px");
     77testInner("mask-position", "left 10% top 30%", "left 10% top 30%");
     78negativeTest("mask-position", "right top 15px", "right top 15px");
     79negativeTest("mask-position", "left 10px center", "left 10px center");
     80negativeTest("mask-position", "center top 20px", "center top 20px");
     81negativeTest("mask-position", "center left 30px", "left 30px center");
     82negativeTest("mask-position", "left 20% top", "left 20% top");
     83
     84// test mask-mode
     85testInner("mask", "none alpha", "none alpha");
     86testInner("mask", "none luminance, none alpha", "none luminance, none alpha");
     87testInner("mask", "none match-source, none, none luminance", "none match-source, none, none luminance");
     88testInner("mask-mode", "alpha", "alpha");
     89testInner("mask-mode", "luminance", "luminance");
     90testInner("mask-mode", "match-source", "match-source");
     91testComputed("mask-mode", "alpha", "alpha");
     92testComputed("mask-mode", "match-source", "match-source");
     93testComputed("mask-mode", "luminance", "luminance");
     94testComputed("mask-mode", "", "match-source");
    9695
    9796// test mask-repeat
    98 testInner("-webkit-mask", "repeat-x", "repeat-x");
    99 testInner("-webkit-mask", "repeat-y", "repeat-y");
    100 testInner("-webkit-mask", "repeat", "repeat");
    101 testInner("-webkit-mask", "space", "space");
    102 testInner("-webkit-mask", "no-repeat", "no-repeat");
    103 testInner("-webkit-mask", "repeat space", "repeat space");
    104 testInner("-webkit-mask", "repeat round", "repeat round");
    105 testInner("-webkit-mask", "repeat no-repeat", "repeat no-repeat");
    106 testInner("-webkit-mask", "repeat space, repeat-x", "repeat space, repeat-x");
    107 testInner("-webkit-mask", "repeat none", "none repeat");
    108 testInner("-webkit-mask", "none repeat", "none repeat");
     97testInner("mask", "repeat-x", "repeat-x");
     98testInner("mask", "repeat-y", "repeat-y");
     99testInner("mask", "repeat", "repeat");
     100testInner("mask", "space", "space");
     101testInner("mask", "no-repeat", "no-repeat");
     102testInner("mask", "repeat space", "repeat space");
     103testInner("mask", "repeat round", "repeat round");
     104testInner("mask", "repeat no-repeat", "repeat no-repeat");
     105testInner("mask", "repeat space, repeat-x", "repeat space, repeat-x");
     106testInner("mask", "repeat none", "none repeat");
     107testInner("mask", "none repeat", "none repeat");
    109108
    110109// test mask-origin / mask-clip
    111 testInner("-webkit-mask", "padding-box", "padding-box padding-box");
    112 testInner("-webkit-mask", "border-box", "border-box border-box");
    113 testInner("-webkit-mask", "content-box", "content-box content-box");
    114 testInner("-webkit-mask", "padding-box none", "none padding-box padding-box");
    115 testInner("-webkit-mask", "none padding-box", "none padding-box padding-box");
    116 testInner("-webkit-mask", "padding-box content-box", "padding-box content-box");
    117 testInner("-webkit-mask", "content-box content-box", "content-box content-box");
    118 testInner("-webkit-mask", "padding-box border-box", "padding-box border-box");
    119 testInner("-webkit-mask", "padding-box border-box none", "none padding-box border-box");
    120 testInner("-webkit-mask", "none padding-box border-box", "none padding-box border-box");
     110testInner("mask", "padding-box", "padding-box");
     111testInner("mask", "border-box", "border-box");
     112testInner("mask", "content-box", "content-box");
     113testInner("mask", "padding-box none", "none padding-box");
     114testInner("mask", "none padding-box", "none padding-box");
     115testInner("mask", "padding-box content-box", "padding-box content-box");
     116testInner("mask", "content-box content-box", "content-box");
     117testInner("mask", "padding-box border-box", "padding-box border-box");
     118testInner("mask", "padding-box border-box none", "none padding-box border-box");
     119testInner("mask", "none padding-box border-box", "none padding-box border-box");
    121120
    122121// test mask-size
    123 testInner("-webkit-mask", "none left top / auto", "none left top / auto");
    124 testInner("-webkit-mask", "none left top / auto auto", "none left top / auto");
    125 testInner("-webkit-mask", "none left top / 100%", "none left top / 100%");
    126 testInner("-webkit-mask", "none left top / 100% 100%", "none left top / 100% 100%");
    127 testInner("-webkit-mask", "none left top / 0%", "none left top / 0%");
    128 testInner("-webkit-mask", "none left top / auto 0%", "none left top / auto 0%");
    129 testInner("-webkit-mask", "none left top / cover", "none left top / cover");
    130 testInner("-webkit-mask", "none left top / contain", "none left top / contain");
    131 testInner("-webkit-mask", "none left 20px top 10px / contain", "none left 20px top 10px / contain");
    132 testInner("-webkit-mask", "none left 20px top / contain", "none left 20px top / contain");
     122testInner("mask", "none left top / auto", "none left top / auto");
     123testInner("mask", "none left top / auto auto", "none left top / auto");
     124testInner("mask", "none left top / 100%", "none left top / 100%");
     125testInner("mask", "none left top / 100% 100%", "none left top / 100% 100%");
     126testInner("mask", "none left top / 0%", "none left top / 0%");
     127testInner("mask", "none left top / auto 0%", "none left top / auto 0%");
     128testInner("mask", "none left top / cover", "none left top / cover");
     129testInner("mask", "none left top / contain", "none left top / contain");
     130testInner("mask", "none left 20px top 10px / contain", "none left 20px top 10px / contain");
     131testInner("mask", "none left 20px top / contain", "none left 20px top / contain");
    133132
    134133// combinations
    135 testInner("-webkit-mask", "none padding-box content-box", "none padding-box content-box");
    136 testInner("-webkit-mask", "none padding-box", "none padding-box padding-box");
    137 testInner("-webkit-mask", "none top", "none center top");
    138 testInner("-webkit-mask", "none center right 20px", "none right 20px center");
    139 testInner("-webkit-mask", "none border-box left top", "none left top border-box border-box");
    140 testInner("-webkit-mask", "none border-box left top 20px", "none left top 20px border-box border-box");
    141 testInner("-webkit-mask", "none border-box content-box left top repeat-x", "none left top repeat-x border-box content-box");
    142 testInner("-webkit-mask", "none border-box content-box left top / auto repeat-x", "none left top / auto repeat-x border-box content-box");
    143 testInner("-webkit-mask", "none border-box content-box right 0px center / auto repeat-x", "none right 0px center / auto repeat-x border-box content-box");
    144 
    145 // FIXME: Computed style not yet implemented.
    146 // testComputed("-webkit-mask", "", "");
    147 // https://bugs.webkit.org/show_bug.cgi?id=103021
     134testInner("mask", "none padding-box content-box", "none padding-box content-box");
     135testInner("mask", "none padding-box", "none padding-box");
     136testInner("mask", "none top", "none center top");
     137testInner("mask", "none center right 20px", "none right 20px center");
     138testInner("mask", "none border-box left top", "none left top border-box");
     139testInner("mask", "none border-box left top 20px", "none left top 20px border-box");
     140testInner("mask", "none border-box content-box left top repeat-x", "none left top repeat-x border-box content-box");
     141testInner("mask", "none border-box content-box left top / auto repeat-x", "none left top / auto repeat-x border-box content-box");
     142testInner("mask", "none border-box content-box right 0px center / auto repeat-x", "none right 0px center / auto repeat-x border-box content-box");
     143
     144// test mask-position
     145testComputed("mask", "top left", "none 0% 0% / auto repeat border-box border-box add match-source");
     146testComputed("mask", "bottom right", "none 100% 100% / auto repeat border-box border-box add match-source");
     147testComputed("mask", "left bottom", "none 0% 100% / auto repeat border-box border-box add match-source");
     148testComputed("mask", "right top", "none 100% 0% / auto repeat border-box border-box add match-source");
     149testComputed("mask", "center", "none 50% 50% / auto repeat border-box border-box add match-source");
     150testComputed("mask", "none top", "none 50% 0% / auto repeat border-box border-box add match-source");
     151testComputed("mask", "none bottom", "none 50% 100% / auto repeat border-box border-box add match-source");
     152testComputed("mask", "none right", "none 100% 50% / auto repeat border-box border-box add match-source");
     153testComputed("mask", "none top right", "none 100% 0% / auto repeat border-box border-box add match-source");
     154testComputed("mask", "none bottom left", "none 0% 100% / auto repeat border-box border-box add match-source");
     155testComputed("mask", "none right", "none 100% 50% / auto repeat border-box border-box add match-source");
     156testComputed("mask", "none left", "none 0% 50% / auto repeat border-box border-box add match-source");
     157testComputed("mask", "center 50%", "none 50% 50% / auto repeat border-box border-box add match-source");
     158testComputed("mask", "50px 50%", "none 50px 50% / auto repeat border-box border-box add match-source");
     159testComputed("mask", "center left", "none 0% 50% / auto repeat border-box border-box add match-source");
     160testComputed("mask", "top center", "none 50% 0% / auto repeat border-box border-box add match-source");
     161testComputed("mask", "left 10px top 15px", "none 10px 15px / auto repeat border-box border-box add match-source");
     162testComputed("mask", "left 10% top 30%", "none 10% 30% / auto repeat border-box border-box add match-source");
     163testComputed("mask", "right top 15px", "none 100% 15px / auto repeat border-box border-box add match-source");
     164testComputed("mask", "left 10px center", "none 10px 50% / auto repeat border-box border-box add match-source");
     165testComputed("mask", "center top 20px", "none 50% 20px / auto repeat border-box border-box add match-source");
     166testComputed("mask", "center left 30px", "none 30px 50% / auto repeat border-box border-box add match-source");
     167testComputed("mask", "left 20% top", "none 20% 0% / auto repeat border-box border-box add match-source");
     168testComputed("mask", "center center", "none 50% 50% / auto repeat border-box border-box add match-source");
     169
     170// test mask-repeat
     171testComputed("mask", "repeat-x", "none 0% 0% / auto repeat-x border-box border-box add match-source");
     172testComputed("mask", "repeat-y", "none 0% 0% / auto repeat-y border-box border-box add match-source");
     173testComputed("mask", "repeat", "none 0% 0% / auto repeat border-box border-box add match-source");
     174testComputed("mask", "space", "none 0% 0% / auto space border-box border-box add match-source");
     175testComputed("mask", "no-repeat", "none 0% 0% / auto no-repeat border-box border-box add match-source");
     176testComputed("mask", "repeat space", "none 0% 0% / auto repeat space border-box border-box add match-source");
     177testComputed("mask", "repeat round", "none 0% 0% / auto repeat round border-box border-box add match-source");
     178testComputed("mask", "repeat no-repeat", "none 0% 0% / auto repeat-x border-box border-box add match-source");
     179testComputed("mask", "repeat none", "none 0% 0% / auto repeat border-box border-box add match-source");
     180testComputed("mask", "none repeat", "none 0% 0% / auto repeat border-box border-box add match-source");
     181
     182// test mask-origin / mask-clip
     183testComputed("mask", "padding-box", "none 0% 0% / auto repeat padding-box padding-box add match-source");
     184testComputed("mask", "border-box", "none 0% 0% / auto repeat border-box border-box add match-source");
     185testComputed("mask", "content-box", "none 0% 0% / auto repeat content-box content-box add match-source");
     186testComputed("mask", "padding-box none", "none 0% 0% / auto repeat padding-box padding-box add match-source");
     187testComputed("mask", "none padding-box", "none 0% 0% / auto repeat padding-box padding-box add match-source");
     188testComputed("mask", "padding-box content-box", "none 0% 0% / auto repeat padding-box content-box add match-source");
     189testComputed("mask", "content-box content-box", "none 0% 0% / auto repeat content-box content-box add match-source");
     190testComputed("mask", "padding-box border-box", "none 0% 0% / auto repeat padding-box border-box add match-source");
     191testComputed("mask", "padding-box border-box none", "none 0% 0% / auto repeat padding-box border-box add match-source");
     192testComputed("mask", "none padding-box border-box", "none 0% 0% / auto repeat padding-box border-box add match-source");
     193
     194// test mask-size
     195testComputed("mask", "none left top / auto", "none 0% 0% / auto repeat border-box border-box add match-source");
     196testComputed("mask", "none left top / auto auto", "none 0% 0% / auto repeat border-box border-box add match-source");
     197testComputed("mask", "none left top / 100%", "none 0% 0% / 100% repeat border-box border-box add match-source");
     198testComputed("mask", "none left top / 0%", "none 0% 0% / 0% repeat border-box border-box add match-source");
     199testComputed("mask", "none left top / auto 0%", "none 0% 0% / auto 0% repeat border-box border-box add match-source");
     200testComputed("mask", "none left top / cover", "none 0% 0% / cover repeat border-box border-box add match-source");
     201testComputed("mask", "none left top / contain", "none 0% 0% / contain repeat border-box border-box add match-source");
     202testComputed("mask", "none left 20px top 10px / contain", "none 20px 10px / contain repeat border-box border-box add match-source");
     203testComputed("mask", "none left 20px top / contain", "none 20px 0% / contain repeat border-box border-box add match-source");
     204
     205// combinations
     206testComputed("mask", "none padding-box content-box", "none 0% 0% / auto repeat padding-box content-box add match-source");
     207testComputed("mask", "none padding-box", "none 0% 0% / auto repeat padding-box padding-box add match-source");
     208testComputed("mask", "none top", "none 50% 0% / auto repeat border-box border-box add match-source");
     209testComputed("mask", "none center right 20px", "none right 20px 50% / auto repeat border-box border-box add match-source");
     210testComputed("mask", "none border-box left top", "none 0% 0% / auto repeat border-box border-box add match-source");
     211testComputed("mask", "none border-box left top 20px", "none 0% 20px / auto repeat border-box border-box add match-source");
     212testComputed("mask", "none border-box content-box left top repeat-x", "none 0% 0% / auto repeat-x border-box content-box add match-source");
     213testComputed("mask", "none border-box content-box left top / auto repeat-x", "none 0% 0% / auto repeat-x border-box content-box add match-source");
     214testComputed("mask", "none border-box content-box right 0px center / auto repeat-x", "none right 0px 50% / auto repeat-x border-box content-box add match-source");
    148215
    149216// negative tests
    150 negativeTest("-webkit-mask", "top none left");
    151 negativeTest("-webkit-mask", "right none bottom");
    152 negativeTest("-webkit-mask", "right right");
    153 negativeTest("-webkit-mask", "left left");
    154 negativeTest("-webkit-mask", "top top");
    155 negativeTest("-webkit-mask", "bottom bottom");
    156 negativeTest("-webkit-mask", "50% none 50%");
    157 negativeTest("-webkit-mask", "repeat-x repeat-x");
    158 negativeTest("-webkit-mask", "space repeat-y");
    159 negativeTest("-webkit-mask", "repeat space space");
    160 negativeTest("-webkit-mask", "padding-box border-box content-box");
    161 negativeTest("-webkit-mask", "none / auto");
    162 negativeTest("-webkit-mask", "none repeat-x / auto");
    163 negativeTest("-webkit-mask", "none border-box / auto");
    164 negativeTest("-webkit-mask", "none top left / cover 100%");
    165 negativeTest("-webkit-mask", "scroll");
    166 negativeTest("-webkit-mask", "fixed");
    167 negativeTest("-webkit-mask", "local");
    168 negativeTest("-webkit-mask", "space scroll");
    169 negativeTest("-webkit-mask", "none scroll");
    170 negativeTest("-webkit-mask", "none top left / auto repeat-x scroll border-box border-box");
    171 negativeTest("-webkit-mask", "right top left");
    172 negativeTest("-webkit-mask", "center left center");
    173 negativeTest("-webkit-mask", "center top center");
    174 negativeTest("-webkit-mask", "center right bottom");
    175 negativeTest("-webkit-mask", "top solid bottom");
    176 negativeTest("-webkit-mask", "none top left right center top / auto repeat-x scroll border-box border-box");
    177 negativeTest("-webkit-mask", "none center center 20px / auto repeat-x scroll border-box border-box");
    178 negativeTest("-webkit-mask", "none top 20px right 30px center / auto repeat-x scroll border-box border-box");
    179 negativeTest("-webkit-mask", "none top 20px top 30px / auto repeat-x scroll border-box border-box");
    180 negativeTest("-webkit-mask", "none top 20px bottom / auto repeat-x scroll border-box border-box");
    181 negativeTest("-webkit-mask", "none alpha, none auto alpha");
    182 negativeTest("-webkit-mask", "none alpha luminance");
    183 negativeTest("-webkit-mask-source-type", "rubbish");
    184 negativeTest("-webkit-mask-source-type", "");
    185 negativeTest("-webkit-mask-source-type", "center");
    186 negativeTest("-webkit-mask-source-type", "repeat");
     217negativeTest("mask", "top none left");
     218negativeTest("mask", "right none bottom");
     219negativeTest("mask", "right right");
     220negativeTest("mask", "left left");
     221negativeTest("mask", "top top");
     222negativeTest("mask", "bottom bottom");
     223negativeTest("mask", "50% none 50%");
     224negativeTest("mask", "repeat-x repeat-x");
     225negativeTest("mask", "space repeat-y");
     226negativeTest("mask", "repeat space space");
     227negativeTest("mask", "padding-box border-box content-box");
     228negativeTest("mask", "none / auto");
     229negativeTest("mask", "none repeat-x / auto");
     230negativeTest("mask", "none border-box / auto");
     231negativeTest("mask", "none top left / cover 100%");
     232negativeTest("mask", "scroll");
     233negativeTest("mask", "fixed");
     234negativeTest("mask", "local");
     235negativeTest("mask", "space scroll");
     236negativeTest("mask", "none scroll");
     237negativeTest("mask", "none top left / auto repeat-x scroll border-box border-box");
     238negativeTest("mask", "right top left");
     239negativeTest("mask", "center left center");
     240negativeTest("mask", "center top center");
     241negativeTest("mask", "center right bottom");
     242negativeTest("mask", "top solid bottom");
     243negativeTest("mask", "none top left right center top / auto repeat-x scroll border-box border-box");
     244negativeTest("mask", "none center center 20px / auto repeat-x scroll border-box border-box");
     245negativeTest("mask", "none top 20px right 30px center / auto repeat-x scroll border-box border-box");
     246negativeTest("mask", "none top 20px top 30px / auto repeat-x scroll border-box border-box");
     247negativeTest("mask", "none top 20px bottom / auto repeat-x scroll border-box border-box");
     248negativeTest("mask", "none alpha, none match-source alpha");
     249negativeTest("mask", "none alpha luminance");
     250negativeTest("mask-mode", "auto");
     251negativeTest("mask-mode", "rubbish");
     252negativeTest("mask-mode", "");
     253negativeTest("mask-mode", "center");
     254negativeTest("mask-mode", "repeat");
     255
     256// FIXME: mask-position-x and mask-position-y should not be exposed unprefixed.
     257negativeTest("mask-position-x", "left");
     258negativeTest("mask-position-y", "top");
     259
     260negativeTest("mask-repeat-x", "repeat");
     261negativeTest("mask-repeat-y", "repeat");
    187262
    188263</script>
  • trunk/LayoutTests/fast/masking/parsing-webkit-mask-expected.txt

    r286794 r286795  
    4040PASS innerStyle("-webkit-mask-position", "center left 30px") is "left 30px center"
    4141PASS innerStyle("-webkit-mask-position", "left 20% top") is "left 20% top"
     42PASS innerStyle("-webkit-mask-position-x", "left") is "left"
     43PASS innerStyle("-webkit-mask-position-y", "top") is "top"
    4244PASS innerStyle("-webkit-mask", "none alpha") is "none alpha"
    4345PASS innerStyle("-webkit-mask", "none luminance, none alpha") is "none luminance, none alpha"
     
    127129PASS innerStyle("-webkit-mask-source-type", "center") is ""
    128130PASS innerStyle("-webkit-mask-source-type", "repeat") is ""
     131PASS innerStyle("-webkit-mask-repeat-x", "repeat") is ""
     132PASS innerStyle("-webkit-mask-repeat-y", "repeat") is ""
    129133PASS successfullyParsed is true
    130134
  • trunk/LayoutTests/fast/masking/parsing-webkit-mask.html

    r286794 r286795  
    8282testInner("-webkit-mask-position", "center left 30px", "left 30px center");
    8383testInner("-webkit-mask-position", "left 20% top", "left 20% top");
     84
     85testInner("-webkit-mask-position-x", "left", "left");
     86testInner("-webkit-mask-position-y", "top", "top");
    8487
    8588// test mask-source-type
     
    185188negativeTest("-webkit-mask-source-type", "center");
    186189negativeTest("-webkit-mask-source-type", "repeat");
     190negativeTest("-webkit-mask-repeat-x", "repeat");
     191negativeTest("-webkit-mask-repeat-y", "repeat");
    187192
    188193</script>
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r286775 r286795  
     12021-12-09  Matt Woodrow  <matt.woodrow@gmail.com>
     2
     3        Unprefix -webkit-mask
     4        https://bugs.webkit.org/show_bug.cgi?id=229082
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.txt:
     9        * web-platform-tests/css/css-masking/animations/mask-position-interpolation-expected.txt:
     10        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html:
     11        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     12        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     13        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     14        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     15        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     16        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     17        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow-expected.html: Added.
     18        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     19        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     20        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     21        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     22        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     23        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html:
     24        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html.
     25        * web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html.
     26        * web-platform-tests/css/css-masking/clip-path/animations/w3c-import.log:
     27        * web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002.html:
     28        * web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html:
     29        * web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001.html:
     30        * web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002.html:
     31        * web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003.html:
     32        * web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004.html:
     33        * web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll-expected.html: Added.
     34        * web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll.html: Added.
     35        * web-platform-tests/css/css-masking/clip-path/clip-path-path-001-expected.html:
     36        * web-platform-tests/css/css-masking/clip-path/clip-path-path-002-expected.html:
     37        * web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-001-expected.html:
     38        * web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-002-expected.html:
     39        * web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore.html:
     40        * web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-expected.html:
     41        * web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate.html:
     42        * web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html:
     43        * web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-font-loading.html:
     44        * web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html:
     45        * web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002.html:
     46        * web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html:
     47        * web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html:
     48        * web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html:
     49        * web-platform-tests/css/css-masking/clip-path/reference-mutated.html:
     50        * web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local.html:
     51        * web-platform-tests/css/css-masking/clip-path/w3c-import.log:
     52        * web-platform-tests/css/css-masking/clip-rule/clip-rule-001.html:
     53        * web-platform-tests/css/css-masking/clip-rule/clip-rule-002.html:
     54        * web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html:
     55        * web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-002.html:
     56        * web-platform-tests/css/css-masking/hit-test/clip-path-element-userspaceonuse-001.html:
     57        * web-platform-tests/css/css-masking/idlharness.html:
     58        * web-platform-tests/css/css-masking/inheritance.sub-expected.txt:
     59        * web-platform-tests/css/css-masking/parsing/mask-position-valid-expected.txt:
     60        * web-platform-tests/css/css-masking/parsing/mask-valid.sub-expected.txt:
     61
    1622021-12-09  Antti Koivisto  <antti@apple.com>
    263
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt

    r285822 r286795  
    181181PASS marker-mid
    182182PASS marker-start
    183 PASS mask
     183PASS mask-clip
     184PASS mask-composite
     185PASS mask-image
     186PASS mask-mode
     187PASS mask-origin
     188PASS mask-repeat
     189PASS mask-size
    184190PASS mask-type
    185191PASS math-style
     
    374380PASS -webkit-mask-clip
    375381PASS -webkit-mask-composite
    376 PASS -webkit-mask-image
    377 PASS -webkit-mask-mode
    378 PASS -webkit-mask-origin
    379382PASS -webkit-mask-position-x
    380383PASS -webkit-mask-position-y
    381 PASS -webkit-mask-repeat
    382 PASS -webkit-mask-size
    383384PASS -webkit-mask-source-type
    384385PASS -webkit-nbsp-mode
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/mask-image-interpolation-expected.txt

    r281580 r286795  
    11
    2 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    3 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    4 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    5 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    6 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    7 FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    8 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    9 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    10 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    11 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    12 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    13 FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    14 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    15 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    16 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    17 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    18 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    19 FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    20 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    21 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    22 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'to' value should be supported expected true got false
    23 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    24 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    25 FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'to' value should be supported expected true got false
    26 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    27 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    28 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    29 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    30 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    31 FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    32 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    33 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    34 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    35 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    36 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    37 FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    38 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    39 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    40 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    41 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    42 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    43 FAIL CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    44 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    45 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    46 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    47 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    48 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    49 FAIL Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    50 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    51 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    52 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    53 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    54 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    55 FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    56 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    57 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    58 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    59 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    60 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    61 FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    62 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    63 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    64 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    65 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    66 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    67 FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    68 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    69 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    70 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    71 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    72 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    73 FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    74 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    75 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    76 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    77 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    78 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    79 FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    80 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    81 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    82 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    83 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    84 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    85 FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    86 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    87 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    88 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    89 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    90 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    91 FAIL CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    92 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    93 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    94 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    95 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    96 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    97 FAIL Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    98 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    99 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    100 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    101 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    102 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    103 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    104 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    105 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    106 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    107 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    108 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    109 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    110 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    111 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    112 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    113 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    114 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    115 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    116 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    117 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    118 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    119 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    120 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    121 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    122 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    123 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    124 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    125 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    126 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    127 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    128 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    129 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    130 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    131 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    132 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    133 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    134 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    135 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    136 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    137 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    138 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    139 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    140 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    141 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    142 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    143 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    144 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    145 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    146 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    147 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    148 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    149 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    150 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    151 FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    152 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    153 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    154 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    155 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    156 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    157 FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    158 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    159 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    160 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    161 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    162 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    163 FAIL CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    164 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    165 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_true: 'from' value should be supported expected true got false
    166 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_true: 'from' value should be supported expected true got false
    167 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    168 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    169 FAIL Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_true: 'from' value should be supported expected true got false
    170 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    171 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    172 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    173 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    174 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    175 FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    176 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    177 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    178 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    179 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    180 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    181 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    182 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    183 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    184 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    185 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    186 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    187 FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    188 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    189 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    190 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_true: 'from' value should be supported expected true got false
    191 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    192 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    193 FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_true: 'from' value should be supported expected true got false
    194 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    195 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    196 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    197 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    198 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    199 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    200 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    201 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    202 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    203 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    204 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    205 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    206 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    207 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    208 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    209 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    210 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    211 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    212 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    213 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    214 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    215 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    216 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    217 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    218 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    219 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    220 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    221 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    222 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    223 FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    224 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    225 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    226 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    227 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    228 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    229 FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    230 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    231 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    232 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    233 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    234 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    235 FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    236 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    237 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    238 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    239 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    240 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
    241 FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_true: 'from' value should be supported expected true got false
     2FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     3PASS CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     4FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     5FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     6PASS CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     7FAIL CSS Transitions: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     8FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     9PASS CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     10FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     11FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     12PASS CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     13FAIL CSS Transitions with transition: all: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     14FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     15PASS CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     16FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     17FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     18PASS CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     19FAIL CSS Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     20FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     21PASS Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     22FAIL Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     23PASS Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     24PASS Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     25PASS Web Animations: property <mask-image> from neutral to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     26FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     27FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     28FAIL CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     29PASS CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     30PASS CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     31PASS CSS Transitions: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     32FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     33FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     34FAIL CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     35PASS CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     36PASS CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     37PASS CSS Transitions with transition: all: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     38PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none]
     39PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none]
     40PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none]
     41PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     42PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     43PASS CSS Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     44PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (-0.3) should be [none]
     45PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0) should be [none]
     46PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.3) should be [none]
     47PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     48PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     49PASS Web Animations: property <mask-image> from [initial] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     50FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     51PASS CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)]
     52FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     53FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     54PASS CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     55FAIL CSS Transitions: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     56FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     57PASS CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)]
     58FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     59FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     60PASS CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     61FAIL CSS Transitions with transition: all: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     62FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , - 0.3 ) "
     63PASS CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)]
     64FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.3 ) "
     65FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 0.6 ) "
     66PASS CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     67FAIL CSS Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / green - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / green - 20.png ) , 1.5 ) "
     68FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     69PASS Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0) should be [url(../resources/blue-20.png)]
     70FAIL Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     71PASS Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     72PASS Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     73PASS Web Animations: property <mask-image> from [inherit] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     74FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     75FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     76FAIL CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     77PASS CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)]
     78PASS CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)]
     79PASS CSS Transitions: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)]
     80FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     81FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     82FAIL CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     83PASS CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)]
     84PASS CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)]
     85PASS CSS Transitions with transition: all: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)]
     86PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none]
     87PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none]
     88PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none]
     89PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)]
     90PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)]
     91PASS CSS Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)]
     92PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (-0.3) should be [none]
     93PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0) should be [none]
     94PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.3) should be [none]
     95PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/stripes-20.png)]
     96PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1) should be [url(../resources/stripes-20.png)]
     97PASS Web Animations: property <mask-image> from [unset] to [url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/stripes-20.png)]
     98FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) "
     99PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     100FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) "
     101FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) "
     102PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)]
     103FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) "
     104FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) "
     105PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     106FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) "
     107FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) "
     108PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)]
     109FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) "
     110FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) "
     111PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     112FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) "
     113FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) "
     114PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)]
     115FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) "
     116FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     117PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0) should be [url(../resources/stripes-20.png)]
     118FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     119PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (0.6) should be [url(../resources/blue-20.png)]
     120PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1) should be [url(../resources/blue-20.png)]
     121PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [url(../resources/blue-20.png)] at (1.5) should be [url(../resources/blue-20.png)]
     122FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     123PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)]
     124FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     125PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)]
     126PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)]
     127PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)]
     128FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     129PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)]
     130FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     131PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)]
     132PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)]
     133PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)]
     134FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     135PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)]
     136FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     137PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)]
     138PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)]
     139PASS CSS Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)]
     140FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (-0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     141PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0) should be [url(../resources/stripes-20.png)]
     142FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.3) should be [url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "linear - gradient ( 45deg , blue , transparent ) "
     143PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (0.6) should be [linear-gradient(45deg, blue, transparent)]
     144PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1) should be [linear-gradient(45deg, blue, transparent)]
     145PASS Web Animations: property <mask-image> from [url(../resources/stripes-20.png)] to [linear-gradient(45deg, blue, transparent)] at (1.5) should be [linear-gradient(45deg, blue, transparent)]
     146FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     147FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     148FAIL CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     149PASS CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     150PASS CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     151PASS CSS Transitions: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     152FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     153FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     154FAIL CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none] assert_equals: expected "none " but got "url ( http : / / localhost : 8800 / ... / green - 20.png ) "
     155PASS CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     156PASS CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     157PASS CSS Transitions with transition: all: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     158PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none]
     159PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none]
     160PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none]
     161PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     162PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     163PASS CSS Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     164PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (-0.3) should be [none]
     165PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0) should be [none]
     166PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.3) should be [none]
     167PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (0.6) should be [url(../resources/green-20.png)]
     168PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1) should be [url(../resources/green-20.png)]
     169PASS Web Animations: property <mask-image> from [none] to [url(../resources/green-20.png)] at (1.5) should be [url(../resources/green-20.png)]
     170FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     171PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)]
     172FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     173FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     174PASS CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)]
     175FAIL CSS Transitions: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     176FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     177PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)]
     178FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     179FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     180PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)]
     181FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     182FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , - 0.3 ) "
     183FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     184FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.3 ) "
     185FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 0.6 ) "
     186FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     187FAIL CSS Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) , 1.5 ) "
     188FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (-0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     189FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     190FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.3) should be [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , linear - gradient ( - 45deg , blue , transparent ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     191FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (0.6) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     192FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     193FAIL Web Animations: property <mask-image> from [url(../resources/stripes-20.png), linear-gradient(-45deg, blue, transparent)] to [url(../resources/blue-20.png), url(../resources/stripes-20.png)] at (1.5) should be [url(../resources/blue-20.png), url(../resources/stripes-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     194FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , - 0.3 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     195FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     196FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.3 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     197FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.6 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     198PASS CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     199FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 1.5 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     200FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , - 0.3 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     201FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     202FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.3 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     203FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.6 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     204PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     205FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 1.5 ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     206FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , - 0.3 ) "
     207PASS CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)]
     208FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.3 ) "
     209FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 0.6 ) "
     210FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     211FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "cross - fade ( url ( http : / / localhost : 8800 / ... / blue - 20.png ) , url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , 1.5 ) "
     212FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     213PASS Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)]
     214FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     215FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     216FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     217FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png)] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     218FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     219FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     220FAIL CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     221PASS CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     222PASS CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     223PASS CSS Transitions: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     224FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     225FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     226FAIL CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) "
     227PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     228PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     229PASS CSS Transitions with transition: all: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)]
     230PASS CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)]
     231PASS CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)]
     232PASS CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)]
     233FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     234FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     235FAIL CSS Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     236PASS Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (-0.3) should be [url(../resources/blue-20.png)]
     237PASS Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0) should be [url(../resources/blue-20.png)]
     238PASS Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.3) should be [url(../resources/blue-20.png)]
     239FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (0.6) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     240FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
     241FAIL Web Animations: property <mask-image> from [url(../resources/blue-20.png), none] to [url(../resources/stripes-20.png), url(../resources/blue-20.png)] at (1.5) should be [url(../resources/stripes-20.png), url(../resources/blue-20.png)] assert_equals: expected "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) , url ( http : / / localhost : 8800 / ... / blue - 20.png ) " but got "url ( http : / / localhost : 8800 / ... / stripes - 20.png ) "
    242242
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/animations/mask-position-interpolation-expected.txt

    r281580 r286795  
    11
    2 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px] assert_true: 'to' value should be supported expected true got false
    3 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px] assert_true: 'to' value should be supported expected true got false
    4 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px] assert_true: 'to' value should be supported expected true got false
    5 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px] assert_true: 'to' value should be supported expected true got false
    6 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px] assert_true: 'to' value should be supported expected true got false
    7 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px] assert_true: 'to' value should be supported expected true got false
    8 FAIL CSS Transitions: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px] assert_true: 'to' value should be supported expected true got false
    9 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px] assert_true: 'to' value should be supported expected true got false
    10 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px] assert_true: 'to' value should be supported expected true got false
    11 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px] assert_true: 'to' value should be supported expected true got false
    12 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px] assert_true: 'to' value should be supported expected true got false
    13 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px] assert_true: 'to' value should be supported expected true got false
    14 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px] assert_true: 'to' value should be supported expected true got false
    15 FAIL CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px] assert_true: 'to' value should be supported expected true got false
    16 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px] assert_true: 'to' value should be supported expected true got false
    17 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px] assert_true: 'to' value should be supported expected true got false
    18 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px] assert_true: 'to' value should be supported expected true got false
    19 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px] assert_true: 'to' value should be supported expected true got false
    20 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px] assert_true: 'to' value should be supported expected true got false
    21 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px] assert_true: 'to' value should be supported expected true got false
    22 FAIL CSS Animations: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px] assert_true: 'to' value should be supported expected true got false
    23 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px] assert_true: 'to' value should be supported expected true got false
    24 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px] assert_true: 'to' value should be supported expected true got false
    25 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px] assert_true: 'to' value should be supported expected true got false
    26 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px] assert_true: 'to' value should be supported expected true got false
    27 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px] assert_true: 'to' value should be supported expected true got false
    28 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px] assert_true: 'to' value should be supported expected true got false
    29 FAIL Web Animations: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px] assert_true: 'to' value should be supported expected true got false
    30 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    31 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    32 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    33 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    34 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    35 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    36 FAIL CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    37 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    38 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    39 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    40 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    41 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    42 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    43 FAIL CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    44 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    45 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    46 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    47 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    48 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    49 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    50 FAIL CSS Animations: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    51 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    52 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    53 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    54 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    55 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    56 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    57 FAIL Web Animations: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    58 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px] assert_true: 'from' value should be supported expected true got false
    59 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px] assert_true: 'from' value should be supported expected true got false
    60 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px] assert_true: 'from' value should be supported expected true got false
    61 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px] assert_true: 'from' value should be supported expected true got false
    62 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px] assert_true: 'from' value should be supported expected true got false
    63 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px] assert_true: 'from' value should be supported expected true got false
    64 FAIL CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px] assert_true: 'from' value should be supported expected true got false
    65 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px] assert_true: 'from' value should be supported expected true got false
    66 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px] assert_true: 'from' value should be supported expected true got false
    67 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px] assert_true: 'from' value should be supported expected true got false
    68 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px] assert_true: 'from' value should be supported expected true got false
    69 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px] assert_true: 'from' value should be supported expected true got false
    70 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px] assert_true: 'from' value should be supported expected true got false
    71 FAIL CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px] assert_true: 'from' value should be supported expected true got false
    72 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px] assert_true: 'from' value should be supported expected true got false
    73 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px] assert_true: 'from' value should be supported expected true got false
    74 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px] assert_true: 'from' value should be supported expected true got false
    75 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px] assert_true: 'from' value should be supported expected true got false
    76 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px] assert_true: 'from' value should be supported expected true got false
    77 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px] assert_true: 'from' value should be supported expected true got false
    78 FAIL CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px] assert_true: 'from' value should be supported expected true got false
    79 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px] assert_true: 'from' value should be supported expected true got false
    80 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px] assert_true: 'from' value should be supported expected true got false
    81 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px] assert_true: 'from' value should be supported expected true got false
    82 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px] assert_true: 'from' value should be supported expected true got false
    83 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px] assert_true: 'from' value should be supported expected true got false
    84 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px] assert_true: 'from' value should be supported expected true got false
    85 FAIL Web Animations: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px] assert_true: 'from' value should be supported expected true got false
    86 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    87 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    88 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    89 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    90 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    91 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    92 FAIL CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    93 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    94 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    95 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    96 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    97 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    98 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    99 FAIL CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    100 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    101 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    102 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    103 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    104 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    105 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    106 FAIL CSS Animations: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    107 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)] assert_true: 'from' value should be supported expected true got false
    108 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%] assert_true: 'from' value should be supported expected true got false
    109 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)] assert_true: 'from' value should be supported expected true got false
    110 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)] assert_true: 'from' value should be supported expected true got false
    111 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)] assert_true: 'from' value should be supported expected true got false
    112 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)] assert_true: 'from' value should be supported expected true got false
    113 FAIL Web Animations: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)] assert_true: 'from' value should be supported expected true got false
    114 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_true: 'from' value should be supported expected true got false
    115 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px] assert_true: 'from' value should be supported expected true got false
    116 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px] assert_true: 'from' value should be supported expected true got false
    117 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    118 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px] assert_true: 'from' value should be supported expected true got false
    119 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px] assert_true: 'from' value should be supported expected true got false
    120 FAIL CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_true: 'from' value should be supported expected true got false
    121 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_true: 'from' value should be supported expected true got false
    122 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px] assert_true: 'from' value should be supported expected true got false
    123 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px] assert_true: 'from' value should be supported expected true got false
    124 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    125 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px] assert_true: 'from' value should be supported expected true got false
    126 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px] assert_true: 'from' value should be supported expected true got false
    127 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_true: 'from' value should be supported expected true got false
    128 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_true: 'from' value should be supported expected true got false
    129 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px] assert_true: 'from' value should be supported expected true got false
    130 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px] assert_true: 'from' value should be supported expected true got false
    131 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    132 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px] assert_true: 'from' value should be supported expected true got false
    133 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px] assert_true: 'from' value should be supported expected true got false
    134 FAIL CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_true: 'from' value should be supported expected true got false
    135 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px] assert_true: 'from' value should be supported expected true got false
    136 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px] assert_true: 'from' value should be supported expected true got false
    137 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px] assert_true: 'from' value should be supported expected true got false
    138 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    139 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px] assert_true: 'from' value should be supported expected true got false
    140 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px] assert_true: 'from' value should be supported expected true got false
    141 FAIL Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px] assert_true: 'from' value should be supported expected true got false
    142 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px] assert_true: 'from' value should be supported expected true got false
    143 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px] assert_true: 'from' value should be supported expected true got false
    144 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px] assert_true: 'from' value should be supported expected true got false
    145 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px] assert_true: 'from' value should be supported expected true got false
    146 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px] assert_true: 'from' value should be supported expected true got false
    147 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px] assert_true: 'from' value should be supported expected true got false
    148 FAIL CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px] assert_true: 'from' value should be supported expected true got false
    149 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px] assert_true: 'from' value should be supported expected true got false
    150 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px] assert_true: 'from' value should be supported expected true got false
    151 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px] assert_true: 'from' value should be supported expected true got false
    152 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px] assert_true: 'from' value should be supported expected true got false
    153 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px] assert_true: 'from' value should be supported expected true got false
    154 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px] assert_true: 'from' value should be supported expected true got false
    155 FAIL CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px] assert_true: 'from' value should be supported expected true got false
    156 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px] assert_true: 'from' value should be supported expected true got false
    157 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px] assert_true: 'from' value should be supported expected true got false
    158 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px] assert_true: 'from' value should be supported expected true got false
    159 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px] assert_true: 'from' value should be supported expected true got false
    160 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px] assert_true: 'from' value should be supported expected true got false
    161 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px] assert_true: 'from' value should be supported expected true got false
    162 FAIL CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px] assert_true: 'from' value should be supported expected true got false
    163 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px] assert_true: 'from' value should be supported expected true got false
    164 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px] assert_true: 'from' value should be supported expected true got false
    165 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px] assert_true: 'from' value should be supported expected true got false
    166 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px] assert_true: 'from' value should be supported expected true got false
    167 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px] assert_true: 'from' value should be supported expected true got false
    168 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px] assert_true: 'from' value should be supported expected true got false
    169 FAIL Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px] assert_true: 'from' value should be supported expected true got false
    170 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px] assert_true: 'from' value should be supported expected true got false
    171 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px] assert_true: 'from' value should be supported expected true got false
    172 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px] assert_true: 'from' value should be supported expected true got false
    173 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    174 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px] assert_true: 'from' value should be supported expected true got false
    175 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px] assert_true: 'from' value should be supported expected true got false
    176 FAIL CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px] assert_true: 'from' value should be supported expected true got false
    177 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px] assert_true: 'from' value should be supported expected true got false
    178 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px] assert_true: 'from' value should be supported expected true got false
    179 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px] assert_true: 'from' value should be supported expected true got false
    180 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    181 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px] assert_true: 'from' value should be supported expected true got false
    182 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px] assert_true: 'from' value should be supported expected true got false
    183 FAIL CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px] assert_true: 'from' value should be supported expected true got false
    184 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px] assert_true: 'from' value should be supported expected true got false
    185 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px] assert_true: 'from' value should be supported expected true got false
    186 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px] assert_true: 'from' value should be supported expected true got false
    187 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    188 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px] assert_true: 'from' value should be supported expected true got false
    189 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px] assert_true: 'from' value should be supported expected true got false
    190 FAIL CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px] assert_true: 'from' value should be supported expected true got false
    191 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px] assert_true: 'from' value should be supported expected true got false
    192 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px] assert_true: 'from' value should be supported expected true got false
    193 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px] assert_true: 'from' value should be supported expected true got false
    194 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px] assert_true: 'from' value should be supported expected true got false
    195 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px] assert_true: 'from' value should be supported expected true got false
    196 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px] assert_true: 'from' value should be supported expected true got false
    197 FAIL Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px] assert_true: 'from' value should be supported expected true got false
     2PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px]
     3PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px]
     4PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px]
     5PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px]
     6PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px]
     7PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px]
     8PASS CSS Transitions: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px]
     9PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px]
     10PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px]
     11PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px]
     12PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px]
     13PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px]
     14PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px]
     15PASS CSS Transitions with transition: all: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px]
     16PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px]
     17PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px]
     18PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px]
     19PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px]
     20PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px]
     21PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px]
     22PASS CSS Animations: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px]
     23PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (-0.25) should be [7.5px 32.5px]
     24PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (0) should be [10px 30px]
     25PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (0.25) should be [12.5px 27.5px]
     26PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (0.5) should be [15px 25px]
     27PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (0.75) should be [17.5px 22.5px]
     28PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (1) should be [20px 20px]
     29PASS Web Animations: property <mask-position> from neutral to [20px 20px] at (1.25) should be [22.5px 17.5px]
     30PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     31PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%]
     32PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     33PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     34PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     35PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     36PASS CSS Transitions: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     37PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     38PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%]
     39PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     40PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     41PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     42PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     43PASS CSS Transitions with transition: all: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     44PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     45PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%]
     46PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     47PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     48PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     49PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     50PASS CSS Animations: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     51PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     52PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (0) should be [0% 0%]
     53PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     54PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     55PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     56PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     57PASS Web Animations: property <mask-position> from [initial] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     58PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px]
     59PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px]
     60PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px]
     61PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px]
     62PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px]
     63PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px]
     64PASS CSS Transitions: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px]
     65PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px]
     66PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px]
     67PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px]
     68PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px]
     69PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px]
     70PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px]
     71PASS CSS Transitions with transition: all: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px]
     72PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px]
     73PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px]
     74PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px]
     75PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px]
     76PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px]
     77PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px]
     78PASS CSS Animations: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px]
     79PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (-0.25) should be [32.5px 7.5px]
     80PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0) should be [30px 10px]
     81PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.25) should be [27.5px 12.5px]
     82PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.5) should be [25px 15px]
     83PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (0.75) should be [22.5px 17.5px]
     84PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (1) should be [20px 20px]
     85PASS Web Animations: property <mask-position> from [inherit] to [20px 20px] at (1.25) should be [17.5px 22.5px]
     86PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     87PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%]
     88PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     89PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     90PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     91PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     92PASS CSS Transitions: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     93PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     94PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%]
     95PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     96PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     97PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     98PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     99PASS CSS Transitions with transition: all: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     100PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     101PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%]
     102PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     103PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     104PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     105PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     106PASS CSS Animations: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     107PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (-0.25) should be [calc(0% - 5px) calc(0% - 5px)]
     108PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (0) should be [0% 0%]
     109PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.25) should be [calc(0% + 5px) calc(0% + 5px)]
     110PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.5) should be [calc(0% + 10px) calc(0% + 10px)]
     111PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (0.75) should be [calc(0% + 15px) calc(0% + 15px)]
     112PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (1) should be [calc(0% + 20px) calc(0% + 20px)]
     113PASS Web Animations: property <mask-position> from [unset] to [20px 20px] at (1.25) should be [calc(0% + 25px) calc(0% + 25px)]
     114PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px]
     115PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px]
     116PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px]
     117PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px]
     118PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px]
     119PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px]
     120PASS CSS Transitions: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px]
     121PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px]
     122PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px]
     123PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px]
     124PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px]
     125PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px]
     126PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px]
     127PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px]
     128PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px]
     129PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px]
     130PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px]
     131PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px]
     132PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px]
     133PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px]
     134PASS CSS Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px]
     135PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (-0.25) should be [-20px -20px, -20px -20px, -20px -20px, -20px -20px]
     136PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0) should be [  0px   0px,   0px   0px,   0px   0px,   0px   0px]
     137PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.25) should be [ 20px  20px,  20px  20px,  20px  20px,  20px  20px]
     138PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.5) should be [ 40px  40px,  40px  40px,  40px  40px,  40px  40px]
     139PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (0.75) should be [ 60px  60px,  60px  60px,  60px  60px,  60px  60px]
     140PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1) should be [ 80px  80px,  80px  80px,  80px  80px,  80px  80px]
     141PASS Web Animations: property <mask-position> from [0px 0px, 0px 0px, 0px 0px, 0px 0px] to [80px 80px, 80px 80px, 80px 80px, 80px 80px] at (1.25) should be [100px 100px, 100px 100px, 100px 100px, 100px 100px]
     142PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px]
     143PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px]
     144PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px]
     145PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px]
     146PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px]
     147PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px]
     148PASS CSS Transitions: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px]
     149PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px]
     150PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px]
     151PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px]
     152PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px]
     153PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px]
     154PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px]
     155PASS CSS Transitions with transition: all: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px]
     156PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px]
     157PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px]
     158PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px]
     159PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px]
     160PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px]
     161PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px]
     162PASS CSS Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px]
     163PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (-0.25) should be [-20px -20px]
     164PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0) should be [  0px   0px]
     165PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.25) should be [ 20px  20px]
     166PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.5) should be [ 40px  40px]
     167PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (0.75) should be [ 60px  60px]
     168PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1) should be [ 80px  80px]
     169PASS Web Animations: property <mask-position> from [top 0px left 0px] to [left 80px top 80px] at (1.25) should be [100px 100px]
     170PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px]
     171PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px]
     172PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px]
     173PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px]
     174PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px]
     175PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px]
     176PASS CSS Transitions: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px]
     177PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px]
     178PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px]
     179PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px]
     180PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px]
     181PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px]
     182PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px]
     183PASS CSS Transitions with transition: all: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px]
     184PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px]
     185PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px]
     186PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px]
     187PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px]
     188PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px]
     189PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px]
     190PASS CSS Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px]
     191PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (-0.25) should be [-10px -10px, 80px -20px, 0px -20px, 90px -10px, -20px -20px, 100px -20px]
     192PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0) should be [  0px   0px, 80px   0px, 0px   0px, 80px   0px,   0px   0px,  80px   0px]
     193PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.25) should be [ 10px  10px, 80px  20px, 0px  20px, 70px  10px,  20px  20px,  60px  20px]
     194PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.5) should be [ 20px  20px, 80px  40px, 0px  40px, 60px  20px,  40px  40px,  40px  40px]
     195PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (0.75) should be [ 30px  30px, 80px  60px, 0px  60px, 50px  30px,  60px  60px,  20px  60px]
     196PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1) should be [ 40px  40px, 80px  80px, 0px  80px, 40px  40px,  80px  80px,   0px  80px]
     197PASS Web Animations: property <mask-position> from [0px 0px, 80px 0px] to [40px 40px, 80px 80px, 0px 80px] at (1.25) should be [ 50px  50px, 80px 100px, 0px 100px, 30px  50px, 100px 100px, -20px 100px]
    198198
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html

    r281580 r286795  
    55  height: 100px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: circle(35% at 35% 35%);
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter-expected.html

    r286794 r286795  
    55  height: 100px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  filter: blur(5px);
     8  clip-path: circle(75% at 75% 75%);
    89}
    910</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-animation-filter-ref.html">
    65<style>
    76.container {
     
    98  height: 100px;
    109  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
     10  filter: blur(5px);
    1211  /* Use a long animation that start at 50% progress where the slope of the
    1312     selected timing function is zero. By setting up the animation in this way,
     
    2120@keyframes clippath {
    2221  0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     22  100% { clip-path: circle(100% at 100% 100%); }
    2523}
    2624</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1-expected.html

    r286794 r286795  
    55  height: 100px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: circle(50% at 50% 50%);
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
     4<link rel="match" href="clip-path-animation-incompatible-shapes1-ref.html">
    55<meta name=fuzzy content="0-255;0-2">
    66<style>
     
    99  height: 100px;
    1010  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
    12   /* Use a long animation that start at 50% progress where the slope of the
     11  /* Use a long animation that start at 30% progress where the slope of the
    1312     selected timing function is zero. By setting up the animation in this way,
    1413     we accommodate lengthy delays in running the test without a potential drift
     
    1716     animation is ready, thus the long animation duration has no bearing on
    1817     the actual duration of the test. */
    19   animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
     18  animation: clippath 1000000s cubic-bezier(0,1,1,0) -300000s;
    2019}
    2120@keyframes clippath {
    2221  0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     22  100% { clip-path: ellipse(10% 20% at 50% 50%); }
    2523}
    2624</style>
     
    3028
    3129<script>
     30// This test ensures that when selected keyframe shapes are incompatible
     31// and progress is less than 0.5, "from" keyframe is selected as a result.
    3232document.getAnimations()[0].ready.then(() => {
    3333  takeScreenshot();
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2-expected.html

    r286794 r286795  
    22<style>
    33.container {
    4   width: 100px;
    5   height: 100px;
     4  width: 300px;
     5  height: 300px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: path('M 100 100 L 200 0 L 200 200 L 0 120 z');
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-animation-incompatible-shapes2-ref.html">
     5<meta name=fuzzy content="0-255;0-300">
    66<style>
    77.container {
    8   width: 100px;
    9   height: 100px;
     8  width: 300px;
     9  height: 300px;
    1010  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
    12   /* Use a long animation that start at 50% progress where the slope of the
     11  /* Use a long animation that start at 60% progress where the slope of the
    1312     selected timing function is zero. By setting up the animation in this way,
    1413     we accommodate lengthy delays in running the test without a potential drift
     
    1716     animation is ready, thus the long animation duration has no bearing on
    1817     the actual duration of the test. */
    19   animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
     18  animation: clippath 1000000s cubic-bezier(0,1,1,0) -600000s;
    2019}
    2120@keyframes clippath {
    2221  0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     22  100% { clip-path: path('M 100 100 L 200 0 L 200 200 L 0 120 z'); }
    2523}
    2624</style>
     
    3028
    3129<script>
     30// This test ensures that when selected keyframe shapes are incompatible
     31// and progress >= 0.5, "to" keyframe is selected as a result.
    3232document.getAnimations()[0].ready.then(() => {
    3333  takeScreenshot();
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-animation-overflow-ref.html">
     5<meta name=fuzzy content="0-255;0-800">
    66<style>
    77.container {
    8   width: 100px;
    9   height: 100px;
     8  width: 200px;
     9  height: 200px;
    1010  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
     11  border: 20px solid black;
    1212  /* Use a long animation that start at 50% progress where the slope of the
    1313     selected timing function is zero. By setting up the animation in this way,
     
    2020}
    2121@keyframes clippath {
    22   0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     22  0%   { clip-path: circle(130px at 130px 130px); }
     23  100% { clip-path: circle(110px at 110px 110px); }
    2524}
    2625</style>
    2726<script src="/common/reftest-wait.js"></script>
    2827<body>
    29 <div class="container"></div>
     28<div class="container"><div class="container"></div></div>
    3029
    3130<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1-expected.html

    r286794 r286795  
    55  height: 100px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: ellipse(15% 25% at 60% 60%);
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-animation-three-keyframes1-ref.html">
    65<style>
    76.container {
     
    98  height: 100px;
    109  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
    12   /* Use a long animation that start at 50% progress where the slope of the
     10  /* Use a long animation that start at 5% progress where the slope of the
    1311     selected timing function is zero. By setting up the animation in this way,
    1412     we accommodate lengthy delays in running the test without a potential drift
     
    1715     animation is ready, thus the long animation duration has no bearing on
    1816     the actual duration of the test. */
    19   animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
     17  animation: clippath 1000000s cubic-bezier(0,1,1,0) -50000s;
    2018}
    2119@keyframes clippath {
    22   0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     20  0% { clip-path: ellipse(10% 20% at 50% 50%) }
     21  10% {
     22    clip-path: ellipse(20% 30% at 70% 70%);
     23    animation-timing-function: cubic-bezier(0,1,1,0);
     24  }
     25  100% {
     26    clip-path: ellipse(10% 20% at 50% 50%);
     27    animation-timing-function: cubic-bezier(0,1,1,0);
     28  }
    2529}
    2630</style>
     
    3034
    3135<script>
     36// This test ensures that we select the correct start and end keyframes for
     37// interpolation. In this test, the start delay of the animation makes it
     38// jump to 5% right away. So for this test, we would choose the keyframes at
     39// 0% and 10% for interpolation.
    3240document.getAnimations()[0].ready.then(() => {
    3341  takeScreenshot();
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2-expected.html

    r286794 r286795  
    22<style>
    33.container {
    4   width: 100px;
    5   height: 100px;
     4  width: 300px;
     5  height: 300px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: path('M 150 150 L 250 0 L 250 250 L 0 160 z');
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-animation-three-keyframes2-ref.html">
     5<meta name=fuzzy content="0-255;0-1000">
    66<style>
    77.container {
    8   width: 100px;
    9   height: 100px;
     8  width: 300px;
     9  height: 300px;
    1010  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
    1211  /* Use a long animation that start at 50% progress where the slope of the
    1312     selected timing function is zero. By setting up the animation in this way,
     
    1716     animation is ready, thus the long animation duration has no bearing on
    1817     the actual duration of the test. */
    19   animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
     18     animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
    2019}
    2120@keyframes clippath {
    22   0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     21  0% {
     22    clip-path: path('M 300 300 L 500 0 L 500 500 L 0 300 z');
     23  }
     24  10% {
     25    clip-path: path('M 100 100 L 200 0 L 200 200 L 0 120 z');
     26    animation-timing-function: cubic-bezier(0,1,1,0);
     27  }
     28  100% {
     29    clip-path: path('M 200 200 L 300 0 L 300 300 L 0 200 z');
     30    animation-timing-function: cubic-bezier(0,1,1,0);
     31  }
    2532}
     33
    2634</style>
    2735<script src="/common/reftest-wait.js"></script>
     
    3038
    3139<script>
     40// The start delay of the animation makes it jump 50% of the animation, which
     41// means we would select the keyframes at 10% and 100% for animation. The
     42// progress would be (0.5-0.1) / (1-0.1) = 0.44. So a timing function input of
     43// 0.44 results in an output of 0.5.
    3244document.getAnimations()[0].ready.then(() => {
    3345  takeScreenshot();
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html

    r281580 r286795  
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    44<link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
    65<style>
    76.container {
     
    98  height: 100px;
    109  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
    1210  /* Use a long animation that start at 50% progress where the slope of the
    1311     selected timing function is zero. By setting up the animation in this way,
     
    2119@keyframes clippath {
    2220  0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    2421  100% { clip-path: circle(20% at 20% 20%); }
    2522}
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-expected.html

    r286794 r286795  
    55  height: 100px;
    66  background-color: green;
    7   clip-path: circle(20% at 20% 20%);
     7  clip-path: circle(40% at 40% 40%);
    88}
    99</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html

    r286794 r286795  
    22<html class="reftest-wait">
    33<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#basic-shape-interpolation">
    4 <link rel="match" href="clip-path-animation-ref.html">
    5 <meta name=fuzzy content="0-255;0-2">
     4<link rel="match" href="clip-path-transition-ref.html">
    65<style>
    76.container {
    87  width: 100px;
    98  height: 100px;
     9  clip-path: circle(50% at 50% 50%);
    1010  background-color: green;
    11   clip-path: ellipse(50% 40% at 50% 50%);
     11  transition-property: clip-path;
    1212  /* Use a long animation that start at 50% progress where the slope of the
    1313     selected timing function is zero. By setting up the animation in this way,
     
    1717     animation is ready, thus the long animation duration has no bearing on
    1818     the actual duration of the test. */
    19   animation: clippath 1000000s cubic-bezier(0,1,1,0) -500000s;
    20 }
    21 @keyframes clippath {
    22   0%   { clip-path: circle(50% at 50% 50%); }
    23   30% { clip-path: circle(20% at 20% 20%); }
    24   100% { clip-path: circle(20% at 20% 20%); }
     19  transition-duration: 1000000s;
     20  transition-timing-function: cubic-bezier(0,1,1,0);
     21  transition-delay: -500000s;
    2522}
    2623</style>
    2724<script src="/common/reftest-wait.js"></script>
    2825<body>
    29 <div class="container"></div>
     26<div class="container" id="target"></div>
    3027
    3128<script>
    32 document.getAnimations()[0].ready.then(() => {
    33   takeScreenshot();
     29function update() {
     30  document.getElementById('target').style.clipPath = "circle(30% at 30% 30%)";
     31  requestAnimationFrame(() => {
     32    takeScreenshot();
     33  });
     34}
     35requestAnimationFrame(function() {
     36  requestAnimationFrame(update);
    3437});
    3538</script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/w3c-import.log

    r281580 r286795  
    1616List of files:
    1717/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-expected.html
     18/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter-expected.html
     19/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html
     20/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1-expected.html
     21/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html
     22/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2-expected.html
     23/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html
     24/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow-expected.html
     25/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html
     26/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1-expected.html
     27/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html
     28/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2-expected.html
     29/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html
    1830/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation.html
     31/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition-expected.html
     32/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002.html

    r268138 r286795  
    2222  <clipPath id="c" clipPathUnits="userSpaceOnUse">
    2323    <rect x="5" y="5" width="90" height="90"/>
    24   </clipPath>
     24  </clippath>
    2525</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html

    r281580 r286795  
    2323  <clipPath id="clip">
    2424    <text id="text" y="80" font-family="Ahem" font-size="100">XX</text>
    25   </clipPath>
     25  </clippath>
    2626</svg>
    2727<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001.html

    r268138 r286795  
    1818        <clipPath id="clip">
    1919            <rect x="50" y="50" width="150px" height="100" />
    20         </clipPath>
     20        </clippath>
    2121    </svg>
    2222</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002.html

    r268138 r286795  
    1818        <clipPath id="clip">
    1919            <rect x="50" y="50" width="150px" height="100" />
    20         </clipPath>
     20        </clippath>
    2121    </svg>
    2222</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003.html

    r268138 r286795  
    2727        <clipPath id="clip">
    2828            <rect x="50%" y="0" width="50%" height="100%" />
    29         </clipPath>
     29        </clippath>
    3030    </svg>
    3131</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004.html

    r268138 r286795  
    2727        <clipPath id="clip">
    2828            <rect x="0" y="50%" width="100%" height="50%" />
    29         </clipPath>
     29        </clippath>
    3030    </svg>
    3131</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-001-expected.html

    r268138 r286795  
    2323      <clipPath id="clip">
    2424        <path clip-rule="nonzero" d="M10,10h80v80h-80zM25,25h50v50h-50z"/>
    25       </clipPath>
     25      </clippath>
    2626    </defs>
    2727  </svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-002-expected.html

    r268138 r286795  
    2323      <clipPath id="clip">
    2424        <path clip-rule="evenodd" d="M10,10h80v80h-80zM25,25h50v50h-50z"/>
    25       </clipPath>
     25      </clippath>
    2626    </defs>
    2727  </svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-001-expected.html

    r268138 r286795  
    1818      <clipPath id="clip">
    1919        <path clip-rule="nonzero" d="M35,35 H90 V90 H35Z M25,25 H70 V70 H25Z"/>
    20       </clipPath>
     20      </clippath>
    2121    </defs>
    2222  </svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-002-expected.html

    r268138 r286795  
    1818      <clipPath id="clip">
    1919        <path clip-rule="evenodd" d="M35,35 H90 V90 H35Z M25,25 H70 V70 H25Z"/>
    20       </clipPath>
     20      </clippath>
    2121    </defs>
    2222  </svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore.html

    r268138 r286795  
    2727    <clipPath id="c" clipPathUnits="objectBoundingBox">
    2828      <rect width="0.5" height="1"/>
    29     </clipPath>
     29    </clippath>
    3030  </defs>
    3131</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-expected.html

    r268138 r286795  
    2525  <clipPath id="clip" clipPathUnits="objectBoundingBox">
    2626    <polygon points="0,0 0.5,1 1,0" />
    27   </clipPath>
     27  </clippath>
    2828</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate.html

    r268138 r286795  
    2929  <clipPath id="clip" clipPathUnits="objectBoundingBox">
    3030    <polygon points="0,0 0.5,0.5 1,0" />
    31   </clipPath>
     31  </clippath>
    3232</svg>
    3333
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-backdrop-filter.html

    r281580 r286795  
    1010  height: 300px;
    1111  clip-path: url(#svgPath);
    12   backdrop-filter: invert(100%);
     12  -webkit-backdrop-filter: invert(100%);
    1313  background: transparent;
    1414}
     
    2121  <clipPath id="svgPath">
    2222    <text id="svgText" x="10" y="100">Text</text>
    23   </clipPath>
     23  </clippath>
    2424</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-svg-text-font-loading.html

    r281580 r286795  
    2020  <clipPath id="clip">
    2121    <text y="80" font-size="100" font-family="DelayedAhem, serif">X</text>
    22   </clipPath>
     22  </clippath>
    2323</svg>
    2424<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html

    r268138 r286795  
    2121  <clipPath id="clip">
    2222    <rect width="1" height="1"/>
    23   </clipPath>
     23  </clippath>
    2424</svg>
    2525<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002.html

    r268138 r286795  
    2323  <clipPath id="clip">
    2424    <rect width="1" height="1"/>
    25   </clipPath>
     25  </clippath>
    2626</svg>
    2727<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html

    r268138 r286795  
    1010  <clipPath id="rect">
    1111    <rect width="100" height="100"/>
    12   </clipPath>
     12  </clippath>
    1313  <rect width="100" height="100" fill="red"/>
    1414  <rect width="100" height="100" fill="green" id="target" clip-path="url(#empty)"/>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html

    r268138 r286795  
    99  <clipPath id="circle">
    1010    <circle cx="50" cy="50" r="50"/>
    11   </clipPath>
     11  </clippath>
    1212  <clipPath id="rect">
    1313    <rect width="100" height="100"/>
    14   </clipPath>
     14  </clippath>
    1515  <rect width="100" height="100" fill="red"/>
    1616  <rect width="100" height="100" fill="green" id="target" clip-path="url(#circle)"/>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html

    r268138 r286795  
    2222  <clipPath id="clip">
    2323    <rect width="100" height="100"/>
    24   </clipPath>
     24  </clippath>
    2525</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-mutated.html

    r268138 r286795  
    2222    <clipPath id="clip" clipPathUnits="objectBoundingBox">
    2323      <circle cx="0.5" cy="0.5" r="0.25"></circle>
    24     </clipPath>
     24    </clippath>
    2525  </defs>
    2626</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local.html

    r268138 r286795  
    1818  <clipPath id="c" clipPathUnits="objectBoundingBox">
    1919    <circle cx="0.5" cy="0.5" r="0.5"/>
    20   </clipPath>
     20  </clippath>
    2121</svg>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/w3c-import.log

    r281580 r286795  
    1010------------------------------------------------------------------------
    1111Properties requiring vendor prefixes:
    12 None
     12backdrop-filter
    1313Property values requiring vendor prefixes:
    1414None
     
    7373/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-nested-expected.html
    7474/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-nested.html
     75/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll-expected.html
     76/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll.html
    7577/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-inline-001-expected.xht
    7678/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-inline-001.html
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/clip-rule-001.html

    r281580 r286795  
    2323        <clipPath id="clip">
    2424            <polygon points="0 0, 250 0, 250 200, 0 200, 0 50, 200 50, 200 150, 50 150, 50 50, 0 50" clip-rule="evenodd" />
    25         </clipPath>
     25        </clippath>
    2626    </svg>
    2727</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-rule/clip-rule-002.html

    r281580 r286795  
    2323        <clipPath id="clip">
    2424            <polygon points="0 0, 250 0, 250 200, 0 200, 0 50, 50 50, 50 150, 200 150, 200 50, 0 50" clip-rule="nonzero" />
    25         </clipPath>
     25        </clippath>
    2626    </svg>
    2727</body>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-001.html

    r281580 r286795  
    2020  <clipPath id="clip" clipPathUnits="objectBoundingBox" transform="scale(0.01, 0.01)">
    2121    <polygon points="50,0 100,50 50,100 0,50"/>
    22   </clipPath>
     22  </clippath>
    2323</svg>
    2424<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-objectboundingbox-002.html

    r281580 r286795  
    2020  <clipPath id="nested" clipPathUnits="objectBoundingBox">
    2121    <circle cx="0.25" cy="0.25" r="0.25"/>
    22   </clipPath>
     22  </clippath>
    2323  <clipPath id="clip" clipPathUnits="objectBoundingBox" clip-path="url(#nested)">
    2424    <rect width="0.5" height="0.5"/>
    25   </clipPath>
     25  </clippath>
    2626</svg>
    2727<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/hit-test/clip-path-element-userspaceonuse-001.html

    r281580 r286795  
    2020  <clipPath id="clip" clipPathUnits="userSpaceOnUse">
    2121    <polygon points="50,0 100,50 50,100 0,50"/>
    22   </clipPath>
     22  </clippath>
    2323</svg>
    2424<script>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/idlharness.html

    r281580 r286795  
    2525  <clipPath id="clip1">
    2626    <rect x="50" y="50" width="100" height="100" />
    27   </clipPath>
     27  </clippath>
    2828  <mask id="mask1" x="0" y="0" width="1" height="1" maskContentUnits="objectBoundingBox">
    2929    <rect x="0" y="0" width="1" height="1" fill="white" />
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/inheritance.sub-expected.txt

    r281580 r286795  
    1818FAIL Property mask-border-width has initial value auto assert_true: mask-border-width doesn't seem to be supported in the computed style expected true got false
    1919FAIL Property mask-border-width does not inherit assert_true: expected true got false
    20 FAIL Property mask-clip has initial value border-box assert_true: mask-clip doesn't seem to be supported in the computed style expected true got false
    21 FAIL Property mask-clip does not inherit assert_true: expected true got false
    22 FAIL Property mask-composite has initial value add assert_true: mask-composite doesn't seem to be supported in the computed style expected true got false
    23 FAIL Property mask-composite does not inherit assert_true: expected true got false
    24 FAIL Property mask-image has initial value none assert_true: mask-image doesn't seem to be supported in the computed style expected true got false
    25 FAIL Property mask-image does not inherit assert_true: expected true got false
    26 FAIL Property mask-mode has initial value match-source assert_true: mask-mode doesn't seem to be supported in the computed style expected true got false
    27 FAIL Property mask-mode does not inherit assert_true: expected true got false
    28 FAIL Property mask-origin has initial value border-box assert_true: mask-origin doesn't seem to be supported in the computed style expected true got false
    29 FAIL Property mask-origin does not inherit assert_true: expected true got false
    30 FAIL Property mask-position has initial value 0% 0% assert_true: mask-position doesn't seem to be supported in the computed style expected true got false
    31 FAIL Property mask-position does not inherit assert_true: expected true got false
    32 FAIL Property mask-repeat has initial value repeat assert_true: mask-repeat doesn't seem to be supported in the computed style expected true got false
    33 FAIL Property mask-repeat does not inherit assert_true: expected true got false
    34 FAIL Property mask-size has initial value auto assert_true: mask-size doesn't seem to be supported in the computed style expected true got false
    35 FAIL Property mask-size does not inherit assert_true: expected true got false
     20PASS Property mask-clip has initial value border-box
     21PASS Property mask-clip does not inherit
     22PASS Property mask-composite has initial value add
     23PASS Property mask-composite does not inherit
     24PASS Property mask-image has initial value none
     25PASS Property mask-image does not inherit
     26PASS Property mask-mode has initial value match-source
     27PASS Property mask-mode does not inherit
     28PASS Property mask-origin has initial value border-box
     29PASS Property mask-origin does not inherit
     30PASS Property mask-position has initial value 0% 0%
     31PASS Property mask-position does not inherit
     32PASS Property mask-repeat has initial value repeat
     33PASS Property mask-repeat does not inherit
     34PASS Property mask-size has initial value auto
     35PASS Property mask-size does not inherit
    3636PASS Property mask-type has initial value luminance
    3737PASS Property mask-type does not inherit
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/mask-image/mask-image-data-url-image-expected.html

    r281580 r286795  
    1818  border: 40px solid blue;
    1919  background: green;
    20   mask-image: url(1x1-black-30-alpha.png); /* 1x1 black with 30% transparency */
     20  mask-image: url(reference/1x1-black-30-alpha.png); /* 1x1 black with 30% transparency */
    2121}
    2222</style>
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/mask-position-valid-expected.txt

    r281580 r286795  
    11
    2 FAIL e.style['mask-position'] = "10%" should set the property value assert_not_equals: property should be set got disallowed value ""
    3 FAIL e.style['mask-position'] = "right 30% top 60px" should set the property value assert_not_equals: property should be set got disallowed value ""
    4 FAIL e.style['mask-position'] = "-20% -30px" should set the property value assert_not_equals: property should be set got disallowed value ""
    5 FAIL e.style['mask-position'] = "30px center" should set the property value assert_not_equals: property should be set got disallowed value ""
    6 FAIL e.style['mask-position'] = "40px top" should set the property value assert_not_equals: property should be set got disallowed value ""
    7 FAIL e.style['mask-position'] = "bottom 10% right 20%" should set the property value assert_not_equals: property should be set got disallowed value ""
    8 FAIL e.style['mask-position'] = "bottom right" should set the property value assert_not_equals: property should be set got disallowed value ""
    9 FAIL e.style['mask-position'] = "center 50px" should set the property value assert_not_equals: property should be set got disallowed value ""
    10 FAIL e.style['mask-position'] = "center bottom" should set the property value assert_not_equals: property should be set got disallowed value ""
    11 FAIL e.style['mask-position'] = "center left" should set the property value assert_not_equals: property should be set got disallowed value ""
    12 FAIL e.style['mask-position'] = "left" should set the property value assert_not_equals: property should be set got disallowed value ""
    13 FAIL e.style['mask-position'] = "left bottom" should set the property value assert_not_equals: property should be set got disallowed value ""
    14 FAIL e.style['mask-position'] = "right 40%" should set the property value assert_not_equals: property should be set got disallowed value ""
    15 FAIL e.style['mask-position'] = "top" should set the property value assert_not_equals: property should be set got disallowed value ""
    16 FAIL e.style['mask-position'] = "top center" should set the property value assert_not_equals: property should be set got disallowed value ""
    17 FAIL e.style['mask-position'] = "center" should set the property value assert_not_equals: property should be set got disallowed value ""
    18 FAIL e.style['mask-position'] = "bottom left, right 20%" should set the property value assert_not_equals: property should be set got disallowed value ""
    19 FAIL e.style['mask-position'] = "top, center, left" should set the property value assert_not_equals: property should be set got disallowed value ""
     2PASS e.style['mask-position'] = "10%" should set the property value
     3PASS e.style['mask-position'] = "right 30% top 60px" should set the property value
     4PASS e.style['mask-position'] = "-20% -30px" should set the property value
     5PASS e.style['mask-position'] = "30px center" should set the property value
     6PASS e.style['mask-position'] = "40px top" should set the property value
     7PASS e.style['mask-position'] = "bottom 10% right 20%" should set the property value
     8PASS e.style['mask-position'] = "bottom right" should set the property value
     9PASS e.style['mask-position'] = "center 50px" should set the property value
     10PASS e.style['mask-position'] = "center bottom" should set the property value
     11PASS e.style['mask-position'] = "center left" should set the property value
     12PASS e.style['mask-position'] = "left" should set the property value
     13PASS e.style['mask-position'] = "left bottom" should set the property value
     14PASS e.style['mask-position'] = "right 40%" should set the property value
     15PASS e.style['mask-position'] = "top" should set the property value
     16PASS e.style['mask-position'] = "top center" should set the property value
     17PASS e.style['mask-position'] = "center" should set the property value
     18PASS e.style['mask-position'] = "bottom left, right 20%" should set the property value
     19PASS e.style['mask-position'] = "top, center, left" should set the property value
    2020
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-masking/parsing/mask-valid.sub-expected.txt

    r281580 r286795  
    11
    22PASS e.style['mask'] = "none" should set the property value
    3 FAIL e.style['mask'] = "none alpha" should set the property value assert_not_equals: property should be set got disallowed value ""
    4 FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue)" should set the property value assert_not_equals: property should be set got disallowed value ""
    5 FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue) luminance" should set the property value assert_not_equals: property should be set got disallowed value ""
     3PASS e.style['mask'] = "none alpha" should set the property value
     4PASS e.style['mask'] = "linear-gradient(to left bottom, red, blue)" should set the property value
     5PASS e.style['mask'] = "linear-gradient(to left bottom, red, blue) luminance" should set the property value
    66PASS e.style['mask'] = "url(\"https://localhost/\")" should set the property value
    7 FAIL e.style['mask'] = "url(\"https://localhost/\") alpha" should set the property value assert_not_equals: property should be set got disallowed value ""
    8 FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue) 1px 2px" should set the property value assert_not_equals: property should be set got disallowed value ""
    9 FAIL e.style['mask'] = "url(\"https://localhost/\") 1px 2px / contain" should set the property value assert_not_equals: property should be set got disallowed value ""
    10 FAIL e.style['mask'] = "none repeat-y" should set the property value assert_not_equals: property should be set got disallowed value ""
    11 FAIL e.style['mask'] = "none border-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    12 FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue) padding-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    13 FAIL e.style['mask'] = "none content-box" should set the property value assert_not_equals: property should be set got disallowed value ""
     7PASS e.style['mask'] = "url(\"https://localhost/\") alpha" should set the property value
     8PASS e.style['mask'] = "linear-gradient(to left bottom, red, blue) 1px 2px" should set the property value
     9PASS e.style['mask'] = "url(\"https://localhost/\") 1px 2px / contain" should set the property value
     10PASS e.style['mask'] = "none repeat-y" should set the property value
     11FAIL e.style['mask'] = "none border-box" should set the property value assert_equals: serialization should be canonical expected "none" but got "none border-box"
     12PASS e.style['mask'] = "linear-gradient(to left bottom, red, blue) padding-box" should set the property value
     13PASS e.style['mask'] = "none content-box" should set the property value
    1414FAIL e.style['mask'] = "none margin-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    1515FAIL e.style['mask'] = "url(\"https://localhost/\") fill-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    1616FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue) stroke-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    1717FAIL e.style['mask'] = "none view-box" should set the property value assert_not_equals: property should be set got disallowed value ""
    18 FAIL e.style['mask'] = "none no-clip" should set the property value assert_not_equals: property should be set got disallowed value ""
    19 FAIL e.style['mask'] = "url(\"https://localhost/\") add" should set the property value assert_not_equals: property should be set got disallowed value ""
    20 FAIL e.style['mask'] = "none subtract" should set the property value assert_not_equals: property should be set got disallowed value ""
    21 FAIL e.style['mask'] = "url(\"https://localhost/\") intersect" should set the property value assert_not_equals: property should be set got disallowed value ""
    22 FAIL e.style['mask'] = "linear-gradient(to left bottom, red, blue) exclude" should set the property value assert_not_equals: property should be set got disallowed value ""
     18PASS e.style['mask'] = "none no-clip" should set the property value
     19FAIL e.style['mask'] = "url(\"https://localhost/\") add" should set the property value assert_equals: serialization should be canonical expected "url(\"https://localhost/\")" but got "url(\"https://localhost/\") add"
     20PASS e.style['mask'] = "none subtract" should set the property value
     21PASS e.style['mask'] = "url(\"https://localhost/\") intersect" should set the property value
     22PASS e.style['mask'] = "linear-gradient(to left bottom, red, blue) exclude" should set the property value
    2323FAIL e.style['mask'] = "intersect no-clip space round 1px 2px / contain stroke-box linear-gradient(to left bottom, red, blue) luminance" should set the property value assert_not_equals: property should be set got disallowed value ""
    2424FAIL e.style['mask'] = "intersect no-clip space round 1px 2px / contain view-box, stroke-box linear-gradient(to left bottom, red, blue) luminance" should set the property value assert_not_equals: property should be set got disallowed value ""
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-detached-subtree-expected.txt

    r285822 r286795  
    11
    22PASS getComputedStyle returns no style for detached element
    3 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 398
    4 FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 398
    5 FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 398
    6 FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 398
     3FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 399
     4FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 399
     5FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 399
     6FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 399
    77PASS getComputedStyle returns no style for shadow tree outside of flattened tree
    88
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt

    r285397 r286795  
    3232PASS list-style-type: "square" onto "circle"
    3333PASS list-style-type: "circle" onto "square"
     34PASS mask (type: discrete) has testAccumulation function
     35FAIL mask: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(\"http://localhost/test-2\") 0% 0% / auto repeat border-box border-box add match-source"
     36FAIL mask: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-1\") 0% 0% / auto repeat border-box border-box add match-source"
     37PASS mask-image (type: discrete) has testAccumulation function
     38PASS mask-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")"
     39PASS mask-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")"
    3440PASS mix-blend-mode (type: discrete) has testAccumulation function
    3541PASS mix-blend-mode: "screen" onto "multiply"
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt

    r285631 r286795  
    3232PASS list-style-type: "square" onto "circle"
    3333PASS list-style-type: "circle" onto "square"
     34PASS mask (type: discrete) has testAddition function
     35FAIL mask: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")" assert_equals: The value should be url("http://localhost/test-2") at 0ms expected "url(\"http://localhost/test-2\")" but got "url(\"http://localhost/test-2\") 0% 0% / auto repeat border-box border-box add match-source"
     36FAIL mask: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")" assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-1\") 0% 0% / auto repeat border-box border-box add match-source"
     37PASS mask-image (type: discrete) has testAddition function
     38PASS mask-image: "url("http://localhost/test-2")" onto "url("http://localhost/test-1")"
     39PASS mask-image: "url("http://localhost/test-1")" onto "url("http://localhost/test-2")"
    3440PASS mix-blend-mode (type: discrete) has testAddition function
    3541PASS mix-blend-mode: "screen" onto "multiply"
  • trunk/LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt

    r284361 r286795  
    3939PASS list-style-type uses discrete animation when animating between "circle" and "square" with effect easing
    4040PASS list-style-type uses discrete animation when animating between "circle" and "square" with keyframe easing
     41PASS mask (type: discrete) has testInterpolation function
     42FAIL mask uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-1\") 0% 0% / auto repeat border-box border-box add match-source"
     43FAIL mask uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-1\") 0% 0% / auto repeat border-box border-box add match-source"
     44FAIL mask uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 0ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-1\") 0% 0% / auto repeat border-box border-box add match-source"
     45PASS mask-image (type: discrete) has testInterpolation function
     46FAIL mask-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with linear easing assert_equals: The value should be url("http://localhost/test-1") at 499ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-2\")"
     47FAIL mask-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with effect easing assert_equals: The value should be url("http://localhost/test-1") at 940ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-2\")"
     48FAIL mask-image uses discrete animation when animating between "url("http://localhost/test-1")" and "url("http://localhost/test-2")" with keyframe easing assert_equals: The value should be url("http://localhost/test-1") at 940ms expected "url(\"http://localhost/test-1\")" but got "url(\"http://localhost/test-2\")"
    4149PASS mix-blend-mode (type: discrete) has testInterpolation function
    4250PASS mix-blend-mode uses discrete animation when animating between "multiply" and "screen" with linear easing
  • trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-expected.txt

    r285621 r286795  
    119119marker-mid: none;
    120120marker-start: none;
    121 mask: none;
     121mask-image: none;
     122mask-origin: border-box;
     123mask-repeat: repeat;
     124mask-size: auto;
    122125mask-type: luminance;
    123126max-height: none;
     
    240243-webkit-mask-clip: border-box;
    241244-webkit-mask-composite: source-over;
    242 -webkit-mask-image: none;
    243 -webkit-mask-origin: border-box;
    244 -webkit-mask-repeat: repeat;
    245 -webkit-mask-size: auto;
    246245-webkit-nbsp-mode: normal;
    247246-webkit-print-color-adjust: economy;
  • trunk/LayoutTests/platform/mac/fast/css/getComputedStyle/computed-style-without-renderer-expected.txt

    r285621 r286795  
    118118marker-mid: none
    119119marker-start: none
    120 mask: none
     120mask-image: none
     121mask-origin: border-box
     122mask-repeat: repeat
     123mask-size: auto
    121124mask-type: luminance
    122125max-height: none
     
    239242-webkit-mask-clip: border-box
    240243-webkit-mask-composite: source-over
    241 -webkit-mask-image: none
    242 -webkit-mask-origin: border-box
    243 -webkit-mask-repeat: repeat
    244 -webkit-mask-size: auto
    245244-webkit-nbsp-mode: normal
    246245-webkit-print-color-adjust: economy
  • trunk/LayoutTests/platform/mac/svg/css/getComputedStyle-basic-expected.txt

    r285621 r286795  
    235235rect: style.getPropertyValue(marker-start) : none
    236236rect: style.getPropertyCSSValue(marker-start) : [object CSSPrimitiveValue]
    237 rect: style.getPropertyValue(mask) : none
    238 rect: style.getPropertyCSSValue(mask) : [object CSSPrimitiveValue]
     237rect: style.getPropertyValue(mask-image) : none
     238rect: style.getPropertyCSSValue(mask-image) : [object CSSPrimitiveValue]
     239rect: style.getPropertyValue(mask-origin) : border-box
     240rect: style.getPropertyCSSValue(mask-origin) : [object CSSPrimitiveValue]
     241rect: style.getPropertyValue(mask-repeat) : repeat
     242rect: style.getPropertyCSSValue(mask-repeat) : [object CSSPrimitiveValue]
     243rect: style.getPropertyValue(mask-size) : auto
     244rect: style.getPropertyCSSValue(mask-size) : [object CSSPrimitiveValue]
    239245rect: style.getPropertyValue(mask-type) : luminance
    240246rect: style.getPropertyCSSValue(mask-type) : [object CSSPrimitiveValue]
     
    477483rect: style.getPropertyValue(-webkit-mask-composite) : source-over
    478484rect: style.getPropertyCSSValue(-webkit-mask-composite) : [object CSSPrimitiveValue]
    479 rect: style.getPropertyValue(-webkit-mask-image) : none
    480 rect: style.getPropertyCSSValue(-webkit-mask-image) : [object CSSPrimitiveValue]
    481 rect: style.getPropertyValue(-webkit-mask-origin) : border-box
    482 rect: style.getPropertyCSSValue(-webkit-mask-origin) : [object CSSPrimitiveValue]
    483 rect: style.getPropertyValue(-webkit-mask-repeat) : repeat
    484 rect: style.getPropertyCSSValue(-webkit-mask-repeat) : [object CSSPrimitiveValue]
    485 rect: style.getPropertyValue(-webkit-mask-size) : auto
    486 rect: style.getPropertyCSSValue(-webkit-mask-size) : [object CSSPrimitiveValue]
    487485rect: style.getPropertyValue(-webkit-nbsp-mode) : normal
    488486rect: style.getPropertyCSSValue(-webkit-nbsp-mode) : [object CSSPrimitiveValue]
     
    753751g: style.getPropertyValue(marker-start) : none
    754752g: style.getPropertyCSSValue(marker-start) : [object CSSPrimitiveValue]
    755 g: style.getPropertyValue(mask) : none
    756 g: style.getPropertyCSSValue(mask) : [object CSSPrimitiveValue]
     753g: style.getPropertyValue(mask-image) : none
     754g: style.getPropertyCSSValue(mask-image) : [object CSSPrimitiveValue]
     755g: style.getPropertyValue(mask-origin) : border-box
     756g: style.getPropertyCSSValue(mask-origin) : [object CSSPrimitiveValue]
     757g: style.getPropertyValue(mask-repeat) : repeat
     758g: style.getPropertyCSSValue(mask-repeat) : [object CSSPrimitiveValue]
     759g: style.getPropertyValue(mask-size) : auto
     760g: style.getPropertyCSSValue(mask-size) : [object CSSPrimitiveValue]
    757761g: style.getPropertyValue(mask-type) : luminance
    758762g: style.getPropertyCSSValue(mask-type) : [object CSSPrimitiveValue]
     
    995999g: style.getPropertyValue(-webkit-mask-composite) : source-over
    9961000g: style.getPropertyCSSValue(-webkit-mask-composite) : [object CSSPrimitiveValue]
    997 g: style.getPropertyValue(-webkit-mask-image) : none
    998 g: style.getPropertyCSSValue(-webkit-mask-image) : [object CSSPrimitiveValue]
    999 g: style.getPropertyValue(-webkit-mask-origin) : border-box
    1000 g: style.getPropertyCSSValue(-webkit-mask-origin) : [object CSSPrimitiveValue]
    1001 g: style.getPropertyValue(-webkit-mask-repeat) : repeat
    1002 g: style.getPropertyCSSValue(-webkit-mask-repeat) : [object CSSPrimitiveValue]
    1003 g: style.getPropertyValue(-webkit-mask-size) : auto
    1004 g: style.getPropertyCSSValue(-webkit-mask-size) : [object CSSPrimitiveValue]
    10051001g: style.getPropertyValue(-webkit-nbsp-mode) : normal
    10061002g: style.getPropertyCSSValue(-webkit-nbsp-mode) : [object CSSPrimitiveValue]
  • trunk/LayoutTests/svg/css/computed-style-url-serializing-expected.txt

    r276888 r286795  
    44
    55
    6 PASS document.defaultView.getComputedStyle(rect, null).mask is "url(\"#reference\")"
     6PASS document.defaultView.getComputedStyle(rect, null).mask is "url(\"#reference\") 0% 0% / auto repeat border-box border-box add match-source"
    77PASS document.defaultView.getComputedStyle(rect, null).markerStart is "url(\"#reference\")"
    88PASS document.defaultView.getComputedStyle(rect, null).markerMid is "url(\"#reference\")"
  • trunk/LayoutTests/svg/css/computed-style-url-serializing.html

    r276888 r286795  
    2525rootSVGElement.appendChild(rect);
    2626
    27 shouldBeEqualToString("document.defaultView.getComputedStyle(rect, null).mask", 'url("#reference")');
     27shouldBeEqualToString("document.defaultView.getComputedStyle(rect, null).mask", 'url("#reference") 0% 0% / auto repeat border-box border-box add match-source');
    2828shouldBeEqualToString("document.defaultView.getComputedStyle(rect, null).markerStart", 'url("#reference")');
    2929shouldBeEqualToString("document.defaultView.getComputedStyle(rect, null).markerMid", 'url("#reference")');
  • trunk/Source/WebCore/ChangeLog

    r286789 r286795  
     12021-12-09  Matt Woodrow  <matt.woodrow@gmail.com>
     2
     3        Unprefix -webkit-mask
     4        https://bugs.webkit.org/show_bug.cgi?id=229082
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Tests: fast/masking/parsing-webkit-mask.html
     9               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-filter.html
     10               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes1.html
     11               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-incompatible-shapes2.html
     12               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-overflow.html
     13               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes1.html
     14               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-animation-three-keyframes2.html
     15               imported/w3c/web-platform-tests/css/css-masking/clip-path/animations/clip-path-transition.html
     16               imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-fixed-scroll.html
     17               svg/masking/mask-external-reference-expected.svg
     18               svg/masking/mask-external-reference.svg
     19
     20        * animation/CSSPropertyAnimation.cpp:
     21        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
     22        * css/CSSComputedStyleDeclaration.cpp:
     23        (WebCore::createPositionListForLayer):
     24        (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
     25        * css/CSSImageValue.cpp:
     26        (WebCore::ResolvedURL::isLocalURL const):
     27        (WebCore::CSSImageValue::reresolvedURL const):
     28        * css/CSSImageValue.h:
     29        * css/CSSPrimitiveValue.h:
     30        (WebCore::CSSPrimitiveValue::create):
     31        * css/CSSPrimitiveValueMappings.h:
     32        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
     33        (WebCore::CSSPrimitiveValue::operator CompositeOperator const):
     34        (WebCore::CSSPrimitiveValue::operator FillBox const):
     35        * css/CSSProperties.json:
     36        * css/CSSToStyleMap.cpp:
     37        (WebCore::CSSToStyleMap::mapFillMaskMode):
     38        * css/CSSValueKeywords.in:
     39        * css/CSSValuePool.h:
     40        (WebCore::CSSValuePool::createValue):
     41        * css/SVGCSSComputedStyleDeclaration.cpp:
     42        (WebCore::ComputedStyleExtractor::svgPropertyValue):
     43        * css/StyleProperties.cpp:
     44        (WebCore::StyleProperties::getPropertyValue const):
     45        (WebCore::resolvedClipValue):
     46        (WebCore::isSameAsInitialClipValue):
     47        (WebCore::StyleProperties::getLayeredShorthandValue const):
     48        (WebCore::StyleProperties::asText const):
     49        * css/parser/CSSPropertyParser.cpp:
     50        (WebCore::consumeMaskClip):
     51        (WebCore::consumePrefixedBackgroundComposite):
     52        (WebCore::consumeBackgroundComposite):
     53        (WebCore::consumeBackgroundComponent):
     54        (WebCore::CSSPropertyParser::parseSingleValue):
     55        (WebCore::consumeBackgroundPosition):
     56        (WebCore::CSSPropertyParser::consumeBackgroundShorthand):
     57        (WebCore::CSSPropertyParser::parseShorthand):
     58        * css/parser/CSSPropertyParserHelpers.cpp:
     59        (WebCore::CSSPropertyParserHelpers::consumePositionCoordinates):
     60        * display/css/DisplayBoxDecorationPainter.cpp:
     61        (WebCore::Display::BoxDecorationPainter::paintFillLayer const):
     62        * rendering/style/FillLayer.cpp:
     63        (WebCore::clipMax):
     64        (WebCore::FillLayer::computeClipMax const):
     65        * rendering/style/FillLayer.h:
     66        * rendering/style/RenderStyle.cpp:
     67        (WebCore::rareNonInheritedDataChangeRequiresLayerRepaint):
     68        * rendering/style/RenderStyle.h:
     69        (WebCore::RenderStyle::hasPositionedMask const):
     70        * rendering/style/RenderStyleConstants.cpp:
     71        (WebCore::operator<<):
     72        * rendering/style/RenderStyleConstants.h:
     73        * rendering/style/SVGRenderStyle.cpp:
     74        (WebCore::SVGRenderStyle::SVGRenderStyle):
     75        (WebCore::SVGRenderStyle::operator== const):
     76        (WebCore::SVGRenderStyle::copyNonInheritedFrom):
     77        (WebCore::SVGRenderStyle::diff const):
     78        * rendering/style/SVGRenderStyle.h:
     79        (WebCore::SVGRenderStyle::initialLightingColor):
     80        (WebCore::SVGRenderStyle::y const):
     81        (WebCore::SVGRenderStyle::hasFill const):
     82        (WebCore::SVGRenderStyle::initialMaskerResource): Deleted.
     83        (WebCore::SVGRenderStyle::maskerResource const): Deleted.
     84        (WebCore::SVGRenderStyle::hasMasker const): Deleted.
     85        (WebCore::SVGRenderStyle::isolatesBlending const): Deleted.
     86        (WebCore::SVGRenderStyle::setMaskerResource): Deleted.
     87        * rendering/style/SVGRenderStyleDefs.cpp:
     88        (WebCore::StyleResourceData::StyleResourceData): Deleted.
     89        (WebCore::StyleResourceData::copy const): Deleted.
     90        (WebCore::StyleResourceData::operator== const): Deleted.
     91        * rendering/style/SVGRenderStyleDefs.h:
     92        (WebCore::StyleResourceData::create): Deleted.
     93        (WebCore::StyleResourceData::operator!= const): Deleted.
     94        * rendering/style/StyleCachedImage.cpp:
     95        (WebCore::StyleCachedImage::imageURL const):
     96        (WebCore::StyleCachedImage::reresolvedURL const):
     97        (WebCore::StyleCachedImage::imageURL): Deleted.
     98        * rendering/style/StyleCachedImage.h:
     99        * rendering/style/WillChangeData.cpp:
     100        (WebCore::WillChangeData::propertyCreatesStackingContext):
     101        * rendering/svg/SVGRenderSupport.cpp:
     102        (WebCore::SVGRenderSupport::isolatesBlending):
     103        (WebCore::SVGRenderSupport::updateMaskedAncestorShouldIsolateBlending):
     104        * rendering/svg/SVGRenderTreeAsText.cpp:
     105        (WebCore::writeResources):
     106        * rendering/svg/SVGRenderingContext.cpp:
     107        (WebCore::SVGRenderingContext::prepareToRenderSVGContent):
     108        * rendering/svg/SVGResources.cpp:
     109        (WebCore::SVGResources::buildCachedResources):
     110
    11112021-12-09  Alan Bujtas  <zalan@apple.com>
    2112
  • trunk/Source/WebCore/animation/CSSPropertyAnimation.cpp

    r286086 r286795  
    19271927        case CSSPropertyBackgroundSize:
    19281928        case CSSPropertyWebkitBackgroundSize:
    1929         case CSSPropertyWebkitMaskSize:
     1929        case CSSPropertyMaskSize:
    19301930            m_fillLayerPropertyWrapper = makeUnique<FillLayerPropertyWrapper<LengthSize>>(property, &FillLayer::sizeLength, &FillLayer::setSizeLength);
    19311931            break;
    19321932        case CSSPropertyBackgroundImage:
     1933        case CSSPropertyMaskImage:
    19331934            m_fillLayerPropertyWrapper = makeUnique<FillLayerStyleImagePropertyWrapper>(property, &FillLayer::image, &FillLayer::setImage);
    19341935            break;
     
    25612562        new FillLayersPropertyWrapper(CSSPropertyBackgroundImage, &RenderStyle::backgroundLayers, &RenderStyle::ensureBackgroundLayers),
    25622563        new StyleImagePropertyWrapper(CSSPropertyListStyleImage, &RenderStyle::listStyleImage, &RenderStyle::setListStyleImage),
    2563         new StyleImagePropertyWrapper(CSSPropertyWebkitMaskImage, &RenderStyle::maskImage, &RenderStyle::setMaskImage),
     2564        new FillLayersPropertyWrapper(CSSPropertyMaskImage, &RenderStyle::maskLayers, &RenderStyle::ensureMaskLayers),
    25642565
    25652566        new StyleImagePropertyWrapper(CSSPropertyBorderImageSource, &RenderStyle::borderImageSource, &RenderStyle::setBorderImageSource),
     
    25782579        new FillLayersPropertyWrapper(CSSPropertyWebkitMaskPositionX, &RenderStyle::maskLayers, &RenderStyle::ensureMaskLayers),
    25792580        new FillLayersPropertyWrapper(CSSPropertyWebkitMaskPositionY, &RenderStyle::maskLayers, &RenderStyle::ensureMaskLayers),
    2580         new FillLayersPropertyWrapper(CSSPropertyWebkitMaskSize, &RenderStyle::maskLayers, &RenderStyle::ensureMaskLayers),
     2581        new FillLayersPropertyWrapper(CSSPropertyMaskSize, &RenderStyle::maskLayers, &RenderStyle::ensureMaskLayers),
    25812582
    25822583        new LengthPointPropertyWrapper(CSSPropertyObjectPosition, &RenderStyle::objectPosition, &RenderStyle::setObjectPosition),
     
    27982799        CSSPropertyBackgroundRepeat,
    27992800        CSSPropertyFont, // for font-size, font-weight
     2801        CSSPropertyMask, // for mask-position
    28002802        CSSPropertyWebkitMask, // for mask-position
     2803        CSSPropertyMaskPosition,
    28012804        CSSPropertyWebkitMaskPosition,
    28022805        CSSPropertyBorderTop, CSSPropertyBorderRight, CSSPropertyBorderBottom, CSSPropertyBorderLeft,
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r286200 r286795  
    292292    auto list = CSSValueList::createSpaceSeparated();
    293293    if (layer.isBackgroundXOriginSet() && layer.backgroundXOrigin() != Edge::Left) {
    294         ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
     294        ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyMaskPosition || propertyID == CSSPropertyWebkitMaskPosition);
    295295        list->append(CSSValuePool::singleton().createValue(layer.backgroundXOrigin()));
    296296    }
    297297    list->append(zoomAdjustedPixelValueForLength(layer.xPosition(), style));
    298298    if (layer.isBackgroundYOriginSet() && layer.backgroundYOrigin() != Edge::Top) {
    299         ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
     299        ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyMaskPosition || propertyID == CSSPropertyWebkitMaskPosition);
    300300        list->append(CSSValuePool::singleton().createValue(layer.backgroundYOrigin()));
    301301    }
     
    27242724            return m_allowVisitedStyle ? cssValuePool.createColorValue(style.visitedDependentColor(CSSPropertyBackgroundColor)) : currentColorOrValidColor(&style, style.backgroundColor());
    27252725        case CSSPropertyBackgroundImage:
    2726         case CSSPropertyWebkitMaskImage: {
    2727             auto& layers = propertyID == CSSPropertyWebkitMaskImage ? style.maskLayers() : style.backgroundLayers();
     2726        case CSSPropertyMaskImage: {
     2727            auto& layers = propertyID == CSSPropertyMaskImage ? style.maskLayers() : style.backgroundLayers();
    27282728            if (!layers.next()) {
    27292729                if (layers.image())
     
    27422742        case CSSPropertyBackgroundSize:
    27432743        case CSSPropertyWebkitBackgroundSize:
    2744         case CSSPropertyWebkitMaskSize: {
    2745             auto& layers = propertyID == CSSPropertyWebkitMaskSize ? style.maskLayers() : style.backgroundLayers();
     2744        case CSSPropertyMaskSize: {
     2745            auto& layers = propertyID == CSSPropertyMaskSize ? style.maskLayers() : style.backgroundLayers();
    27462746            if (!layers.next())
    27472747                return fillSizeToCSSValue(layers.size(), style);
     
    27522752        }
    27532753        case CSSPropertyBackgroundRepeat:
    2754         case CSSPropertyWebkitMaskRepeat: {
    2755             auto& layers = propertyID == CSSPropertyWebkitMaskRepeat ? style.maskLayers() : style.backgroundLayers();
     2754        case CSSPropertyMaskRepeat: {
     2755            auto& layers = propertyID == CSSPropertyMaskRepeat ? style.maskLayers() : style.backgroundLayers();
    27562756            if (!layers.next())
    27572757                return fillRepeatToCSSValue(layers.repeatX(), layers.repeatY());
     
    27702770            return list;
    27712771        }
    2772         case CSSPropertyWebkitMaskMode: {
     2772        case CSSPropertyMaskMode: {
    27732773            auto& layers = style.maskLayers();
    27742774            if (!layers.next())
     
    27802780        }
    27812781        case CSSPropertyWebkitBackgroundComposite:
    2782         case CSSPropertyWebkitMaskComposite: {
    2783             auto& layers = propertyID == CSSPropertyWebkitMaskComposite ? style.maskLayers() : style.backgroundLayers();
     2782        case CSSPropertyWebkitMaskComposite:
     2783        case CSSPropertyMaskComposite: {
     2784            auto& layers = propertyID == CSSPropertyWebkitBackgroundComposite ? style.backgroundLayers() : style.maskLayers();
    27842785            if (!layers.next())
    2785                 return cssValuePool.createValue(layers.composite());
     2786                return cssValuePool.createValue(layers.composite(), propertyID);
    27862787            auto list = CSSValueList::createCommaSeparated();
    27872788            for (auto* currLayer = &layers; currLayer; currLayer = currLayer->next())
    2788                 list->append(cssValuePool.createValue(currLayer->composite()));
     2789                list->append(cssValuePool.createValue(currLayer->composite(), propertyID));
    27892790            return list;
    27902791        }
     
    28022803        case CSSPropertyWebkitBackgroundClip:
    28032804        case CSSPropertyWebkitBackgroundOrigin:
     2805        case CSSPropertyMaskClip:
    28042806        case CSSPropertyWebkitMaskClip:
    2805         case CSSPropertyWebkitMaskOrigin: {
    2806             auto& layers = (propertyID == CSSPropertyWebkitMaskClip || propertyID == CSSPropertyWebkitMaskOrigin) ? style.maskLayers() : style.backgroundLayers();
    2807             bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == CSSPropertyWebkitBackgroundClip || propertyID == CSSPropertyWebkitMaskClip;
     2807        case CSSPropertyMaskOrigin: {
     2808            auto& layers = (propertyID == CSSPropertyMaskClip || propertyID == CSSPropertyWebkitMaskClip || propertyID == CSSPropertyMaskOrigin) ? style.maskLayers() : style.backgroundLayers();
     2809            bool isClip = propertyID == CSSPropertyBackgroundClip || propertyID == CSSPropertyWebkitBackgroundClip || propertyID == CSSPropertyMaskClip || propertyID == CSSPropertyWebkitMaskClip;
    28082810            if (!layers.next())
    28092811                return cssValuePool.createValue(isClip ? layers.clip() : layers.origin());
     
    28142816        }
    28152817        case CSSPropertyBackgroundPosition:
    2816         case CSSPropertyWebkitMaskPosition: {
    2817             auto& layers = propertyID == CSSPropertyWebkitMaskPosition ? style.maskLayers() : style.backgroundLayers();
     2818        case CSSPropertyWebkitMaskPosition:
     2819        case CSSPropertyMaskPosition: {
     2820            auto& layers = propertyID == CSSPropertyBackgroundPosition ? style.backgroundLayers() : style.maskLayers();
    28182821            if (!layers.next())
    28192822                return createPositionListForLayer(propertyID, layers, style);
     
    38983901        case CSSPropertyBackground:
    38993902            return getBackgroundShorthandValue();
     3903        case CSSPropertyMask:
     3904            return getMaskShorthandValue();
    39003905        case CSSPropertyBorder: {
    39013906            auto value = propertyValue(CSSPropertyBorderTop, DoNotUpdateLayout);
     
    41744179        case CSSPropertyWebkitMarqueeSpeed:
    41754180        case CSSPropertyWebkitMask:
    4176         case CSSPropertyWebkitMaskRepeatX:
    4177         case CSSPropertyWebkitMaskRepeatY:
     4181        case CSSPropertyMaskRepeatX:
     4182        case CSSPropertyMaskRepeatY:
    41784183        case CSSPropertyPerspectiveOriginX:
    41794184        case CSSPropertyPerspectiveOriginY:
     
    41864191        case CSSPropertyBufferedRendering:
    41874192        case CSSPropertyClipRule:
    4188         case CSSPropertyMask:
    41894193        case CSSPropertyFloodColor:
    41904194        case CSSPropertyFloodOpacity:
     
    45204524}
    45214525
     4526Ref<CSSValueList> ComputedStyleExtractor::getMaskShorthandValue()
     4527{
     4528    static const CSSPropertyID propertiesBeforeSlashSeperator[2] = { CSSPropertyMaskImage, CSSPropertyMaskPosition };
     4529    static const CSSPropertyID propertiesAfterSlashSeperator[6] = { CSSPropertyMaskSize, CSSPropertyMaskRepeat, CSSPropertyMaskOrigin, CSSPropertyMaskClip, CSSPropertyMaskComposite, CSSPropertyMaskMode };
     4530
     4531    return getFillLayerPropertyShorthandValue(CSSPropertyMask, StylePropertyShorthand(CSSPropertyMask, propertiesBeforeSlashSeperator), StylePropertyShorthand(CSSPropertyMask, propertiesAfterSlashSeperator), CSSPropertyInvalid);
     4532}
     4533
    45224534} // namespace WebCore
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.h

    r286200 r286795  
    101101    Ref<CSSValueList> getFillLayerPropertyShorthandValue(CSSPropertyID, const StylePropertyShorthand& propertiesBeforeSlashSeparator, const StylePropertyShorthand& propertiesAfterSlashSeparator, CSSPropertyID lastLayerProperty);
    102102    Ref<CSSValueList> getBackgroundShorthandValue();
     103    Ref<CSSValueList> getMaskShorthandValue();
    103104    Ref<CSSValueList> getCSSPropertyValuesForGridShorthand(const StylePropertyShorthand&);
    104105
  • trunk/Source/WebCore/css/CSSImageValue.cpp

    r286061 r286795  
    3939{
    4040    return a.specifiedURLString == b.specifiedURLString && a.resolvedURL == b.resolvedURL;
     41}
     42
     43// https://drafts.csswg.org/css-values/#url-local-url-flag
     44bool ResolvedURL::isLocalURL() const
     45{
     46    return specifiedURLString.startsWith("#");
    4147}
    4248
     
    9096    // Re-resolving the URL is important for cases where resolvedURL is still not an absolute URL.
    9197    // This can happen if there was no absolute base URL when the value was created, like a style from a document without a base URL.
     98    if (m_location.isLocalURL())
     99        return document.completeURL(m_location.specifiedURLString, URL());
     100
    92101    return document.completeURL(m_location.resolvedURL.string());
    93102}
  • trunk/Source/WebCore/css/CSSImageValue.h

    r284857 r286795  
    4242    String specifiedURLString;
    4343    URL resolvedURL;
     44    bool isLocalURL() const;
    4445};
    4546
     
    5556    CachedImage* cachedImage() const { return m_cachedImage ? m_cachedImage.value().get() : nullptr; }
    5657
     58    // Take care when using this, and read https://drafts.csswg.org/css-values/#relative-urls
    5759    const URL& imageURL() const { return m_location.resolvedURL; }
     60
     61    URL reresolvedURL(const Document&) const;
    5862
    5963    String customCSSText() const;
     
    7579    explicit CSSImageValue(CachedImage&);
    7680
    77     URL reresolvedURL(const Document&) const;
    78 
    7981    ResolvedURL m_location;
    8082    std::optional<CachedResourceHandle<CachedImage>> m_cachedImage;
  • trunk/Source/WebCore/css/CSSPrimitiveValue.h

    r286458 r286795  
    133133
    134134    template<typename T> static Ref<CSSPrimitiveValue> create(T&&);
     135    template<typename T> static Ref<CSSPrimitiveValue> create(T&&, CSSPropertyID);
    135136
    136137    ~CSSPrimitiveValue();
     
    226227
    227228    template<typename T> CSSPrimitiveValue(T); // Defined in CSSPrimitiveValueMappings.h
     229    template<typename T> CSSPrimitiveValue(T, CSSPropertyID); // Defined in CSSPrimitiveValueMappings.h
    228230    template<typename T> CSSPrimitiveValue(RefPtr<T>&&);
    229231    template<typename T> CSSPrimitiveValue(Ref<T>&&);
     
    331333}
    332334
     335template<typename T> inline Ref<CSSPrimitiveValue> CSSPrimitiveValue::create(T&& value, CSSPropertyID propertyID)
     336{
     337    return adoptRef(*new CSSPrimitiveValue(std::forward<T>(value), propertyID));
     338}
     339
    333340template<typename T, CSSPrimitiveValue::TimeUnit timeUnit> inline T CSSPrimitiveValue::computeTime() const
    334341{
  • trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h

    r286461 r286795  
    327327}
    328328
    329 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CompositeOperator e)
    330     : CSSValue(PrimitiveClass)
    331 {
    332     setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID);
     329template<> inline CSSPrimitiveValue::CSSPrimitiveValue(CompositeOperator e, CSSPropertyID propertyID)
     330    : CSSValue(PrimitiveClass)
     331{
     332    setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID);
     333    if (propertyID == CSSPropertyMaskComposite) {
     334        switch (e) {
     335        case CompositeOperator::SourceOver:
     336            m_value.valueID = CSSValueAdd;
     337            break;
     338        case CompositeOperator::SourceIn:
     339            m_value.valueID = CSSValueIntersect;
     340            break;
     341        case CompositeOperator::SourceOut:
     342            m_value.valueID = CSSValueSubtract;
     343            break;
     344        case CompositeOperator::XOR:
     345            m_value.valueID = CSSValueExclude;
     346            break;
     347        default:
     348            ASSERT_NOT_REACHED();
     349            break;
     350        }
     351        return;
     352    }
    333353    switch (e) {
    334354    case CompositeOperator::Clear:
     
    387407        return CompositeOperator::Copy;
    388408    case CSSValueSourceOver:
     409    case CSSValueAdd:
    389410        return CompositeOperator::SourceOver;
    390411    case CSSValueSourceIn:
     412    case CSSValueIntersect:
    391413        return CompositeOperator::SourceIn;
    392414    case CSSValueSourceOut:
     415    case CSSValueSubtract:
    393416        return CompositeOperator::SourceOut;
    394417    case CSSValueSourceAtop:
     
    403426        return CompositeOperator::DestinationAtop;
    404427    case CSSValueXor:
     428    case CSSValueExclude:
    405429        return CompositeOperator::XOR;
    406430    case CSSValuePlusDarker:
     
    729753    case FillBox::Text:
    730754        m_value.valueID = CSSValueText;
     755        break;
     756    case FillBox::NoClip:
     757        m_value.valueID = CSSValueNoClip;
    731758        break;
    732759    }
     
    750777    case CSSValueWebkitText:
    751778        return FillBox::Text;
     779    case CSSValueNoClip:
     780        return FillBox::NoClip;
    752781    default:
    753782        break;
  • trunk/Source/WebCore/css/CSSProperties.json

    r286461 r286795  
    33433343        "mask": {
    33443344            "codegen-properties": {
    3345                 "name-for-methods": "MaskerResource",
    3346                 "converter": "SVGURIReference",
    3347                 "svg": true
    3348             },
    3349             "specification": {
    3350                 "category": "svg",
    3351                 "url": "https://www.w3.org/TR/SVG/masking.html#MaskProperty"
     3345                "longhands": [
     3346                    "mask-image",
     3347                    "-webkit-mask-position-x",
     3348                    "-webkit-mask-position-y",
     3349                    "mask-size",
     3350                    "mask-repeat-x",
     3351                    "mask-repeat-y",
     3352                    "mask-origin",
     3353                    "mask-clip",
     3354                    "mask-composite",
     3355                    "mask-mode"
     3356                ]
     3357            },
     3358            "specification": {
     3359                "category": "css-masking",
     3360                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask"
     3361            }
     3362        },
     3363        "mask-clip": {
     3364            "codegen-properties": {
     3365                "name-for-methods": "Clip",
     3366                "fill-layer-property": true
     3367            },
     3368            "specification": {
     3369                "category": "css-masking",
     3370                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-clip"
     3371            }
     3372        },
     3373        "mask-composite": {
     3374            "codegen-properties": {
     3375                "name-for-methods": "Composite",
     3376                "fill-layer-property": true
     3377            },
     3378            "specification": {
     3379                "category": "css-masking",
     3380                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-composite"
     3381            }
     3382        },
     3383        "mask-image": {
     3384            "codegen-properties": {
     3385                "aliases": [
     3386                    "-webkit-mask-image"
     3387                ],
     3388                "name-for-methods": "Image",
     3389                "fill-layer-property": true
     3390            },
     3391            "specification": {
     3392                "category": "css-masking",
     3393                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-image"
     3394            }
     3395        },
     3396        "mask-mode": {
     3397            "codegen-properties": {
     3398                "name-for-methods": "MaskMode",
     3399                "fill-layer-property": true
     3400            },
     3401            "specification": {
     3402                "category": "css-masking",
     3403                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-mode"
     3404            }
     3405        },
     3406        "mask-origin": {
     3407            "codegen-properties": {
     3408                "aliases": [
     3409                    "-webkit-mask-origin"
     3410                ],
     3411                "name-for-methods": "Origin",
     3412                "fill-layer-property": true
     3413            },
     3414            "specification": {
     3415                "category": "css-masking",
     3416                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-origin"
     3417            }
     3418        },
     3419        "mask-position": {
     3420            "codegen-properties": {
     3421                "longhands": [
     3422                    "-webkit-mask-position-x",
     3423                    "-webkit-mask-position-y"
     3424                ]
     3425            },
     3426            "specification": {
     3427                "category": "css-masking",
     3428                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
     3429            }
     3430        },
     3431        "-webkit-mask-position": {
     3432            "codegen-properties": {
     3433                "longhands": [
     3434                    "-webkit-mask-position-x",
     3435                    "-webkit-mask-position-y"
     3436                ]
     3437            },
     3438            "status": {
     3439                "status": "experimental"
     3440            },
     3441            "specification": {
     3442                "category": "css-masking",
     3443                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
     3444            }
     3445        },
     3446        "-webkit-mask-position-x": {
     3447            "codegen-properties": {
     3448                "name-for-methods": "XPosition",
     3449                "fill-layer-property": true
     3450            },
     3451            "status": {
     3452                "status": "experimental",
     3453                "comment": "The unprefixed property should be internal-only"
     3454            },
     3455            "specification": {
     3456                "category": "css-masking",
     3457                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
     3458            }
     3459        },
     3460        "-webkit-mask-position-y": {
     3461            "codegen-properties": {
     3462                "aliases":[
     3463                    "-webkit-mask-position-y"
     3464                ],
     3465                "name-for-methods": "YPosition",
     3466                "fill-layer-property": true
     3467            },
     3468            "status": {
     3469                "status": "experimental",
     3470                "comment": "The unprefixed property should be internal-only"
     3471            },
     3472            "specification": {
     3473                "category": "css-masking",
     3474                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
     3475            }
     3476        },
     3477        "mask-repeat": {
     3478            "codegen-properties": {
     3479                "aliases":[
     3480                    "-webkit-mask-repeat"
     3481                ],
     3482                "longhands": [
     3483                    "mask-repeat-x",
     3484                    "mask-repeat-y"
     3485                ]
     3486            },
     3487            "specification": {
     3488                "category": "css-masking",
     3489                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-repeat"
     3490            }
     3491        },
     3492        "mask-repeat-x": {
     3493            "codegen-properties": {
     3494                "name-for-methods": "RepeatX",
     3495                "fill-layer-property": true,
     3496                "internal-only": true
     3497            }
     3498        },
     3499        "mask-repeat-y": {
     3500            "codegen-properties": {
     3501                "name-for-methods": "RepeatY",
     3502                "fill-layer-property": true,
     3503                "internal-only": true
     3504            }
     3505        },
     3506        "mask-size": {
     3507            "codegen-properties": {
     3508                "aliases":[
     3509                    "-webkit-mask-size"
     3510                ],
     3511                "name-for-methods": "Size",
     3512                "fill-layer-property": true
     3513            },
     3514            "specification": {
     3515                "category": "css-masking",
     3516                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-size"
    33523517            }
    33533518        },
     
    62786443            "codegen-properties": {
    62796444                "longhands": [
    6280                     "-webkit-mask-image",
     6445                    "mask-image",
    62816446                    "-webkit-mask-source-type",
    62826447                    "-webkit-mask-position-x",
    62836448                    "-webkit-mask-position-y",
    6284                     "-webkit-mask-size",
    6285                     "-webkit-mask-repeat-x",
    6286                     "-webkit-mask-repeat-y",
    6287                     "-webkit-mask-origin",
     6449                    "mask-size",
     6450                    "mask-repeat-x",
     6451                    "mask-repeat-y",
     6452                    "mask-origin",
    62886453                    "-webkit-mask-clip"
    6289                 ]
     6454                ],
     6455                "comment": "Differs from the unprefixed property in accepting -webkit-mask-source-type in place of mask-mode"
     6456            },
     6457            "specification": {
     6458                "category": "css-masking",
     6459                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask"
     6460            }
     6461        },
     6462        "-webkit-mask-box-image": {
     6463            "codegen-properties": {
     6464                "initial": "initialNinePieceImage",
     6465                "converter": "BorderMask<CSSPropertyWebkitMaskBoxImage>"
     6466            },
     6467            "status": "non-standard",
     6468            "specification": {
     6469                "category": "css-masking"
     6470            }
     6471        },
     6472        "-webkit-mask-box-image-outset": {
     6473            "codegen-properties": {
     6474                "custom": "All"
     6475            },
     6476            "status": "non-standard",
     6477            "specification": {
     6478                "category": "css-masking"
     6479            }
     6480        },
     6481        "-webkit-mask-box-image-repeat": {
     6482            "codegen-properties": {
     6483                "custom": "All"
     6484            },
     6485            "status": "non-standard",
     6486            "specification": {
     6487                "category": "css-masking"
     6488            }
     6489        },
     6490        "-webkit-mask-box-image-slice": {
     6491            "codegen-properties": {
     6492                "custom": "All"
     6493            },
     6494            "status": "non-standard",
     6495            "specification": {
     6496                "category": "css-masking"
     6497            }
     6498        },
     6499        "-webkit-mask-box-image-source": {
     6500            "codegen-properties": {
     6501                "converter": "StyleImage<CSSPropertyWebkitMaskBoxImageSource>"
     6502            },
     6503            "status": "non-standard",
     6504            "specification": {
     6505                "category": "css-masking"
     6506            }
     6507        },
     6508        "-webkit-mask-box-image-width": {
     6509            "codegen-properties": {
     6510                "custom": "All"
     6511            },
     6512            "status": "non-standard",
     6513            "specification": {
     6514                "category": "css-masking"
     6515            }
     6516        },
     6517        "-webkit-mask-clip": {
     6518            "codegen-properties": {
     6519                "name-for-methods": "Clip",
     6520                "fill-layer-property": true
    62906521            },
    62916522            "status": {
     
    62946525            "specification": {
    62956526                "category": "css-masking",
    6296                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask"
    6297             }
    6298         },
    6299         "-webkit-mask-box-image": {
    6300             "codegen-properties": {
    6301                 "initial": "initialNinePieceImage",
    6302                 "converter": "BorderMask<CSSPropertyWebkitMaskBoxImage>"
    6303             },
    6304             "status": "non-standard"
    6305 ,
    6306             "specification": {
    6307                 "category": "css-masking"
    6308             }
    6309         },
    6310         "-webkit-mask-box-image-outset": {
    6311             "codegen-properties": {
    6312                 "custom": "All"
    6313             },
    6314             "status": "non-standard"
    6315 ,
    6316             "specification": {
    6317                 "category": "css-masking"
    6318             }
    6319         },
    6320         "-webkit-mask-box-image-repeat": {
    6321             "codegen-properties": {
    6322                 "custom": "All"
    6323             },
    6324             "status": "non-standard"
    6325 ,
    6326             "specification": {
    6327                 "category": "css-masking"
    6328             }
    6329         },
    6330         "-webkit-mask-box-image-slice": {
    6331             "codegen-properties": {
    6332                 "custom": "All"
    6333             },
    6334             "status": "non-standard"
    6335 ,
    6336             "specification": {
    6337                 "category": "css-masking"
    6338             }
    6339         },
    6340         "-webkit-mask-box-image-source": {
    6341             "codegen-properties": {
    6342                 "converter": "StyleImage<CSSPropertyWebkitMaskBoxImageSource>"
    6343             },
    6344             "status": "non-standard"
    6345 ,
    6346             "specification": {
    6347                 "category": "css-masking"
    6348             }
    6349         },
    6350         "-webkit-mask-box-image-width": {
    6351             "codegen-properties": {
    6352                 "custom": "All"
    6353             },
    6354             "status": "non-standard"
    6355 ,
    6356             "specification": {
    6357                 "category": "css-masking"
    6358             }
    6359         },
    6360         "-webkit-mask-clip": {
    6361             "codegen-properties": {
    6362                 "name-for-methods": "Clip",
     6527                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-clip"
     6528            }
     6529        },
     6530        "-webkit-mask-composite": {
     6531            "codegen-properties": {
     6532                "name-for-methods": "Composite",
    63636533                "fill-layer-property": true
    63646534            },
     
    63686538            "specification": {
    63696539                "category": "css-masking",
    6370                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-clip"
    6371             }
    6372         },
    6373         "-webkit-mask-composite": {
    6374             "codegen-properties": {
    6375                 "name-for-methods": "Composite",
    6376                 "fill-layer-property": true
    6377             },
    6378             "status": {
    6379                 "status": "experimental"
    6380             },
    6381             "specification": {
    6382                 "category": "css-masking",
    63836540                "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-composite"
    63846541            }
    63856542        },
    6386         "-webkit-mask-image": {
    6387             "codegen-properties": {
    6388                 "name-for-methods": "Image",
    6389                 "fill-layer-property": true
    6390             },
    6391             "status": {
    6392                 "status": "experimental"
    6393             },
    6394             "specification": {
    6395                 "category": "css-masking",
    6396                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-image"
    6397             }
    6398         },
    6399         "-webkit-mask-mode": {
    6400             "codegen-properties": {
    6401                 "name-for-methods": "MaskMode",
    6402                 "fill-layer-property": true
    6403             },
    6404             "specification": {
    6405                 "category": "css-masking",
    6406                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-mode"
    6407             }
    6408         },
    6409         "-webkit-mask-origin": {
    6410             "codegen-properties": {
    6411                 "name-for-methods": "Origin",
    6412                 "fill-layer-property": true
    6413             },
    6414             "status": {
    6415                 "status": "experimental"
    6416             },
    6417             "specification": {
    6418                 "category": "css-masking",
    6419                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-origin"
    6420             }
    6421         },
    6422         "-webkit-mask-position": {
    6423             "codegen-properties": {
    6424                 "longhands": [
    6425                     "-webkit-mask-position-x",
    6426                     "-webkit-mask-position-y"
    6427                 ]
    6428             },
    6429             "status": {
    6430                 "status": "experimental"
    6431             },
    6432             "specification": {
    6433                 "category": "css-masking",
    6434                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
    6435             }
    6436         },
    6437         "-webkit-mask-position-x": {
    6438             "codegen-properties": {
    6439                 "name-for-methods": "XPosition",
    6440                 "fill-layer-property": true
    6441             },
    6442             "status": {
    6443                 "status": "experimental"
    6444             },
    6445             "specification": {
    6446                 "category": "css-masking",
    6447                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
    6448             }
    6449         },
    6450         "-webkit-mask-position-y": {
    6451             "codegen-properties": {
    6452                 "name-for-methods": "YPosition",
    6453                 "fill-layer-property": true
    6454             },
    6455             "status": {
    6456                 "status": "experimental"
    6457             },
    6458             "specification": {
    6459                 "category": "css-masking",
    6460                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-position"
    6461             }
    6462         },
    6463         "-webkit-mask-repeat": {
    6464             "codegen-properties": {
    6465                 "longhands": [
    6466                     "-webkit-mask-repeat-x",
    6467                     "-webkit-mask-repeat-y"
    6468                 ]
    6469             },
    6470             "status": {
    6471                 "status": "experimental"
    6472             },
    6473             "specification": {
    6474                 "category": "css-masking",
    6475                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-repeat"
    6476             }
    6477         },
    6478         "-webkit-mask-repeat-x": {
    6479             "codegen-properties": {
    6480                 "name-for-methods": "RepeatX",
    6481                 "fill-layer-property": true,
    6482                 "internal-only": true
    6483             }
    6484         },
    6485         "-webkit-mask-repeat-y": {
    6486             "codegen-properties": {
    6487                 "name-for-methods": "RepeatY",
    6488                 "fill-layer-property": true,
    6489                 "internal-only": true
    6490             }
    6491         },
    6492         "-webkit-mask-size": {
    6493             "codegen-properties": {
    6494                 "name-for-methods": "Size",
    6495                 "fill-layer-property": true
    6496             },
    6497             "status": {
    6498                 "status": "experimental"
    6499             },
    6500             "specification": {
    6501                 "category": "css-masking",
    6502                 "url": "https://www.w3.org/TR/css-masking-1/#propdef-mask-size"
    6503             }
    6504         },
    65056543        "-webkit-mask-source-type": {
    65066544            "codegen-properties": {
    6507                 "synonym": "-webkit-mask-mode",
     6545                "synonym": "mask-mode",
    65086546                "comment": "Deprecated alias for mask-mode, supports an 'auto' value, does not support 'match-source'"
    65096547            },
    6510             "status": "non-standard"
    6511 ,
     6548            "status": "non-standard",
    65126549            "specification": {
    65136550                "category": "css-masking"
  • trunk/Source/WebCore/css/CSSToStyleMap.cpp

    r284856 r286795  
    284284        break;
    285285    case CSSValueMatchSource:
    286         ASSERT(propertyID == CSSPropertyWebkitMaskMode);
     286        ASSERT(propertyID == CSSPropertyMaskMode);
    287287        maskMode = MaskMode::MatchSource;
    288288        break;
  • trunk/Source/WebCore/css/CSSValueKeywords.in

    r286568 r286795  
    928928
    929929//
     930// CSS_PROP_MASK_CLIP
     931//
     932// Same as background-clip above, except with some extra values.
     933no-clip
     934
     935//
     936// CSS_PROP_MASK_COMPOSITE
     937//
     938add
     939subtract
     940intersect
     941exclude
     942
     943//
    930944// Variables Implementation
    931945//
  • trunk/Source/WebCore/css/CSSValuePool.h

    r285373 r286795  
    8888    Ref<CSSPrimitiveValue> createCustomIdent(const String& value) { return CSSPrimitiveValue::create(value, CSSUnitType::CustomIdent); }
    8989    template<typename T> static Ref<CSSPrimitiveValue> createValue(T&& value) { return CSSPrimitiveValue::create(std::forward<T>(value)); }
     90    template<typename T> static Ref<CSSPrimitiveValue> createValue(T&& value, CSSPropertyID identifier) { return CSSPrimitiveValue::create(std::forward<T>(value), identifier); }
    9091
    9192    void drain();
  • trunk/Source/WebCore/css/SVGCSSComputedStyleDeclaration.cpp

    r284447 r286795  
    119119    case CSSPropertyTextAnchor:
    120120        return CSSPrimitiveValue::create(svgStyle.textAnchor());
    121     case CSSPropertyMask:
    122         if (!svgStyle.maskerResource().isEmpty())
    123             return CSSPrimitiveValue::create(makeString('#', svgStyle.maskerResource()), CSSUnitType::CSS_URI);
    124         return CSSPrimitiveValue::createIdentifier(CSSValueNone);
    125121    case CSSPropertyFloodColor:
    126122        return currentColorOrValidColor(style, svgStyle.floodColor());
  • trunk/Source/WebCore/css/StyleProperties.cpp

    r286652 r286795  
    302302    case CSSPropertyListStyle:
    303303        return getShorthandValue(listStyleShorthand());
     304    case CSSPropertyMaskPosition:
     305        return getLayeredShorthandValue(maskPositionShorthand());
    304306    case CSSPropertyWebkitMaskPosition:
    305307        return getLayeredShorthandValue(webkitMaskPositionShorthand());
    306     case CSSPropertyWebkitMaskRepeat:
    307         return getLayeredShorthandValue(webkitMaskRepeatShorthand());
     308    case CSSPropertyMaskRepeat:
     309        return getLayeredShorthandValue(maskRepeatShorthand());
     310    case CSSPropertyMask:
    308311    case CSSPropertyWebkitMask:
    309         return getLayeredShorthandValue(webkitMaskShorthand());
     312        return getLayeredShorthandValue(shorthandForProperty(propertyID));
    310313    case CSSPropertyWebkitTextEmphasis:
    311314        return getShorthandValue(webkitTextEmphasisShorthand());
     
    680683            // We need to report background-repeat as it was written in the CSS.
    681684            // If the property is implicit, then it was written with only one value. Here we figure out which value that was so we can report back correctly.
    682             if (value && j < size - 1 && (property == CSSPropertyBackgroundRepeatX || property == CSSPropertyWebkitMaskRepeatX) && isPropertyImplicit(property)) {
     685            if (value && j < size - 1 && (property == CSSPropertyBackgroundRepeatX || property == CSSPropertyMaskRepeatX) && isPropertyImplicit(property)) {
    683686                // Make sure the value was not reset in the layer check just above.
    684687                auto nextProperty = shorthand.properties()[j + 1];
    685                 if (nextProperty == CSSPropertyBackgroundRepeatY || nextProperty == CSSPropertyWebkitMaskRepeatY) {
     688                if (nextProperty == CSSPropertyBackgroundRepeatY || nextProperty == CSSPropertyMaskRepeatY) {
    686689                    if (auto yValue = values[j + 1]) {
    687690                        if (is<CSSValueList>(*yValue))
     
    708711            }
    709712
     713            auto canOmitValue = [&]() {
     714                if (shorthand.id() == CSSPropertyMask) {
     715                    if (property == CSSPropertyMaskClip) {
     716                        // If the mask-clip value is the same as the value for mask-origin (the previous value),
     717                        // then we can skip serializing it, as one value sets both properties.
     718                        ASSERT(j > 0);
     719                        ASSERT(shorthand.properties()[j - 1] == CSSPropertyMaskOrigin);
     720                        auto originValue = values[j - 1];
     721                        if (is<CSSValueList>(*originValue))
     722                            originValue = downcast<CSSValueList>(*originValue).itemWithoutBoundsCheck(i);
     723                        if (!is<CSSPrimitiveValue>(*value) || !is<CSSPrimitiveValue>(*originValue))
     724                            return false;
     725
     726                        auto maskId = downcast<CSSPrimitiveValue>(*value).valueID();
     727                        auto originId = downcast<CSSPrimitiveValue>(*originValue).valueID();
     728                        return maskId == originId && (!isCSSWideValueKeyword(getValueName(maskId)) || value->isImplicitInitialValue());
     729                    }
     730                    if (property == CSSPropertyMaskOrigin) {
     731                        // We can skip serializing mask-origin if it's the initial value, but only if we're also going to skip serializing
     732                        // the mask-clip as well (otherwise the single value for mask-clip would be assumed to be setting the value for both).
     733                        ASSERT(j + 1 < size);
     734                        ASSERT(shorthand.properties()[j + 1] == CSSPropertyMaskClip);
     735                        auto clipValue = values[j + 1];
     736                        if (is<CSSValueList>(*clipValue))
     737                            clipValue = downcast<CSSValueList>(*clipValue).itemWithoutBoundsCheck(i);
     738                        return value->isImplicitInitialValue() && clipValue->isImplicitInitialValue();
     739                    }
     740                }
     741
     742                return value->isImplicitInitialValue();
     743            };
     744
    710745            String valueText;
    711             if (value && !value->isImplicitInitialValue()) {
     746            if (value && !canOmitValue()) {
    712747                if (!layerResult.isEmpty())
    713748                    layerResult.append(' ');
    714749
    715                 if (property == CSSPropertyBackgroundSize || property == CSSPropertyWebkitMaskSize) {
     750                if (property == CSSPropertyBackgroundSize || property == CSSPropertyMaskSize) {
    716751                    if (!foundPositionYCSSProperty)
    717752                        continue;
     
    725760                    useRepeatYShorthand = false;
    726761                    layerResult.append(getValueName(CSSValueRepeatY));
     762                } else if (shorthand.id() == CSSPropertyMask && property == CSSPropertyMaskOrigin && value->isImplicitInitialValue()) {
     763                    // If we're about to write the value for mask-origin, but it's an implicit initial value that's just a placeholder
     764                    // for a 'real' mask-clip value, then write the actual value not 'initial'.
     765                    layerResult.append(getValueName(CSSValueBorderBox));
    727766                } else {
    728767                    if (useSingleWordShorthand)
     
    741780                commonValue = emptyString(); // Could use value here other than a CSS-wide value keyword or the null string.
    742781        }
     782
     783        if (shorthand.id() == CSSPropertyMask && layerResult.isEmpty())
     784            layerResult.append(getValueName(CSSValueNone));
    743785
    744786        if (!layerResult.isEmpty())
     
    13751417            case CSSPropertyWebkitMaskPositionX:
    13761418            case CSSPropertyWebkitMaskPositionY:
    1377             case CSSPropertyWebkitMaskRepeatX:
    1378             case CSSPropertyWebkitMaskRepeatY:
    1379             case CSSPropertyWebkitMaskImage:
    1380             case CSSPropertyWebkitMaskRepeat:
     1419            case CSSPropertyMaskRepeatX:
     1420            case CSSPropertyMaskRepeatY:
     1421            case CSSPropertyMaskImage:
     1422            case CSSPropertyMaskRepeat:
     1423            case CSSPropertyMaskPosition:
     1424            case CSSPropertyMaskClip:
     1425            case CSSPropertyMaskOrigin:
     1426                shorthandPropertyID = CSSPropertyMask;
     1427                break;
     1428            case CSSPropertyWebkitMaskClip:
    13811429            case CSSPropertyWebkitMaskPosition:
    1382             case CSSPropertyWebkitMaskClip:
    1383             case CSSPropertyWebkitMaskOrigin:
     1430                // TODO: A lot of the above properties can be both prefixed and unprefixed?
    13841431                shorthandPropertyID = CSSPropertyWebkitMask;
    13851432                break;
  • trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp

    r286220 r286795  
    31483148}
    31493149
     3150static RefPtr<CSSPrimitiveValue> consumeMaskClip(CSSParserTokenRange& range)
     3151{
     3152    // TODO: Also handle fill-box, stroke-box and view-box.
     3153    return consumeIdent<CSSValueBorderBox, CSSValuePaddingBox, CSSValueContentBox, CSSValueNoClip>(range);
     3154}
     3155
    31503156static RefPtr<CSSPrimitiveValue> consumeBackgroundClip(CSSParserTokenRange& range)
    31513157{
     
    31553161}
    31563162
     3163static RefPtr<CSSPrimitiveValue> consumePrefixedBackgroundComposite(CSSParserTokenRange& range)
     3164{
     3165    return consumeIdentRange(range, CSSValueClear, CSSValuePlusLighter);
     3166}
     3167
    31573168static RefPtr<CSSPrimitiveValue> consumeBackgroundComposite(CSSParserTokenRange& range)
    31583169{
    3159     return consumeIdentRange(range, CSSValueClear, CSSValuePlusLighter);
     3170    return consumeIdentRange(range, CSSValueAdd, CSSValueExclude);
    31603171}
    31613172
     
    32373248    case CSSPropertyBackgroundOrigin:
    32383249        return consumeBackgroundBox(range);
     3250    case CSSPropertyMaskComposite:
     3251        return consumeBackgroundComposite(range);
    32393252    case CSSPropertyWebkitMaskComposite:
    32403253    case CSSPropertyWebkitBackgroundComposite:
    3241         return consumeBackgroundComposite(range);
     3254        return consumePrefixedBackgroundComposite(range);
    32423255    case CSSPropertyWebkitBackgroundClip:
    32433256    case CSSPropertyWebkitBackgroundOrigin:
    32443257    case CSSPropertyWebkitMaskClip:
    3245     case CSSPropertyWebkitMaskOrigin:
     3258    case CSSPropertyMaskOrigin:
    32463259        return consumePrefixedBackgroundBox(property, range, context);
     3260    case CSSPropertyMaskClip:
     3261        return consumeMaskClip(range);
    32473262    case CSSPropertyBackgroundImage:
    3248     case CSSPropertyWebkitMaskImage:
     3263    case CSSPropertyMaskImage:
    32493264        return consumeImageOrNone(range, context);
    3250     case CSSPropertyWebkitMaskMode:
     3265    case CSSPropertyMaskMode:
    32513266        return consumeWebkitMaskMode(range);
    32523267    case CSSPropertyWebkitMaskSourceType:
     
    32603275    case CSSPropertyBackgroundSize:
    32613276    case CSSPropertyWebkitBackgroundSize:
    3262     case CSSPropertyWebkitMaskSize:
     3277    case CSSPropertyMaskSize:
    32633278        return consumeBackgroundSize(property, range, context.mode);
    32643279    case CSSPropertyBackgroundColor:
     
    44364451    case CSSPropertyMarkerMid:
    44374452    case CSSPropertyMarkerEnd:
    4438     case CSSPropertyMask:
    44394453        return consumeNoneOrURI(m_range);
    44404454    case CSSPropertyFlexBasis:
     
    45584572    case CSSPropertyWebkitBackgroundComposite:
    45594573    case CSSPropertyWebkitBackgroundSize:
     4574    case CSSPropertyMaskClip:
    45604575    case CSSPropertyWebkitMaskClip:
     4576    case CSSPropertyMaskComposite:
    45614577    case CSSPropertyWebkitMaskComposite:
    4562     case CSSPropertyWebkitMaskImage:
    4563     case CSSPropertyWebkitMaskOrigin:
     4578    case CSSPropertyMaskImage:
     4579    case CSSPropertyMaskOrigin:
    45644580    case CSSPropertyWebkitMaskPositionX:
    45654581    case CSSPropertyWebkitMaskPositionY:
    4566     case CSSPropertyWebkitMaskSize:
    4567     case CSSPropertyWebkitMaskMode:
     4582    case CSSPropertyMaskSize:
     4583    case CSSPropertyMaskMode:
    45684584    case CSSPropertyWebkitMaskSourceType:
    45694585        return consumeCommaSeparatedBackgroundComponent(property, m_range, m_context);
    4570     case CSSPropertyWebkitMaskRepeatX:
    4571     case CSSPropertyWebkitMaskRepeatY:
     4586    case CSSPropertyMaskRepeatX:
     4587    case CSSPropertyMaskRepeatY:
    45724588        return nullptr;
    45734589    case CSSPropertyAlignItems:
     
    55575573}
    55585574
    5559 static bool consumeBackgroundPosition(CSSParserTokenRange& range, const CSSParserContext& context, UnitlessQuirk unitless, RefPtr<CSSValue>& resultX, RefPtr<CSSValue>& resultY)
     5575static bool consumeBackgroundPosition(CSSParserTokenRange& range, const CSSParserContext& context, CSSPropertyID property, RefPtr<CSSValue>& resultX, RefPtr<CSSValue>& resultY)
    55605576{
    55615577    do {
    5562         auto position = consumePositionCoordinates(range, context.mode, unitless, PositionSyntax::BackgroundPosition);
     5578        auto position = consumePositionCoordinates(range, context.mode, UnitlessQuirk::Allow, property == CSSPropertyMaskPosition ? PositionSyntax::Position : PositionSyntax::BackgroundPosition);
    55635579        if (!position)
    55645580            return false;
     
    56295645                RefPtr<CSSValue> valueY;
    56305646                CSSPropertyID property = shorthand.properties()[i];
    5631                 if (property == CSSPropertyBackgroundRepeatX || property == CSSPropertyWebkitMaskRepeatX) {
     5647                if (property == CSSPropertyBackgroundRepeatX || property == CSSPropertyMaskRepeatX) {
    56325648                    RefPtr<CSSPrimitiveValue> primitiveValue;
    56335649                    RefPtr<CSSPrimitiveValue> primitiveValueY;
     
    56435659                    valueY = WTFMove(position->y);
    56445660                    m_range = rangeCopy;
    5645                 } else if (property == CSSPropertyBackgroundSize || property == CSSPropertyWebkitMaskSize) {
     5661                } else if (property == CSSPropertyBackgroundSize || property == CSSPropertyMaskSize) {
    56465662                    if (!consumeSlashIncludingWhitespace(m_range))
    56475663                        continue;
     
    56505666                        return false;
    56515667                } else if (property == CSSPropertyBackgroundPositionY || property == CSSPropertyBackgroundRepeatY
    5652                     || property == CSSPropertyWebkitMaskPositionY || property == CSSPropertyWebkitMaskRepeatY) {
     5668                    || property == CSSPropertyWebkitMaskPositionY || property == CSSPropertyMaskRepeatY) {
    56535669                    continue;
    56545670                } else {
     
    56565672                }
    56575673                if (value) {
    5658                     if (property == CSSPropertyBackgroundOrigin || property == CSSPropertyWebkitMaskOrigin)
     5674                    if (property == CSSPropertyBackgroundOrigin || property == CSSPropertyMaskOrigin)
    56595675                        originValue = value;
    56605676                    parsedLonghand[i] = true;
     
    56795695                continue;
    56805696            }
    5681             if ((property == CSSPropertyBackgroundClip || property == CSSPropertyWebkitMaskClip) && !parsedLonghand[i] && originValue) {
     5697            if ((property == CSSPropertyBackgroundClip || property == CSSPropertyMaskClip || property == CSSPropertyWebkitMaskClip) && !parsedLonghand[i] && originValue) {
    56825698                addBackgroundValue(longhands[i], originValue.releaseNonNull());
    56835699                continue;
     
    62846300    case CSSPropertyWebkitColumnBreakInside:
    62856301        return consumeLegacyBreakProperty(property, important);
     6302    case CSSPropertyMaskPosition:
    62866303    case CSSPropertyWebkitMaskPosition:
    62876304    case CSSPropertyBackgroundPosition: {
    62886305        RefPtr<CSSValue> resultX;
    62896306        RefPtr<CSSValue> resultY;
    6290         if (!consumeBackgroundPosition(m_range, m_context, UnitlessQuirk::Allow, resultX, resultY) || !m_range.atEnd())
     6307        if (!consumeBackgroundPosition(m_range, m_context, property, resultX, resultY) || !m_range.atEnd())
    62916308            return false;
    62926309        addProperty(property == CSSPropertyBackgroundPosition ? CSSPropertyBackgroundPositionX : CSSPropertyWebkitMaskPositionX, property, resultX.releaseNonNull(), important);
     
    62956312    }
    62966313    case CSSPropertyBackgroundRepeat:
    6297     case CSSPropertyWebkitMaskRepeat: {
     6314    case CSSPropertyMaskRepeat: {
    62986315        RefPtr<CSSValue> resultX;
    62996316        RefPtr<CSSValue> resultY;
     
    63016318        if (!consumeRepeatStyle(m_range, resultX, resultY, implicit) || !m_range.atEnd())
    63026319            return false;
    6303         addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatX : CSSPropertyWebkitMaskRepeatX, property, resultX.releaseNonNull(), important, implicit);
    6304         addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatY : CSSPropertyWebkitMaskRepeatY, property, resultY.releaseNonNull(), important, implicit);
     6320        addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatX : CSSPropertyMaskRepeatX, property, resultX.releaseNonNull(), important, implicit);
     6321        addProperty(property == CSSPropertyBackgroundRepeat ? CSSPropertyBackgroundRepeatY : CSSPropertyMaskRepeatY, property, resultY.releaseNonNull(), important, implicit);
    63056322        return true;
    63066323    }
    63076324    case CSSPropertyBackground:
    63086325        return consumeBackgroundShorthand(backgroundShorthand(), important);
     6326    case CSSPropertyMask:
    63096327    case CSSPropertyWebkitMask:
    6310         return consumeBackgroundShorthand(webkitMaskShorthand(), important);
     6328        return consumeBackgroundShorthand(shorthandForProperty(property), important);
    63116329    case CSSPropertyTransformOrigin:
    63126330        return consumeTransformOrigin(important);
  • trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp

    r286568 r286795  
    28242824    if (!value2)
    28252825        return positionFromOneValue(*value1);
    2826 
     2826   
    28272827    auto value3 = consumePositionComponent(range, parserMode, unitless);
    28282828    if (!value3)
    28292829        return positionFromTwoValues(*value1, *value2);
    2830 
     2830   
    28312831    auto value4 = consumePositionComponent(range, parserMode, unitless);
    28322832   
  • trunk/Source/WebCore/display/css/DisplayBoxDecorationPainter.cpp

    r284437 r286795  
    12141214            return box.absoluteContentBoxRect();
    12151215        case FillBox::Text:
     1216        case FillBox::NoClip:
    12161217            break;
    12171218        }
     
    12281229    }
    12291230    case FillBox::Text:
     1231    case FillBox::NoClip:
    12301232        break;
    12311233    }
  • trunk/Source/WebCore/rendering/style/FillLayer.cpp

    r282143 r286795  
    322322    if (clipA == FillBox::Content || clipB == FillBox::Content)
    323323        return FillBox::Content;
    324     return FillBox::Text;
     324    return FillBox::NoClip;
    325325}
    326326
     
    330330    for (auto* layer = this; layer; layer = layer->m_next.get())
    331331        layers.append(layer);
    332     FillBox computedClipMax = FillBox::Text;
     332    FillBox computedClipMax = FillBox::NoClip;
    333333    for (unsigned i = layers.size(); i; --i) {
    334334        auto& layer = *layers[i - 1];
  • trunk/Source/WebCore/rendering/style/FillLayer.h

    r282143 r286795  
    193193
    194194    unsigned m_attachment : 2; // FillAttachment
    195     unsigned m_clip : 2; // FillBox
     195    unsigned m_clip : 3; // FillBox
    196196    unsigned m_origin : 2; // FillBox
    197197    unsigned m_repeatX : 3; // FillRepeat
  • trunk/Source/WebCore/rendering/style/RenderStyle.cpp

    r286591 r286795  
    10131013#endif
    10141014
     1015    // FIXME: In SVG this needs to trigger a layout.
    10151016    if (first.mask != second.mask || first.maskBoxImage != second.maskBoxImage)
    10161017        return true;
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r286591 r286795  
    695695    void setPageScaleTransform(float);
    696696
     697    bool hasPositionedMask() const { return m_rareNonInheritedData->mask->hasImage(); }
    697698    bool hasMask() const { return m_rareNonInheritedData->mask->hasImage() || m_rareNonInheritedData->maskBoxImage.hasImage(); }
    698699
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.cpp

    r285904 r286795  
    499499    case FillBox::Content: ts << "content"; break;
    500500    case FillBox::Text: ts << "text"; break;
     501    case FillBox::NoClip: ts << "no-clip"; break;
    501502    }
    502503    return ts;
  • trunk/Source/WebCore/rendering/style/RenderStyleConstants.h

    r285904 r286795  
    333333    Padding,
    334334    Content,
    335     Text
     335    Text,
     336    NoClip
    336337};
    337338
  • trunk/Source/WebCore/rendering/style/SVGRenderStyle.cpp

    r284447 r286795  
    5959    , m_miscData(defaultSVGStyle().m_miscData)
    6060    , m_layoutData(defaultSVGStyle().m_layoutData)
    61     , m_nonInheritedResourceData(defaultSVGStyle().m_nonInheritedResourceData)
    6261{
    6362    setBitDefaults();
     
    7271    , m_miscData(StyleMiscData::create())
    7372    , m_layoutData(StyleLayoutData::create())
    74     , m_nonInheritedResourceData(StyleResourceData::create())
    7573{
    7674    setBitDefaults();
     
    8886    , m_miscData(other.m_miscData)
    8987    , m_layoutData(other.m_layoutData)
    90     , m_nonInheritedResourceData(other.m_nonInheritedResourceData)
    9188{
    9289}
     
    108105        && m_layoutData == other.m_layoutData
    109106        && m_inheritedResourceData == other.m_inheritedResourceData
    110         && m_nonInheritedResourceData == other.m_nonInheritedResourceData
    111107        && m_inheritedFlags == other.m_inheritedFlags
    112108        && m_nonInheritedFlags == other.m_nonInheritedFlags;
     
    138134    m_miscData = other.m_miscData;
    139135    m_layoutData = other.m_layoutData;
    140     m_nonInheritedResourceData = other.m_nonInheritedResourceData;
    141136}
    142137
     
    147142    // If kerning changes, we need a relayout, to force SVGCharacterData to be recalculated in the SVGRootInlineBox.
    148143    if (m_textData != other.m_textData)
    149         return StyleDifference::Layout;
    150 
    151     // If resources change, we need a relayout, as the presence of resources influences the repaint rect.
    152     if (m_nonInheritedResourceData != other.m_nonInheritedResourceData)
    153144        return StyleDifference::Layout;
    154145
  • trunk/Source/WebCore/rendering/style/SVGRenderStyle.h

    r284447 r286795  
    7878    static Color initialFloodColor() { return Color::black; }
    7979    static Color initialLightingColor() { return Color::white; }
    80     static String initialMaskerResource() { return String(); }
    8180    static String initialMarkerStartResource() { return String(); }
    8281    static String initialMarkerMidResource() { return String(); }
     
    122121    void setLightingColor(const Color&);
    123122    void setBaselineShiftValue(const SVGLengthValue&);
    124 
    125     // Setters for non-inherited resources
    126     void setMaskerResource(const String&);
    127123
    128124    // Setters for inherited resources
     
    169165    const Length& x() const { return m_layoutData->x; }
    170166    const Length& y() const { return m_layoutData->y; }
    171     const String& maskerResource() const { return m_nonInheritedResourceData->masker; }
    172167    const String& markerStartResource() const { return m_inheritedResourceData->markerStart; }
    173168    const String& markerMidResource() const { return m_inheritedResourceData->markerMid; }
     
    183178
    184179    // convenience
    185     bool hasMasker() const { return !maskerResource().isEmpty(); }
    186180    bool hasMarkers() const { return !markerStartResource().isEmpty() || !markerMidResource().isEmpty() || !markerEndResource().isEmpty(); }
    187181    bool hasStroke() const { return strokePaintType() != SVGPaintType::None; }
    188182    bool hasFill() const { return fillPaintType() != SVGPaintType::None; }
    189     bool isolatesBlending() const { return hasMasker(); }
    190183
    191184private:
     
    244237    DataRef<StyleMiscData> m_miscData;
    245238    DataRef<StyleLayoutData> m_layoutData;
    246     DataRef<StyleResourceData> m_nonInheritedResourceData;
    247239};
    248240
     
    395387}
    396388
    397 inline void SVGRenderStyle::setMaskerResource(const String& resource)
    398 {
    399     if (!(m_nonInheritedResourceData->masker == resource))
    400         m_nonInheritedResourceData.access().masker = resource;
    401 }
    402 
    403389inline void SVGRenderStyle::setMarkerStartResource(const String& resource)
    404390{
  • trunk/Source/WebCore/rendering/style/SVGRenderStyleDefs.cpp

    r253987 r286795  
    217217{
    218218    return arePointingToEqualData(shadow, other.shadow);
    219 }
    220 
    221 StyleResourceData::StyleResourceData()
    222     : masker(SVGRenderStyle::initialMaskerResource())
    223 {
    224 }
    225 
    226 inline StyleResourceData::StyleResourceData(const StyleResourceData& other)
    227     : RefCounted<StyleResourceData>()
    228     , masker(other.masker)
    229 {
    230 }
    231 
    232 Ref<StyleResourceData> StyleResourceData::copy() const
    233 {
    234     return adoptRef(*new StyleResourceData(*this));
    235 }
    236 
    237 bool StyleResourceData::operator==(const StyleResourceData& other) const
    238 {
    239     return masker == other.masker;
    240219}
    241220
     
    506485}
    507486
    508 TextStream& operator<<(TextStream& ts, const StyleResourceData& data)
    509 {
    510     ts.dumpProperty("masker", data.masker);
    511     return ts;
    512 }
    513 
    514487TextStream& operator<<(TextStream& ts, const StyleInheritedResourceData& data)
    515488{
  • trunk/Source/WebCore/rendering/style/SVGRenderStyleDefs.h

    r253987 r286795  
    275275    StyleShadowSVGData();
    276276    StyleShadowSVGData(const StyleShadowSVGData&);
    277 };
    278 
    279 // Non-inherited resources
    280 class StyleResourceData : public RefCounted<StyleResourceData> {
    281 public:
    282     static Ref<StyleResourceData> create() { return adoptRef(*new StyleResourceData); }
    283     Ref<StyleResourceData> copy() const;
    284 
    285     bool operator==(const StyleResourceData&) const;
    286     bool operator!=(const StyleResourceData& other) const
    287     {
    288         return !(*this == other);
    289     }
    290 
    291     String masker;
    292 
    293 private:
    294     StyleResourceData();
    295     StyleResourceData(const StyleResourceData&);
    296277};
    297278
     
    362343WTF::TextStream& operator<<(WTF::TextStream&, const StyleMiscData&);
    363344WTF::TextStream& operator<<(WTF::TextStream&, const StyleShadowSVGData&);
    364 WTF::TextStream& operator<<(WTF::TextStream&, const StyleResourceData&);
    365345WTF::TextStream& operator<<(WTF::TextStream&, const StyleInheritedResourceData&);
    366346WTF::TextStream& operator<<(WTF::TextStream&, const StyleLayoutData&);
  • trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp

    r279906 r286795  
    6565}
    6666
    67 URL StyleCachedImage::imageURL()
     67URL StyleCachedImage::imageURL() const
    6868{
    6969    return m_cssValue->imageURL();
     70}
     71
     72URL StyleCachedImage::reresolvedURL(const Document& document) const
     73{
     74    return m_cssValue->reresolvedURL(document);
    7075}
    7176
  • trunk/Source/WebCore/rendering/style/StyleCachedImage.h

    r279906 r286795  
    6868    bool usesDataProtocol() const final;
    6969
     70    URL reresolvedURL(const Document&) const;
     71
    7072private:
    7173    StyleCachedImage(CSSImageValue&, float);
    72     URL imageURL();
     74
     75    URL imageURL() const;
    7376
    7477    Ref<CSSImageValue> m_cssValue;
  • trunk/Source/WebCore/rendering/style/WillChangeData.cpp

    r277580 r286795  
    9999    case CSSPropertyClipPath:
    100100    case CSSPropertyMask:
     101    case CSSPropertyWebkitMask:
    101102    case CSSPropertyOpacity:
    102103    case CSSPropertyPosition:
     
    111112    case CSSPropertyWebkitBackdropFilter:
    112113#endif
    113     case CSSPropertyWebkitMask:
    114     case CSSPropertyWebkitMaskImage:
     114    case CSSPropertyMaskImage:
    115115    case CSSPropertyWebkitMaskBoxImage:
    116116#if ENABLE(OVERFLOW_SCROLLING_TOUCH)
  • trunk/Source/WebCore/rendering/svg/SVGRenderSupport.cpp

    r286542 r286795  
    510510bool SVGRenderSupport::isolatesBlending(const RenderStyle& style)
    511511{
    512     return style.svgStyle().isolatesBlending() || style.hasFilter() || style.hasBlendMode() || style.opacity() < 1.0f;
     512    return style.hasPositionedMask() || style.hasFilter() || style.hasBlendMode() || style.opacity() < 1.0f;
    513513}
    514514
     
    522522        if (!style || !isolatesBlending(*style))
    523523            continue;
    524         if (style->svgStyle().hasMasker())
     524        if (style->hasPositionedMask())
    525525            ancestor.setShouldIsolateBlending(renderer.style().hasBlendMode());
    526526        return;
  • trunk/Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp

    r286589 r286795  
    6161#include "SVGRootInlineBox.h"
    6262#include "SVGStopElement.h"
     63#include "StyleCachedImage.h"
    6364
    6465#include <math.h>
     
    557558{
    558559    const RenderStyle& style = renderer.style();
    559     const SVGRenderStyle& svgStyle = style.svgStyle();
    560560
    561561    // FIXME: We want to use SVGResourcesCache to determine which resources are present, instead of quering the resource <-> id cache.
    562562    // For now leave the DRT output as is, but later on we should change this so cycles are properly ignored in the DRT output.
    563     if (!svgStyle.maskerResource().isEmpty()) {
    564         if (RenderSVGResourceMasker* masker = getRenderSVGResourceById<RenderSVGResourceMasker>(renderer.document(), svgStyle.maskerResource())) {
    565             ts << indent << " ";
    566             writeNameAndQuotedValue(ts, "masker", svgStyle.maskerResource());
    567             ts << " ";
    568             writeStandardPrefix(ts, *masker, behavior, WriteIndentOrNot::No);
    569             ts << " " << masker->resourceBoundingBox(renderer) << "\n";
     563    if (style.hasPositionedMask()) {
     564        auto* maskImage = style.maskImage();
     565        if (is<StyleCachedImage>(maskImage)) {
     566            auto resourceID = SVGURIReference::fragmentIdentifierFromIRIString(downcast<StyleCachedImage>(*maskImage).reresolvedURL(renderer.document()).string(), renderer.document());
     567            if (auto* masker = getRenderSVGResourceById<RenderSVGResourceMasker>(renderer.document(), resourceID)) {
     568                ts << indent << " ";
     569                writeNameAndQuotedValue(ts, "masker", resourceID);
     570                ts << " ";
     571                writeStandardPrefix(ts, *masker, behavior, WriteIndentOrNot::No);
     572                ts << " " << masker->resourceBoundingBox(renderer) << "\n";
     573            }
    570574        }
    571575    }
  • trunk/Source/WebCore/rendering/svg/SVGRenderingContext.cpp

    r286542 r286795  
    9393    auto& style = m_renderer->style();
    9494
    95     const SVGRenderStyle& svgStyle = style.svgStyle();
    96 
    9795    // Setup transparency layers before setting up SVG resources!
    9896    bool isRenderingMask = isRenderingMaskImage(*m_renderer);
     
    104102
    105103#if ENABLE(CSS_COMPOSITING)
    106     if (svgStyle.hasMasker() && is<SVGGraphicsElement>(downcast<SVGElement>(*renderer.element()))) {
     104    if (style.hasPositionedMask() && is<SVGGraphicsElement>(downcast<SVGElement>(*renderer.element()))) {
    107105        SVGGraphicsElement& graphicsElement = downcast<SVGGraphicsElement>(*renderer.element());
    108106        isolateMaskForBlending = graphicsElement.shouldIsolateBlending();
  • trunk/Source/WebCore/rendering/svg/SVGResources.cpp

    r286392 r286795  
    3636#include "SVGRenderStyle.h"
    3737#include "SVGURIReference.h"
     38#include "StyleCachedImage.h"
    3839#include <wtf/RobinHoodHashSet.h>
    3940
     
    246247        }
    247248
    248         if (svgStyle.hasMasker()) {
    249             AtomString id(svgStyle.maskerResource());
    250             if (setMasker(getRenderSVGResourceById<RenderSVGResourceMasker>(document, id)))
    251                 foundResources = true;
    252             else
    253                 registerPendingResource(extensions, id, element);
     249        if (style.hasPositionedMask()) {
     250            // FIXME: We should support all the values in the CSS mask property, but for now just use the first mask-image if it's a reference.
     251            auto* maskImage = style.maskImage();
     252            if (is<StyleCachedImage>(maskImage)) {
     253                auto resourceID = SVGURIReference::fragmentIdentifierFromIRIString(downcast<StyleCachedImage>(*maskImage).reresolvedURL(document).string(), document);
     254                if (setMasker(getRenderSVGResourceById<RenderSVGResourceMasker>(document, resourceID)))
     255                    foundResources = true;
     256                else
     257                    registerPendingResource(extensions, resourceID, element);
     258            }
    254259        }
    255260    }
Note: See TracChangeset for help on using the changeset viewer.