Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector-protocol / debugger / debugger-pause-dedicated-worker-loop.html
1 <html>
2 <head>
3 <script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script>
4 <script>
5
6 var worker;
7 function startWorkerAndRunTest()
8 {
9     worker = new Worker("resources/dedicated-worker-loop.js");
10     worker.onmessage = function(event)
11     {
12         if (event.data === "WorkerMessageReceived")
13             evaluateInFrontend("InspectorTest.workerMessageReceived()");
14     };
15     log("Started worker");
16     runTest();
17 }
18
19 function test()
20 {
21     var workerId;
22     var workerRequestId = 1;
23     function sendCommandToWorker(method, params)
24     {
25         InspectorTest.sendCommand("Worker.sendMessageToWorker",
26             {
27                 "workerId": workerId,
28                 "message": { "method": method,
29                              "params": params,
30                              "id": workerRequestId }
31             });
32         return workerRequestId++;
33     }
34
35     function didEnableWorkerDebugging(messageObject)
36     {
37         if ("error" in messageObject) {
38             InspectorTest.log("FAIL: Couldn't enable worker debugger: " + messageObject.error.message);
39             InspectorTest.completeTest();
40         }
41     }
42     InspectorTest.sendCommand("Worker.enable", {}, didEnableWorkerDebugging);
43
44     var evaluateRequestId = -1;
45     var debuggerEnableRequestId = -1;
46     InspectorTest.eventHandler["Worker.workerCreated"] = function(messageObject)
47     {
48         workerId = messageObject["params"]["workerId"];
49         InspectorTest.log("Worker created");
50         InspectorTest.sendCommand("Worker.connectToWorker", { "workerId": workerId }, didConnectToWorker);
51
52         function didConnectToWorker(messageObject)
53         {
54             InspectorTest.log("didConnectToWorker");
55             // Enable debugger so that V8 can interrupt and handle inspector commands while there is a script running in a tight loop.
56             debuggerEnableRequestId = sendCommandToWorker("Debugger.enable", {});
57         }
58     }
59
60     InspectorTest.workerMessageReceived = function()
61     {
62         evaluateRequestId = sendCommandToWorker("Runtime.evaluate", { "expression": "message_id > 1"});
63     }
64
65     InspectorTest.eventHandler["Worker.dispatchMessageFromWorker"] = function(messageObject)
66     {
67         var message = messageObject["params"]["message"];
68         if (message["id"] === debuggerEnableRequestId) {
69             InspectorTest.log("Did enable debugger");
70             // Start tight loop in the worker.
71             InspectorTest.sendCommand("Runtime.evaluate", { "expression": "worker.postMessage(1)" }, didPostMessageToWorker);
72             function didPostMessageToWorker()
73             {
74                 InspectorTest.log("Did post message to worker");
75             }
76         }
77         if (message["id"] === evaluateRequestId) {
78             var value = message["result"]["result"]["value"];
79             if (value === true)
80                 InspectorTest.log("SUCCESS: evaluated, result: " + value);
81             else
82                 InspectorTest.log("FAIL: evaluated, result: " + value);
83             InspectorTest.completeTest();
84         }
85     }
86 }
87 </script>
88 </head>
89 <body onLoad="startWorkerAndRunTest();">
90 </body>
91 </html>