88 lines
3.1 KiB
HTML
88 lines
3.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/protocol-test.js"></script>
|
|
<script>
|
|
function triggerProgrammaticCapture(message) {
|
|
console.profile();
|
|
console.log(`Inside ${message} profile`);
|
|
console.profileEnd();
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let suite = ProtocolTest.createAsyncSuite("Timeline.setInstruments.programmatic-capture");
|
|
|
|
let heapExpected = false;
|
|
let captureStopped = null;
|
|
|
|
InspectorProtocol.sendCommand("Heap.enable");
|
|
InspectorProtocol.sendCommand("Timeline.enable");
|
|
|
|
InspectorProtocol.eventHandler["Timeline.recordingStarted"] = () => {
|
|
ProtocolTest.pass("Timeline.recordingStarted");
|
|
};
|
|
InspectorProtocol.eventHandler["Timeline.recordingStopped"] = () => {
|
|
ProtocolTest.pass("Timeline.recordingStopped");
|
|
captureStopped();
|
|
};
|
|
|
|
InspectorProtocol.eventHandler["ScriptProfiler.trackingStart"] = () => {
|
|
ProtocolTest.pass("ScriptProfiler.startTracking");
|
|
};
|
|
|
|
InspectorProtocol.eventHandler["Heap.trackingStart"] = () => {
|
|
if (heapExpected)
|
|
ProtocolTest.pass("Heap.trackingStart");
|
|
else
|
|
ProtocolTest.fail("Unexpected Heap.trackingStart");
|
|
};
|
|
|
|
suite.addTestCase({
|
|
name: "NoInstrumentsProgrammaticCapture",
|
|
test(resolve, reject) {
|
|
heapExpected = false;
|
|
captureStopped = resolve;
|
|
|
|
InspectorProtocol.sendCommand("Timeline.setInstruments", {instruments: []}, (messageObject) => {
|
|
ProtocolTest.expectThat(!messageObject.error, "Should not be an error setting valid instruments.");
|
|
});
|
|
ProtocolTest.evaluateInPage("triggerProgrammaticCapture('NoInstrumentsProgrammaticCapture')");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "MultipleInstrumentsProgrammaticCapture",
|
|
test(resolve, reject) {
|
|
heapExpected = true;
|
|
captureStopped = resolve;
|
|
|
|
InspectorProtocol.sendCommand("Timeline.setInstruments", {instruments: ["ScriptProfiler", "Heap"]}, (messageObject) => {
|
|
ProtocolTest.expectThat(!messageObject.error, "Should not be an error setting valid instruments.");
|
|
});
|
|
ProtocolTest.evaluateInPage("triggerProgrammaticCapture('MultipleInstrumentsProgrammaticCapture')");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "NoInstrumentsProgrammaticCaptureAgain",
|
|
test(resolve, reject) {
|
|
heapExpected = true;
|
|
captureStopped = resolve;
|
|
|
|
InspectorProtocol.sendCommand("Timeline.setInstruments", {instruments: []}, (messageObject) => {
|
|
ProtocolTest.expectThat(!messageObject.error, "Should not be an error setting valid instruments.");
|
|
});
|
|
ProtocolTest.evaluateInPage("triggerProgrammaticCapture('NoInstrumentsProgrammaticCaptureAgain')");
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests programmatic capture (console.profile/profileEnd) automatically starts instruments set via Timeline.setInstruments.</p>
|
|
</body>
|
|
</html>
|