blob: 47dfece904762fcfbb2451311fc0ba8ed5476ed2 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Removed Document Fragment Touch Target</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
position: absolute;
top: 10px;
left: 10px;
width: 50px;
height: 50px;
border: 1px solid green;
}
.target {
width: 40px;
height: 40px;
background-color: red;
}
#results {
position: absolute;
top: 100px;
}
</style>
<script src="resources/misc-touch-helpers.js"></script>
<script>
var seenTouch = false;
// While this isn't a particularly nice approach to the solution,
// it is a direct copy from the original bug report.
function createElementsFromString(input) {
var div = document.createElement("div");
div.innerHTML = input;
var children = div.children;
var fragment = document.createDocumentFragment();
for (var i = 0, length = children.length; i < length; i++) {
fragment.appendChild(children[0])
}
return fragment.firstChild;
}
function targetTouched(event) {
logTouch(event);
if (!seenTouch) {
seenTouch = true;
debug("Now remove the element from its parent and attempt to touch it again. This touch should not register.");
var target = document.querySelector(".target");
target.parentNode.removeChild(target);
tapSoon(20, 20);
// Wait 50ms to see if the touch was registered. If it was, then we'll be exiting below.
setTimeout(function () {
debug("PASSED. We did not see a second touch.");
if (window.testRunner)
testRunner.notifyDone();
}, 50);
} else {
debug("FAILED. We saw a second touch.");
if (window.testRunner)
testRunner.notifyDone();
}
}
function init() {
var target = createElementsFromString("<div class='target'>This is the <strong>touch target</strong>.</div>");
target.addEventListener("touchstart", targetTouched, false);
var container = document.querySelector(".container");
container.appendChild(target);
debug("Should see a single touch at 20,20");
tapSoon(20, 20);
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
window.addEventListener("load", init, false);
</script>
</head>
<body>
<div class="container">
</div>
<div id="results">
</div>
</body>
</html>