Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
/* import-globals-from helper-telemetry.js */
Services.scriptloader.loadSubScript(
CHROME_URL_ROOT + "helper-telemetry.js",
this
);
const NETWORK_RUNTIME = {
host: "localhost:1234",
// No device name for network runtimes.
name: "Local Network Runtime",
};
/**
* Test runtime update events for network runtimes.
*/
add_task(async function testNetworkRuntimeUpdates() {
// enable USB devices mocks
const mocks = new Mocks();
setupTelemetryTest();
const { tab, document } = await openAboutDebugging();
const sessionId = getOpenEventSessionId();
ok(!isNaN(sessionId), "Open event has a valid session id");
info("Add a network runtime");
await addNetworkRuntime(NETWORK_RUNTIME, mocks, document);
// Before the connection, we don't have any information about the runtime.
// Device information is also not available to network runtimes.
const networkRuntimeExtras = {
connection_type: "network",
device_name: "",
runtime_name: "",
};
// Once connected we should be able to log a valid runtime name.
const connectedNetworkRuntimeExtras = Object.assign(
{},
networkRuntimeExtras,
{
runtime_name: NETWORK_RUNTIME.name,
}
);
// For network runtimes, we don't have any device information, so we shouldn't have any
// device_added event.
checkTelemetryEvents(
[{ method: "runtime_added", extras: networkRuntimeExtras }],
sessionId
);
await connectToRuntime(NETWORK_RUNTIME.host, document);
checkTelemetryEvents(
[
{ method: "runtime_connected", extras: connectedNetworkRuntimeExtras },
{ method: "connection_attempt", extras: { status: "start" } },
{ method: "connection_attempt", extras: { status: "success" } },
],
sessionId
);
info("Remove network runtime");
mocks.removeRuntime(NETWORK_RUNTIME.host);
await waitUntil(() => !findSidebarItemByText(NETWORK_RUNTIME.host, document));
// Similarly we should not have any device removed event.
checkTelemetryEvents(
[
{ method: "runtime_disconnected", extras: connectedNetworkRuntimeExtras },
{ method: "runtime_removed", extras: networkRuntimeExtras },
],
sessionId
);
await removeTab(tab);
});
async function addNetworkRuntime(runtime, mocks, doc) {
mocks.createNetworkRuntime(runtime.host, {
name: runtime.name,
});
info("Wait for the Network Runtime to appear in the sidebar");
await waitUntil(() => findSidebarItemByText(runtime.host, doc));
}