127 lines
6.1 KiB
HTML
127 lines
6.1 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 testClickEventHandler({preventDefault}) {
|
|
savePageData({preventDefault});
|
|
|
|
let button = document.body.appendChild(document.createElement("button"));
|
|
button.addEventListener("click", (event) => {
|
|
TestPage.addResult("PASS: click handler fired" + (preventDefault ? ", will prevent default" : ""));
|
|
|
|
if (preventDefault)
|
|
event.preventDefault();
|
|
}, {once: true});
|
|
button.dispatchEvent(new MouseEvent("click", {bubbles: true, cancelable: true}));
|
|
}
|
|
|
|
function testClickEventAttributeHandler(id, {preventDefault}) {
|
|
savePageData({preventDefault});
|
|
|
|
let button = document.getElementById(id);
|
|
button.dispatchEvent(new MouseEvent("click", {bubbles: true, cancelable: true}));
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("TimelineEvent.EventDispatch");
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.EventDispatch.Handler.Regular",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testClickEventHandler({preventDefault: false})`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.EventDispatched,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.preventDefault === "boolean");
|
|
|
|
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.EventDispatched);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 EventDispatched record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + JSON.stringify(record.extraDetails));
|
|
InspectorTest.expectEqual(record.extraDetails.defaultPrevented, pageRecordingData.preventDefault, "ScriptTimelineRecord extraDetails should show default was not prevented.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.EventDispatch.Handler.DefaultPrevented",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testClickEventHandler({preventDefault: true})`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.EventDispatched,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.preventDefault === "boolean");
|
|
|
|
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.EventDispatched);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 EventDispatched record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + JSON.stringify(record.extraDetails));
|
|
InspectorTest.expectEqual(record.extraDetails.defaultPrevented, pageRecordingData.preventDefault, "ScriptTimelineRecord extraDetails should show default was prevented.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.EventDispatch.AttributeHandler.Regular",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testClickEventAttributeHandler("b1", {preventDefault: false})`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.EventDispatched,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.preventDefault === "boolean");
|
|
|
|
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.EventDispatched);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 EventDispatched record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + JSON.stringify(record.extraDetails));
|
|
InspectorTest.expectEqual(record.extraDetails.defaultPrevented, pageRecordingData.preventDefault, "ScriptTimelineRecord extraDetails should show default was not prevented.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "TimelineEvent.EventDispatch.AttributeHandler.DefaultPrevented",
|
|
async test() {
|
|
let pageRecordingData = await InspectorTest.TimelineEvent.captureTimelineWithScript({
|
|
expression: `testClickEventAttributeHandler("b2", {preventDefault: true})`,
|
|
eventType: WI.ScriptTimelineRecord.EventType.EventDispatched,
|
|
});
|
|
|
|
InspectorTest.assert(typeof pageRecordingData.preventDefault === "boolean");
|
|
|
|
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.EventDispatched);
|
|
InspectorTest.expectEqual(records.length, 1, "Should be 1 EventDispatched record.");
|
|
for (let record of records) {
|
|
InspectorTest.log("DETAILS: " + JSON.stringify(record.extraDetails));
|
|
InspectorTest.expectEqual(record.extraDetails.defaultPrevented, pageRecordingData.preventDefault, "ScriptTimelineRecord extraDetails should show default was prevented.");
|
|
}
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests 'EventDispatch' Timeline event records.</p>
|
|
<button id="b1" onclick="TestPage.addResult('PASS: b1 onclick attribute handler fired'); return true"></button>
|
|
<button id="b2" onclick="TestPage.addResult('PASS: b2 onclick attribute handler fired, will prevent default'); return false"></button>
|
|
</body>
|
|
</html>
|