49 lines
1.7 KiB
JavaScript
49 lines
1.7 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 http://mozilla.org/MPL/2.0/. */
|
|
|
|
import { EXIT_CODE } from "resource://gre/modules/BackgroundTasksManager.sys.mjs";
|
|
|
|
import { ASRouterTargeting } from "resource:///modules/asrouter/ASRouterTargeting.sys.mjs";
|
|
|
|
// Background tasks are "live" with a temporary profile that doesn't map common
|
|
// network preferences to https://mochi.test in the way that regular testing
|
|
// profiles do. Therefore, certain targeting getters will fail due to non-local
|
|
// network connections. Exclude these.
|
|
const EXCLUDED_NAMES = [
|
|
"region", // Queries Mozilla Location Services.
|
|
"needsUpdate", // Queries Balrog update server.
|
|
];
|
|
|
|
/**
|
|
* Return 0 (success) if all targeting getters succeed, 11 (failure)
|
|
* otherwise.
|
|
*/
|
|
export async function runBackgroundTask() {
|
|
let exitCode = EXIT_CODE.SUCCESS;
|
|
|
|
// Can't use `ASRouterTargeting.getEnvironmentSnapshot`, since that
|
|
// ignores errors, and this is testing that every getter succeeds.
|
|
let target = ASRouterTargeting.Environment;
|
|
let environment = {};
|
|
for (let name of Object.keys(target)) {
|
|
if (EXCLUDED_NAMES.includes(name)) {
|
|
continue;
|
|
}
|
|
|
|
try {
|
|
console.debug(`Fetching property ${name}`);
|
|
environment[name] = await target[name];
|
|
} catch (e) {
|
|
exitCode = 11;
|
|
console.error(`Caught exception for property ${name}:`, e);
|
|
}
|
|
}
|
|
|
|
console.log(`ASRouterTargeting.Environment:`, environment);
|
|
|
|
console.error(`runBackgroundTask: exiting with status ${exitCode}`);
|
|
|
|
return exitCode;
|
|
}
|