<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
<script>
function triggerAPIScript() {
    testRunner.evaluateScriptInIsolatedWorld(0, "console.log('Log from API Evaluated Script')");
}

function test()
{
    let suite = ProtocolTest.createAsyncSuite("ScriptProfiler.EventType.API");

    suite.addTestCase({
        name: "TrackingSession",
        description: "Start a tracking session that includes an API 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 === "API", "Event type should be API.");
            });

            InspectorProtocol.awaitEvent({event: "ScriptProfiler.trackingComplete"}).then((messageObject) => {
                ProtocolTest.log("ScriptProfiler.trackingComplete");
                resolve();
            });

            InspectorProtocol.sendCommand("ScriptProfiler.startTracking", {});
            ProtocolTest.evaluateInPage("triggerAPIScript();"); // This ultimately uses the JSEvaluateScript API on the Page's context.
            InspectorProtocol.sendCommand("ScriptProfiler.stopTracking", {});
        }
    });

    // 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.API type.</p>
</body>
</html>
