fune/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_sidebar.js
Tim Huang 273718709f Bug 1732475 - Closing unused windows for the test browser_privatebrowsing_sidebar.js. r=pbz
The test used to create a lot of windows and close them at once when the
test ends. This behavior consumes lots of memory and could cause OOM
issue.

To avoid that, we can close unused windows during the test so that the
memory consumption can be reduced for the test.

Differential Revision: https://phabricator.services.mozilla.com/D152499
2022-07-25 09:14:02 +00:00

88 lines
2.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// This test makes sure that Sidebars do not migrate across windows with
// different privacy states
// See Bug 885054: https://bugzilla.mozilla.org/show_bug.cgi?id=885054
function test() {
waitForExplicitFinish();
// opens a sidebar
function openSidebar(win) {
return win.SidebarUI.show("viewBookmarksSidebar").then(() => win);
}
let windowCache = [];
function cacheWindow(w) {
windowCache.push(w);
return w;
}
function closeCachedWindows() {
windowCache.forEach(w => w.close());
}
// Part 1: NON PRIVATE WINDOW -> PRIVATE WINDOW
openWindow(window, {}, 1)
.then(cacheWindow)
.then(openSidebar)
.then(win => openWindow(win, { private: true }))
.then(cacheWindow)
.then(function({ document }) {
let sidebarBox = document.getElementById("sidebar-box");
is(
sidebarBox.hidden,
true,
"Opening a private window from reg window does not open the sidebar"
);
})
.then(closeCachedWindows)
// Part 2: NON PRIVATE WINDOW -> NON PRIVATE WINDOW
.then(() => openWindow(window))
.then(cacheWindow)
.then(openSidebar)
.then(win => openWindow(win))
.then(cacheWindow)
.then(function({ document }) {
let sidebarBox = document.getElementById("sidebar-box");
is(
sidebarBox.hidden,
false,
"Opening a reg window from reg window does open the sidebar"
);
})
.then(closeCachedWindows)
// Part 3: PRIVATE WINDOW -> NON PRIVATE WINDOW
.then(() => openWindow(window, { private: true }))
.then(cacheWindow)
.then(openSidebar)
.then(win => openWindow(win))
.then(cacheWindow)
.then(function({ document }) {
let sidebarBox = document.getElementById("sidebar-box");
is(
sidebarBox.hidden,
true,
"Opening a reg window from a private window does not open the sidebar"
);
})
.then(closeCachedWindows)
// Part 4: PRIVATE WINDOW -> PRIVATE WINDOW
.then(() => openWindow(window, { private: true }))
.then(cacheWindow)
.then(openSidebar)
.then(win => openWindow(win, { private: true }))
.then(cacheWindow)
.then(function({ document }) {
let sidebarBox = document.getElementById("sidebar-box");
is(
sidebarBox.hidden,
false,
"Opening a private window from private window does open the sidebar"
);
})
.then(closeCachedWindows)
.then(finish);
}