86 lines
2.8 KiB
JavaScript
86 lines
2.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
async function testIsControl(pyVar, isControl) {
|
|
const result = await runPython(`bool(${pyVar}.CurrentIsControlElement)`);
|
|
if (isControl) {
|
|
ok(result, `${pyVar} is a control element`);
|
|
} else {
|
|
ok(!result, `${pyVar} isn't a control element`);
|
|
}
|
|
}
|
|
|
|
addUiaTask(
|
|
`
|
|
<p id="p">paragraph</p>
|
|
<div id="div">div</div>
|
|
<!-- The spans are because the UIA -> IA2 proxy seems to remove a single text
|
|
leaf child from even the raw tree.
|
|
-->
|
|
<a id="link" href="#">link<span> </span>></a>
|
|
<h1 id="h1">h1<span> </span></h1>
|
|
<h1 id="h1WithDiv"><div>h1 with div<span> </span></div></h1>
|
|
<input id="range" type="range">
|
|
<div onclick=";" id="clickable">clickable</div>
|
|
<div id="editable" contenteditable>editable</div>
|
|
<table id="table"><tr><th>th</th></tr></table>
|
|
`,
|
|
async function () {
|
|
await definePyVar("doc", `getDocUia()`);
|
|
await assignPyVarToUiaWithId("p");
|
|
await testIsControl("p", false);
|
|
await definePyVar(
|
|
"pTextLeaf",
|
|
`uiaClient.RawViewWalker.GetFirstChildElement(p)`
|
|
);
|
|
await testIsControl("pTextLeaf", true);
|
|
await assignPyVarToUiaWithId("div");
|
|
await testIsControl("div", false);
|
|
await definePyVar(
|
|
"divTextLeaf",
|
|
`uiaClient.RawViewWalker.GetFirstChildElement(div)`
|
|
);
|
|
await testIsControl("divTextLeaf", true);
|
|
await assignPyVarToUiaWithId("link");
|
|
await testIsControl("link", true);
|
|
await assignPyVarToUiaWithId("range");
|
|
await testIsControl("range", true);
|
|
await assignPyVarToUiaWithId("editable");
|
|
await testIsControl("editable", true);
|
|
await assignPyVarToUiaWithId("table");
|
|
await testIsControl("table", true);
|
|
if (!gIsUiaEnabled) {
|
|
// The remaining tests are broken with the UIA -> IA2 proxy.
|
|
return;
|
|
}
|
|
await definePyVar(
|
|
"linkTextLeaf",
|
|
`uiaClient.RawViewWalker.GetFirstChildElement(link)`
|
|
);
|
|
await testIsControl("linkTextLeaf", false);
|
|
await assignPyVarToUiaWithId("h1");
|
|
await testIsControl("h1", true);
|
|
await definePyVar(
|
|
"h1TextLeaf",
|
|
`uiaClient.RawViewWalker.GetFirstChildElement(h1)`
|
|
);
|
|
await testIsControl("h1TextLeaf", false);
|
|
await assignPyVarToUiaWithId("h1WithDiv");
|
|
await testIsControl("h1WithDiv", true);
|
|
// h1WithDiv's text leaf is its grandchild.
|
|
await definePyVar(
|
|
"h1WithDivTextLeaf",
|
|
`uiaClient.RawViewWalker.GetFirstChildElement(
|
|
uiaClient.RawViewWalker.GetFirstChildElement(
|
|
h1WithDiv
|
|
)
|
|
)`
|
|
);
|
|
await testIsControl("h1WithDivTextLeaf", false);
|
|
await assignPyVarToUiaWithId("clickable");
|
|
await testIsControl("clickable", true);
|
|
}
|
|
);
|