image/test/mochitest/test_animSVGImage.html

branch
TOR_BUG_9701
changeset 14
925c144e1f1f
equal deleted inserted replaced
-1:000000000000 0:693241065f5d
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=610419
5 -->
6 <head>
7 <title>Test for Bug 610419</title>
8 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
9 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
10 <script type="application/javascript" src="imgutils.js"></script>
11 <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
12 </head>
13 <body>
14 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=610419">Mozilla Bug 610419</a>
15 <p id="display"></p>
16 <div id="content">
17 <div id="referenceDiv" style="height: 100px; width: 100px;
18 display: none; background: lime"></div>
19 <img>
20 </div>
21 <pre id="test">
22 <script type="application/javascript;version=1.8">
23 /** Test for Bug 610419**/
24
25 SimpleTest.waitForExplicitFinish();
26
27 const FAILURE_TIMEOUT = 120000; // Fail early after 120 seconds (2 minutes)
28
29 const Cc = Components.classes;
30 const Ci = Components.interfaces;
31 const gImg = document.getElementsByTagName("img")[0];
32
33 var gMyDecoderObserver; // value will be set in main()
34 var gReferenceSnapshot; // value will be set in takeReferenceSnapshot()
35 var gOnStopFrameCounter = 0;
36 var gIsTestFinished = false;
37
38
39 function takeReferenceSnapshot() {
40 // Take a snapshot of the initial (essentially blank) page
41 let blankSnapshot = snapshotWindow(window, false);
42
43 // Show reference div, & take a snapshot
44 let referenceDiv = document.getElementById("referenceDiv");
45 referenceDiv.style.display = "block";
46 gReferenceSnapshot = snapshotWindow(window, false);
47 ok(compareSnapshots(blankSnapshot, gReferenceSnapshot, false)[0],
48 "reference snapshot shouldn't match blank page snapshot");
49
50 // Re-hide reference div, and take another snapshot to be sure it's gone
51 referenceDiv.style.display = "none";
52 let blankSnapshot2 = snapshotWindow(window, false);
53 ok(compareSnapshots(blankSnapshot, blankSnapshot2, true)[0],
54 "reference div should disappear when it becomes display:none");
55 }
56
57 function myOnStopFrame() {
58 gOnStopFrameCounter++;
59 ok(true, "myOnStopFrame called");
60 let currentSnapshot = snapshotWindow(window, false);
61 if (compareSnapshots(currentSnapshot, gReferenceSnapshot, true)[0]) {
62 // SUCCESS!
63 ok(true, "Animated image looks correct, " +
64 "at call #" + gOnStopFrameCounter + " to onStopFrame");
65 cleanUpAndFinish();
66 }
67 else
68 setTimeout(myOnStopFrame, 1);
69 }
70
71 function failTest() {
72 ok(false, "timing out after " + FAILURE_TIMEOUT + "ms. " +
73 "Animated image still doesn't look correct, " +
74 "after call #" + gOnStopFrameCounter + " to onStopFrame");
75 cleanUpAndFinish();
76 }
77
78 function cleanUpAndFinish() {
79 // On the off chance that failTest and myOnStopFrame are triggered
80 // back-to-back, use a flag to prevent multiple calls to SimpleTest.finish.
81 if (gIsTestFinished) {
82 return;
83 }
84 SimpleTest.finish();
85 gIsTestFinished = true;
86 }
87
88 function main() {
89 takeReferenceSnapshot();
90
91 // We want to test the cold loading behavior, so clear cache in case an
92 // earlier test got our image in there already.
93 clearImageCache();
94
95 setTimeout(myOnStopFrame, 1);
96
97 // kick off image-loading! myOnStopFrame handles the rest.
98 gImg.setAttribute("src", "lime-anim-100x100.svg");
99
100 // In case something goes wrong, fail earlier than mochitest timeout,
101 // and with more information.
102 setTimeout(failTest, FAILURE_TIMEOUT);
103 }
104
105 window.onload = main;
106
107 </script>
108 </pre>
109 </body>
110 </html>

mercurial