Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 97 { | 97 { |
| 98 return scriptId + ':' + String::number(lineNumber) + ':' + String::number(co lumnNumber) + breakpointIdSuffix(source); | 98 return scriptId + ':' + String::number(lineNumber) + ':' + String::number(co lumnNumber) + breakpointIdSuffix(source); |
| 99 } | 99 } |
| 100 | 100 |
| 101 InspectorDebuggerAgent::InspectorDebuggerAgent(InjectedScriptManager* injectedSc riptManager) | 101 InspectorDebuggerAgent::InspectorDebuggerAgent(InjectedScriptManager* injectedSc riptManager) |
| 102 : InspectorBaseAgent<InspectorDebuggerAgent>("Debugger") | 102 : InspectorBaseAgent<InspectorDebuggerAgent>("Debugger") |
| 103 , m_injectedScriptManager(injectedScriptManager) | 103 , m_injectedScriptManager(injectedScriptManager) |
| 104 , m_frontend(0) | 104 , m_frontend(0) |
| 105 , m_pausedScriptState(nullptr) | 105 , m_pausedScriptState(nullptr) |
| 106 , m_javaScriptPauseScheduled(false) | 106 , m_javaScriptPauseScheduled(false) |
| 107 , m_stepLikePauseScheduled(false) | |
|
yurys
2014/05/28 17:15:59
m_debuggerStepScheduled?
aandrey
2014/05/29 09:01:23
Done.
| |
| 107 , m_listener(0) | 108 , m_listener(0) |
| 108 , m_skipStepInCount(numberOfStepsBeforeStepOut) | 109 , m_skipStepInCount(numberOfStepsBeforeStepOut) |
| 109 , m_skipAllPauses(false) | 110 , m_skipAllPauses(false) |
| 110 { | 111 { |
| 111 } | 112 } |
| 112 | 113 |
| 113 InspectorDebuggerAgent::~InspectorDebuggerAgent() | 114 InspectorDebuggerAgent::~InspectorDebuggerAgent() |
| 114 { | 115 { |
| 115 ASSERT(!m_instrumentingAgents->inspectorDebuggerAgent()); | 116 ASSERT(!m_instrumentingAgents->inspectorDebuggerAgent()); |
| 116 } | 117 } |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 464 { | 465 { |
| 465 String scriptIdString = String::number(frame->sourceID()); | 466 String scriptIdString = String::number(frame->sourceID()); |
| 466 ScriptsMap::iterator it = m_scripts.find(scriptIdString); | 467 ScriptsMap::iterator it = m_scripts.find(scriptIdString); |
| 467 if (it == m_scripts.end()) | 468 if (it == m_scripts.end()) |
| 468 return String(); | 469 return String(); |
| 469 return it->value.url; | 470 return it->value.url; |
| 470 } | 471 } |
| 471 | 472 |
| 472 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipExceptio nPause() | 473 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipExceptio nPause() |
| 473 { | 474 { |
| 474 if (m_skipAllPauses) | 475 // FIXME: Fast return: if (!m_cachedSkipStackRegExp && !has_any_anti_breakpo int) return ScriptDebugListener::NoSkip; |
| 475 return ScriptDebugListener::Continue; | |
| 476 | 476 |
| 477 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco pes(); | 477 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco pes(); |
| 478 if (!topFrame) | 478 if (!topFrame) |
| 479 return ScriptDebugListener::NoSkip; | 479 return ScriptDebugListener::NoSkip; |
| 480 | 480 |
| 481 String topFrameScriptUrl = scriptURL(topFrame.get()); | 481 String topFrameScriptUrl = scriptURL(topFrame.get()); |
| 482 if (m_cachedSkipStackRegExp && !topFrameScriptUrl.isEmpty() && m_cachedSkipS tackRegExp->match(topFrameScriptUrl) != -1) | 482 if (m_cachedSkipStackRegExp && !topFrameScriptUrl.isEmpty() && m_cachedSkipS tackRegExp->match(topFrameScriptUrl) != -1) |
| 483 return ScriptDebugListener::Continue; | 483 return ScriptDebugListener::Continue; |
| 484 | 484 |
| 485 // Match against breakpoints. | 485 // Match against breakpoints. |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 515 breakpointObject->getString(DebuggerAgentState::url, &url); | 515 breakpointObject->getString(DebuggerAgentState::url, &url); |
| 516 if (!matches(topFrameScriptUrl, url, isRegex)) | 516 if (!matches(topFrameScriptUrl, url, isRegex)) |
| 517 continue; | 517 continue; |
| 518 | 518 |
| 519 return ScriptDebugListener::Continue; | 519 return ScriptDebugListener::Continue; |
| 520 } | 520 } |
| 521 | 521 |
| 522 return ScriptDebugListener::NoSkip; | 522 return ScriptDebugListener::NoSkip; |
| 523 } | 523 } |
| 524 | 524 |
| 525 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipBreakpoi ntPause() | |
| 526 { | |
| 527 if (m_skipAllPauses) | |
| 528 return ScriptDebugListener::Continue; | |
| 529 return ScriptDebugListener::NoSkip; | |
| 530 } | |
| 531 | |
| 532 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipStepPaus e() | 525 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipStepPaus e() |
| 533 { | 526 { |
| 534 if (m_skipAllPauses) | |
| 535 return ScriptDebugListener::Continue; | |
| 536 if (!m_cachedSkipStackRegExp) | 527 if (!m_cachedSkipStackRegExp) |
| 537 return ScriptDebugListener::NoSkip; | 528 return ScriptDebugListener::NoSkip; |
| 538 | 529 |
| 539 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco pes(); | 530 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco pes(); |
| 540 String scriptUrl = scriptURL(topFrame.get()); | 531 String scriptUrl = scriptURL(topFrame.get()); |
| 541 if (!scriptUrl.isEmpty() && m_cachedSkipStackRegExp->match(scriptUrl) != -1) { | 532 if (!scriptUrl.isEmpty() && m_cachedSkipStackRegExp->match(scriptUrl) != -1) { |
| 542 if (m_skipStepInCount > 0) { | 533 if (m_skipStepInCount > 0) { |
| 543 --m_skipStepInCount; | 534 --m_skipStepInCount; |
| 544 return ScriptDebugListener::StepInto; | 535 return ScriptDebugListener::StepInto; |
| 545 } | 536 } |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 635 } | 626 } |
| 636 injectedScript.getFunctionDetails(errorString, functionId, &details); | 627 injectedScript.getFunctionDetails(errorString, functionId, &details); |
| 637 } | 628 } |
| 638 | 629 |
| 639 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) | 630 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) |
| 640 { | 631 { |
| 641 if (m_javaScriptPauseScheduled) | 632 if (m_javaScriptPauseScheduled) |
| 642 return; | 633 return; |
| 643 m_breakReason = breakReason; | 634 m_breakReason = breakReason; |
| 644 m_breakAuxData = data; | 635 m_breakAuxData = data; |
| 636 m_stepLikePauseScheduled = true; | |
| 645 scriptDebugServer().setPauseOnNextStatement(true); | 637 scriptDebugServer().setPauseOnNextStatement(true); |
| 646 } | 638 } |
| 647 | 639 |
| 648 void InspectorDebuggerAgent::cancelPauseOnNextStatement() | 640 void InspectorDebuggerAgent::cancelPauseOnNextStatement() |
| 649 { | 641 { |
| 650 if (m_javaScriptPauseScheduled) | 642 if (m_javaScriptPauseScheduled) |
| 651 return; | 643 return; |
| 652 clearBreakDetails(); | 644 clearBreakDetails(); |
| 645 m_stepLikePauseScheduled = false; | |
| 653 scriptDebugServer().setPauseOnNextStatement(false); | 646 scriptDebugServer().setPauseOnNextStatement(false); |
| 654 } | 647 } |
| 655 | 648 |
| 656 void InspectorDebuggerAgent::didInstallTimer(ExecutionContext* context, int time rId, int timeout, bool singleShot) | 649 void InspectorDebuggerAgent::didInstallTimer(ExecutionContext* context, int time rId, int timeout, bool singleShot) |
| 657 { | 650 { |
| 658 if (m_asyncCallStackTracker.isEnabled()) | 651 if (m_asyncCallStackTracker.isEnabled()) |
| 659 m_asyncCallStackTracker.didInstallTimer(context, timerId, singleShot, sc riptDebugServer().currentCallFramesForAsyncStack()); | 652 m_asyncCallStackTracker.didInstallTimer(context, timerId, singleShot, sc riptDebugServer().currentCallFramesForAsyncStack()); |
| 660 } | 653 } |
| 661 | 654 |
| 662 void InspectorDebuggerAgent::didRemoveTimer(ExecutionContext* context, int timer Id) | 655 void InspectorDebuggerAgent::didRemoveTimer(ExecutionContext* context, int timer Id) |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 745 { | 738 { |
| 746 if (m_asyncCallStackTracker.isEnabled()) | 739 if (m_asyncCallStackTracker.isEnabled()) |
| 747 m_asyncCallStackTracker.didFireAsyncCall(); | 740 m_asyncCallStackTracker.didFireAsyncCall(); |
| 748 } | 741 } |
| 749 | 742 |
| 750 void InspectorDebuggerAgent::pause(ErrorString*) | 743 void InspectorDebuggerAgent::pause(ErrorString*) |
| 751 { | 744 { |
| 752 if (m_javaScriptPauseScheduled) | 745 if (m_javaScriptPauseScheduled) |
| 753 return; | 746 return; |
| 754 clearBreakDetails(); | 747 clearBreakDetails(); |
| 748 m_javaScriptPauseScheduled = true; | |
| 749 m_stepLikePauseScheduled = false; | |
| 755 scriptDebugServer().setPauseOnNextStatement(true); | 750 scriptDebugServer().setPauseOnNextStatement(true); |
| 756 m_javaScriptPauseScheduled = true; | |
| 757 } | 751 } |
| 758 | 752 |
| 759 void InspectorDebuggerAgent::resume(ErrorString* errorString) | 753 void InspectorDebuggerAgent::resume(ErrorString* errorString) |
| 760 { | 754 { |
| 761 if (!assertPaused(errorString)) | 755 if (!assertPaused(errorString)) |
| 762 return; | 756 return; |
| 757 m_stepLikePauseScheduled = false; | |
| 763 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); | 758 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); |
| 764 scriptDebugServer().continueProgram(); | 759 scriptDebugServer().continueProgram(); |
| 765 } | 760 } |
| 766 | 761 |
| 767 ScriptValue InspectorDebuggerAgent::resolveCallFrame(ErrorString* errorString, c onst String* callFrameId) | 762 ScriptValue InspectorDebuggerAgent::resolveCallFrame(ErrorString* errorString, c onst String* callFrameId) |
| 768 { | 763 { |
| 769 if (!callFrameId) | 764 if (!callFrameId) |
| 770 return ScriptValue(); | 765 return ScriptValue(); |
| 771 if (!isPaused() || m_currentCallStack.isEmpty()) { | 766 if (!isPaused() || m_currentCallStack.isEmpty()) { |
| 772 *errorString = "Attempt to access callframe when debugger is not on paus e"; | 767 *errorString = "Attempt to access callframe when debugger is not on paus e"; |
| 773 return ScriptValue(); | 768 return ScriptValue(); |
| 774 } | 769 } |
| 775 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(*callFrameId); | 770 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(*callFrameId); |
| 776 if (injectedScript.isEmpty()) { | 771 if (injectedScript.isEmpty()) { |
| 777 *errorString = "Inspected frame has gone"; | 772 *errorString = "Inspected frame has gone"; |
| 778 return ScriptValue(); | 773 return ScriptValue(); |
| 779 } | 774 } |
| 780 return injectedScript.findCallFrameById(errorString, m_currentCallStack, *ca llFrameId); | 775 return injectedScript.findCallFrameById(errorString, m_currentCallStack, *ca llFrameId); |
| 781 } | 776 } |
| 782 | 777 |
| 783 void InspectorDebuggerAgent::stepOver(ErrorString* errorString, const String* ca llFrameId) | 778 void InspectorDebuggerAgent::stepOver(ErrorString* errorString, const String* ca llFrameId) |
| 784 { | 779 { |
| 785 if (!assertPaused(errorString)) | 780 if (!assertPaused(errorString)) |
| 786 return; | 781 return; |
| 787 ScriptValue frame = resolveCallFrame(errorString, callFrameId); | 782 ScriptValue frame = resolveCallFrame(errorString, callFrameId); |
| 788 if (!errorString->isEmpty()) | 783 if (!errorString->isEmpty()) |
| 789 return; | 784 return; |
| 785 m_stepLikePauseScheduled = true; | |
| 790 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); | 786 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); |
| 791 scriptDebugServer().stepOverStatement(frame); | 787 scriptDebugServer().stepOverStatement(frame); |
| 792 } | 788 } |
| 793 | 789 |
| 794 void InspectorDebuggerAgent::stepInto(ErrorString* errorString) | 790 void InspectorDebuggerAgent::stepInto(ErrorString* errorString) |
| 795 { | 791 { |
| 796 if (!assertPaused(errorString)) | 792 if (!assertPaused(errorString)) |
| 797 return; | 793 return; |
| 794 m_stepLikePauseScheduled = true; | |
| 798 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); | 795 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); |
| 799 scriptDebugServer().stepIntoStatement(); | 796 scriptDebugServer().stepIntoStatement(); |
| 800 if (m_listener) | 797 if (m_listener) |
| 801 m_listener->stepInto(); | 798 m_listener->stepInto(); |
| 802 } | 799 } |
| 803 | 800 |
| 804 void InspectorDebuggerAgent::stepOut(ErrorString* errorString, const String* cal lFrameId) | 801 void InspectorDebuggerAgent::stepOut(ErrorString* errorString, const String* cal lFrameId) |
| 805 { | 802 { |
| 806 if (!assertPaused(errorString)) | 803 if (!assertPaused(errorString)) |
| 807 return; | 804 return; |
| 808 ScriptValue frame = resolveCallFrame(errorString, callFrameId); | 805 ScriptValue frame = resolveCallFrame(errorString, callFrameId); |
| 809 if (!errorString->isEmpty()) | 806 if (!errorString->isEmpty()) |
| 810 return; | 807 return; |
| 808 m_stepLikePauseScheduled = true; | |
| 811 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); | 809 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac eObjectGroup); |
| 812 scriptDebugServer().stepOutOfFunction(frame); | 810 scriptDebugServer().stepOutOfFunction(frame); |
| 813 } | 811 } |
| 814 | 812 |
| 815 void InspectorDebuggerAgent::setPauseOnExceptions(ErrorString* errorString, cons t String& stringPauseState) | 813 void InspectorDebuggerAgent::setPauseOnExceptions(ErrorString* errorString, cons t String& stringPauseState) |
| 816 { | 814 { |
| 817 ScriptDebugServer::PauseOnExceptionsState pauseState; | 815 ScriptDebugServer::PauseOnExceptionsState pauseState; |
| 818 if (stringPauseState == "none") | 816 if (stringPauseState == "none") |
| 819 pauseState = ScriptDebugServer::DontPauseOnExceptions; | 817 pauseState = ScriptDebugServer::DontPauseOnExceptions; |
| 820 else if (stringPauseState == "all") | 818 else if (stringPauseState == "all") |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1097 } | 1095 } |
| 1098 } | 1096 } |
| 1099 | 1097 |
| 1100 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String & data, int firstLine, int errorLine, const String& errorMessage) | 1098 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String & data, int firstLine, int errorLine, const String& errorMessage) |
| 1101 { | 1099 { |
| 1102 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag e); | 1100 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag e); |
| 1103 } | 1101 } |
| 1104 | 1102 |
| 1105 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::didPause(ScriptSta te* scriptState, const ScriptValue& callFrames, const ScriptValue& exception, co nst Vector<String>& hitBreakpoints) | 1103 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::didPause(ScriptSta te* scriptState, const ScriptValue& callFrames, const ScriptValue& exception, co nst Vector<String>& hitBreakpoints) |
| 1106 { | 1104 { |
| 1107 ScriptDebugListener::SkipPauseRequest result = ScriptDebugListener::NoSkip; | 1105 ScriptDebugListener::SkipPauseRequest result; |
| 1108 if (!exception.isEmpty()) | 1106 if (m_javaScriptPauseScheduled) |
| 1107 result = ScriptDebugListener::NoSkip; // Don't skip explicit pause reque sts from front-end. | |
| 1108 else if (m_skipAllPauses) | |
| 1109 result = ScriptDebugListener::Continue; | |
| 1110 else if (!hitBreakpoints.isEmpty()) | |
| 1111 result = ScriptDebugListener::NoSkip; // Don't skip explicit breakpoints even if set in frameworks. | |
| 1112 else if (!exception.isEmpty()) | |
| 1109 result = shouldSkipExceptionPause(); | 1113 result = shouldSkipExceptionPause(); |
| 1110 else if (!hitBreakpoints.isEmpty()) | 1114 else if (m_stepLikePauseScheduled) |
| 1111 result = shouldSkipBreakpointPause(); | 1115 result = shouldSkipStepPause(); |
| 1112 else | 1116 else |
| 1113 result = shouldSkipStepPause(); | 1117 result = ScriptDebugListener::NoSkip; |
| 1114 | 1118 |
| 1115 if (result != ScriptDebugListener::NoSkip) | 1119 if (result != ScriptDebugListener::NoSkip) |
| 1116 return result; | 1120 return result; |
| 1117 | 1121 |
| 1118 ASSERT(scriptState && !m_pausedScriptState); | 1122 ASSERT(scriptState && !m_pausedScriptState); |
| 1119 m_pausedScriptState = scriptState; | 1123 m_pausedScriptState = scriptState; |
| 1120 m_currentCallStack = callFrames; | 1124 m_currentCallStack = callFrames; |
| 1121 | 1125 |
| 1122 m_skipStepInCount = numberOfStepsBeforeStepOut; | 1126 m_skipStepInCount = numberOfStepsBeforeStepOut; |
| 1123 | 1127 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 1139 hitBreakpointIds->addItem(localId); | 1143 hitBreakpointIds->addItem(localId); |
| 1140 | 1144 |
| 1141 BreakpointSource source = breakpointIterator->value.second; | 1145 BreakpointSource source = breakpointIterator->value.second; |
| 1142 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s ource == DebugCommandBreakpointSource) | 1146 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s ource == DebugCommandBreakpointSource) |
| 1143 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman d; | 1147 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman d; |
| 1144 } | 1148 } |
| 1145 } | 1149 } |
| 1146 | 1150 |
| 1147 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr eakpointIds, currentAsyncStackTrace()); | 1151 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr eakpointIds, currentAsyncStackTrace()); |
| 1148 m_javaScriptPauseScheduled = false; | 1152 m_javaScriptPauseScheduled = false; |
| 1153 m_stepLikePauseScheduled = false; | |
| 1149 | 1154 |
| 1150 if (!m_continueToLocationBreakpointId.isEmpty()) { | 1155 if (!m_continueToLocationBreakpointId.isEmpty()) { |
| 1151 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); | 1156 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); |
| 1152 m_continueToLocationBreakpointId = ""; | 1157 m_continueToLocationBreakpointId = ""; |
| 1153 } | 1158 } |
| 1154 if (m_listener) | 1159 if (m_listener) |
| 1155 m_listener->didPause(); | 1160 m_listener->didPause(); |
| 1156 return result; | 1161 return result; |
| 1157 } | 1162 } |
| 1158 | 1163 |
| 1159 void InspectorDebuggerAgent::didContinue() | 1164 void InspectorDebuggerAgent::didContinue() |
| 1160 { | 1165 { |
| 1161 m_pausedScriptState = nullptr; | 1166 m_pausedScriptState = nullptr; |
| 1162 m_currentCallStack = ScriptValue(); | 1167 m_currentCallStack = ScriptValue(); |
| 1163 clearBreakDetails(); | 1168 clearBreakDetails(); |
| 1164 m_frontend->resumed(); | 1169 m_frontend->resumed(); |
| 1165 } | 1170 } |
| 1166 | 1171 |
| 1167 bool InspectorDebuggerAgent::canBreakProgram() | 1172 bool InspectorDebuggerAgent::canBreakProgram() |
| 1168 { | 1173 { |
| 1169 return scriptDebugServer().canBreakProgram(); | 1174 return scriptDebugServer().canBreakProgram(); |
| 1170 } | 1175 } |
| 1171 | 1176 |
| 1172 void InspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reason::E num breakReason, PassRefPtr<JSONObject> data) | 1177 void InspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reason::E num breakReason, PassRefPtr<JSONObject> data) |
| 1173 { | 1178 { |
| 1174 if (m_skipAllPauses) | 1179 if (m_skipAllPauses) |
| 1175 return; | 1180 return; |
| 1176 m_breakReason = breakReason; | 1181 m_breakReason = breakReason; |
| 1177 m_breakAuxData = data; | 1182 m_breakAuxData = data; |
| 1183 m_stepLikePauseScheduled = false; | |
| 1178 scriptDebugServer().breakProgram(); | 1184 scriptDebugServer().breakProgram(); |
| 1179 } | 1185 } |
| 1180 | 1186 |
| 1181 void InspectorDebuggerAgent::clear() | 1187 void InspectorDebuggerAgent::clear() |
| 1182 { | 1188 { |
| 1183 m_pausedScriptState = nullptr; | 1189 m_pausedScriptState = nullptr; |
| 1184 m_currentCallStack = ScriptValue(); | 1190 m_currentCallStack = ScriptValue(); |
| 1185 m_scripts.clear(); | 1191 m_scripts.clear(); |
| 1186 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1192 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1187 m_asyncCallStackTracker.clear(); | 1193 m_asyncCallStackTracker.clear(); |
| 1188 m_continueToLocationBreakpointId = String(); | 1194 m_continueToLocationBreakpointId = String(); |
| 1189 clearBreakDetails(); | 1195 clearBreakDetails(); |
| 1190 m_javaScriptPauseScheduled = false; | 1196 m_javaScriptPauseScheduled = false; |
| 1197 m_stepLikePauseScheduled = false; | |
| 1191 ErrorString error; | 1198 ErrorString error; |
| 1192 setOverlayMessage(&error, 0); | 1199 setOverlayMessage(&error, 0); |
| 1193 } | 1200 } |
| 1194 | 1201 |
| 1195 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) | 1202 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) |
| 1196 { | 1203 { |
| 1197 if (!m_pausedScriptState) { | 1204 if (!m_pausedScriptState) { |
| 1198 *errorString = "Can only perform operation while paused."; | 1205 *errorString = "Can only perform operation while paused."; |
| 1199 return false; | 1206 return false; |
| 1200 } | 1207 } |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 1223 { | 1230 { |
| 1224 m_scripts.clear(); | 1231 m_scripts.clear(); |
| 1225 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1232 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1226 m_asyncCallStackTracker.clear(); | 1233 m_asyncCallStackTracker.clear(); |
| 1227 if (m_frontend) | 1234 if (m_frontend) |
| 1228 m_frontend->globalObjectCleared(); | 1235 m_frontend->globalObjectCleared(); |
| 1229 } | 1236 } |
| 1230 | 1237 |
| 1231 } // namespace WebCore | 1238 } // namespace WebCore |
| 1232 | 1239 |
| OLD | NEW |