| <!doctype html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <script> |
| function triggerScriptEvaluation() { |
| let script = document.createElement("script"); |
| script.textContent = "console.log('<script> script evaluation')"; |
| document.body.appendChild(script); |
| } |
| |
| function triggerEventDispatchEvaluation() { |
| let button = document.createElement("button"); |
| button.addEventListener("click", () => { console.log("'click' event dispatched"); }); |
| button.click(); |
| } |
| |
| function triggerTimerEvaluation() { |
| setTimeout(() => { |
| console.log("timer fired"); |
| TestPage.dispatchEventToFrontend("TestPageTimerEvaluated"); |
| }, 0); |
| } |
| |
| function test() |
| { |
| let suite = ProtocolTest.createAsyncSuite("ScriptProfiler.EventType.Microtask"); |
| |
| suite.addTestCase({ |
| name: "TrackingSession", |
| description: "Start a tracking session that includes multiple web script evaluations classified as an Other event type.", |
| test(resolve, reject) { |
| InspectorProtocol.awaitEvent({event: "ScriptProfiler.trackingStart"}) |
| .then((messageObject) => { |
| ProtocolTest.log("ScriptProfiler.trackingStart"); |
| }); |
| |
| InspectorProtocol.addEventListener("ScriptProfiler.trackingUpdate", (messageObject) => { |
| ProtocolTest.log("ScriptProfiler.trackingUpdate"); |
| ProtocolTest.expectThat(messageObject.params.event.type === "Other", "Event type should be Other."); |
| }); |
| |
| InspectorProtocol.awaitEvent({event: "ScriptProfiler.trackingComplete"}) |
| .then((messageObject) => { |
| ProtocolTest.log("ScriptProfiler.trackingComplete"); |
| }) |
| .then(resolve, reject); |
| |
| ProtocolTest.awaitEvent("TestPageTimerEvaluated") |
| .then((event) => { |
| InspectorProtocol.sendCommand("ScriptProfiler.stopTracking", {}); |
| }); |
| |
| InspectorProtocol.sendCommand("ScriptProfiler.startTracking", {}); |
| ProtocolTest.evaluateInPage("triggerScriptEvaluation()"); |
| ProtocolTest.evaluateInPage("triggerEventDispatchEvaluation()"); |
| ProtocolTest.evaluateInPage("triggerTimerEvaluation()"); |
| } |
| }); |
| |
| // FIXME: <https://webkit.org/b/155851> Web Inspector: We should separate out attaching the debugger from the Debugger.enable event |
| // Debugger should not need to be enabled for profiling to work. |
| InspectorProtocol.sendCommand("Debugger.enable", {}); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Tests for generating a ScriptProfiler.Event with ScriptProfiler.EventType.Other type. Web script evaluations are classified as "Other".</p> |
| </body> |
| </html> |