| 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 |