1
0
Fork 0
firefox/netwerk/cookie/test/browser/browser_partitioned_telemetry.js
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

134 lines
3.6 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_URL =
"https://example.com/browser/netwerk/cookie/test/browser/file_empty.html";
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(
"https://example.org/browser/netwerk/cookie/test/browser/partitioned.sjs",
{ 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(
"https://example.org/browser/netwerk/cookie/test/browser/partitioned.sjs?redirect=https://example.com/browser/netwerk/cookie/test/browser/partitioned.sjs?nocookie"
),
{ credentials: "include" }
);
});
await validateTelemetryValues(
{
setCookies: 8,
setForeigns: 4,
setPartitioneds: 4,
setForeignPartitioneds: 2,
},
"foreign fetch redirect"
);
// remove the tab
gBrowser.removeTab(tab);
});