Bug 724281 - suspend-02.svg fails randomly. r=roc

This commit is contained in:
Robert Longson 2012-02-06 12:57:12 +00:00
Родитель af57611b0f
Коммит ea1464a7d7
4 изменённых файлов: 39 добавлений и 22 удалений

Просмотреть файл

@ -219,7 +219,7 @@ random-if(gtk2Widget) == objectBoundingBox-and-fePointLight-02.svg objectBoundin
== svg-in-foreignObject-02.xhtml svg-in-foreignObject-01-ref.xhtml # reuse -01-ref.xhtml
== switch-01.svg pass.svg
== suspend-01.svg about:blank
random-if(winWidget) == suspend-02.svg pass.svg # bug 724281
== suspend-02.svg pass.svg
fails == suspend-03.svg pass.svg # bug 724242
== suspend-04.svg pass.svg
== suspend-05.svg pass.svg

Просмотреть файл

@ -3,21 +3,26 @@
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/licenses/publicdomain/
-->
<svg xmlns="http://www.w3.org/2000/svg" class="reftest-wait" onload="f()">
<svg xmlns="http://www.w3.org/2000/svg" class="reftest-wait">
<title>Test that suspendRedraw works</title>
<!-- https://bugzilla.mozilla.org/show_bug.cgi?id=615146 -->
<script>
function f() {
<script type="text/javascript">
<![CDATA[
document.addEventListener("MozReftestInvalidate", doTest, false);
// in case we're not gecko
setTimeout(doTest, 5000);
function doTest() {
var svg = document.documentElement;
svg.suspendRedraw(10000);
document.getElementById("r").setAttribute("fill", "red");
setTimeout(function() {
svg.suspendRedraw(10000);
setTimeout(function() {
document.getElementById("r").setAttribute("fill", "red");
svg.removeAttribute("class");
}, 1);
}, 1);
svg.removeAttribute("class");
}, 50);
}
]]>
</script>
<rect id="r" width="100%" height="100%" fill="lime"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 711 B

После

Ширина:  |  Высота:  |  Размер: 827 B

Просмотреть файл

@ -3,25 +3,30 @@
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/licenses/publicdomain/
-->
<svg xmlns="http://www.w3.org/2000/svg" class="reftest-wait" onload="f()">
<svg xmlns="http://www.w3.org/2000/svg" class="reftest-wait">
<title>Test that suspendRedraw works</title>
<!-- https://bugzilla.mozilla.org/show_bug.cgi?id=615146 -->
<script>
function f() {
<script type="text/javascript">
<![CDATA[
document.addEventListener("MozReftestInvalidate", doTest, false);
// in case we're not gecko
setTimeout(doTest, 5000);
function doTest() {
var svg = document.documentElement;
setTimeout(function() {
svg.suspendRedraw(10000);
setTimeout(function() {
var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
r.setAttribute("width", "100%");
r.setAttribute("height", "100%");
r.setAttribute("fill", "red");
svg.appendChild(r);
svg.removeAttribute("class");
}, 1);
}, 1);
var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
r.setAttribute("width", "100%");
r.setAttribute("height", "100%");
r.setAttribute("fill", "red");
svg.appendChild(r);
svg.removeAttribute("class");
}, 50);
}
]]>
</script>
<rect width="100%" height="100%" fill="lime"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 876 B

После

Ширина:  |  Высота:  |  Размер: 988 B

Просмотреть файл

@ -596,6 +596,13 @@ nsSVGUtils::InvalidateCoveredRegion(nsIFrame *aFrame)
if (aFrame->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return;
if (aFrame->GetStateBits() & NS_STATE_SVG_REDRAW_SUSPENDED) {
aFrame->AddStateBits(NS_STATE_SVG_DIRTY);
return;
}
aFrame->RemoveStateBits(NS_STATE_SVG_DIRTY);
nsSVGOuterSVGFrame* outerSVGFrame = GetOuterSVGFrame(aFrame);
NS_ASSERTION(outerSVGFrame, "no outer svg frame");
if (outerSVGFrame) {