|
1 /* Any copyright is dedicated to the public domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 // Bug 741717 - Test the reload ability of <iframe mozbrowser>. |
|
5 |
|
6 "use strict"; |
|
7 SimpleTest.waitForExplicitFinish(); |
|
8 browserElementTestHelpers.setEnabledPref(true); |
|
9 browserElementTestHelpers.addPermission(); |
|
10 |
|
11 var iframeScript = function() { |
|
12 sendAsyncMessage('test:innerHTML', { |
|
13 data: XPCNativeWrapper.unwrap(content).document.body.innerHTML |
|
14 }); |
|
15 } |
|
16 |
|
17 var mm; |
|
18 var iframe; |
|
19 var loadedEvents = 0; |
|
20 var countAcc; |
|
21 |
|
22 function runTest() { |
|
23 iframe = document.createElement('iframe'); |
|
24 SpecialPowers.wrap(iframe).mozbrowser = true; |
|
25 |
|
26 iframe.addEventListener('mozbrowserloadend', mozbrowserLoaded); |
|
27 |
|
28 iframe.src = 'file_bug741717.sjs'; |
|
29 document.body.appendChild(iframe); |
|
30 } |
|
31 |
|
32 function iframeBodyRecv(data) { |
|
33 data = SpecialPowers.wrap(data); |
|
34 var previousCount = countAcc; |
|
35 var currentCount = parseInt(data.json.data, 10); |
|
36 countAcc = currentCount; |
|
37 switch (loadedEvents) { |
|
38 case 1: |
|
39 iframe.reload(); |
|
40 break; |
|
41 case 2: |
|
42 ok(true, 'reload was triggered'); |
|
43 ok(previousCount === currentCount, 'reload was a soft reload'); |
|
44 iframe.reload(true); |
|
45 break; |
|
46 case 3: |
|
47 ok(currentCount > previousCount, 'reload was a hard reload'); |
|
48 SimpleTest.finish(); |
|
49 } |
|
50 } |
|
51 |
|
52 function mozbrowserLoaded() { |
|
53 loadedEvents++; |
|
54 mm = SpecialPowers.getBrowserFrameMessageManager(iframe); |
|
55 mm.addMessageListener('test:innerHTML', iframeBodyRecv); |
|
56 mm.loadFrameScript('data:,(' + iframeScript.toString() + ')();', false); |
|
57 } |
|
58 |
|
59 addEventListener('testready', runTest); |