michael@0: // An onPop handler in a disabled Debugger's frame shouldn't fire. michael@0: michael@0: var g = newGlobal(); michael@0: var dbg = new Debugger(g); michael@0: g.eval('function f() { debugger; }'); michael@0: var log; michael@0: dbg.onEnterFrame = function handleEnterFrame(f) { michael@0: log += '('; michael@0: assertEq(f.callee.name, 'f'); michael@0: f.onPop = function handlePop(c) { michael@0: log += ')'; michael@0: assertEq(dbg.enabled, true); michael@0: }; michael@0: }; michael@0: michael@0: var enable; michael@0: dbg.onDebuggerStatement = function handleDebugger(f) { michael@0: dbg.enabled = enable; michael@0: } michael@0: michael@0: michael@0: // This should fire the onEnterFrame and onPop handlers. michael@0: log = 'a'; michael@0: enable = true; michael@0: g.f(); michael@0: michael@0: // This should fire the onEnterFrame handler, but not the onPop. michael@0: log += 'b'; michael@0: enable = false; michael@0: g.f(); michael@0: michael@0: // This should fire neither. michael@0: log += 'c'; michael@0: dbg.enabled = false; michael@0: enable = false; michael@0: g.f(); michael@0: michael@0: // This should fire both again. michael@0: log += 'd'; michael@0: dbg.enabled = true; michael@0: enable = true; michael@0: g.f(); michael@0: michael@0: assertEq(log, 'a()b(cd()');