| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <head> |
| <script src="../../../resources/js-test.js"></script> |
| <script src="../../../resources/ui-helper.js"></script> |
| <meta name=viewport content="width=device-width, initial-scale=1"> |
| <style> |
| body, html { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| } |
| |
| h1 { |
| font-size: 40px; |
| } |
| |
| #target { |
| border: solid tomato 1px; |
| padding: 2px; |
| } |
| |
| iframe { |
| width: 300px; |
| height: 100px; |
| } |
| </style> |
| <script> |
| jsTestIsAsync = true; |
| subFrameLoaded = true; |
| |
| description("This test verifies that subframe navigation does not dismiss the edit menu. This test requires WebKitTestRunner."); |
| |
| addEventListener("load", async () => { |
| const subframe = document.querySelector("iframe"); |
| subframe.addEventListener("load", () => { subFrameLoaded = true; }); |
| subframe.srcdoc = "<p>subframe before reload</p>"; |
| await shouldBecomeEqual("subFrameLoaded", "true"); |
| |
| if (!window.testRunner) |
| return; |
| |
| const target = document.getElementById("target"); |
| await UIHelper.activateElementAndWaitForInputSession(target); |
| document.execCommand("SelectAll", true); |
| testPassed("Selected text"); |
| |
| await UIHelper.activateElement(target); |
| await UIHelper.waitForMenuToShow(); |
| |
| subframe.srcdoc = `<p>subframe after reloading</p>`; |
| await UIHelper.delayFor(800); |
| |
| if (await UIHelper.isShowingMenu()) |
| testPassed("Menu is still showing"); |
| else |
| testFailed("Menu is no longer showing"); |
| |
| finishJSTest(); |
| }); |
| </script> |
| </head> |
| <body> |
| <h1 contenteditable><span id="target">Select</span> me</h1> |
| <div><iframe></iframe></div> |
| <div id="description"></div> |
| <div id="console"></div> |
| </body> |
| </html> |