diff options
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_QuarantinedDomains_telemetry.js')
-rw-r--r-- | toolkit/components/extensions/test/xpcshell/test_QuarantinedDomains_telemetry.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_QuarantinedDomains_telemetry.js b/toolkit/components/extensions/test/xpcshell/test_QuarantinedDomains_telemetry.js new file mode 100644 index 0000000000..c18785b3d6 --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_QuarantinedDomains_telemetry.js @@ -0,0 +1,99 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +AddonTestUtils.init(this); +AddonTestUtils.createAppInfo( + "xpcshell@tests.mozilla.org", + "XPCShell", + "1", + "43" +); + +ChromeUtils.defineESModuleGetters(this, { + computeSha1HashAsString: "resource://gre/modules/addons/crypto-utils.sys.mjs", + QuarantinedDomains: "resource://gre/modules/ExtensionPermissions.sys.mjs", +}); + +add_setup(() => { + setupTelemetryForTests(); +}); + +add_task(async function test_QuarantinedDomainsList_telemetry() { + const cleanupPrefs = () => { + Services.prefs.clearUserPref(QuarantinedDomains.PREF_DOMAINSLIST_NAME); + }; + registerCleanupFunction(cleanupPrefs); + + const assertDomainsListTelemetry = ({ prefValue, expected }) => { + resetTelemetryData(); + Services.prefs.setStringPref( + QuarantinedDomains.PREF_DOMAINSLIST_NAME, + prefValue + ); + Assert.deepEqual( + { + listsize: QuarantinedDomains.currentDomainsList.set.size, + listhash: QuarantinedDomains.currentDomainsList.hash, + }, + expected, + "Got the expected domains list data computed for the probes" + ); + Assert.deepEqual( + { + listsize: Glean.extensionsQuarantinedDomains.listsize.testGetValue(), + listhash: Glean.extensionsQuarantinedDomains.listhash.testGetValue(), + }, + expected, + "Got the expected computed domains list probes recorded by the Glean metrics" + ); + const scalars = Services.telemetry.getSnapshotForScalars().parent; + Assert.deepEqual( + { + listsize: scalars?.["extensions.quarantinedDomains.listsize"], + listhash: scalars?.["extensions.quarantinedDomains.listhash"], + }, + expected, + "Got the expected metrics mirrored into the unified telemetry scalars" + ); + }; + + let prefValue; + + info("Verify Glean 'Quarantined Domains list' probes on empty domain list"); + prefValue = ""; + assertDomainsListTelemetry({ + prefValue, + expected: { + listsize: 0, + listhash: computeSha1HashAsString(prefValue), + }, + }); + + info( + "Verify Glean 'Quarantined Domains list' probes on non-empty domain list" + ); + prefValue = "example.com,example.org"; + assertDomainsListTelemetry({ + prefValue, + expected: { + listsize: 2, + listhash: computeSha1HashAsString(prefValue), + }, + }); + + info( + "Verify Glean 'Quarantined Domains list' probes on non-empty domain list with duplicated domains" + ); + prefValue = "example.com,example.org, example.org, example.com "; + assertDomainsListTelemetry({ + prefValue, + expected: { + listsize: 2, + listhash: computeSha1HashAsString(prefValue), + }, + }); + + cleanupPrefs(); +}); |