/* Any copyright is dedicated to the public domain. http://creativecommons.org/publicdomain/zero/1.0/ */ // Test that an '; // For kicks, this test uses a display:none iframe. This shouldn't make a // difference in anything. iframe.style.display = 'none'; document.body.appendChild(iframe); } var numMsgReceived = 0; function outerIframeLoaded() { // If you're changing the amount of is() calls in injectedScript, // also change the number in waitForMessages accordingly var injectedScript = "data:,function is(a, b, desc) { \ if (a == b) { \ sendAsyncMessage('test:test-pass', desc); \ } else { \ sendAsyncMessage('test:test-fail', desc + ' ' + a + ' != ' + b); \ } \ } \ is(content.window.top, content.window, 'top'); \ is(content.window.content, content.window, 'content'); \ is(content.window.parent, content.window, 'parent'); \ is(content.window.frameElement, null, 'frameElement'); \ var innerIframe = content.document.getElementById('inner-iframe'); \ var innerWindow = innerIframe.contentWindow; \ is(innerWindow.top, content.window, 'inner top'); \ is(innerWindow.content, content.window, 'inner content'); \ is(innerWindow.parent, content.window, 'inner parent'); \ is(innerWindow.frameElement, innerIframe, 'inner frameElement');" var mm = SpecialPowers.getBrowserFrameMessageManager(iframe); function onRecvTestPass(msg) { numMsgReceived++; ok(true, msg.json); } mm.addMessageListener('test:test-pass', onRecvTestPass); function onRecvTestFail(msg) { numMsgReceived++; ok(false, msg.json); } mm.addMessageListener('test:test-fail', onRecvTestFail); mm.loadFrameScript(injectedScript, /* allowDelayedLoad = */ false); // 8 is the number of is() calls in injectedScript waitForMessages(8); } function waitForMessages(num) { if (numMsgReceived < num) { SimpleTest.executeSoon(function() { waitForMessages(num); }); return; } SimpleTest.finish(); } addEventListener('testready', runTest);