Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
*/
// Enable the collection (during test) for all products so even products
// that don't collect the data will be able to run the test without failure.
Services.prefs.setBoolPref(
"toolkit.telemetry.testing.overrideProductsCheck",
true
);
add_setup(async function test_setup() {
// Addon manager needs a profile directory
do_get_profile();
});
add_task(async function test_register_twice_fails() {
TelemetryController.registerSyncPingShutdown(() => {});
Assert.throws(
() => TelemetryController.registerSyncPingShutdown(() => {}),
/The sync ping shutdown handler is already registered./
);
await TelemetryController.testReset();
});
add_task(async function test_reset_clears_handler() {
await TelemetryController.testSetup();
TelemetryController.registerSyncPingShutdown(() => {});
await TelemetryController.testReset();
// If this works the reset must have cleared it.
TelemetryController.registerSyncPingShutdown(() => {});
await TelemetryController.testReset();
});
add_task(async function test_shutdown_handler_submits() {
let handlerCalled = false;
await TelemetryController.testSetup();
TelemetryController.registerSyncPingShutdown(() => {
handlerCalled = true;
// and submit a ping.
let ping = {
why: "shutdown",
};
TelemetryController.submitExternalPing("sync", ping);
});
await TelemetryController.testShutdown();
Assert.ok(handlerCalled);
await TelemetryController.testReset();
});
add_task(async function test_shutdown_handler_no_submit() {
let handlerCalled = false;
await TelemetryController.testSetup();
TelemetryController.registerSyncPingShutdown(() => {
handlerCalled = true;
// but don't submit a ping.
});
await TelemetryController.testShutdown();
Assert.ok(handlerCalled);
});
// NB: The last test in this file *must not* restart TelemetryController, or it
// will cause intermittent timeouts for this test.