blob: e70bb655bc515c17c470dd23221947e4833a557f [file] [log] [blame]
drousso@apple.com7a1bd382018-08-17 02:37:46 +00001<!doctype html>
2<html>
3<head>
4<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
5<script>
6function handleLoad(event) {
7 TestPage.dispatchEventToFrontend("TestPageLoad");
8
9 runTest();
10}
11
12function test() {
13 let suite = InspectorTest.createAsyncSuite("DOMDebugger.EventWithNavigation");
14
15 suite.addTestCase({
16 name: `DOMDebugger.EventWithNavigation.AddBreakpoint`,
17 description: "Check that a breakpoint is preserved over navigation.",
18 test(resolve, reject) {
19 let paused = false;
20
21 let listener = WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Paused, (event) => {
22 paused = true;
23
24 let targetData = WI.debuggerManager.dataForTarget(WI.debuggerManager.activeCallFrame.target);
25 InspectorTest.expectEqual(targetData.pauseReason, WI.DebuggerManager.PauseReason.EventListener, "Pause reason should be EventListener.");
26 InspectorTest.expectEqual(targetData.pauseData.eventName, "load", "Pause data eventName should be \"load\".");
27
28 WI.debuggerManager.resume()
29 .catch((reason) => {
30 InspectorTest.fail(reason);
31 resolve();
32 });
33 });
34
35 InspectorTest.singleFireEventListener("TestPageLoad", (event) => {
36 if (!paused) {
37 WI.debuggerManager.removeEventListener(WI.DebuggerManager.Event.Paused, listener);
38
39 InspectorTest.fail("Should pause before \"load\" event handler is run");
40 }
41
42 resolve();
43 });
44
45 InspectorTest.log("Adding \"load\" Event Breakpoint...");
46
drousso@apple.com422ab952018-08-23 21:36:40 +000047 let breakpoint = new WI.EventBreakpoint(WI.EventBreakpoint.Type.Listener, "load");
drousso@apple.com7a1bd382018-08-17 02:37:46 +000048
49 WI.domDebuggerManager.awaitEvent(WI.DOMDebuggerManager.Event.EventBreakpointAdded)
50 .then((event) => {
drousso@apple.com422ab952018-08-23 21:36:40 +000051 InspectorTest.assert(event.data.breakpoint.type === WI.EventBreakpoint.Type.Listener, "Breakpoint should be for expected type.");
52 InspectorTest.assert(event.data.breakpoint.eventName === "load", "Breakpoint should be for expected event name.");
drousso@apple.com7a1bd382018-08-17 02:37:46 +000053
54 InspectorTest.log("Reloading WebInspector...");
55 return InspectorTest.reloadPage();
56 })
57 .catch(reject);
58
59 WI.domDebuggerManager.addEventBreakpoint(breakpoint);
60 },
61 teardown(resolve, reject) {
62 let breakpoints = WI.domDebuggerManager.eventBreakpoints;
63 for (let breakpoint of breakpoints)
64 WI.domDebuggerManager.removeEventBreakpoint(breakpoint);
65
66 resolve();
67 },
68 });
69
70 suite.runTestCasesAndFinish();
71}
72</script>
73</head>
74<body>
75 <p>Tests for Event Listener breakpoints.</p>
76 <div id="x"></div>
77 <script>
78 window.addEventListener("load", handleLoad);
79 </script>
80</body>
81</html>