100 lines
3.6 KiB
HTML
100 lines
3.6 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script src="./resources/timeline-event-utilities.js"></script>
|
|
<script>
|
|
|
|
function testSetTimeout() {
|
|
let setTimeoutIdentifier = setTimeout(() => {
|
|
TestPage.addResult("FAIL: setTimeout fired");
|
|
}, 10);
|
|
|
|
savePageData({setTimeoutIdentifier});
|
|
|
|
clearTimeout(setTimeoutIdentifier);
|
|
}
|
|
|
|
function testSetInterval() {
|
|
let count = 0;
|
|
|
|
let setIntervalIdentifier = setInterval(() => {
|
|
count++;
|
|
|
|
TestPage.addResult("PASS: setInterval fired: " + count);
|
|
|
|
if (count === 3)
|
|
clearInterval(setIntervalIdentifier);
|
|
}, 5);
|
|
|
|
savePageData({setIntervalIdentifier});
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("TimelineEvent.TimerRemove");
|
|
|
|
let timeoutIdentifier = undefined;
|
|
let intervalIdentifier = undefined;
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.TimerRemove.setTimeout",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testSetTimeout()`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.TimerRemoved,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.setTimeoutIdentifier === "number");
|
|
timeoutIdentifier = pageRecordingData.setTimeoutIdentifier;
|
|
|
|
let recording = WI.timelineManager.activeRecording;
|
|
let scriptTimeline = recording.timelines.get(WI.TimelineRecord.Type.Script);
|
|
let records = scriptTimeline.records.filter((x) => x.eventType === WI.ScriptTimelineRecord.EventType.TimerRemoved);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 TimerRemoved record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + typeof record.details);
|
|
InspectorTest.expectEqual(record.details, timeoutIdentifier, "ScriptTimelineRecord details should be the setTimeout identifier.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.TimerRemove.setInterval",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testSetInterval()`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.TimerRemoved,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.setIntervalIdentifier === "number");
|
|
intervalIdentifier = pageRecordingData.setIntervalIdentifier;
|
|
|
|
let recording = WI.timelineManager.activeRecording;
|
|
let scriptTimeline = recording.timelines.get(WI.TimelineRecord.Type.Script);
|
|
let records = scriptTimeline.records.filter((x) => x.eventType === WI.ScriptTimelineRecord.EventType.TimerRemoved);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 TimerRemoved record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + typeof record.details);
|
|
InspectorTest.expectEqual(record.details, pageRecordingData.setIntervalIdentifier, "ScriptTimelineRecord details should be the setInterval identifier.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "SanityCheck",
|
|
async test() {
|
|
InspectorTest.expectThat(timeoutIdentifier !== intervalIdentifier, "The setTimeout identifier and setInterval identifiers should be different.");
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests 'TimerRemove' Timeline event records.</p>
|
|
</body>
|
|
</html>
|