Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Errors
- This test gets skipped with pattern: os == 'win'
- This test failed 83 times in the preceding 30 days. quicksearch this test
- Manifest: layout/base/tests/mochitest.toml
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<script src="/tests/SimpleTest/paint_listener.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
<style>
iframe {
width: 100vw;
height: 100vh;
border: none;
}
</style>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test"></pre>
<iframe></iframe>
</body>
<script>
// Open a new document in an iframe with enabling accessible-carets.
add_setup(async () => {
await SpecialPowers.pushPrefEnv({
set: [
["layout.accessiblecaret.enabled", true],
["layout.accessiblecaret.enabled_on_touch", true],
],
});
await SpecialPowers.spawnChrome([], async () => {
browsingContext.touchEventsOverride = "enabled";
});
const iframe = document.querySelector("iframe");
const loadPromise = new Promise(resolve => {
iframe.addEventListener("load", () => resolve());
});
iframe.src = "helper_re_enable_apz_on_blur.html";
await loadPromise;
});
add_task(async () => {
const iframe = document.querySelector("iframe");
// Setup a selectionchange event listner in the iframe.
const selectionchangePromise = SpecialPowers.spawn(iframe, [], () => {
return new Promise(resolve => {
content.document.querySelector("textarea").
addEventListener("selectionchange", () => resolve());
});
});
// To make sure the listener has been setup in the iframe context.
await SpecialPowers.spawn(iframe, [], async () => {
await new Promise(resolve => resolve());
});
async function isApzDisabled() {
return SpecialPowers.spawn(iframe, [], () => {
return SpecialPowers.DOMWindowUtils.isApzDisabledForElement(
content.document.querySelector("textarea"));
});
}
ok(!await isApzDisabled(), "APZ is not disabled on the textarea");
// Tap on the text area in the iframe.
synthesizeTouch(iframe, 10, 10, { type: "touchstart" });
synthesizeTouch(iframe, 10, 10, { type: "touchend" });
await selectionchangePromise;
ok(await isApzDisabled(), "Now APZ is disabled on the textarea");
// Now blur the focus from the textarea.
await SpecialPowers.spawn(iframe, [], async () => {
const target = content.document.querySelector("textarea");
const blurPromise = new Promise(resolve => {
target.addEventListener("blur", () => resolve());
});
target.blur();
await blurPromise;
});
ok(!await isApzDisabled(), "Now APZ is re-enabled on the textarea");
});
</script>
</html>