blob: 959402a8853461c74ea1397f985ad3a79482c826 [file] [log] [blame]
<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true ] -->
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="../../../resources/ui-helper.js"></script>
<script src="../../../resources/js-test.js"></script>
<style>
body, html {
width: 100%;
height: 100%;
margin: 0;
}
#editor {
width: 320px;
height: 200px;
border: solid 1px tomato;
margin-top: 100px;
}
.big {
font-size: 24px;
}
</style>
<script>
jsTestIsAsync = true;
if (window.testRunner) {
testRunner.setAllowedMenuActions(["Embiggen"]);
testRunner.installCustomMenuAction("Embiggen", false, () => document.querySelector("#editor").classList.add("big"));
}
addEventListener("load", runTest);
async function runTest() {
description("This test verifies that interacting with a menu action item on iOS that is marked with 'dontDismiss' does not cause the callout menu to dismiss, even if the action changes the selection. To test manually, select the text and tap an item in the callout menu that shouldn't automatically dismiss the menu but changes the selection rects (for instance, Bold). Verify that the callout menu remains visible after tapping this item.");
await UIHelper.activateElementAndWaitForInputSession(editor);
await UIHelper.keyDown("a", ["metaKey"]);
let grabberRect = {};
while (!grabberRect.width && !grabberRect.height)
grabberRect = await UIHelper.getSelectionEndGrabberViewRect();
centerX = rect => rect.left + rect.width / 2;
centerY = rect => rect.top + rect.height / 2;
await UIHelper.activateAt(centerX(grabberRect), centerY(grabberRect));
await UIHelper.waitForMenuToShow();
await UIHelper.chooseMenuAction("Embiggen");
selectionRects = null;
while (!selectionRects || selectionRects.length != 2)
selectionRects = await UIHelper.getUISelectionViewRects();
dismissingMenu = await UIHelper.isDismissingMenu();
showingMenu = await UIHelper.isShowingMenu();
shouldBe("selectionRects[0].top", "102");
shouldBe("selectionRects[0].width", "320");
shouldBe("selectionRects[0].left", "1");
shouldBe("selectionRects[0].height", "28");
shouldBe("selectionRects[1].top", "130");
shouldBe("selectionRects[1].width", "172");
shouldBe("selectionRects[1].left", "1");
shouldBe("selectionRects[1].height", "30");
shouldBe("dismissingMenu", "false");
shouldBe("showingMenu", "true");
finishJSTest();
}
</script>
</head>
<body>
<div id="editor" contenteditable>The quick brown fox jumped over the lazy dog.</div>
<div id="description"></div>
<div id="console"></div>
</body>
</html>