Index: chrome_frame/test/data/privileged_apis_host.html |
=================================================================== |
--- chrome_frame/test/data/privileged_apis_host.html (revision 0) |
+++ chrome_frame/test/data/privileged_apis_host.html (revision 0) |
@@ -0,0 +1,85 @@ |
+<html> |
+ <head><title>Privileged Apis test</title> |
+ <script type='text/javascript' src='chrome_frame_tester_helpers.js'> |
+ </script> |
+ <script type='text/javascript'> |
+ var testName = 'PrivilegedApis'; |
+ function OnNavigationFailed(msg) { |
+ onFailure(testName, 1, 'ChromeFrame Navigation failed: ' + msg); |
+ } |
+ |
+ function OnPrivateMessage() { |
+ onFailure(testName, 1, 'OnPrivateMessage should not execute'); |
+ } |
+ |
+ function OnChromeFrameMessage(evt) { |
+ try { |
+ var d = new String(evt.data); |
+ appendStatus('Message: ' + d); |
+ if (d == 'succeed') { |
+ onSuccess(testName, 1); |
+ } else { |
+ onFailure(testName, 1, 'unexpected data'); |
+ } |
+ } catch (e) { |
+ onFailure(testName, 1, 'exception in OnChromeFrameMessage'); |
+ } |
+ } |
+ |
+ function OnChromeFrameLoaded(url) { |
+ var cf = GetChromeFrame(); |
+ |
+ try { |
+ // Any message received by this listener is a failure. |
+ // This succeeds in FF, but throws an exception in IE. |
+ cf.addEventListener('onprivatemessage', OnPrivateMessage, false); |
+ } catch(e) { |
+ cf.onprivatemessage = |
+ appendStatus('addEventListener onprivatemessage threw exception') |
+ } |
+ |
+ // If this invocation succeeds, then 'fail' is reflected by the frame |
+ // and we fail in the OnChromeFrameMessage handler above. |
+ try { |
+ cf.postPrivateMessage('fail', String(document.location), '*'); |
+ onFailure(testName, 1, 'postPrivateMessage should throw'); |
+ } catch(e) { |
+ } |
+ appendStatus('After postPrivateMessage') |
+ // The frame reflects this twice, first to a bogus target |
+ // and again to the default target '*'. We succeed if we |
+ // get the reflected message to OnChromeFrameMessage and not to |
+ // OnPrivateMessage. |
+ cf.postMessage('succeed'); |
+ } |
+ |
+ function GetChromeFrame() { |
+ return window.document.ChromeFrame; |
+ } |
+ </script> |
+ </head> |
+ <body> |
+ <div id='statusPanel' style='border: 1px solid red; width: 100%'> |
+ Test running.... |
+ </div> |
+ |
+ <!-- TODO(siggi): Test setting onprivatemessage in these params --> |
+ <object id='ChromeFrame' width='500' height='500' |
+ codebase='http://www.google.com' |
+ classid='CLSID:E0A900DF-9611-4446-86BD-4B1D47E7DB2A'> |
+ <param name='src' value='privileged_apis_frame.html'> |
+ <param name='onload' value='OnChromeFrameLoaded(arguments[0]);'> |
+ <param name='onloaderror' value='OnNavigationFailed();'> |
+ <param name='onmessage' value='OnChromeFrameMessage(arguments[0]);'> |
+ <embed id='ChromeFramePlugin' width='500' height='500' name='ChromeFrame' |
+ src='privileged_apis_frame.html' |
+ type='application/chromeframe' |
+ onload='OnChromeFrameLoaded(arguments[0]);' |
+ onloaderror='OnNavigationFailed();' |
+ onmessage='return OnChromeFrameMessage(arguments[0]);' |
+ privileged_mode='1' |
+ </embed> |
+ </object> |
+ <p>Tests that privileged apis are unavailable from regular pages</p> |
+ </body> |
+</html> |