summaryrefslogtreecommitdiffstats
path: root/browser/components/messagepreview/actors/AboutMessagePreviewChild.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--browser/components/messagepreview/actors/AboutMessagePreviewChild.sys.mjs58
1 files changed, 58 insertions, 0 deletions
diff --git a/browser/components/messagepreview/actors/AboutMessagePreviewChild.sys.mjs b/browser/components/messagepreview/actors/AboutMessagePreviewChild.sys.mjs
new file mode 100644
index 0000000000..15c100328b
--- /dev/null
+++ b/browser/components/messagepreview/actors/AboutMessagePreviewChild.sys.mjs
@@ -0,0 +1,58 @@
+/* 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 { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
+
+export class AboutMessagePreviewChild extends JSWindowActorChild {
+ handleEvent(event) {
+ console.log(`Received page event ${event.type}`);
+ }
+
+ actorCreated() {
+ this.exportFunctions();
+ }
+
+ exportFunctions() {
+ if (this.contentWindow) {
+ for (const name of ["MPShowMessage", "MPIsEnabled", "MPShouldShowHint"]) {
+ Cu.exportFunction(this[name].bind(this), this.contentWindow, {
+ defineAs: name,
+ });
+ }
+ }
+ }
+
+ /**
+ * Check if the Message Preview feature is enabled. This reflects the value of
+ * the pref `browser.newtabpage.activity-stream.asrouter.devtoolsEnabled`.
+ *
+ * @returns {boolean}
+ */
+ MPIsEnabled() {
+ return Services.prefs.getBoolPref(
+ "browser.newtabpage.activity-stream.asrouter.devtoolsEnabled",
+ false
+ );
+ }
+
+ /**
+ * Route a message to the parent process to be displayed with the relevant
+ * messaging surface.
+ *
+ * @param {object} message
+ */
+ MPShowMessage(message) {
+ this.sendAsyncMessage(`MessagePreview:SHOW_MESSAGE`, message);
+ }
+
+ /**
+ * Check if a hint should be shown about how to enable Message Preview. The
+ * hint is only displayed in local/unofficial builds.
+ *
+ * @returns {boolean}
+ */
+ MPShouldShowHint() {
+ return !this.MPIsEnabled() && !AppConstants.MOZILLA_OFFICIAL;
+ }
+}