forked from mirrors/gecko-dev
- 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
28 lines
963 B
JavaScript
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;
|
|
}
|
|
}
|
|
}
|