101 lines
2.3 KiB
JavaScript
101 lines
2.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
Services.scriptloader.loadSubScript(
|
|
"chrome://mochitests/content/browser/remote/cdp/test/browser/head.js",
|
|
this
|
|
);
|
|
|
|
function assertCookie(cookie, expected = {}) {
|
|
const {
|
|
name = "",
|
|
value = "",
|
|
domain = "example.org",
|
|
path = "/",
|
|
expires = -1,
|
|
size = name.length + value.length,
|
|
httpOnly = false,
|
|
secure = false,
|
|
session = true,
|
|
sameSite,
|
|
} = expected;
|
|
|
|
const expectedCookie = {
|
|
name,
|
|
value,
|
|
domain,
|
|
path,
|
|
expires,
|
|
size,
|
|
httpOnly,
|
|
secure,
|
|
session,
|
|
};
|
|
|
|
if (sameSite) {
|
|
expectedCookie.sameSite = sameSite;
|
|
}
|
|
|
|
Assert.deepEqual(cookie, expectedCookie);
|
|
}
|
|
|
|
function assertEventOrder(first, second, options = {}) {
|
|
const { ignoreTimestamps = false } = options;
|
|
|
|
const firstDescription = getDescriptionForEvent(first);
|
|
const secondDescription = getDescriptionForEvent(second);
|
|
|
|
Assert.less(
|
|
first.index,
|
|
second.index,
|
|
`${firstDescription} received before ${secondDescription})`
|
|
);
|
|
|
|
if (!ignoreTimestamps) {
|
|
Assert.lessOrEqual(
|
|
first.payload.timestamp,
|
|
second.payload.timestamp,
|
|
`Timestamp of ${firstDescription}) is earlier than ${secondDescription})`
|
|
);
|
|
}
|
|
}
|
|
|
|
function filterEventsByType(history, type) {
|
|
return history.filter(event => event.payload.type == type);
|
|
}
|
|
|
|
function getCookies() {
|
|
return Services.cookies.cookies.map(cookie => {
|
|
const data = {
|
|
name: cookie.name,
|
|
value: cookie.value,
|
|
domain: cookie.host,
|
|
path: cookie.path,
|
|
expires: cookie.isSession ? -1 : cookie.expiry,
|
|
// The size is the combined length of both the cookie name and value
|
|
size: cookie.name.length + cookie.value.length,
|
|
httpOnly: cookie.isHttpOnly,
|
|
secure: cookie.isSecure,
|
|
session: cookie.isSession,
|
|
};
|
|
|
|
if (cookie.sameSite) {
|
|
const sameSiteMap = new Map([
|
|
[Ci.nsICookie.SAMESITE_LAX, "Lax"],
|
|
[Ci.nsICookie.SAMESITE_STRICT, "Strict"],
|
|
]);
|
|
|
|
data.sameSite = sameSiteMap.get(cookie.sameSite);
|
|
}
|
|
|
|
return data;
|
|
});
|
|
}
|
|
|
|
function getDescriptionForEvent(event) {
|
|
const { eventName, payload } = event;
|
|
|
|
return `${eventName}(${payload.type || payload.name || payload.frameId})`;
|
|
}
|