From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/browser_ext_contentscript_in_parent.js | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_contentscript_in_parent.js (limited to 'browser/components/extensions/test/browser/browser_ext_contentscript_in_parent.js') diff --git a/browser/components/extensions/test/browser/browser_ext_contentscript_in_parent.js b/browser/components/extensions/test/browser/browser_ext_contentscript_in_parent.js new file mode 100644 index 0000000000..5a8bbcb589 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_contentscript_in_parent.js @@ -0,0 +1,101 @@ +"use strict"; + +const TELEMETRY_EVENT = "security#javascriptLoad#parentProcess"; + +add_task(async function test_contentscript_telemetry() { + // Turn on telemetry and reset it to the previous state once the test is completed. + // const telemetryCanRecordBase = Services.telemetry.canRecordBase; + // Services.telemetry.canRecordBase = true; + // SimpleTest.registerCleanupFunction(() => { + // Services.telemetry.canRecordBase = telemetryCanRecordBase; + // }); + + function background() { + browser.test.onMessage.addListener(async msg => { + if (msg !== "execute") { + return; + } + browser.tabs.executeScript({ + file: "execute_script.js", + allFrames: true, + matchAboutBlank: true, + runAt: "document_start", + }); + + await browser.userScripts.register({ + js: [{ file: "user_script.js" }], + matches: [""], + matchAboutBlank: true, + allFrames: true, + runAt: "document_start", + }); + + await browser.contentScripts.register({ + js: [{ file: "content_script.js" }], + matches: [""], + matchAboutBlank: true, + allFrames: true, + runAt: "document_start", + }); + + browser.test.sendMessage("executed"); + }); + } + + let extensionData = { + manifest: { + permissions: ["tabs", ""], + user_scripts: {}, + }, + background, + files: { + // Fail if this ever executes. + "execute_script.js": 'browser.test.fail("content-script-run");', + "user_script.js": 'browser.test.fail("content-script-run");', + "content_script.js": 'browser.test.fail("content-script-run");', + }, + }; + + function getSecurityEventCount() { + let snap = Services.telemetry.getSnapshotForKeyedScalars(); + return snap.parent["telemetry.event_counts"][TELEMETRY_EVENT] || 0; + } + + let tab = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "about:preferences" + ); + is( + getSecurityEventCount(), + 0, + `No events recorded before startup: ${TELEMETRY_EVENT}.` + ); + + let extension = ExtensionTestUtils.loadExtension(extensionData); + + await extension.startup(); + is( + getSecurityEventCount(), + 0, + `No events recorded after startup: ${TELEMETRY_EVENT}.` + ); + + extension.sendMessage("execute"); + await extension.awaitMessage("executed"); + + // Do another load. + BrowserTestUtils.removeTab(tab); + tab = await BrowserTestUtils.openNewForegroundTab( + gBrowser, + "about:preferences" + ); + + BrowserTestUtils.removeTab(tab); + await extension.unload(); + + is( + getSecurityEventCount(), + 0, + `No events recorded after executeScript: ${TELEMETRY_EVENT}.` + ); +}); -- cgit v1.2.3