fune/toolkit/actors/UserCharacteristicsParent.sys.mjs
Tom Ritter c816dcfce3 Bug 1882422: Use a local testing page to return complex data and make use of it in C++-land r=peterv
- Create a local page we will access via an about: URL
- In that page, demonstrate how to do some stuff, then fire a custom event
  indicating its stuff is done _and_ return complex data in that event.
  console.log() didn't seem to be visible in the HiddenWindow, so I also
  piped out debug strings for development purposes, so they can be
  console.logged in the Service, where we can see them.
- Instead of listening for DOMContentLoaded/pageshow, instead listen for
  the new CustomEvent.
- In UserCharacteristicsPageService, receive the data from the page and
  populate the appropriate Glean metrics
- Refactor the calling of nsUserCharacteristics::PopulateData() and
  SubmitPing().  Now we call PopulateDataAndEventuallySubmit() which will
  eventually call SubmitPing after our promise is resolved.
- To make it a little cleaner (so ContentPageStuff() isn't calling
  SubmitPing()) we return the promise out of ContentPageStuff() that
  PopulateDataAndEventuallySubmit() will await and then call SubmitPing()
  when that promise resolves

Differential Revision: https://phabricator.services.mozilla.com/D203055
2024-04-03 23:43:17 +00:00

34 lines
1.1 KiB
JavaScript

/* -*- 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 https://mozilla.org/MPL/2.0/. */
import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
ChromeUtils.defineLazyGetter(lazy, "console", () => {
return console.createInstance({
prefix: "UserCharacteristicsPage",
maxLogLevelPref: "toolkit.telemetry.user_characteristics_ping.logLevel",
});
});
XPCOMUtils.defineLazyServiceGetter(
lazy,
"UserCharacteristicsPageService",
"@mozilla.org/user-characteristics-page;1",
"nsIUserCharacteristicsPageService"
);
export class UserCharacteristicsParent extends JSWindowActorParent {
receiveMessage(aMessage) {
lazy.console.debug("Got ", aMessage.name);
if (aMessage.name == "UserCharacteristics::PageReady") {
lazy.console.debug("Got pageReady");
lazy.UserCharacteristicsPageService.pageLoaded(
this.browsingContext,
aMessage.data
);
}
}
}