Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / workers / resources / shared-worker-lifecycle.js
blobe84353af61ff3299a17d588e2eef44caf1fc8dcf
1 description("This test checks whether shared workers exit when the parent document closes");
3 if (window.testRunner) {
4     testRunner.dumpAsText();
5     testRunner.waitUntilDone();
6     waitUntilWorkerThreadsExit(runTests);
7 } else {
8     debug("NOTE: This test relies on functionality in DumpRenderTree to detect when workers have exited - test results will be incorrect when run in a browser.");
9     runTests();
12 function runTests()
14     createWorkerFrame("frame1", "worker1");
15     createWorkerFrame("frame2", "worker1,worker2");
16     createWorkerFrame("frame3", "worker3");
17     createWorkerFrame("frame4", "worker1");
19     waitUntilThreadCountMatches(closeFrame1, 3);
22 function createWorkerFrame(id, workerNames)
24     var iframe = document.createElement("iframe");
25     iframe.setAttribute("id", id);
26     iframe.setAttribute("src", "resources/create-shared-worker-frame.html?" + workerNames);
27     document.body.appendChild(iframe);
30 function closeFrame(id)
32     var frame = document.getElementById(id);
33     frame.parentNode.removeChild(frame);
36 function closeFrame1()
38     closeFrame("frame1");
39     ensureThreadCountMatches(closeFrame2, 3);
42 function closeFrame2()
44     testPassed("Frame1 closed, shared workers kept running");
45     closeFrame("frame2");
46     ensureThreadCountMatches(closeFrame3, 2);
49 function closeFrame3()
51     testPassed("Frame2 closed, shared worker2 exited");
52     closeFrame("frame3");
53     ensureThreadCountMatches(closeFrame4, 1);
56 function closeFrame4()
58     testPassed("Frame3 closed, shared worker3 exited");
59     closeFrame("frame4");
60     waitUntilWorkerThreadsExit(complete);
63 function complete()
65     testPassed("Frame4 closed, all workers closed");
66     done();