| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| let worker; |
| |
| function createWorker() { |
| worker = new Worker("../worker/resources/worker-1.js"); |
| } |
| |
| function terminateWorker() { |
| worker.terminate(); |
| } |
| |
| function test() |
| { |
| function dumpTargets() { |
| for (let target of WI.targets) |
| InspectorTest.log(`Target - ${String(target.type)} - ${target.displayName}`); |
| } |
| |
| let suite = InspectorTest.createAsyncSuite("TargetManager"); |
| |
| suite.addTestCase({ |
| name: "TargetManager.MainTarget", |
| description: "We should always have the main target.", |
| async test() { |
| InspectorTest.assert(WI.targets === WI.targetManager.targets); |
| InspectorTest.expectEqual(WI.targets.length, 1, "Targets list should always start out with the main target."); |
| InspectorTest.expectEqual([...WI.targets][0], WI.mainTarget, "Target list should always contain the main target."); |
| InspectorTest.expectNotNull(WI.mainTarget.executionContext, "Main target should have an ExecutionContext."); |
| InspectorTest.expectEqual(WI.mainTarget.RuntimeAgent, WI.pageTarget.RuntimeAgent, "Main target should have the page target's RuntimeAgent."); |
| dumpTargets(); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "TargetManager.WorkerTarget.Create", |
| description: "Creating a Worker should create a new Worker Target.", |
| async test() { |
| InspectorTest.evaluateInPage("createWorker()"); |
| let event = await WI.targetManager.awaitEvent(WI.TargetManager.Event.TargetAdded); |
| let target = event.data.target; |
| InspectorTest.assert(target instanceof WI.Target); |
| InspectorTest.expectEqual(target.type, WI.Target.Type.Worker, "Added Target should have Worker type."); |
| InspectorTest.expectNotNull(target.executionContext, "Added Target should have an ExecutionContext."); |
| InspectorTest.expectNotNull(target.RuntimeAgent, "Added Target should have a RuntimeAgent."); |
| InspectorTest.expectNotEqual(target.RuntimeAgent, RuntimeAgent, "Added Target RuntimeAgent should not be the global RuntimeAgent."); |
| dumpTargets(); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "TargetManager.WorkerTarget.Remove", |
| description: "Creating a Worker should create a new Worker Target.", |
| async test() { |
| InspectorTest.evaluateInPage("terminateWorker()"); |
| let event = await WI.targetManager.awaitEvent(WI.TargetManager.Event.TargetRemoved); |
| let target = event.data.target; |
| InspectorTest.assert(target instanceof WI.Target); |
| InspectorTest.expectEqual(target.type, WI.Target.Type.Worker, "Removed Target should have Worker type."); |
| dumpTargets(); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Test for TargetManager and other global WI.Target objects.</p> |
| </body> |
| </html> |