<!DOCTYPE html>
<style>
.animate {
transform: scale(2);
transition: transform 0.1s;
}
#box {
position: absolute;
z-index: 1;
top: 200px;
left: 200px;
width: 50px;
height: 50px;
background-color: blue;
}
</style>
<p id="description">
This test verifies the hit test regions are updated correctly when composited
layer are created and destroyed without triggering layout update during fast
path animation.
</p>
<div id="box"></div>
<div id='console' style='display:none;'></div>
<script src="../../../resources/js-test.js"></script>
<script src="resources/compositor-touch-hit-rects.js"></script>
<script>
jsTestIsAsync = true;
window.onload = () => {
const box = document.getElementById("box");
box.addEventListener('touchstart', () => {}, false);
// Box is not composited so its touch rect is on document.
internals.forceCompositingUpdate(document);
logRects(box, true);
// Animating scale causes the element to get composited layer and the touch
// rect will get attached to this new layer.
box.classList.add('animate');
internals.forceCompositingUpdate(document);
logRects(box, true);
box.addEventListener('transitionend', () => {
// Wait one frame for compositing state to get clear. Use setTimeout to
// prevent setting rAF callback for the current frame.
setTimeout(() => {
window.requestAnimationFrame(() => {
// Ending animation destroys the composited layer without causing any
// layout. The touch rect should be attached to the document.
logRects(box, true);
document.getElementById('console').style.display = 'block';
finishJSTest();
});
}, 0);
});
};
</script>