summaryrefslogtreecommitdiffstats
path: root/accessible/tests/browser/events/browser_test_focus_browserui.js
blob: 969d336c748e4728bae48d1781b1c2198597854c (plain)
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
/* 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";

/* import-globals-from ../../mochitest/states.js */
/* import-globals-from ../../mochitest/role.js */
loadScripts(
  { name: "states.js", dir: MOCHITESTS_DIR },
  { name: "role.js", dir: MOCHITESTS_DIR }
);

async function runTests(browser, accDoc) {
  await SpecialPowers.pushPrefEnv({
    // If Fission is disabled, the pref is no-op.
    set: [["fission.bfcacheInParent", true]],
  });

  let onFocus = waitForEvent(EVENT_FOCUS, "input");
  EventUtils.synthesizeKey("VK_TAB", {}, browser.ownerGlobal);
  let evt = await onFocus;
  testStates(evt.accessible, STATE_FOCUSED);

  onFocus = waitForEvent(EVENT_FOCUS, "buttonInputDoc");
  let url = snippetToURL(`<input id="input" type="button" value="button">`, {
    contentDocBodyAttrs: { id: "buttonInputDoc" },
  });
  browser.loadURI(Services.io.newURI(url), {
    triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
  });
  evt = await onFocus;
  testStates(evt.accessible, STATE_FOCUSED);

  onFocus = waitForEvent(EVENT_FOCUS, "input");
  browser.goBack();
  evt = await onFocus;
  testStates(evt.accessible, STATE_FOCUSED);

  onFocus = waitForEvent(
    EVENT_FOCUS,
    event => event.accessible.DOMNode == gURLBar.inputField
  );
  EventUtils.synthesizeKey("t", { accelKey: true }, browser.ownerGlobal);
  evt = await onFocus;
  testStates(evt.accessible, STATE_FOCUSED);

  onFocus = waitForEvent(EVENT_FOCUS, "input");
  EventUtils.synthesizeKey("w", { accelKey: true }, browser.ownerGlobal);
  evt = await onFocus;
  testStates(evt.accessible, STATE_FOCUSED);
}

/**
 * Accessibility loading document events test.
 */
addAccessibleTask(`<input id="input">`, runTests);