fune/toolkit/actors/UserCharacteristicsChild.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

28 lines
963 B
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/. */
const lazy = {};
ChromeUtils.defineLazyGetter(lazy, "console", () => {
return console.createInstance({
prefix: "UserCharacteristicsPage",
maxLogLevelPref: "toolkit.telemetry.user_characteristics_ping.logLevel",
});
});
export class UserCharacteristicsChild extends JSWindowActorChild {
handleEvent(event) {
lazy.console.debug("Got ", event.type);
switch (event.type) {
case "UserCharacteristicsDataDone":
lazy.console.debug("creating IdleDispatch");
ChromeUtils.idleDispatch(() => {
lazy.console.debug("sending PageReady");
this.sendAsyncMessage("UserCharacteristics::PageReady", event.detail);
});
break;
}
}
}