mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 00:37:32 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,89 @@
|
|||
/* Any copyright is dedicated to the public domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
// Bug 762939 - Test that visibility propagates down properly through
|
||||
// hierarchies of <iframe mozbrowser>.
|
||||
//
|
||||
// In this test, we modify the parent's visibility and check that the child's
|
||||
// visibility is changed as appopriate. We test modifying the child's
|
||||
// visibility in a separate testcase.
|
||||
|
||||
"use strict";
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
browserElementTestHelpers.setEnabledPref(true);
|
||||
|
||||
var iframe;
|
||||
|
||||
function runTest() {
|
||||
iframe = document.createElement('iframe');
|
||||
iframe.setAttribute('mozbrowser', 'true');
|
||||
|
||||
// Our test involves three <iframe mozbrowser>'s, parent, child1, and child2.
|
||||
// child1 and child2 are contained inside parent. child1 is visibile, and
|
||||
// child2 is not.
|
||||
//
|
||||
// For the purposes of this test, we want there to be a process barrier
|
||||
// between child{1,2} and parent. Therefore parent must be a non-remote
|
||||
// <iframe mozbrowser>, until bug 761935 is resolved and we can have nested
|
||||
// content processes.
|
||||
iframe.remote = false;
|
||||
|
||||
iframe.addEventListener('mozbrowsershowmodalprompt', checkMessage);
|
||||
expectMessage('parent:ready', test1);
|
||||
|
||||
document.body.appendChild(iframe);
|
||||
iframe.src = 'file_browserElement_SetVisibleFrames_Outer.html';
|
||||
}
|
||||
|
||||
function test1() {
|
||||
expectMessage('child1:hidden', getVisibleTest1);
|
||||
iframe.setVisible(false);
|
||||
}
|
||||
|
||||
function getVisibleTest1() {
|
||||
iframe.getVisible().onsuccess = function(evt) {
|
||||
ok(evt.target.result === false, 'getVisible shows a hidden frame');
|
||||
test2();
|
||||
};
|
||||
}
|
||||
|
||||
function test2() {
|
||||
expectMessage('child1:visible', getVisibleTest2);
|
||||
iframe.setVisible(true);
|
||||
}
|
||||
|
||||
function getVisibleTest2() {
|
||||
iframe.getVisible().onsuccess = function(evt) {
|
||||
ok(evt.target.result === true, 'getVisible shows a displayed frame');
|
||||
finish();
|
||||
};
|
||||
}
|
||||
|
||||
function finish() {
|
||||
// We need to remove this listener because when this test finishes and the
|
||||
// iframe containing this document is navigated, we'll fire a
|
||||
// visibilitychange(false) event on all child iframes. That's OK and
|
||||
// expected, but if we don't remove our listener, then we'll end up causing
|
||||
// the /next/ test to fail!
|
||||
iframe.removeEventListener('mozbrowsershowmodalprompt', checkMessage);
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
var expectedMsg = null;
|
||||
var expectedMsgCallback = null;
|
||||
function expectMessage(msg, next) {
|
||||
expectedMsg = msg;
|
||||
expectedMsgCallback = next;
|
||||
}
|
||||
|
||||
function checkMessage(e) {
|
||||
var msg = e.detail.message;
|
||||
is(msg, expectedMsg);
|
||||
if (msg == expectedMsg) {
|
||||
expectedMsg = null;
|
||||
SimpleTest.executeSoon(function() { expectedMsgCallback() });
|
||||
}
|
||||
}
|
||||
|
||||
addEventListener('testready', runTest);
|
||||
Loading…
Add table
Add a link
Reference in a new issue