diff options
Diffstat (limited to 'dom/browser-element/mochitest/browserElement_Reload.js')
-rw-r--r-- | dom/browser-element/mochitest/browserElement_Reload.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/dom/browser-element/mochitest/browserElement_Reload.js b/dom/browser-element/mochitest/browserElement_Reload.js new file mode 100644 index 000000000..9ef6d8e7e --- /dev/null +++ b/dom/browser-element/mochitest/browserElement_Reload.js @@ -0,0 +1,59 @@ +/* Any copyright is dedicated to the public domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Bug 741717 - Test the reload ability of <iframe mozbrowser>. + +"use strict"; +SimpleTest.waitForExplicitFinish(); +browserElementTestHelpers.setEnabledPref(true); +browserElementTestHelpers.addPermission(); + +var iframeScript = function() { + sendAsyncMessage('test:innerHTML', { + data: XPCNativeWrapper.unwrap(content).document.body.innerHTML + }); +} + +var mm; +var iframe; +var loadedEvents = 0; +var countAcc; + +function runTest() { + iframe = document.createElement('iframe'); + iframe.setAttribute('mozbrowser', 'true'); + + iframe.addEventListener('mozbrowserloadend', mozbrowserLoaded); + + iframe.src = 'file_bug741717.sjs'; + document.body.appendChild(iframe); +} + +function iframeBodyRecv(data) { + data = SpecialPowers.wrap(data); + var previousCount = countAcc; + var currentCount = parseInt(data.json.data, 10); + countAcc = currentCount; + switch (loadedEvents) { + case 1: + iframe.reload(); + break; + case 2: + ok(true, 'reload was triggered'); + ok(previousCount === currentCount, 'reload was a soft reload'); + iframe.reload(true); + break; + case 3: + ok(currentCount > previousCount, 'reload was a hard reload'); + SimpleTest.finish(); + } +} + +function mozbrowserLoaded() { + loadedEvents++; + mm = SpecialPowers.getBrowserFrameMessageManager(iframe); + mm.addMessageListener('test:innerHTML', iframeBodyRecv); + mm.loadFrameScript('data:,(' + iframeScript.toString() + ')();', false); +} + +addEventListener('testready', runTest); |