Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
*/
/* Android-only TelemetryEnvironment xpcshell test that ensures that the device data is stored in the Environment.
*/
const { TelemetryEnvironment } = ChromeUtils.importESModule(
"resource://gre/modules/TelemetryEnvironment.sys.mjs"
);
/**
* Check that a value is a string and not empty.
*
* @param aValue The variable to check.
* @return True if |aValue| has type "string" and is not empty, False otherwise.
*/
function checkString(aValue) {
return typeof aValue == "string" && aValue != "";
}
/**
* If value is non-null, check if it's a valid string.
*
* @param aValue The variable to check.
* @return True if it's null or a valid string, false if it's non-null and an invalid
* string.
*/
function checkNullOrString(aValue) {
if (aValue) {
return checkString(aValue);
} else if (aValue === null) {
return true;
}
return false;
}
/**
* If value is non-null, check if it's a boolean.
*
* @param aValue The variable to check.
* @return True if it's null or a valid boolean, false if it's non-null and an invalid
* boolean.
*/
function checkNullOrBool(aValue) {
return aValue === null || typeof aValue == "boolean";
}
function checkSystemSection(data) {
Assert.ok("system" in data, "There must be a system section in Environment.");
// Device data is only available on Android.
if (gIsAndroid) {
let deviceData = data.system.device;
Assert.ok(checkNullOrString(deviceData.model));
Assert.ok(checkNullOrString(deviceData.manufacturer));
Assert.ok(checkNullOrString(deviceData.hardware));
Assert.ok(checkNullOrBool(deviceData.isTablet));
}
}
add_task(async function test_systemEnvironment() {
let environmentData = TelemetryEnvironment.currentEnvironment;
checkSystemSection(environmentData);
});