| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script src="../resources/log-pause-location.js"></script> |
| <script> |
| function entry() { |
| debugger; |
| alert(1); |
| alert(2); // Set an autoContinue breakpoint on this line. |
| alert(3); |
| } |
| |
| // --------- |
| |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Debugger.StepThroughAutoContinueBreakpoint"); |
| |
| suite.addTestCase({ |
| name: "StepThroughAutoContinueBreakpoint", |
| description: "Stepping through statements should still work after encountering an autoContinue breakpoint.", |
| test(resolve, reject) { |
| // Set autoContinue breakpoint. |
| let script = WI.networkManager.mainFrame.mainResource.scripts[0]; |
| var location = script.createSourceCodeLocation(8, 0); |
| var breakpoint = new WI.Breakpoint(location); |
| breakpoint.autoContinue = true; |
| breakpoint.createAction(WI.BreakpointAction.Type.Evaluate, null, "alert(1.5);"); |
| WI.debuggerManager.addBreakpoint(breakpoint); |
| |
| // Step through the breakpoint. |
| InspectorTest.evaluateInPage("setTimeout(entry)"); |
| WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Paused, (event) => { |
| InspectorTest.log(`PAUSED (${WI.debuggerManager.dataForTarget(WI.debuggerManager.activeCallFrame.target).pauseReason})`); |
| }); |
| WI.debuggerManager.addEventListener(WI.DebuggerManager.Event.CallFramesDidChange, (event) => { |
| if (!WI.debuggerManager.activeCallFrame) |
| return; |
| logPauseLocation(); |
| WI.debuggerManager.stepInto(); |
| }); |
| WI.debuggerManager.singleFireEventListener(WI.DebuggerManager.Event.Resumed, (event) => { |
| InspectorTest.log("RESUMED"); |
| resolve(); |
| }); |
| } |
| }); |
| |
| loadMainPageContent().then(() => { |
| suite.runTestCasesAndFinish(); |
| }); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Ensure stepping works through an autoContinue breakpoint.</p> |
| </body> |
| </html> |