Index: Source/core/inspector/InspectorDebuggerAgent.cpp |
diff --git a/Source/core/inspector/InspectorDebuggerAgent.cpp b/Source/core/inspector/InspectorDebuggerAgent.cpp |
index dcecf478df5a6a67de727177a28d3ff049ac2275..9f54a015db229aeab8f65dae12c74cb665b2421f 100644 |
--- a/Source/core/inspector/InspectorDebuggerAgent.cpp |
+++ b/Source/core/inspector/InspectorDebuggerAgent.cpp |
@@ -295,8 +295,10 @@ void InspectorDebuggerAgent::removeBreakpoint(ErrorString*, const String& breakp |
BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); |
if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpointIds.end()) |
return; |
- for (size_t i = 0; i < debugServerBreakpointIdsIterator->value.size(); ++i) |
+ for (size_t i = 0; i < debugServerBreakpointIdsIterator->value.size(); ++i) { |
scriptDebugServer().removeBreakpoint(debugServerBreakpointIdsIterator->value[i]); |
+ m_serverBreakpointIdToBreakpointId.remove(debugServerBreakpointIdsIterator->value[i]); |
+ } |
m_breakpointIdToDebugServerBreakpointIds.remove(debugServerBreakpointIdsIterator); |
} |
@@ -334,6 +336,8 @@ PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak |
if (debugServerBreakpointId.isEmpty()) |
return 0; |
+ m_serverBreakpointIdToBreakpointId.set(debugServerBreakpointId, breakpointId); |
+ |
BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); |
if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpointIds.end()) |
debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpointIds.set(breakpointId, Vector<String>()).iterator; |
@@ -701,7 +705,7 @@ void InspectorDebuggerAgent::failedToParseSource(const String& url, const String |
m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessage); |
} |
-void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValue& callFrames, const ScriptValue& exception) |
+void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints) |
{ |
ASSERT(scriptState && !m_pausedScriptState); |
m_pausedScriptState = scriptState; |
@@ -716,7 +720,15 @@ void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValu |
} |
} |
- m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData); |
+ RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); |
+ |
+ for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBreakpoints.end(); ++i) { |
+ DebugServerBreakpointIdToBreakpointIdMap::iterator breakpointIterator = m_serverBreakpointIdToBreakpointId.find(*i); |
+ if (breakpointIterator != m_serverBreakpointIdToBreakpointId.end()) |
+ hitBreakpointIds->addItem(breakpointIterator->value); |
+ } |
+ |
+ m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBreakpointIds); |
m_javaScriptPauseScheduled = false; |
if (!m_continueToLocationBreakpointId.isEmpty()) { |