forked from mirrors/gecko-dev
Gijs for front-end bits, layout for the new CSS properties and the removal of nsDeckFrame / nsStackLayout, Jamie and Morgan for the a11y changes. As discussed in the bug, the main tricky part here is handling a11y correctly. For <deck>, that's trivial (just use `visibility: hidden` to hide the panels visually, while removing the unselected panels from the a11y tree). For <tabpanels> however we need to do something special. We do want to hide stuff visually, but we want to preserve the contents in the a11y tree. For that, the easiest fix is introducing a new privileged CSS property (-moz-subtree-hidden-only-visually), which takes care of not painting the frame, but marks stuff offscreen in the accessibility tree. This is not intended to be a property used widely. Other than that, the changes are relatively straight-forward, though some of the accessible/mac changes I could get a sanity-check on. Differential Revision: https://phabricator.services.mozilla.com/D157875
57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
/**
|
|
* Tests that the right elements of a tab are focused when it is
|
|
* torn out into its own window.
|
|
*/
|
|
|
|
const URIS = [
|
|
"about:blank",
|
|
"about:home",
|
|
"about:sessionrestore",
|
|
"about:privatebrowsing",
|
|
];
|
|
|
|
add_task(async function() {
|
|
for (let uri of URIS) {
|
|
let tab = BrowserTestUtils.addTab(gBrowser);
|
|
BrowserTestUtils.loadURI(tab.linkedBrowser, uri);
|
|
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
|
|
let win = gBrowser.replaceTabWithWindow(tab);
|
|
|
|
let contentPainted = Promise.resolve();
|
|
// In the e10s case, we wait for the content to first paint before we focus
|
|
// the URL in the new window, to optimize for content paint time.
|
|
if (tab.linkedBrowser.isRemoteBrowser) {
|
|
contentPainted = BrowserTestUtils.waitForContentEvent(
|
|
tab.linkedBrowser,
|
|
"MozAfterPaint"
|
|
);
|
|
}
|
|
|
|
await TestUtils.topicObserved(
|
|
"browser-delayed-startup-finished",
|
|
subject => subject == win
|
|
);
|
|
await contentPainted;
|
|
tab = win.gBrowser.selectedTab;
|
|
|
|
Assert.equal(
|
|
win.gBrowser.currentURI.spec,
|
|
uri,
|
|
uri + ": uri loaded in detached tab"
|
|
);
|
|
|
|
const expectedActiveElement = tab.isEmpty
|
|
? win.gURLBar.inputField
|
|
: win.gBrowser.selectedBrowser;
|
|
Assert.equal(
|
|
win.document.activeElement,
|
|
expectedActiveElement,
|
|
`${uri}: the active element is expected: ${win.document.activeElement?.nodeName}`
|
|
);
|
|
Assert.equal(win.gURLBar.value, "", uri + ": urlbar is empty");
|
|
Assert.ok(win.gURLBar.placeholder, uri + ": placeholder text is present");
|
|
|
|
await BrowserTestUtils.closeWindow(win);
|
|
}
|
|
});
|