1
0
Fork 0
firefox/browser/components/tests/browser/browser_csp_violation_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

51 lines
1.9 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function test_internal_page_telemetry() {
await SpecialPowers.pushPrefEnv({
set: [["security.csp.testing.allow_internal_csp_violation", true]],
});
Services.fog.testResetFOG();
is(
Glean.security.cspViolationInternalPage.testGetValue(),
null,
`No telemetry should have been recorded yet for cspViolationInternalPage`
);
// This page's CSP should disallow inline event handlers.
const ROBOTS_URL = "chrome://browser/content/aboutRobots.xhtml";
await BrowserTestUtils.withNewTab(ROBOTS_URL, async browser => {
browser.contentDocument.documentElement.setAttribute("onclick", "foobar()");
await BrowserTestUtils.waitForEvent(
browser.contentDocument,
"securitypolicyviolation"
);
});
let testValue = Glean.security.cspViolationInternalPage.testGetValue();
is(testValue.length, 1, "Should have telemetry for one violation");
let extra = testValue[0].extra;
is(extra.directive, "script-src-attr", "violation's `directive` is correct");
is(extra.selftype, "chromeuri", "violation's `selftype` is correct");
is(extra.selfdetails, ROBOTS_URL, "violation's `selfdetails` is correct");
is(extra.sourcetype, "chromeuri", "violation's `sourcetype` is correct");
ok(
extra.sourcedetails.endsWith("/browser_csp_violation_telemetry.js"),
"violation's `sourcedetails` is correct"
);
is(extra.blockeduritype, "inline", "violation's `blockeduritype` is correct");
is(
extra.blockeduridetails,
undefined,
"violation's `blockeduridetails` is correct"
);
is(extra.linenumber, "22", "violation's `linenumber` is correct");
is(extra.columnnumber, "45", "violation's `columnnumber` is correct");
is(extra.sample, "foobar()", "violation's sample is correct");
await SpecialPowers.popPrefEnv();
});