Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_URL =
async function validateTelemetryValues(
{ setCookies, setForeigns, setPartitioneds, setForeignPartitioneds },
message
) {
await Services.fog.testFlushAllChildren();
let setCookieTelemetry = Glean.networking.setCookie.testGetValue();
is(
setCookieTelemetry ?? undefined,
setCookies,
message + " - all set cookies"
);
let foreignTelemetry = Glean.networking.setCookieForeign.testGetValue();
is(
foreignTelemetry?.numerator,
setForeigns,
message + " - foreign set cookies"
);
is(
foreignTelemetry?.denominator,
setCookies,
message + " - foreign set cookies denominator"
);
let partitonedTelemetry =
Glean.networking.setCookiePartitioned.testGetValue();
is(
partitonedTelemetry?.numerator,
setPartitioneds,
message + " - partitioned set cookies"
);
is(
partitonedTelemetry?.denominator,
setCookies,
message + " - partitioned set cookies denominator"
);
let foreignPartitonedTelemetry =
Glean.networking.setCookieForeignPartitioned.testGetValue();
is(
foreignPartitonedTelemetry?.numerator,
setForeignPartitioneds,
message + " - foreign partitioned set cookies"
);
is(
foreignPartitonedTelemetry?.denominator,
setCookies,
message + " - foreign partitioned set cookies denominator"
);
}
add_task(async () => {
await Services.fog.testFlushAllChildren();
Services.fog.testResetFOG();
await validateTelemetryValues({}, "initially empty");
// open a browser window for the test
let tab = BrowserTestUtils.addTab(gBrowser, TEST_URL);
let browser = gBrowser.getBrowserForTab(tab);
await BrowserTestUtils.browserLoaded(browser);
// Set cookies with Javascript
await SpecialPowers.spawn(browser, [], function () {
content.document.cookie = "a=1; Partitioned; SameSite=None; Secure";
content.document.cookie = "b=2; SameSite=None; Secure";
});
await validateTelemetryValues(
{
setCookies: 2,
setForeigns: 0,
setPartitioneds: 1,
setForeignPartitioneds: 0,
},
"javascript cookie"
);
// Set cookies with HTTP
await SpecialPowers.spawn(browser, [], async function () {
await content.fetch("partitioned.sjs");
});
await validateTelemetryValues(
{
setCookies: 4,
setForeigns: 0,
setPartitioneds: 2,
setForeignPartitioneds: 0,
},
"same site fetch"
);
// Set cookies with cross-site HTTP
await SpecialPowers.spawn(browser, [], async function () {
await content.fetch(
{ credentials: "include" }
);
});
await validateTelemetryValues(
{
setCookies: 6,
setForeigns: 2,
setPartitioneds: 3,
setForeignPartitioneds: 1,
},
"foreign fetch"
);
// Set cookies with cross-site HTTP redirect
await SpecialPowers.spawn(browser, [], async function () {
await content.fetch(
encodeURI(
),
{ credentials: "include" }
);
});
await validateTelemetryValues(
{
setCookies: 8,
setForeigns: 4,
setPartitioneds: 4,
setForeignPartitioneds: 2,
},
"foreign fetch redirect"
);
// remove the tab
gBrowser.removeTab(tab);
});