зеркало из https://github.com/mozilla/gecko-dev.git
Bug 942451 - preserveApectRatio changes on SVG images do not cause a repaint. r=jwatt
This commit is contained in:
Родитель
fe989e3819
Коммит
769b184d06
|
@ -0,0 +1,41 @@
|
|||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="reftest-wait">
|
||||
|
||||
<title>Testing that dynamic changes to preserveAspectRatio cause a reflow</title>
|
||||
<script>
|
||||
<![CDATA[
|
||||
|
||||
function doTest() {
|
||||
var i1 = document.getElementById("i1");
|
||||
i1.preserveAspectRatio.baseVal.align =
|
||||
SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID;
|
||||
var i2 = document.getElementById("i2");
|
||||
i2.preserveAspectRatio.baseVal.align =
|
||||
SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE;
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
|
||||
document.addEventListener("MozReftestInvalidate", doTest, false);
|
||||
setTimeout(doTest, 4000); // fallback for running outside reftest
|
||||
|
||||
]]>
|
||||
</script>
|
||||
|
||||
<rect width="100%" height="100%" fill="lime"/>
|
||||
|
||||
<!-- this image is a 1x1 red gif -->
|
||||
<image id="i1" preserveAspectRatio="none" x="50" y="50" width="200" height="300"
|
||||
style="image-rendering: optimizeSpeed;"
|
||||
xlink:href="data:image/gif,GIF87a%01%00%01%00%80%01%00%FF%00%00%FF%FF%FF%2C%00%00%00%00%01%00%01%00%00%02%02D%01%00%3B"/>
|
||||
<!-- exactly cover the image if it had preserveAspectRatio="xMidYMid" -->
|
||||
<rect x="50" y="100" width="200" height="200" fill="lime"/>
|
||||
|
||||
<rect x="300" y="100" width="200" height="300" fill="red"/>
|
||||
<!-- and this one is a 1x1 lime PNG -->
|
||||
<!-- which would cover the red rect if it had preserveAspectRatio="none" -->
|
||||
<image id="i2" x="300" y="100" width="200" height="300" preserveAspectRatio="xMidYMid" xlink:href="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%01%00%00%00%01%08%02%00%00%00%90wS%DE%00%00%00%01sRGB%00%AE%CE%1C%E9%00%00%00%0CIDAT%08%D7c%60%F8%CF%00%00%02%02%01%00%AA*%9E'%00%00%00%00IEND%AEB%60%82" />
|
||||
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 1.8 KiB |
|
@ -38,3 +38,4 @@ skip-if(B2G) == image-preserveAspectRatio-02-raster.svg image-preserveAspectRati
|
|||
skip-if(B2G) == image-preserveAspectRatio-02-svg.svg image-preserveAspectRatio-02-ref.svg # bug 773482
|
||||
skip-if(B2G) == image-preserveAspectRatio-03.svg image-preserveAspectRatio-03-ref.svg # bug 773482
|
||||
skip-if(B2G) == image-preserveAspectRatio-04.svg image-preserveAspectRatio-04-ref.svg # bug 773482
|
||||
== image-preserveAspectRatio-05.svg ../pass.svg
|
||||
|
|
|
@ -195,8 +195,11 @@ nsSVGImageFrame::AttributeChanged(int32_t aNameSpaceID,
|
|||
return NS_OK;
|
||||
}
|
||||
else if (aAttribute == nsGkAtoms::preserveAspectRatio) {
|
||||
// Don't invalidate (the layers code does that).
|
||||
SchedulePaint();
|
||||
// We don't paint the content of the image using display lists, therefore
|
||||
// we have to invalidate for this children-only transform changes since
|
||||
// there is no layer tree to notice that the transform changed and
|
||||
// recomposite.
|
||||
InvalidateFrame();
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче