blob: 1f8e2bae9c16eaf6a929bb5c36ff066a6b608515 [file] [log] [blame]
<!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/js-test.js"></script>
<script src="../../../../resources/ui-helper.js"></script>
<script>
jsTestIsAsync = true;
async function waitForTapHighlightRectToChange(fromRect)
{
let rect;
do {
rect = await UIHelper.tapHighlightViewRect();
} while (rect.top == fromRect.top && rect.left == fromRect.left && rect.width == fromRect.width && rect.height == fromRect.height);
return rect;
}
addEventListener("load", async () => {
const target1 = document.getElementById("target1");
const target2 = document.getElementById("target2");
const target3 = document.getElementById("target3");
target1.addEventListener("touchend", event => {
event.preventDefault();
});
target2.addEventListener("touchend", event => { });
description("This test verifies that tap highlights are shown when tapping on clickable elements. To run the test manually, tap on the three target buttons; a tap highlight should *not* appear over the first target, but should appear over targets 2 and 3.")
if (!window.testRunner)
return;
// Since the touch event was prevented, no tap highlight rect should be shown.
initialTapHighlightRect = await UIHelper.tapHighlightViewRect();
await UIHelper.activateElement(target1);
await UIHelper.waitForDoubleTapDelay();
lastKnownHighlightRect = await UIHelper.tapHighlightViewRect();
shouldBe("initialTapHighlightRect.left", "lastKnownHighlightRect.left");
shouldBe("initialTapHighlightRect.top", "lastKnownHighlightRect.top");
shouldBe("initialTapHighlightRect.width", "lastKnownHighlightRect.width");
shouldBe("initialTapHighlightRect.height", "lastKnownHighlightRect.height");
await UIHelper.activateElement(target2);
await UIHelper.waitForDoubleTapDelay();
lastKnownHighlightRect = await waitForTapHighlightRectToChange(lastKnownHighlightRect);
testPassed("Tap highlight shown after tapping on target 2.");
await UIHelper.activateElement(target3);
await UIHelper.waitForDoubleTapDelay();
lastKnownHighlightRect = await waitForTapHighlightRectToChange(lastKnownHighlightRect);
testPassed("Tap highlight shown after tapping on target 3.");
finishJSTest();
});
</script>
<style>
#target1 {
background-color: orange;
}
#target2 {
background-color: purple;
}
#target3 {
background-color: tomato;
}
.target {
width: 150px;
height: 50px;
margin: 3em;
display: block;
}
</style>
</head>
<body>
<button id="target1" class="target">Target 1</button>
<button id="target2" class="target">Target 2</button>
<button id="target3" class="target">Target 3</button>
<div id="console"></div>
</body>
</html>