| OLD | NEW |
| 1 <html> | 1 <html> |
| 2 <head> | 2 <head> |
| 3 <script src="../resources/libwrapjs.js"></script> | 3 <script src="../resources/libwrapjs.js"></script> |
| 4 <script src="../resources/cross-frame-access.js"></script> | 4 <script src="../resources/cross-frame-access.js"></script> |
| 5 <script> | 5 <script> |
| 6 var code; | 6 var code; |
| 7 var openedWindow; | 7 var openedWindow; |
| 8 | 8 |
| 9 window.onload = function() | 9 window.onload = function() |
| 10 { | 10 { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 code = libwrapjs.in_script_tag(payload); | 32 code = libwrapjs.in_script_tag(payload); |
| 33 log("Code injected into window:"); | 33 log("Code injected into window:"); |
| 34 log(code); | 34 log(code); |
| 35 | 35 |
| 36 if (window.testRunner) { | 36 if (window.testRunner) { |
| 37 setTimeout(pollForTest1, 1); | 37 setTimeout(pollForTest1, 1); |
| 38 } else { | 38 } else { |
| 39 log("To run the test, click the button below when the frames finish
loading."); | 39 log("To run the test, click the button below when the frames finish
loading."); |
| 40 var button = document.createElement("button"); | 40 var button = document.createElement("button"); |
| 41 button.appendChild(document.createTextNode("Run Test")); | 41 button.appendChild(document.createTextNode("Run Test")); |
| 42 button.onclick = runTest; | 42 button.onclick = runTest1; |
| 43 document.body.appendChild(button); | 43 document.body.appendChild(button); |
| 44 } | 44 } |
| 45 } | 45 } |
| 46 | 46 |
| 47 pollForTest1 = function() | 47 pollForTest1 = function() |
| 48 { | 48 { |
| 49 if (!testRunner.globalFlag) { | 49 if (window.testRunner && !testRunner.globalFlag) { |
| 50 setTimeout(pollForTest1, 1); | 50 setTimeout(pollForTest1, 1); |
| 51 return; | 51 return; |
| 52 } | 52 } |
| 53 runTest1(); | 53 runTest1(); |
| 54 } | 54 } |
| 55 | 55 |
| 56 runTest1 = function() { | 56 runTest1 = function() { |
| 57 frames[0].openWindow(); | 57 frames[0].openWindow(); |
| 58 openedWindow = frames[0].openedWindow; | 58 openedWindow = frames[0].openedWindow; |
| 59 | 59 |
| 60 if (window.testRunner) | 60 if (window.testRunner) |
| 61 testRunner.globalFlag = false; | 61 testRunner.globalFlag = false; |
| 62 | 62 |
| 63 frames[0].location = 'http://localhost:8000/security/resources/innocent-
victim-with-notify.html'; | 63 frames[0].location = 'http://localhost:8000/security/resources/innocent-
victim-with-notify.html'; |
| 64 | 64 |
| 65 setTimeout(pollForTest2, 1); | 65 setTimeout(pollForTest2, 1); |
| 66 } | 66 } |
| 67 | 67 |
| 68 pollForTest2 = function() | 68 pollForTest2 = function() |
| 69 { | 69 { |
| 70 if (!testRunner.globalFlag) { | 70 if (window.testRunner && !testRunner.globalFlag) { |
| 71 setTimeout(pollForTest2, 1); | 71 setTimeout(pollForTest2, 1); |
| 72 return; | 72 return; |
| 73 } | 73 } |
| 74 runTest2(); | 74 runTest2(); |
| 75 } | 75 } |
| 76 | 76 |
| 77 runTest2 = function() | 77 runTest2 = function() |
| 78 { | 78 { |
| 79 openedWindow.document.write(code); | 79 openedWindow.document.write(code); |
| 80 openedWindow.document.close(); | 80 openedWindow.document.close(); |
| 81 if (window.testRunner) { | 81 if (window.testRunner) { |
| 82 testRunner.globalFlag = false; | 82 testRunner.globalFlag = false; |
| 83 setTimeout(pollForDone, 1); | 83 setTimeout(pollForDone, 1); |
| 84 } | 84 } |
| 85 } | 85 } |
| 86 | 86 |
| 87 pollForDone = function() | 87 pollForDone = function() |
| 88 { | 88 { |
| 89 if (!testRunner.globalFlag) { | 89 if (window.testRunner && !testRunner.globalFlag) { |
| 90 setTimeout(pollForDone, 1); | 90 setTimeout(pollForDone, 1); |
| 91 return; | 91 return; |
| 92 } | 92 } |
| 93 closeWindowAndNotifyDone(openedWindow); | 93 closeWindowAndNotifyDone(openedWindow); |
| 94 } | 94 } |
| 95 </script> | 95 </script> |
| 96 </head> | 96 </head> |
| 97 <body> | 97 <body> |
| 98 <div>This page opens a window to "", injects malicious code, and | 98 <div>This page opens a window to "", injects malicious code, and |
| 99 then navigates its opener to the victim. The opened window then tries to | 99 then navigates its opener to the victim. The opened window then tries to |
| 100 scripts its opener after <code>document.write</code>ing a new document.</div> | 100 scripts its opener after <code>document.write</code>ing a new document.</div> |
| 101 <pre id="console"></pre> | 101 <pre id="console"></pre> |
| 102 <iframe style="border: solid 3px red;" src="../resources/open-window.html"></ifr
ame> | 102 <iframe style="border: solid 3px red;" src="../resources/open-window.html"></ifr
ame> |
| 103 <iframe style="border: solid 3px green;" src="../resources/innocent-victim.html"
></iframe> | 103 <iframe style="border: solid 3px green;" src="../resources/innocent-victim.html"
></iframe> |
| 104 </body> | 104 </body> |
| 105 </html> | 105 </html> |
| OLD | NEW |