# Tests related to SVG being used as an image

# zoom/
include zoom/reftest.list

# Background-image tests
skip-if(Mulet) == background-display-none-1.html  about:blank # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
skip-if(B2G||Mulet) == background-simple-1.html  lime100x100-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
== background-simple-2.html  lime100x100-ref.html

# Sightly trickier background-image test
== background-viewBox-1.html  lime100x100-ref.html

# background tests with the background area getting resized
== background-resize-1.html  lime100x100-ref.html
== background-resize-2.html  lime100x100-ref.html
== background-resize-3.html  lime100x100-ref.html
== background-resize-4.html  lime100x100-ref.html

# Test for stretching background images by different amounts in each dimension
== background-stretch-1.html background-stretch-1-ref.html

# Tests for scaling background images
== background-scale-no-viewbox-1.html   background-scale-no-viewbox-1-ref.html
== background-scale-with-viewbox-1.html background-scale-with-viewbox-1-ref.html

# Tests with -moz-image-rect()
skip-if(B2G||Mulet) == background-image-rect-1svg.html  lime100x100-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
== background-image-rect-1png.html  lime100x100-ref.html
== background-image-rect-2.html     lime100x100-ref.html

# Test for border-image
== border-image-simple-1.html       lime100x100-ref.html
== border-image-simple-2.html       lime100x100-ref.html

# Test for canvas "drawImage" method
== canvas-drawImage-simple-1a.html lime100x100-ref.html
== canvas-drawImage-simple-1b.html lime100x100-ref.html

skip-if(B2G||Mulet) == canvas-drawImage-scale-1a.html lime100x100-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == canvas-drawImage-scale-1b.html lime100x100-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == canvas-drawImage-scale-1c.html lime100x100-ref.html # Initial mulet triage: parity with B2G/B2G Desktop

fuzzy(1,2) fuzzy-if(skiaContent,1,529) == canvas-drawImage-scale-2a.html canvas-drawImage-scale-2-ref.html
fuzzy(1,2) fuzzy-if(skiaContent,1,529) == canvas-drawImage-scale-2b.html canvas-drawImage-scale-2-ref.html

fuzzy-if(winWidget&&!d2d,1,10000) fuzzy-if(azureSkia,1,10000) fuzzy-if(Android||B2G,1,10000) == canvas-drawImage-alpha-1.html canvas-drawImage-alpha-1-ref.html
#Same as scale-2a but with globalAlpha:
fuzzy(1,2) fuzzy-if(azureSkia,1,40000) == canvas-drawImage-alpha-2.html canvas-drawImage-alpha-2-ref.html

skip-if(B2G||Mulet) == canvas-drawImage-slice-1a.html lime100x100-ref.html # Initial mulet triage: parity with B2G/B2G Desktop
== canvas-drawImage-slice-1b.html lime100x100-ref.html

== canvas-drawImage-origin-clean-1.html lime100x100-ref.html
== canvas-drawImage-transform-restored.html canvas-drawImage-transform-restored-ref.html

# Simple <img> tests
== img-simple-1.html  lime100x100-ref.html
== img-simple-2.html  lime100x100-ref.html
fuzzy-if(skiaContent,255,150) == img-simple-3.html  img-simple-3-ref.html
== img-simple-4.html  lime100x100-ref.html
fuzzy-if(skiaContent,255,50) == img-simple-5.html  img-simple-5-ref.html
skip-if(B2G||Mulet) == img-simple-6.html  lime100x100-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
== img-simple-7.html  img-simple-7-ref.html

# Test with mix of <html:img> and <svg:image> referring to the same images,
# with a variety of preserveAspectRatio values in play.
random == img-and-image-1.html img-and-image-1-ref.svg # bug 645267

