Backed out changeset 7b2ffe9a4d06 (bug 1869605) for causing bc failures on browser_no...
[gecko.git] / browser / components / firefoxview / tests / browser / browser_keyboard_focus.js
blob254c315fdb8d0474d452bb926719313f3dc99a7e
1 /* Any copyright is dedicated to the Public Domain.
2  * http://creativecommons.org/publicdomain/zero/1.0/ */
4 ChromeUtils.defineESModuleGetters(globalThis, {
5   SyncedTabs: "resource://services-sync/SyncedTabs.sys.mjs",
6 });
8 const SYNCED_URI = syncedTabsData1[0].tabs[1].url;
10 add_task(async function test_keyboard_focus() {
11   await SpecialPowers.pushPrefEnv({
12     set: [["accessibility.tabfocus", 7]],
13   });
15   await withFirefoxView({}, async browser => {
16     const { document } = browser.contentWindow;
18     const sandbox = setupRecentDeviceListMocks();
19     const syncedTabsMock = sandbox.stub(SyncedTabs, "getRecentTabs");
20     let mockTabs1 = getMockTabData(syncedTabsData1);
21     syncedTabsMock.returns(mockTabs1);
23     await setupListState(browser);
25     testVisibility(browser, {
26       expectedVisible: {
27         "ol.synced-tabs-list": true,
28       },
29     });
31     let tabPickupEle = document.querySelector(".synced-tab-a");
32     document.querySelector(".page-section-header").focus();
34     EventUtils.synthesizeKey("KEY_Tab");
36     is(
37       tabPickupEle,
38       document.activeElement,
39       "The first tab pickup link is focused"
40     );
42     let newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, SYNCED_URI);
43     EventUtils.synthesizeKey("KEY_Enter");
44     await newTabPromise;
46     is(
47       SYNCED_URI,
48       gBrowser.selectedBrowser.currentURI.displaySpec,
49       "We opened the tab via keyboard"
50     );
52     let sessionStorePromise = BrowserTestUtils.waitForSessionStoreUpdate(
53       gBrowser.selectedTab
54     );
55     gBrowser.removeTab(gBrowser.selectedTab);
56     await sessionStorePromise;
58     window.FirefoxViewHandler.openTab();
60     let recentlyClosedEle = await TestUtils.waitForCondition(() =>
61       document.querySelector(".closed-tab-li-main")
62     );
63     document.querySelectorAll(".page-section-header")[1].focus();
65     EventUtils.synthesizeKey("KEY_Tab");
67     is(
68       recentlyClosedEle,
69       document.activeElement,
70       "The recently closed tab is focused"
71     );
73     newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, SYNCED_URI);
74     EventUtils.synthesizeKey("KEY_Enter");
75     await newTabPromise;
76     is(
77       SYNCED_URI,
78       gBrowser.selectedBrowser.currentURI.displaySpec,
79       "We opened the tab via keyboard"
80     );
81     gBrowser.removeTab(gBrowser.selectedTab);
83     sessionStorePromise = TestUtils.topicObserved(
84       "sessionstore-closed-objects-changed"
85     );
86     SessionStore.forgetClosedTab(window, 0);
87     await sessionStorePromise;
89     sandbox.restore();
90   });
91 });