Also set network.disable.ipc.security to true and leave it that way. This prevents security errors in the tests which happen when we pop the pref.
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/* Any copyright is dedicated to the public domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// Test if DOMRequest returned by an iframe gets an error callback when
|
|
// the iframe is not in the DOM.
|
|
"use strict";
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
browserElementTestHelpers.setEnabledPref(true);
|
|
browserElementTestHelpers.addPermission();
|
|
|
|
function runTest() {
|
|
var iframe1 = document.createElement('iframe');
|
|
SpecialPowers.wrap(iframe1).mozbrowser = true;
|
|
iframe1.src = 'data:text/html,<html>' +
|
|
'<body style="background:green">hello</body></html>';
|
|
document.body.appendChild(iframe1);
|
|
|
|
function testIframe(beforeRun, isErrorExpected, nextTest) {
|
|
return function() {
|
|
var error = false;
|
|
if (beforeRun)
|
|
beforeRun();
|
|
function testEnd() {
|
|
is(isErrorExpected, error);
|
|
SimpleTest.executeSoon(nextTest);
|
|
}
|
|
|
|
var domRequest = iframe1.getScreenshot(1000, 1000);
|
|
domRequest.onsuccess = function(e) {
|
|
testEnd();
|
|
}
|
|
domRequest.onerror = function(e) {
|
|
error = true;
|
|
testEnd();
|
|
}
|
|
};
|
|
}
|
|
|
|
function iframeLoadedHandler() {
|
|
iframe1.removeEventListener('mozbrowserloadend', iframeLoadedHandler);
|
|
// Test 1: iframe is in the DOM.
|
|
// Test 2: iframe is removed from the DOM.
|
|
// Test 3: iframe is added back into the DOM.
|
|
var test3 = testIframe(
|
|
function() {
|
|
document.body.appendChild(iframe1);
|
|
}, false,
|
|
function() {
|
|
SimpleTest.finish();
|
|
})
|
|
;
|
|
var test2 = testIframe(function() {
|
|
document.body.removeChild(iframe1);
|
|
}, true, test3);
|
|
var test1 = testIframe(null, false, test2);
|
|
SimpleTest.executeSoon(test1);
|
|
}
|
|
|
|
iframe1.addEventListener('mozbrowserloadend', iframeLoadedHandler);
|
|
}
|
|
|
|
addEventListener('testready', runTest);
|