125 lines
2.8 KiB
JavaScript
125 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Test SessionDataHelpers.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
const { SessionDataHelpers } = ChromeUtils.importESModule(
|
|
"resource://devtools/server/actors/watcher/SessionDataHelpers.sys.mjs",
|
|
{ global: "contextual" }
|
|
);
|
|
const { SUPPORTED_DATA } = SessionDataHelpers;
|
|
const { TARGETS } = SUPPORTED_DATA;
|
|
|
|
function run_test() {
|
|
const sessionData = {
|
|
[TARGETS]: [],
|
|
};
|
|
|
|
info("Test adding a new entry");
|
|
SessionDataHelpers.addOrSetSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["frame", "worker"],
|
|
"add"
|
|
);
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["frame", "worker"],
|
|
"the two elements were added"
|
|
);
|
|
|
|
info("Test adding a duplicated entry");
|
|
SessionDataHelpers.addOrSetSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["frame"],
|
|
"add"
|
|
);
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["frame", "worker"],
|
|
"addOrSetSessionDataEntry ignore duplicates"
|
|
);
|
|
|
|
SessionDataHelpers.addOrSetSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["process"],
|
|
"add"
|
|
);
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["frame", "worker", "process"],
|
|
"the third element is added"
|
|
);
|
|
|
|
info("Test removing an existing entry");
|
|
let removed = SessionDataHelpers.removeSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["process"]
|
|
);
|
|
ok(removed, "removedSessionDataEntry returned true as it removed an element");
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["frame", "worker"],
|
|
"the element has been remove"
|
|
);
|
|
|
|
info("Test removing non-existing entry");
|
|
removed = SessionDataHelpers.removeSessionDataEntry(sessionData, TARGETS, [
|
|
"not-existing",
|
|
]);
|
|
ok(
|
|
!removed,
|
|
"removedSessionDataEntry returned false as no element has been removed"
|
|
);
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["frame", "worker"],
|
|
"no change made to the array"
|
|
);
|
|
|
|
removed = SessionDataHelpers.removeSessionDataEntry(sessionData, TARGETS, [
|
|
"frame",
|
|
"worker",
|
|
]);
|
|
ok(
|
|
removed,
|
|
"removedSessionDataEntry returned true as elements have been removed"
|
|
);
|
|
deepEqual(sessionData[TARGETS], [], "all elements were removed");
|
|
|
|
info("Test settting instead of adding data entries");
|
|
SessionDataHelpers.addOrSetSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["frame"],
|
|
"add"
|
|
);
|
|
deepEqual(sessionData[TARGETS], ["frame"], "frame was re-added");
|
|
|
|
SessionDataHelpers.addOrSetSessionDataEntry(
|
|
sessionData,
|
|
TARGETS,
|
|
["process", "worker"],
|
|
"set"
|
|
);
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
["process", "worker"],
|
|
"frame was replaced by process and worker"
|
|
);
|
|
|
|
info("Test setting an empty array");
|
|
SessionDataHelpers.addOrSetSessionDataEntry(sessionData, TARGETS, [], "set");
|
|
deepEqual(
|
|
sessionData[TARGETS],
|
|
[],
|
|
"Setting an empty array of entries clears the data entry"
|
|
);
|
|
}
|