Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

var tab;
function test() {
waitForExplicitFinish();
// Force-enable tab animations
gReduceMotionOverride = false;
tab = BrowserTestUtils.addTab(gBrowser);
isnot(
tab.getAttribute("fadein"),
"true",
"newly opened tab is yet to fade in"
);
// Try to remove the tab right before the opening animation's first frame
window.requestAnimationFrame(checkAnimationState);
}
function checkAnimationState() {
is(tab.getAttribute("fadein"), "true", "tab opening animation initiated");
info(window.getComputedStyle(tab).maxWidth);
gBrowser.removeTab(tab, { animate: true });
if (!tab.parentNode) {
ok(
true,
"tab removed synchronously since the opening animation hasn't moved yet"
);
finish();
return;
}
info(
"tab didn't close immediately, so the tab opening animation must have started moving"
);
info("waiting for the tab to close asynchronously");
tab.addEventListener(
"TabAnimationEnd",
function listener() {
executeSoon(function () {
ok(!tab.parentNode, "tab removed asynchronously");
finish();
});
},
{ once: true }
);
}