Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1098)

Unified Diff: Source/core/inspector/InspectorDebuggerAgent.cpp

Issue 304563002: DevTools: Make frameworks work with "custom" breakpoints (DOM, XHR, Events). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/InspectorDebuggerAgent.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorDebuggerAgent.cpp
diff --git a/Source/core/inspector/InspectorDebuggerAgent.cpp b/Source/core/inspector/InspectorDebuggerAgent.cpp
index f37e1c09672750427786724ce70aae6719d69741..0e1cd9d38380307b213f0feccb0d5c962f611651 100644
--- a/Source/core/inspector/InspectorDebuggerAgent.cpp
+++ b/Source/core/inspector/InspectorDebuggerAgent.cpp
@@ -104,6 +104,7 @@ InspectorDebuggerAgent::InspectorDebuggerAgent(InjectedScriptManager* injectedSc
, m_frontend(0)
, m_pausedScriptState(nullptr)
, m_javaScriptPauseScheduled(false)
+ , m_debuggerStepScheduled(false)
, m_listener(0)
, m_skipStepInCount(numberOfStepsBeforeStepOut)
, m_skipAllPauses(false)
@@ -471,8 +472,7 @@ String InspectorDebuggerAgent::scriptURL(JavaScriptCallFrame* frame)
ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipExceptionPause()
{
- if (m_skipAllPauses)
- return ScriptDebugListener::Continue;
+ // FIXME: Fast return: if (!m_cachedSkipStackRegExp && !has_any_anti_breakpoint) return ScriptDebugListener::NoSkip;
RefPtr<JavaScriptCallFrame> topFrame = scriptDebugServer().topCallFrameNoScopes();
if (!topFrame)
@@ -522,17 +522,8 @@ ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipExceptio
return ScriptDebugListener::NoSkip;
}
-ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipBreakpointPause()
-{
- if (m_skipAllPauses)
- return ScriptDebugListener::Continue;
- return ScriptDebugListener::NoSkip;
-}
-
ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::shouldSkipStepPause()
{
- if (m_skipAllPauses)
- return ScriptDebugListener::Continue;
if (!m_cachedSkipStackRegExp)
return ScriptDebugListener::NoSkip;
@@ -642,6 +633,7 @@ void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb
return;
m_breakReason = breakReason;
m_breakAuxData = data;
+ m_debuggerStepScheduled = true;
scriptDebugServer().setPauseOnNextStatement(true);
}
@@ -650,6 +642,7 @@ void InspectorDebuggerAgent::cancelPauseOnNextStatement()
if (m_javaScriptPauseScheduled)
return;
clearBreakDetails();
+ m_debuggerStepScheduled = false;
scriptDebugServer().setPauseOnNextStatement(false);
}
@@ -752,14 +745,16 @@ void InspectorDebuggerAgent::pause(ErrorString*)
if (m_javaScriptPauseScheduled)
return;
clearBreakDetails();
- scriptDebugServer().setPauseOnNextStatement(true);
m_javaScriptPauseScheduled = true;
+ m_debuggerStepScheduled = false;
+ scriptDebugServer().setPauseOnNextStatement(true);
}
void InspectorDebuggerAgent::resume(ErrorString* errorString)
{
if (!assertPaused(errorString))
return;
+ m_debuggerStepScheduled = false;
m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtraceObjectGroup);
scriptDebugServer().continueProgram();
}
@@ -787,6 +782,7 @@ void InspectorDebuggerAgent::stepOver(ErrorString* errorString, const String* ca
ScriptValue frame = resolveCallFrame(errorString, callFrameId);
if (!errorString->isEmpty())
return;
+ m_debuggerStepScheduled = true;
m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtraceObjectGroup);
scriptDebugServer().stepOverStatement(frame);
}
@@ -795,6 +791,7 @@ void InspectorDebuggerAgent::stepInto(ErrorString* errorString)
{
if (!assertPaused(errorString))
return;
+ m_debuggerStepScheduled = true;
m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtraceObjectGroup);
scriptDebugServer().stepIntoStatement();
if (m_listener)
@@ -808,6 +805,7 @@ void InspectorDebuggerAgent::stepOut(ErrorString* errorString, const String* cal
ScriptValue frame = resolveCallFrame(errorString, callFrameId);
if (!errorString->isEmpty())
return;
+ m_debuggerStepScheduled = true;
m_injectedScriptManager->releaseObjectGroup(InspectorDebuggerAgent::backtraceObjectGroup);
scriptDebugServer().stepOutOfFunction(frame);
}
@@ -1104,13 +1102,19 @@ void InspectorDebuggerAgent::failedToParseSource(const String& url, const String
ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints)
{
- ScriptDebugListener::SkipPauseRequest result = ScriptDebugListener::NoSkip;
- if (!exception.isEmpty())
- result = shouldSkipExceptionPause();
+ ScriptDebugListener::SkipPauseRequest result;
+ if (m_javaScriptPauseScheduled)
+ result = ScriptDebugListener::NoSkip; // Don't skip explicit pause requests from front-end.
+ else if (m_skipAllPauses)
+ result = ScriptDebugListener::Continue;
else if (!hitBreakpoints.isEmpty())
- result = shouldSkipBreakpointPause();
- else
+ result = ScriptDebugListener::NoSkip; // Don't skip explicit breakpoints even if set in frameworks.
+ else if (!exception.isEmpty())
+ result = shouldSkipExceptionPause();
+ else if (m_debuggerStepScheduled)
result = shouldSkipStepPause();
+ else
+ result = ScriptDebugListener::NoSkip;
if (result != ScriptDebugListener::NoSkip)
return result;
@@ -1146,6 +1150,7 @@ ScriptDebugListener::SkipPauseRequest InspectorDebuggerAgent::didPause(ScriptSta
m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBreakpointIds, currentAsyncStackTrace());
m_javaScriptPauseScheduled = false;
+ m_debuggerStepScheduled = false;
if (!m_continueToLocationBreakpointId.isEmpty()) {
scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId);
@@ -1175,6 +1180,7 @@ void InspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reason::E
return;
m_breakReason = breakReason;
m_breakAuxData = data;
+ m_debuggerStepScheduled = false;
scriptDebugServer().breakProgram();
}
@@ -1188,6 +1194,7 @@ void InspectorDebuggerAgent::clear()
m_continueToLocationBreakpointId = String();
clearBreakDetails();
m_javaScriptPauseScheduled = false;
+ m_debuggerStepScheduled = false;
ErrorString error;
setOverlayMessage(&error, 0);
}
« no previous file with comments | « Source/core/inspector/InspectorDebuggerAgent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698