| // Copyright 2017 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| Debug = debug.Debug |
| var exception = null; |
| var log = []; |
| |
| function listener(event, exec_state, event_data, data) { |
| try { |
| if (event == Debug.DebugEvent.Break) { |
| var line = exec_state.frame(0).sourceLineText(); |
| log.push(line); |
| if (!/STOP/.test(line)) { |
| exec_state.prepareStep(Debug.StepAction.StepIn); |
| } |
| } |
| } catch (e) { |
| exception = e; |
| } |
| }; |
| |
| Debug.setListener(listener); |
| |
| function f() { |
| print(1); |
| } |
| |
| Promise.resolve().then(f).then( |
| function() { |
| return 2; |
| } |
| ).then( |
| function() { |
| throw new Error(); |
| } |
| ).catch( |
| function() { |
| print(3); |
| } // STOP |
| ); |
| |
| setTimeout(function() { |
| Debug.setListener(null); |
| assertNull(exception); |
| var expectation = |
| [" print(1);","}"," return 2;"," return 2;", |
| " throw new Error();"," print(3);","} // STOP"]; |
| assertEquals(log, expectation); |
| }); |
| |
| Debug.setBreakPoint(f, 1); |