1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/* 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 testIsFocusable(pyVar, isFocusable) {
const result = await runPython(`${pyVar}.CurrentIsKeyboardFocusable`);
if (isFocusable) {
ok(result, `${pyVar} is focusable`);
} else {
ok(!result, `${pyVar} isn't focusable`);
}
}
async function testHasFocus(pyVar, hasFocus) {
const result = await runPython(`${pyVar}.CurrentHasKeyboardFocus`);
if (hasFocus) {
ok(result, `${pyVar} has focus`);
} else {
ok(!result, `${pyVar} doesn't have focus`);
}
}
addUiaTask(
`
<button id="button1">button1</button>
<p id="p">p</p>
<button id="button2">button2</button>
`,
async function (browser) {
await definePyVar("doc", `getDocUia()`);
await testIsFocusable("doc", true);
await testHasFocus("doc", true);
await assignPyVarToUiaWithId("button1");
await testIsFocusable("button1", true);
await testHasFocus("button1", false);
info("Focusing button1");
await setUpWaitForUiaEvent("AutomationFocusChanged", "button1");
await invokeFocus(browser, "button1");
await waitForUiaEvent();
ok(true, "Got AutomationFocusChanged event on button1");
await testHasFocus("button1", true);
await assignPyVarToUiaWithId("p");
await testIsFocusable("p", false);
await testHasFocus("p", false);
await assignPyVarToUiaWithId("button2");
await testIsFocusable("button2", true);
await testHasFocus("button2", false);
info("Focusing button2");
await setUpWaitForUiaEvent("AutomationFocusChanged", "button2");
await invokeFocus(browser, "button2");
await waitForUiaEvent();
ok(true, "Got AutomationFocusChanged event on button2");
await testHasFocus("button2", true);
await testHasFocus("button1", false);
}
);
|