| 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 static const char lineNumber[] = "lineNumber"; | 69 static const char lineNumber[] = "lineNumber"; |
| 70 static const char columnNumber[] = "columnNumber"; | 70 static const char columnNumber[] = "columnNumber"; |
| 71 static const char condition[] = "condition"; | 71 static const char condition[] = "condition"; |
| 72 static const char isAnti[] = "isAnti"; | 72 static const char isAnti[] = "isAnti"; |
| 73 static const char skipStackPattern[] = "skipStackPattern"; | 73 static const char skipStackPattern[] = "skipStackPattern"; |
| 74 static const char skipAllPauses[] = "skipAllPauses"; | 74 static const char skipAllPauses[] = "skipAllPauses"; |
| 75 static const char skipAllPausesExpiresOnReload[] = "skipAllPausesExpiresOnReload
"; | 75 static const char skipAllPausesExpiresOnReload[] = "skipAllPausesExpiresOnReload
"; |
| 76 | 76 |
| 77 }; | 77 }; |
| 78 | 78 |
| 79 static const int numberOfStepsBeforeStepOut = 20; | 79 static const int maxSkipStepInCount = 20; |
| 80 | 80 |
| 81 const char InspectorDebuggerAgent::backtraceObjectGroup[] = "backtrace"; | 81 const char InspectorDebuggerAgent::backtraceObjectGroup[] = "backtrace"; |
| 82 | 82 |
| 83 static String breakpointIdSuffix(InspectorDebuggerAgent::BreakpointSource source
) | 83 static String breakpointIdSuffix(InspectorDebuggerAgent::BreakpointSource source
) |
| 84 { | 84 { |
| 85 switch (source) { | 85 switch (source) { |
| 86 case InspectorDebuggerAgent::UserBreakpointSource: | 86 case InspectorDebuggerAgent::UserBreakpointSource: |
| 87 break; | 87 break; |
| 88 case InspectorDebuggerAgent::DebugCommandBreakpointSource: | 88 case InspectorDebuggerAgent::DebugCommandBreakpointSource: |
| 89 return ":debug"; | 89 return ":debug"; |
| 90 case InspectorDebuggerAgent::MonitorCommandBreakpointSource: | 90 case InspectorDebuggerAgent::MonitorCommandBreakpointSource: |
| 91 return ":monitor"; | 91 return ":monitor"; |
| 92 } | 92 } |
| 93 return String(); | 93 return String(); |
| 94 } | 94 } |
| 95 | 95 |
| 96 static String generateBreakpointId(const String& scriptId, int lineNumber, int c
olumnNumber, InspectorDebuggerAgent::BreakpointSource source) | 96 static String generateBreakpointId(const String& scriptId, int lineNumber, int c
olumnNumber, InspectorDebuggerAgent::BreakpointSource source) |
| 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_debuggerStepScheduled(false) | 107 , m_debuggerStepScheduled(false) |
| 108 , m_pausingOnNativeEvent(false) |
| 108 , m_listener(0) | 109 , m_listener(0) |
| 109 , m_skipStepInCount(numberOfStepsBeforeStepOut) | 110 , m_skippedStepInCount(0) |
| 110 , m_skipAllPauses(false) | 111 , m_skipAllPauses(false) |
| 111 { | 112 { |
| 112 } | 113 } |
| 113 | 114 |
| 114 InspectorDebuggerAgent::~InspectorDebuggerAgent() | 115 InspectorDebuggerAgent::~InspectorDebuggerAgent() |
| 115 { | 116 { |
| 116 ASSERT(!m_instrumentingAgents->inspectorDebuggerAgent()); | 117 ASSERT(!m_instrumentingAgents->inspectorDebuggerAgent()); |
| 117 } | 118 } |
| 118 | 119 |
| 119 void InspectorDebuggerAgent::init() | 120 void InspectorDebuggerAgent::init() |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 return ScriptDebugListener::NoSkip; | 523 return ScriptDebugListener::NoSkip; |
| 523 } | 524 } |
| 524 | 525 |
| 525 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipStepPaus
e() | 526 ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipStepPaus
e() |
| 526 { | 527 { |
| 527 if (!m_cachedSkipStackRegExp) | 528 if (!m_cachedSkipStackRegExp) |
| 528 return ScriptDebugListener::NoSkip; | 529 return ScriptDebugListener::NoSkip; |
| 529 | 530 |
| 530 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco
pes(); | 531 RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoSco
pes(); |
| 531 String scriptUrl = scriptURL(topFrame.get()); | 532 String scriptUrl = scriptURL(topFrame.get()); |
| 532 if (!scriptUrl.isEmpty() && m_cachedSkipStackRegExp->match(scriptUrl) != -1)
{ | 533 if (scriptUrl.isEmpty() || m_cachedSkipStackRegExp->match(scriptUrl) == -1) |
| 533 if (m_skipStepInCount > 0) { | 534 return ScriptDebugListener::NoSkip; |
| 534 --m_skipStepInCount; | 535 |
| 535 return ScriptDebugListener::StepInto; | 536 if (m_skippedStepInCount == 0) { |
| 537 m_minFrameCountForSkip = scriptDebugServer().frameCount(); |
| 538 m_skippedStepInCount = 1; |
| 539 return ScriptDebugListener::StepInto; |
| 540 } |
| 541 |
| 542 if (m_skippedStepInCount < maxSkipStepInCount && topFrame->isAtReturn() && s
criptDebugServer().frameCount() <= m_minFrameCountForSkip) |
| 543 m_skippedStepInCount = maxSkipStepInCount; |
| 544 |
| 545 if (m_skippedStepInCount >= maxSkipStepInCount) { |
| 546 if (m_pausingOnNativeEvent) { |
| 547 m_pausingOnNativeEvent = false; |
| 548 m_skippedStepInCount = 0; |
| 549 return ScriptDebugListener::Continue; |
| 536 } | 550 } |
| 537 return ScriptDebugListener::StepOut; | 551 return ScriptDebugListener::StepOut; |
| 538 } | 552 } |
| 539 return ScriptDebugListener::NoSkip; | 553 |
| 554 ++m_skippedStepInCount; |
| 555 return ScriptDebugListener::StepInto; |
| 540 } | 556 } |
| 541 | 557 |
| 542 PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak
point(const String& breakpointId, const String& scriptId, const ScriptBreakpoint
& breakpoint, BreakpointSource source) | 558 PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak
point(const String& breakpointId, const String& scriptId, const ScriptBreakpoint
& breakpoint, BreakpointSource source) |
| 543 { | 559 { |
| 544 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); | 560 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); |
| 545 if (scriptIterator == m_scripts.end()) | 561 if (scriptIterator == m_scripts.end()) |
| 546 return nullptr; | 562 return nullptr; |
| 547 Script& script = scriptIterator->value; | 563 Script& script = scriptIterator->value; |
| 548 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint.
lineNumber) | 564 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint.
lineNumber) |
| 549 return nullptr; | 565 return nullptr; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb
jectId(functionId); | 638 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb
jectId(functionId); |
| 623 if (injectedScript.isEmpty()) { | 639 if (injectedScript.isEmpty()) { |
| 624 *errorString = "Function object id is obsolete"; | 640 *errorString = "Function object id is obsolete"; |
| 625 return; | 641 return; |
| 626 } | 642 } |
| 627 injectedScript.getFunctionDetails(errorString, functionId, &details); | 643 injectedScript.getFunctionDetails(errorString, functionId, &details); |
| 628 } | 644 } |
| 629 | 645 |
| 630 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb
ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) | 646 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb
ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) |
| 631 { | 647 { |
| 632 if (m_javaScriptPauseScheduled) | 648 if (m_javaScriptPauseScheduled || isPaused()) |
| 633 return; | 649 return; |
| 634 m_breakReason = breakReason; | 650 m_breakReason = breakReason; |
| 635 m_breakAuxData = data; | 651 m_breakAuxData = data; |
| 636 m_debuggerStepScheduled = true; | 652 m_pausingOnNativeEvent = true; |
| 637 scriptDebugServer().setPauseOnNextStatement(true); | 653 scriptDebugServer().setPauseOnNextStatement(true); |
| 638 } | 654 } |
| 639 | 655 |
| 640 void InspectorDebuggerAgent::cancelPauseOnNextStatement() | 656 void InspectorDebuggerAgent::cancelPauseOnNextStatement() |
| 641 { | 657 { |
| 642 if (m_javaScriptPauseScheduled) | 658 if (m_javaScriptPauseScheduled || isPaused()) |
| 643 return; | 659 return; |
| 644 clearBreakDetails(); | 660 clearBreakDetails(); |
| 645 m_debuggerStepScheduled = false; | 661 m_pausingOnNativeEvent = false; |
| 646 scriptDebugServer().setPauseOnNextStatement(false); | 662 scriptDebugServer().setPauseOnNextStatement(false); |
| 647 } | 663 } |
| 648 | 664 |
| 649 void InspectorDebuggerAgent::didInstallTimer(ExecutionContext* context, int time
rId, int timeout, bool singleShot) | 665 void InspectorDebuggerAgent::didInstallTimer(ExecutionContext* context, int time
rId, int timeout, bool singleShot) |
| 650 { | 666 { |
| 651 if (m_asyncCallStackTracker.isEnabled()) | 667 if (m_asyncCallStackTracker.isEnabled()) |
| 652 m_asyncCallStackTracker.didInstallTimer(context, timerId, singleShot, sc
riptDebugServer().currentCallFramesForAsyncStack()); | 668 m_asyncCallStackTracker.didInstallTimer(context, timerId, singleShot, sc
riptDebugServer().currentCallFramesForAsyncStack()); |
| 653 } | 669 } |
| 654 | 670 |
| 655 void InspectorDebuggerAgent::didRemoveTimer(ExecutionContext* context, int timer
Id) | 671 void InspectorDebuggerAgent::didRemoveTimer(ExecutionContext* context, int timer
Id) |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 } | 751 } |
| 736 | 752 |
| 737 void InspectorDebuggerAgent::didDeliverMutationRecords() | 753 void InspectorDebuggerAgent::didDeliverMutationRecords() |
| 738 { | 754 { |
| 739 if (m_asyncCallStackTracker.isEnabled()) | 755 if (m_asyncCallStackTracker.isEnabled()) |
| 740 m_asyncCallStackTracker.didFireAsyncCall(); | 756 m_asyncCallStackTracker.didFireAsyncCall(); |
| 741 } | 757 } |
| 742 | 758 |
| 743 void InspectorDebuggerAgent::pause(ErrorString*) | 759 void InspectorDebuggerAgent::pause(ErrorString*) |
| 744 { | 760 { |
| 745 if (m_javaScriptPauseScheduled) | 761 if (m_javaScriptPauseScheduled || isPaused()) |
| 746 return; | 762 return; |
| 747 clearBreakDetails(); | 763 clearBreakDetails(); |
| 748 m_javaScriptPauseScheduled = true; | 764 m_javaScriptPauseScheduled = true; |
| 749 m_debuggerStepScheduled = false; | |
| 750 scriptDebugServer().setPauseOnNextStatement(true); | 765 scriptDebugServer().setPauseOnNextStatement(true); |
| 751 } | 766 } |
| 752 | 767 |
| 753 void InspectorDebuggerAgent::resume(ErrorString* errorString) | 768 void InspectorDebuggerAgent::resume(ErrorString* errorString) |
| 754 { | 769 { |
| 755 if (!assertPaused(errorString)) | 770 if (!assertPaused(errorString)) |
| 756 return; | 771 return; |
| 757 m_debuggerStepScheduled = false; | 772 m_debuggerStepScheduled = false; |
| 758 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac
eObjectGroup); | 773 m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtrac
eObjectGroup); |
| 759 scriptDebugServer().continueProgram(); | 774 scriptDebugServer().continueProgram(); |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 { | 1119 { |
| 1105 ScriptDebugListener::SkipPauseRequest result; | 1120 ScriptDebugListener::SkipPauseRequest result; |
| 1106 if (m_javaScriptPauseScheduled) | 1121 if (m_javaScriptPauseScheduled) |
| 1107 result = ScriptDebugListener::NoSkip; // Don't skip explicit pause reque
sts from front-end. | 1122 result = ScriptDebugListener::NoSkip; // Don't skip explicit pause reque
sts from front-end. |
| 1108 else if (m_skipAllPauses) | 1123 else if (m_skipAllPauses) |
| 1109 result = ScriptDebugListener::Continue; | 1124 result = ScriptDebugListener::Continue; |
| 1110 else if (!hitBreakpoints.isEmpty()) | 1125 else if (!hitBreakpoints.isEmpty()) |
| 1111 result = ScriptDebugListener::NoSkip; // Don't skip explicit breakpoints
even if set in frameworks. | 1126 result = ScriptDebugListener::NoSkip; // Don't skip explicit breakpoints
even if set in frameworks. |
| 1112 else if (!exception.isEmpty()) | 1127 else if (!exception.isEmpty()) |
| 1113 result = shouldSkipExceptionPause(); | 1128 result = shouldSkipExceptionPause(); |
| 1114 else if (m_debuggerStepScheduled) | 1129 else if (m_debuggerStepScheduled || m_pausingOnNativeEvent) |
| 1115 result = shouldSkipStepPause(); | 1130 result = shouldSkipStepPause(); |
| 1116 else | 1131 else |
| 1117 result = ScriptDebugListener::NoSkip; | 1132 result = ScriptDebugListener::NoSkip; |
| 1118 | 1133 |
| 1119 if (result != ScriptDebugListener::NoSkip) | 1134 if (result != ScriptDebugListener::NoSkip) |
| 1120 return result; | 1135 return result; |
| 1121 | 1136 |
| 1122 ASSERT(scriptState && !m_pausedScriptState); | 1137 ASSERT(scriptState && !m_pausedScriptState); |
| 1123 m_pausedScriptState = scriptState; | 1138 m_pausedScriptState = scriptState; |
| 1124 m_currentCallStack = callFrames; | 1139 m_currentCallStack = callFrames; |
| 1125 | 1140 |
| 1126 m_skipStepInCount = numberOfStepsBeforeStepOut; | |
| 1127 | |
| 1128 if (!exception.isEmpty()) { | 1141 if (!exception.isEmpty()) { |
| 1129 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF
or(scriptState); | 1142 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF
or(scriptState); |
| 1130 if (!injectedScript.isEmpty()) { | 1143 if (!injectedScript.isEmpty()) { |
| 1131 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; | 1144 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; |
| 1132 m_breakAuxData = injectedScript.wrapObject(exception, InspectorDebug
gerAgent::backtraceObjectGroup)->openAccessors(); | 1145 m_breakAuxData = injectedScript.wrapObject(exception, InspectorDebug
gerAgent::backtraceObjectGroup)->openAccessors(); |
| 1133 // m_breakAuxData might be null after this. | 1146 // m_breakAuxData might be null after this. |
| 1134 } | 1147 } |
| 1135 } | 1148 } |
| 1136 | 1149 |
| 1137 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); | 1150 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); |
| 1138 | 1151 |
| 1139 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea
kpoints.end(); ++i) { | 1152 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea
kpoints.end(); ++i) { |
| 1140 DebugServerBreakpointToBreakpointIdAndSourceMap::iterator breakpointIter
ator = m_serverBreakpoints.find(*i); | 1153 DebugServerBreakpointToBreakpointIdAndSourceMap::iterator breakpointIter
ator = m_serverBreakpoints.find(*i); |
| 1141 if (breakpointIterator != m_serverBreakpoints.end()) { | 1154 if (breakpointIterator != m_serverBreakpoints.end()) { |
| 1142 const String& localId = breakpointIterator->value.first; | 1155 const String& localId = breakpointIterator->value.first; |
| 1143 hitBreakpointIds->addItem(localId); | 1156 hitBreakpointIds->addItem(localId); |
| 1144 | 1157 |
| 1145 BreakpointSource source = breakpointIterator->value.second; | 1158 BreakpointSource source = breakpointIterator->value.second; |
| 1146 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s
ource == DebugCommandBreakpointSource) | 1159 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s
ource == DebugCommandBreakpointSource) |
| 1147 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman
d; | 1160 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman
d; |
| 1148 } | 1161 } |
| 1149 } | 1162 } |
| 1150 | 1163 |
| 1151 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr
eakpointIds, currentAsyncStackTrace()); | 1164 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr
eakpointIds, currentAsyncStackTrace()); |
| 1152 m_javaScriptPauseScheduled = false; | 1165 m_javaScriptPauseScheduled = false; |
| 1153 m_debuggerStepScheduled = false; | 1166 m_debuggerStepScheduled = false; |
| 1167 m_pausingOnNativeEvent = false; |
| 1168 m_skippedStepInCount = 0; |
| 1154 | 1169 |
| 1155 if (!m_continueToLocationBreakpointId.isEmpty()) { | 1170 if (!m_continueToLocationBreakpointId.isEmpty()) { |
| 1156 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); | 1171 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); |
| 1157 m_continueToLocationBreakpointId = ""; | 1172 m_continueToLocationBreakpointId = ""; |
| 1158 } | 1173 } |
| 1159 if (m_listener) | 1174 if (m_listener) |
| 1160 m_listener->didPause(); | 1175 m_listener->didPause(); |
| 1161 return result; | 1176 return result; |
| 1162 } | 1177 } |
| 1163 | 1178 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1174 return scriptDebugServer().canBreakProgram(); | 1189 return scriptDebugServer().canBreakProgram(); |
| 1175 } | 1190 } |
| 1176 | 1191 |
| 1177 void InspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reason::E
num breakReason, PassRefPtr<JSONObject> data) | 1192 void InspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reason::E
num breakReason, PassRefPtr<JSONObject> data) |
| 1178 { | 1193 { |
| 1179 if (m_skipAllPauses) | 1194 if (m_skipAllPauses) |
| 1180 return; | 1195 return; |
| 1181 m_breakReason = breakReason; | 1196 m_breakReason = breakReason; |
| 1182 m_breakAuxData = data; | 1197 m_breakAuxData = data; |
| 1183 m_debuggerStepScheduled = false; | 1198 m_debuggerStepScheduled = false; |
| 1199 m_pausingOnNativeEvent = false; |
| 1184 scriptDebugServer().breakProgram(); | 1200 scriptDebugServer().breakProgram(); |
| 1185 } | 1201 } |
| 1186 | 1202 |
| 1187 void InspectorDebuggerAgent::clear() | 1203 void InspectorDebuggerAgent::clear() |
| 1188 { | 1204 { |
| 1189 m_pausedScriptState = nullptr; | 1205 m_pausedScriptState = nullptr; |
| 1190 m_currentCallStack = ScriptValue(); | 1206 m_currentCallStack = ScriptValue(); |
| 1191 m_scripts.clear(); | 1207 m_scripts.clear(); |
| 1192 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1208 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1193 m_asyncCallStackTracker.clear(); | 1209 m_asyncCallStackTracker.clear(); |
| 1194 m_continueToLocationBreakpointId = String(); | 1210 m_continueToLocationBreakpointId = String(); |
| 1195 clearBreakDetails(); | 1211 clearBreakDetails(); |
| 1196 m_javaScriptPauseScheduled = false; | 1212 m_javaScriptPauseScheduled = false; |
| 1197 m_debuggerStepScheduled = false; | 1213 m_debuggerStepScheduled = false; |
| 1214 m_pausingOnNativeEvent = false; |
| 1198 ErrorString error; | 1215 ErrorString error; |
| 1199 setOverlayMessage(&error, 0); | 1216 setOverlayMessage(&error, 0); |
| 1200 } | 1217 } |
| 1201 | 1218 |
| 1202 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) | 1219 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) |
| 1203 { | 1220 { |
| 1204 if (!m_pausedScriptState) { | 1221 if (!m_pausedScriptState) { |
| 1205 *errorString = "Can only perform operation while paused."; | 1222 *errorString = "Can only perform operation while paused."; |
| 1206 return false; | 1223 return false; |
| 1207 } | 1224 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1230 { | 1247 { |
| 1231 m_scripts.clear(); | 1248 m_scripts.clear(); |
| 1232 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1249 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1233 m_asyncCallStackTracker.clear(); | 1250 m_asyncCallStackTracker.clear(); |
| 1234 if (m_frontend) | 1251 if (m_frontend) |
| 1235 m_frontend->globalObjectCleared(); | 1252 m_frontend->globalObjectCleared(); |
| 1236 } | 1253 } |
| 1237 | 1254 |
| 1238 } // namespace WebCore | 1255 } // namespace WebCore |
| 1239 | 1256 |
| OLD | NEW |