1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const NETWORK_RUNTIME_HOST = "localhost:6080";
const NETWORK_RUNTIME_APP_NAME = "TestNetworkApp";
const WORKER_NAME = "testserviceworker";
// Test that navigating from:
// - a remote runtime page that contains a service worker
// to:
// - this firefox
// does not crash. See Bug 1519088.
add_task(async function () {
const mocks = new Mocks();
const { document, tab, window } = await openAboutDebugging({
enableWorkerUpdates: true,
});
await selectThisFirefoxPage(document, window.AboutDebugging.store);
info("Prepare Network client mock");
const networkClient = mocks.createNetworkRuntime(NETWORK_RUNTIME_HOST, {
name: NETWORK_RUNTIME_APP_NAME,
});
info("Connect and select the network runtime");
await connectToRuntime(NETWORK_RUNTIME_HOST, document);
await selectRuntime(NETWORK_RUNTIME_HOST, NETWORK_RUNTIME_APP_NAME, document);
info(`Add a service worker to the network client`);
const workers = {
otherWorkers: [],
serviceWorkers: [
{
name: WORKER_NAME,
workerDescriptorFront: { actorID: WORKER_NAME },
},
],
sharedWorkers: [],
};
networkClient.listWorkers = () => workers;
networkClient._eventEmitter.emit("workersUpdated");
info("Wait until the service worker is displayed");
await waitUntil(() => findDebugTargetByText(WORKER_NAME, document));
info("Go to This Firefox again");
const thisFirefoxString = getThisFirefoxString(window);
const thisFirefoxSidebarItem = findSidebarItemByText(
thisFirefoxString,
document
);
const thisFirefoxLink =
thisFirefoxSidebarItem.querySelector(".qa-sidebar-link");
info("Click on the ThisFirefox item in the sidebar");
const requestsSuccess = waitForRequestsSuccess(window.AboutDebugging.store);
thisFirefoxLink.click();
info("Wait for all target requests to complete");
await requestsSuccess;
info("Check that the runtime info is rendered for This Firefox");
const thisFirefoxRuntimeInfo = document.querySelector(".qa-runtime-name");
ok(
thisFirefoxRuntimeInfo,
"Runtime info for this-firefox runtime is displayed"
);
const text = thisFirefoxRuntimeInfo.textContent;
ok(
text.includes("Firefox") && text.includes("63.0"),
"this-firefox runtime info shows the correct values"
);
await removeTab(tab);
});
|