drousso@apple.com | 7a1bd38 | 2018-08-17 02:37:46 +0000 | [diff] [blame] | 1 | <!doctype html> |
| 2 | <html> |
| 3 | <head> |
| 4 | <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| 5 | <script> |
| 6 | function handleLoad(event) { |
| 7 | TestPage.dispatchEventToFrontend("TestPageLoad"); |
| 8 | |
| 9 | runTest(); |
| 10 | } |
| 11 | |
| 12 | function 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.com | 422ab95 | 2018-08-23 21:36:40 +0000 | [diff] [blame] | 47 | let breakpoint = new WI.EventBreakpoint(WI.EventBreakpoint.Type.Listener, "load"); |
drousso@apple.com | 7a1bd38 | 2018-08-17 02:37:46 +0000 | [diff] [blame] | 48 | |
| 49 | WI.domDebuggerManager.awaitEvent(WI.DOMDebuggerManager.Event.EventBreakpointAdded) |
| 50 | .then((event) => { |
drousso@apple.com | 422ab95 | 2018-08-23 21:36:40 +0000 | [diff] [blame] | 51 | 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.com | 7a1bd38 | 2018-08-17 02:37:46 +0000 | [diff] [blame] | 53 | |
| 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> |