Source code

Revision control

Copy as Markdown

Other Tools

<!DOCTYPE HTML>
<html>
<head>
<title>Hit-testing on the special setup from fixed-pos-scrolled-clip-3.html</title>
<script type="application/javascript" src="apz_test_utils.js"></script>
<script type="application/javascript" src="apz_test_native_event_utils.js"></script>
<script src="/tests/SimpleTest/paint_listener.js"></script>
<meta name="viewport" content="width=device-width"/>
<style>
body {
margin: 0;
height: 4000px;
}
.transform {
transform: translate(10px, 10px);
width: 500px;
}
.subframe {
height: 600px;
overflow: auto;
box-shadow: 0 0 0 2px black;
}
.scrolled {
height: 4000px;
position: relative;
}
.absoluteClip {
position: absolute;
top: 300px;
left: 100px;
width: 200px;
height: 200px;
background: red;
clip: rect(auto auto auto auto);
}
.fixed {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: linear-gradient(lime, lime) black 0 100px no-repeat;
background-size: 100% 200px;
}
</style>
</head>
<body>
<!-- This is lifted from layout/reftests/async-scrolling/fixed-pos-scrolled-clip-3.html -->
<div class="transform">
<div class="subframe">
<div class="scrolled">
<div class="absoluteClip">
<div class="fixed"></div>
</div>
</div>
</div>
</div>
</body>
<script type="application/javascript">
async function test() {
var config = getHitTestConfig();
var utils = config.utils;
// layerize the scrollable frame
var subframe = document.querySelector(".subframe");
utils.setDisplayPortForElement(0, 0, 800, 2000, subframe, 1);
await promiseApzFlushedRepaints();
var target = document.querySelector(".absoluteClip");
// The fixed item is fixed with respect to the transform, which is
// outside the subframe, so we should scroll the root scroll frame,
// not the subframe.
checkHitResult(hitTest(centerOf(target)),
APZHitResultFlags.VISIBLE,
utils.getViewId(document.scrollingElement),
utils.getLayersId(),
"fixed item inside a scrolling transform");
}
waitUntilApzStable()
.then(test)
.then(subtestDone, subtestFailed);
</script>
</html>