summaryrefslogtreecommitdiffstats
path: root/browser/components/firefoxview/tests/browser/browser_keyboard_focus.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/firefoxview/tests/browser/browser_keyboard_focus.js')
-rw-r--r--browser/components/firefoxview/tests/browser/browser_keyboard_focus.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/browser/components/firefoxview/tests/browser/browser_keyboard_focus.js b/browser/components/firefoxview/tests/browser/browser_keyboard_focus.js
new file mode 100644
index 0000000000..254c315fdb
--- /dev/null
+++ b/browser/components/firefoxview/tests/browser/browser_keyboard_focus.js
@@ -0,0 +1,91 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+ChromeUtils.defineESModuleGetters(globalThis, {
+ SyncedTabs: "resource://services-sync/SyncedTabs.sys.mjs",
+});
+
+const SYNCED_URI = syncedTabsData1[0].tabs[1].url;
+
+add_task(async function test_keyboard_focus() {
+ await SpecialPowers.pushPrefEnv({
+ set: [["accessibility.tabfocus", 7]],
+ });
+
+ await withFirefoxView({}, async browser => {
+ const { document } = browser.contentWindow;
+
+ const sandbox = setupRecentDeviceListMocks();
+ const syncedTabsMock = sandbox.stub(SyncedTabs, "getRecentTabs");
+ let mockTabs1 = getMockTabData(syncedTabsData1);
+ syncedTabsMock.returns(mockTabs1);
+
+ await setupListState(browser);
+
+ testVisibility(browser, {
+ expectedVisible: {
+ "ol.synced-tabs-list": true,
+ },
+ });
+
+ let tabPickupEle = document.querySelector(".synced-tab-a");
+ document.querySelector(".page-section-header").focus();
+
+ EventUtils.synthesizeKey("KEY_Tab");
+
+ is(
+ tabPickupEle,
+ document.activeElement,
+ "The first tab pickup link is focused"
+ );
+
+ let newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, SYNCED_URI);
+ EventUtils.synthesizeKey("KEY_Enter");
+ await newTabPromise;
+
+ is(
+ SYNCED_URI,
+ gBrowser.selectedBrowser.currentURI.displaySpec,
+ "We opened the tab via keyboard"
+ );
+
+ let sessionStorePromise = BrowserTestUtils.waitForSessionStoreUpdate(
+ gBrowser.selectedTab
+ );
+ gBrowser.removeTab(gBrowser.selectedTab);
+ await sessionStorePromise;
+
+ window.FirefoxViewHandler.openTab();
+
+ let recentlyClosedEle = await TestUtils.waitForCondition(() =>
+ document.querySelector(".closed-tab-li-main")
+ );
+ document.querySelectorAll(".page-section-header")[1].focus();
+
+ EventUtils.synthesizeKey("KEY_Tab");
+
+ is(
+ recentlyClosedEle,
+ document.activeElement,
+ "The recently closed tab is focused"
+ );
+
+ newTabPromise = BrowserTestUtils.waitForNewTab(gBrowser, SYNCED_URI);
+ EventUtils.synthesizeKey("KEY_Enter");
+ await newTabPromise;
+ is(
+ SYNCED_URI,
+ gBrowser.selectedBrowser.currentURI.displaySpec,
+ "We opened the tab via keyboard"
+ );
+ gBrowser.removeTab(gBrowser.selectedTab);
+
+ sessionStorePromise = TestUtils.topicObserved(
+ "sessionstore-closed-objects-changed"
+ );
+ SessionStore.forgetClosedTab(window, 0);
+ await sessionStorePromise;
+
+ sandbox.restore();
+ });
+});