# More complex <img> tests
== img-blobURI-1.html lime100x100-ref.html
random == img-blobURI-2.html lime100x100-ref.html
fuzzy-if(d2d,16,10) == img-content-outside-viewBox-1.html img-content-outside-viewBox-1-ref.html # d2d is bug 1074161
skip-if(Mulet) == img-display-none-1.html about:blank # MULET: Bug 1144079: Re-enable Mulet mochitests and reftests taskcluster-specific disables
== img-dyn-1.html img-dyn-1-ref.html
== img-foreignObject-1.html lime100x100-ref.html

# The following tests check that content embedded via <iframe> and <embed>
# doesn't load (or execute scripts) in SVG-as-an-image.
# The "!=" lines are to test that the SVG content, when viewed directly (not as
# an image), does actually render its external content (making it look
# different from the reference case).  We don't do that check for
# img-foreignObject-iframe-1a.html, though, because its SVG image tries to
# alert(), and that'd trigger a reftest timeout if we loaded that file directly.
== img-foreignObject-embed-1.html         lime100x100-ref.html
!= img-foreignObject-embed-1-helper.svg   lime100x100-ref.html
== img-foreignObject-iframe-1a.html       lime100x100-ref.html
== img-foreignObject-iframe-1b.html       lime100x100-ref.html
!= img-foreignObject-iframe-1b-helper.svg lime100x100-ref.html

== img-widthAndHeight-meet-1.html  img-widthAndHeight-meet-1-ref.html
== img-widthAndHeight-meet-2.html  img-widthAndHeight-meet-2-ref.html
== img-widthAndHeight-slice-1.html img-widthAndHeight-slice-1-ref.html
== img-widthAndHeight-slice-2.html img-widthAndHeight-slice-2-ref.html

== img-height-meet-1.html   img-height-meet-1-ref.html
== img-height-meet-2.html   img-height-meet-2-ref.html
== img-height-slice-1.html  img-height-slice-1-ref.html
== img-height-slice-2.html  img-height-slice-2-ref.html

== img-width-meet-1.html   img-width-meet-1-ref.html
== img-width-meet-2.html   img-width-meet-2-ref.html
== img-width-slice-1.html  img-width-slice-1-ref.html
== img-width-slice-2.html  img-width-slice-2-ref.html

# Alternate version of "width & height both non-%-valued" tests, but now
# with no explicit viewBox, to trigger "synthesize-viewBox" behavior
== img-novb-widthAndHeight-meet-1-em.html  img-novb-widthAndHeight-all-1-ref.html
== img-novb-widthAndHeight-meet-1-px.html  img-novb-widthAndHeight-all-1-ref.html
== img-novb-widthAndHeight-slice-1-em.html img-novb-widthAndHeight-all-1-ref.html
== img-novb-widthAndHeight-slice-1-px.html img-novb-widthAndHeight-all-1-ref.html

# Alternate versions of "only one dimension is non-%-valued" tests, but now
# with no explicit viewBox, to trigger "synthesize-viewBox" behavior
== img-novb-height-meet-1.html    img-novb-height-all-1-ref.html
== img-novb-height-slice-1.html   img-novb-height-all-1-ref.html
fuzzy-if(skiaContent,255,10) == img-novb-width-meet-1.html     img-novb-width-all-1-ref.html
fuzzy-if(skiaContent,255,10) == img-novb-width-slice-1.html    img-novb-width-all-1-ref.html

# with with a fragmentIdentifier viewBox
skip-if(B2G||Mulet) == img-fragment-1a.html  img-fragment-1-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == img-fragment-1b.html  img-fragment-1-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == img-fragment-1c.html  img-fragment-1-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == img-fragment-2a.html  img-fragment-2-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == img-fragment-2b.html  img-fragment-2-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
skip-if(B2G||Mulet) == img-fragment-2c.html  img-fragment-2-ref.html # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop

fuzzy-if(B2G,68,4) == list-simple-1.html list-simple-1-ref.html

== svg-image-simple-1.svg lime100x100.svg
== svg-image-simple-2.svg lime100x100.svg
== svg-image-simple-3.svg lime100x100.svg

