diff options
Diffstat (limited to 'browser/actors/AboutPrivateBrowsingChild.sys.mjs')
-rw-r--r-- | browser/actors/AboutPrivateBrowsingChild.sys.mjs | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/browser/actors/AboutPrivateBrowsingChild.sys.mjs b/browser/actors/AboutPrivateBrowsingChild.sys.mjs new file mode 100644 index 0000000000..1433c9cb79 --- /dev/null +++ b/browser/actors/AboutPrivateBrowsingChild.sys.mjs @@ -0,0 +1,64 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import { RemotePageChild } from "resource://gre/actors/RemotePageChild.sys.mjs"; + +const lazy = {}; + +ChromeUtils.defineESModuleGetters(lazy, { + NimbusFeatures: "resource://nimbus/ExperimentAPI.sys.mjs", + ExperimentAPI: "resource://nimbus/ExperimentAPI.sys.mjs", +}); + +export class AboutPrivateBrowsingChild extends RemotePageChild { + actorCreated() { + super.actorCreated(); + let window = this.contentWindow; + + Cu.exportFunction(this.PrivateBrowsingRecordClick.bind(this), window, { + defineAs: "PrivateBrowsingRecordClick", + }); + Cu.exportFunction( + this.PrivateBrowsingShouldHideDefault.bind(this), + window, + { + defineAs: "PrivateBrowsingShouldHideDefault", + } + ); + Cu.exportFunction(this.PrivateBrowsingEnableNewLogo.bind(this), window, { + defineAs: "PrivateBrowsingEnableNewLogo", + }); + Cu.exportFunction( + this.PrivateBrowsingExposureTelemetry.bind(this), + window, + { defineAs: "PrivateBrowsingExposureTelemetry" } + ); + } + + PrivateBrowsingRecordClick(source) { + const experiment = lazy.ExperimentAPI.getExperimentMetaData({ + featureId: "pbNewtab", + }); + if (experiment) { + Services.telemetry.recordEvent("aboutprivatebrowsing", "click", source); + } + return experiment; + } + + PrivateBrowsingShouldHideDefault() { + const config = lazy.NimbusFeatures.pbNewtab.getAllVariables() || {}; + return config?.content?.hideDefault; + } + + PrivateBrowsingEnableNewLogo() { + return lazy.NimbusFeatures.majorRelease2022.getVariable( + "feltPrivacyPBMNewLogo" + ); + } + + PrivateBrowsingExposureTelemetry() { + lazy.NimbusFeatures.pbNewtab.recordExposureEvent({ once: false }); + } +} |