Source code

Revision control

Copy as Markdown

Other Tools

/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
/* exported recordInitialTimestamps onlyNewItemsFilter checkRecentlyClosed */
let initialTimestamps = [];
function recordInitialTimestamps(timestamps) {
initialTimestamps = timestamps;
}
function onlyNewItemsFilter(item) {
return !initialTimestamps.includes(item.lastModified);
}
function checkWindow(window) {
for (let prop of ["focused", "incognito", "alwaysOnTop"]) {
is(window[prop], false, `closed window has the expected value for ${prop}`);
}
for (let prop of ["state", "type"]) {
is(
window[prop],
"normal",
`closed window has the expected value for ${prop}`
);
}
}
function checkTab(tab, windowId, incognito) {
for (let prop of ["highlighted", "active", "pinned"]) {
is(tab[prop], false, `closed tab has the expected value for ${prop}`);
}
is(tab.windowId, windowId, "closed tab has the expected value for windowId");
is(
tab.incognito,
incognito,
"closed tab has the expected value for incognito"
);
}
function checkRecentlyClosed(
recentlyClosed,
expectedCount,
windowId,
incognito = false
) {
let sessionIds = new Set();
is(
recentlyClosed.length,
expectedCount,
"the expected number of closed tabs/windows was found"
);
for (let item of recentlyClosed) {
if (item.window) {
sessionIds.add(item.window.sessionId);
checkWindow(item.window);
} else if (item.tab) {
sessionIds.add(item.tab.sessionId);
checkTab(item.tab, windowId, incognito);
}
}
is(sessionIds.size, expectedCount, "each item has a unique sessionId");
}