blob: a3528f3c8a5756837cc78cb8146bb04bbf1c26f5 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="../../../resources/ui-helper.js"></script>
<script src="../../../resources/js-test.js"></script>
<style>
.target {
font-size: 32px;
width: 300px;
text-align: center;
}
.target-container {
margin-bottom: 1em;
}
iframe {
visibility: hidden;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
}
</style>
<script>
jsTestIsAsync = true;
description("Verifies that text can be selected using text interaction gestures, even when it is fully covered by a hidden subframe. To manually run the test, tap to focus and double tap again to select 'Banana'; then long press to select 'Apple'.");
addEventListener("load", async () => {
const topTarget = document.getElementById("top");
const bottomTarget = document.getElementById("bottom");
const bottomTargetRect = bottomTarget.getBoundingClientRect();
await UIHelper.activateElementAndWaitForInputSession(bottomTarget);
await UIHelper.doubleTapAt(bottomTargetRect.left + bottomTargetRect.width / 2, bottomTargetRect.top + bottomTargetRect.height / 2);
await new Promise(resolve => shouldBecomeEqual("getSelection().toString()", "'Banana'", resolve));
document.activeElement.blur();
await UIHelper.waitForKeyboardToHide();
await UIHelper.waitForDoubleTapDelay();
await UIHelper.longPressElement(topTarget);
await new Promise(resolve => shouldBecomeEqual("getSelection().toString()", "'Apple'", resolve));
finishJSTest();
});
</script>
</head>
<body>
<div class="target-container"><span class="target" id="top">Apple</span></div>
<div class="target-container" contenteditable><span class="target" id="bottom">Banana</span></div>
<iframe srcdoc="<body style='font-size: 100px; -webkit-user-select: none;'>The quick brown fox jumped over the lazy dog!</body>"></iframe>
</body>
</html>