summaryrefslogtreecommitdiffstats
path: root/dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js')
-rw-r--r--dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js b/dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js
new file mode 100644
index 000000000..16618829e
--- /dev/null
+++ b/dom/browser-element/mochitest/browserElement_DocumentFirstPaint.js
@@ -0,0 +1,69 @@
+/* Any copyright is dedicated to the public domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Bug 829486 - Add mozdocumentbrowserfirstpaint event.
+"use strict";
+
+SimpleTest.waitForExplicitFinish();
+browserElementTestHelpers.setEnabledPref(true);
+
+var iframe;
+
+function runTestQueue(queue) {
+ if (queue.length == 0) {
+ SimpleTest.finish();
+ return;
+ }
+
+ var gotFirstPaint = false;
+ var gotFirstLocationChange = false;
+ var test = queue.shift();
+
+ function runNext() {
+ iframe.removeEventListener('mozbrowserdocumentfirstpaint', documentfirstpainthandler);
+ iframe.removeEventListener('mozbrowserloadend', loadendhandler);
+ runTestQueue(queue);
+ }
+
+ function documentfirstpainthandler(e) {
+ ok(!gotFirstPaint, "Got firstpaint only once");
+ gotFirstPaint = true;
+ if (gotFirstLocationChange) {
+ runNext();
+ }
+ }
+
+ function loadendhandler(e) {
+ gotFirstLocationChange = true;
+ if (gotFirstPaint) {
+ runNext();
+ }
+ }
+
+ iframe.addEventListener('mozbrowserdocumentfirstpaint', documentfirstpainthandler);
+ iframe.addEventListener('mozbrowserloadend', loadendhandler);
+
+ test();
+}
+
+function testChangeLocation() {
+ iframe.src = browserElementTestHelpers.emptyPage1 + "?2";
+}
+
+function testReload() {
+ iframe.reload();
+}
+
+function testFirstLoad() {
+ document.body.appendChild(iframe);
+ iframe.src = browserElementTestHelpers.emptyPage1;
+}
+
+function runTest() {
+ iframe = document.createElement('iframe');
+ iframe.setAttribute('mozbrowser', 'true');
+
+ runTestQueue([testFirstLoad, testReload, testChangeLocation]);
+}
+
+addEventListener('testready', runTest);