| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] --> |
| <html> |
| <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> |
| <head> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script src="../../../resources/js-test.js"></script> |
| <style> |
| body { |
| margin: 0; |
| } |
| |
| #absolute { |
| width: 100vw; |
| height: 50px; |
| position: absolute; |
| left: 0; |
| top: 0; |
| font-size: 100px; |
| } |
| |
| #content { |
| background-image: linear-gradient(blue, red); |
| height: 10000px; |
| } |
| </style> |
| <script> |
| jsTestIsAsync = true; |
| |
| function selectTextAt(tapX, tapY) |
| { |
| return new Promise(resolve => { |
| testRunner.runUIScript(` |
| (function() { |
| uiController.longPressAtPoint(${tapX}, ${tapY}, function() { |
| uiController.uiScriptComplete("Done"); |
| }); |
| })();`, resolve); |
| }); |
| } |
| |
| function run() |
| { |
| if (!window.testRunner || !testRunner.runUIScript) { |
| description("To manually test, long press this text and scroll up. The selection rect should be in the expected place (in the absolutely positioned div) after scrolling."); |
| return; |
| } |
| |
| selectTextAt(50, 50) |
| .then(() => UIHelper.getUISelectionRects()) |
| .then((rects) => { |
| initialSelectionRects = rects; |
| shouldBe("initialSelectionRects.length", "1"); |
| shouldBe("initialSelectionRects[0].left", "0"); |
| shouldBe("initialSelectionRects[0].top", "2"); |
| shouldBe("initialSelectionRects[0].width", "309"); |
| shouldBe("initialSelectionRects[0].height", "112"); |
| document.scrollingElement.scrollTop += 5000; |
| return UIHelper.getUISelectionRects(); |
| }) |
| .then((rects) => { |
| finalSelectionRects = rects; |
| shouldBe("finalSelectionRects.length", "1"); |
| shouldBe("finalSelectionRects[0].left", "0"); |
| shouldBe("finalSelectionRects[0].top", "2"); |
| shouldBe("finalSelectionRects[0].width", "309"); |
| shouldBe("finalSelectionRects[0].height", "112"); |
| finishJSTest(); |
| }); |
| } |
| </script> |
| </head> |
| <body onload=run()> |
| <div id="absolute">WebKit</div> |
| <div id="content"></div> |
| </body> |
| </html> |