OLD | NEW |
(Empty) | |
| 1 <html> |
| 2 <head> |
| 3 <script> |
| 4 var logWin = window.parent.opener; |
| 5 logWin.log('Iframe is being loaded.'); |
| 6 |
| 7 var xhr = new XMLHttpRequest(); |
| 8 xhr.onreadystatechange = function() { |
| 9 logWin.log('xhr onreadystatechange state:' + xhr.readyState); |
| 10 if (xhr.readyState == 4) { |
| 11 var text = xhr.responseText; |
| 12 // Report that the test is finished. |
| 13 logWin.finish(); |
| 14 } |
| 15 } |
| 16 |
| 17 xhr.onerror = function() { |
| 18 logWin.log('xhr onerror:' + xhr.readyState); |
| 19 } |
| 20 |
| 21 // Timeout explanation: |
| 22 // To reproduce the issue, I need the XHR to start but not finish until the |
| 23 // iframe transfer is complete. If I just navigate to some file, the load |
| 24 // actually happens before the iframe is transferred and all the onreadystatecha
nge |
| 25 // notifications are already queued and just fire in the new page. |
| 26 // The bug, however, deals with XHR being still in progress in the browser proce
ss, |
| 27 // so when it is done and comes back with the routing_id of the closed window, |
| 28 // it has no way of finding the original iframe and firing onreadystatechange. |
| 29 // Having this timeout theoretically can make the test occasionally produce fals
e |
| 30 // positive (if the reparenting takes longer then 1 second for example) however
this |
| 31 // is very unlikely, and it won't make test flakey (false negative). |
| 32 xhr.open('GET', '/slow?1', true); |
| 33 xhr.send(); |
| 34 window.parent.transferIframeAndCloseWindow(); |
| 35 </script> |
| 36 </head> |
| 37 <body> |
| 38 </body> |
| 39 </html> |
OLD | NEW |