# tests for <svg> files that include themselves as an <image>
== svg-image-recursive-1a.svg  svg-image-recursive-1-ref.svg
== svg-image-recursive-1b.svg  svg-image-recursive-1-ref.svg
== svg-image-recursive-2a.svg  svg-image-recursive-2-ref.svg
== svg-image-recursive-2b.html svg-image-recursive-2-ref.svg

# test that scripting feature is not supported in images or referenced documents
skip-if(B2G||Mulet) == svg-image-script-1.svg lime100x100.svg # bug 773482 # Initial mulet triage: parity with B2G/B2G Desktop
== svg-image-script-2.svg lime100x100.svg

# tests for external resources vs. data URIs in SVG as an image
== svg-image-datauri-1.html            lime100x100.svg
HTTP == svg-image-datauri-1.html       lime100x100.svg
== svg-image-external-1.html           blue100x100.svg
HTTP == svg-image-external-1.html      blue100x100.svg
== svg-stylesheet-datauri-1.html       lime100x100.svg
HTTP == svg-stylesheet-datauri-1.html  lime100x100.svg
== svg-stylesheet-external-1.html      blue100x100.svg
HTTP == svg-stylesheet-external-1.html blue100x100.svg

# test that :visited status is ignored in image documents
# We load the images directly first, to be sure history is populated.
# It's also good to verify that the helper images don't match lime100x100.svg
# in non-image contexts, but for that to work, we have to reliably count on
# :visited styles loading (asynchronously), so we test that in
# layout/style/test/test_visited_reftests.html instead of the reftest harness.
!= svg-image-visited-1-helper.svg about:blank
== svg-image-visited-1.html       lime100x100.svg
!= svg-image-visited-2-helper.svg about:blank
== svg-image-visited-2.html       lime100x100.svg

# Test for painting problems with SVGs used in border images.
# XXXseth: The underlying problems also apply to media fragments,
# but the test case would be much simpler. This should be switched
# over to use media fragments once bug 790640 lands.
skip-if(B2G||Mulet) fuzzy(2,1) == svg-border-image-repaint-1.html svg-border-image-repaint-1-ref.html # Initial mulet triage: parity with B2G/B2G Desktop

# Tests for image-orientation with a viewbox and an intrinsic size:
== image-orientation-viewbox-and-size.html?0        image-orientation-ref.html?0
== image-orientation-viewbox-and-size.html?90       image-orientation-ref.html?90
== image-orientation-viewbox-and-size.html?180      image-orientation-ref.html?180
== image-orientation-viewbox-and-size.html?270      image-orientation-ref.html?270
== image-orientation-viewbox-and-size.html?0&flip   image-orientation-ref.html?0&flip
== image-orientation-viewbox-and-size.html?90&flip  image-orientation-ref.html?90&flip
== image-orientation-viewbox-and-size.html?180&flip image-orientation-ref.html?180&flip
== image-orientation-viewbox-and-size.html?270&flip image-orientation-ref.html?270&flip

# Tests for image-orientation with a viewbox and no intrinsic size:
== image-orientation-viewbox-no-size.html?0        image-orientation-ref.html?0
== image-orientation-viewbox-no-size.html?90       image-orientation-ref.html?90
== image-orientation-viewbox-no-size.html?180      image-orientation-ref.html?180
== image-orientation-viewbox-no-size.html?270      image-orientation-ref.html?270
== image-orientation-viewbox-no-size.html?0&flip   image-orientation-ref.html?0&flip
== image-orientation-viewbox-no-size.html?90&flip  image-orientation-ref.html?90&flip
== image-orientation-viewbox-no-size.html?180&flip image-orientation-ref.html?180&flip
== image-orientation-viewbox-no-size.html?270&flip image-orientation-ref.html?270&flip

