| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <iframe id=testIframe></iframe> |
| <script> |
| var notifyTest = async_test("Test that async event dispatch to detached frame is gracefully handled."); |
| |
| function changeOrientationAndDetach() { |
| // Dispatch an orientationchange event; this is handled asynchronously, |
| // queueing a task/timer to do the actual dispatch. |
| testRunner.setMockScreenOrientation('portrait-secondary'); |
| |
| // Detach the iframe while the event dispatch is in-flight. If |
| // the screen orientation controller is finalized during the |
| // detach, the async event dispatch just after will be treated |
| // like a no-op -- there's no controller to handle the dispatch. |
| document.body.removeChild(testIframe); |
| setTimeout(function () { notifyTest.done(); }, 0); |
| } |
| notifyTest.step(function () { |
| // Force the creation of a ScreenOrientation and register it |
| // with the controller, so that orientationchange events are sent. |
| var currentType = window.screen.orientation.type; |
| testIframe.src = "resources/iframe-listen-orientation-change-detach.html"; |
| }); |
| </script> |
| </body> |
| </html> |