blob: bf86ee8605bbd578c851b668ba345cbfebfd2332 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
.square {
-webkit-box-align: center;
-webkit-user-select: none;
background-color: blue;
color: red;
display: -webkit-box;
font-weight: bold;
height: 128px;
left: 700px;
position: absolute;
text-align: center;
top: 105%; /* Position the element such that we must scroll to it. */
width: 128px;
}
.square:hover {
background-color: yellow;
}
</style>
</head>
<body>
<p>This test can be used to verify that we don't temporarily remove the CSS hover style between the touchend and click events when finger-pressing and -releasing on the same element that is positioned outside the visible content area initially. Perform the following:</p>
<ol>
<li>Scroll the page until the blue square is visible.</li>
<li>Tap on the blue square.</li>
</ol>
<p>This test PASSED if there are three PASS messages followed by TEST COMPLETE below; otherwise, it FAILED.</p>
<div id="square" class="square">Tap me then scroll up to see results</div>
<pre id="console"></pre>
<script>
function addOrRemoveEventListeners(element, shouldAddListeners)
{
var functionToCall = shouldAddListeners == undefined || shouldAddListeners ? "addEventListener" : "removeEventListener";
element[functionToCall]("touchstart", checkHoverState, true);
element[functionToCall]("touchend", checkHoverState, true);
element[functionToCall]("click", checkHoverState, true);
}
function log(message)
{
document.getElementById("console").appendChild(document.createTextNode(message + "\n"));
}
function testElementBackgroundColor(element, eventType, expectedResult)
{
var actualResult = window.getComputedStyle(square, null).backgroundColor;
if (actualResult === expectedResult)
log("PASS, backgroundColor on " + eventType + " is " + expectedResult + ".");
else
log("FAIL, backgroundColor on " + eventType + " should be " + expectedResult + ". Was " + actualResult + ".");
}
function checkHoverState(e)
{
testElementBackgroundColor(square, e.type, "rgb(255, 255, 0)" /* Yellow */);
if (e.type === "click") {
addOrRemoveEventListeners(square, false /* Remove event listeners */);
log("TEST COMPLETE");
}
}
var square = document.getElementById("square");
addOrRemoveEventListeners(square);
</script>
</body>
</html>