<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<style>
div {
width: 100px;
height: 100px;
background-color: green;
}
div > div {
background-color: red;
}
.paintContainment {
contain: paint;
margin: 10px;
}
#transform {
transform: translateZ(0) translateX(100px);
}
#absolute {
position: absolute;
top: 0px;
left: 100px;
}
#fixed {
position: fixed;
top: 0px;
left: 100px;
}
</style>
<body id="body">
<p>Hit testing should respect clips established by contain: paint.</p>
<div id="containTransform" class="paintContainment">
<div id="transform"></div>
</div>
<div id="containAbsolute" class="paintContainment">
<div id="absolute"></div>
</div>
<div id="containFixed" class="paintContainment">
<div id="fixed"></div>
</div>
<script>
function hitTestCenterOfElement(elementID)
{
var element = document.getElementById(elementID);
var rect = element.getBoundingClientRect();
var centerX = rect.left + (rect.width / 2);
var centerY = rect.top + (rect.height / 2);
return document.elementFromPoint(centerX, centerY).id;
}
test(function(t)
{
assert_equals(hitTestCenterOfElement("containTransform"), "containTransform");
assert_equals(hitTestCenterOfElement("containAbsolute"), "containAbsolute");
assert_equals(hitTestCenterOfElement("containFixed"), "containFixed");
assert_equals(hitTestCenterOfElement("transform"), "body");
assert_equals(hitTestCenterOfElement("absolute"), "body");
assert_equals(hitTestCenterOfElement("fixed"), "body");
}, "Hit testing should respect clips established by contain: paint.");
</script>