summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug427559.js
blob: 78cecdefae10ab3ac6858185767763f94d3cc9c9 (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
"use strict";

/*
 * Test bug 427559 to make sure focused elements that are no longer on the page
 * will have focus transferred to the window when changing tabs back to that
 * tab with the now-gone element.
 */

// Default focus on a button and have it kill itself on blur.
const URL = 'data:text/html;charset=utf-8,' +
            '<body><button onblur="this.remove()">' +
            '<script>document.body.firstChild.focus()</script></body>';

function getFocusedLocalName(browser) {
  return ContentTask.spawn(browser, null, function* () {
    return content.document.activeElement.localName;
  });
}

add_task(function* () {
  let testTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, URL);

  let browser = testTab.linkedBrowser;

  is((yield getFocusedLocalName(browser)), "button", "button is focused");

  let blankTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank");

  yield BrowserTestUtils.switchTab(gBrowser, testTab);

  // Make sure focus is given to the window because the element is now gone.
  is((yield getFocusedLocalName(browser)), "body", "body is focused");

  // Cleanup.
  gBrowser.removeTab(blankTab);
  gBrowser.removeCurrentTab();

});