# Tests for image-orientation with no viewbox and an intrinsic size:
== image-orientation-no-viewbox-and-size.html?0        image-orientation-ref.html?0
== image-orientation-no-viewbox-and-size.html?90       image-orientation-ref.html?90
== image-orientation-no-viewbox-and-size.html?180      image-orientation-ref.html?180
== image-orientation-no-viewbox-and-size.html?270      image-orientation-ref.html?270
== image-orientation-no-viewbox-and-size.html?0&flip   image-orientation-ref.html?0&flip
== image-orientation-no-viewbox-and-size.html?90&flip  image-orientation-ref.html?90&flip
== image-orientation-no-viewbox-and-size.html?180&flip image-orientation-ref.html?180&flip
== image-orientation-no-viewbox-and-size.html?270&flip image-orientation-ref.html?270&flip

# Tests for image-orientation with no viewbox and no intrinsic size:
== image-orientation-no-viewbox-no-size.html?0        image-orientation-ref.html?0
== image-orientation-no-viewbox-no-size.html?90       image-orientation-ref.html?90
== image-orientation-no-viewbox-no-size.html?180      image-orientation-ref.html?180
== image-orientation-no-viewbox-no-size.html?270      image-orientation-ref.html?270
== image-orientation-no-viewbox-no-size.html?0&flip   image-orientation-ref.html?0&flip
== image-orientation-no-viewbox-no-size.html?90&flip  image-orientation-ref.html?90&flip
== image-orientation-no-viewbox-no-size.html?180&flip image-orientation-ref.html?180&flip
== image-orientation-no-viewbox-no-size.html?270&flip image-orientation-ref.html?270&flip

# Test that 'image-orientation: from-image' has no effect, since SVGs don't have EXIF data.
== image-orientation-viewbox-and-size.html?from-image  image-orientation-ref.html?0
== image-orientation-viewbox-no-size.html?from-image   image-orientation-ref.html?0

# Sanity checks for the image-orientation tests. Ensures that the various
# combinations of rotations and flips actually look different from each other.
!= image-orientation-ref.html?0    image-orientation-ref.html?90
!= image-orientation-ref.html?0    image-orientation-ref.html?180
!= image-orientation-ref.html?0    image-orientation-ref.html?270
!= image-orientation-ref.html?90   image-orientation-ref.html?180
!= image-orientation-ref.html?90   image-orientation-ref.html?270
!= image-orientation-ref.html?180  image-orientation-ref.html?270
!= image-orientation-ref.html?0    image-orientation-ref.html?0&flip
!= image-orientation-ref.html?90   image-orientation-ref.html?90&flip
!= image-orientation-ref.html?180  image-orientation-ref.html?180&flip
!= image-orientation-ref.html?270  image-orientation-ref.html?270&flip

# Tests that nonuniform scales work with SVG-as-image.
== nonuniform-scale-2d.html?0.5&1.0  nonuniform-scale-ref.html?50&100
== nonuniform-scale-2d.html?1.0&0.5  nonuniform-scale-ref.html?100&50
== nonuniform-scale-3d.html?0.5&1.0&0.5  nonuniform-scale-ref.html?50&100
== nonuniform-scale-3d.html?1.0&0.5&0.5  nonuniform-scale-ref.html?100&50

# Sanity checks that nonuniform scales don't devolve to uniform scales.
!= nonuniform-scale-2d.html?0.3&1.0  nonuniform-scale-2d.html?0.3&0.3
!= nonuniform-scale-2d.html?0.3&1.0  nonuniform-scale-2d.html?1.0&1.0
!= nonuniform-scale-2d.html?1.0&0.3  nonuniform-scale-2d.html?0.3&0.3
!= nonuniform-scale-2d.html?1.0&0.3  nonuniform-scale-2d.html?1.0&1.0
!= nonuniform-scale-3d.html?0.3&1.0&0.3  nonuniform-scale-3d.html?0.3&0.3&0.3
!= nonuniform-scale-3d.html?0.3&1.0&0.3  nonuniform-scale-3d.html?1.0&1.0&1.0
!= nonuniform-scale-3d.html?1.0&0.3&0.3  nonuniform-scale-3d.html?0.3&0.3&0.3
!= nonuniform-scale-3d.html?1.0&0.3&0.3  nonuniform-scale-3d.html?1.0&1.0&1.0
