Bug 1813980: Check IsDoc before Parent in RemoteAccessibleBase::ApplyCrossDocOffset. r=morgan
We call this function on every ancestor when calculating bounds.
RemoteParent() currently requires a hash lookup, so it's more efficient to early return for !IsDoc() first.
This is a micro-optimisation, but it might have some impact given that we call this on every ancestor, especially when hit testing, where we call Bounds() a lot.
As a bit of drive-by cleanup, use RemoteParent() rather than calling Parent() and IsRemote/AsRemote().
Differential Revision:
https://phabricator.services.mozilla.com/D168346
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0">
<title>Touch-action on a zero-opacity element</title>
<script type="application/javascript" src="apz_test_native_event_utils.js"></script>
<script type="application/javascript" src="apz_test_utils.js"></script>
<script src="/tests/SimpleTest/paint_listener.js"></script>
<script type="application/javascript">
async function test() {
var target = document.getElementById("target");
let touchEndPromise = promiseTouchEnd(document.body);
// drag the page up to scroll down by 50px
ok(await synthesizeNativeTouchDrag(target, 10, 100, 0, -50),
"Synthesized native vertical drag, waiting for touch-end event...");
await touchEndPromise;
await promiseOnlyApzControllerFlushed();
is(window.scrollX, 0, "X scroll offset didn't change");
is(window.scrollY, 0, "Y scroll offset didn't change");
}
waitUntilApzStable()
.then(test)
.then(subtestDone, subtestFailed);
</script>
</head>
<body style="border: solid 1px green">
<div id="spacer" style="height: 2000px">
Inside the black border is a zero-opacity touch-action none.
<div id="border" style="border: solid 1px black">
<div style="opacity: 0; height: 300px;">
<div style="transform:translate(0px)">
<div id="target" style="height: 300px; touch-action: none">this text shouldn't be visible</div>
</div>
</div>
</div>
</div>
</body>
</html>