OLD | NEW |
| (Empty) |
1 <html> | |
2 <head><title>Privileged Apis test</title> | |
3 <script type='text/javascript' src='chrome_frame_tester_helpers.js'> | |
4 </script> | |
5 <script type='text/javascript'> | |
6 var testName = 'PrivilegedApis'; | |
7 function OnNavigationFailed(msg) { | |
8 onFailure(testName, 1, 'ChromeFrame Navigation failed: ' + msg); | |
9 } | |
10 | |
11 function OnPrivateMessage() { | |
12 onFailure(testName, 1, 'OnPrivateMessage should not execute'); | |
13 } | |
14 | |
15 function OnChromeFrameMessage(evt) { | |
16 try { | |
17 var d = new String(evt.data); | |
18 appendStatus('Message: ' + d); | |
19 if (d == 'succeed') { | |
20 onSuccess(testName, 1); | |
21 } else { | |
22 onFailure(testName, 1, 'unexpected data'); | |
23 } | |
24 } catch (e) { | |
25 onFailure(testName, 1, 'exception in OnChromeFrameMessage'); | |
26 } | |
27 } | |
28 | |
29 function tryPrivateMessage() { | |
30 var cf = GetChromeFrame(); | |
31 | |
32 try { | |
33 // Any message received by this listener is a failure. | |
34 // This succeeds in FF, but throws an exception in IE. | |
35 cf.addEventListener('onprivatemessage', OnPrivateMessage, false); | |
36 } catch(e) { | |
37 appendStatus('addEventListener onprivatemessage threw exception') | |
38 } | |
39 | |
40 // If this invocation succeeds, then 'fail' is reflected by the frame | |
41 // and we fail in the OnChromeFrameMessage handler above. | |
42 try { | |
43 cf.postPrivateMessage('fail', String(document.location), '*'); | |
44 onFailure(testName, 1, 'postPrivateMessage should throw'); | |
45 } catch(e) { | |
46 } | |
47 appendStatus('After postPrivateMessage') | |
48 } | |
49 | |
50 function OnChromeFrameLoaded(url) { | |
51 tryPrivateMessage(); | |
52 | |
53 // The frame reflects this twice, first to a bogus target | |
54 // and again to the default target '*'. We succeed if we | |
55 // get the reflected message to OnChromeFrameMessage and not to | |
56 // OnPrivateMessage. | |
57 var cf = GetChromeFrame(); | |
58 cf.postMessage('succeed'); | |
59 appendStatus('After cf.postMessage') | |
60 } | |
61 | |
62 function GetChromeFrame() { | |
63 return window.document.ChromeFrame; | |
64 } | |
65 </script> | |
66 </head> | |
67 <body> | |
68 <div id='statusPanel' style='border: 1px solid red; width: 100%'> | |
69 Test running.... | |
70 </div> | |
71 | |
72 <span id='ChromeFrameSpan'></span> | |
73 <!-- TODO(siggi): Test setting onprivatemessage in these params --> | |
74 <script type='text/javascript'> | |
75 insertControl( | |
76 'ChromeFrameSpan', | |
77 { "src": "privileged_apis_frame.html", | |
78 "eventHandlers": { | |
79 "onload": "OnChromeFrameLoaded(arguments[0]);", | |
80 "onloaderror": "OnNavigationFailed();", | |
81 "onmessage": "return OnChromeFrameMessage(arguments[0]);" | |
82 }, | |
83 "embedAttributes": { "privileged_mode": "1" } | |
84 }); | |
85 </script> | |
86 <p>Tests that privileged apis are unavailable from regular pages</p> | |
87 </body> | |
88 </html> | |
OLD | NEW |