summaryrefslogtreecommitdiffstats
path: root/WebCore/inspector/InspectorDebuggerAgent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/inspector/InspectorDebuggerAgent.cpp')
-rw-r--r--WebCore/inspector/InspectorDebuggerAgent.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/WebCore/inspector/InspectorDebuggerAgent.cpp b/WebCore/inspector/InspectorDebuggerAgent.cpp
index 4964c09..a7eacf6 100644
--- a/WebCore/inspector/InspectorDebuggerAgent.cpp
+++ b/WebCore/inspector/InspectorDebuggerAgent.cpp
@@ -38,13 +38,13 @@
#include "PlatformString.h"
#include "ScriptDebugServer.h"
#include <wtf/MD5.h>
-#include <wtf/text/CString.h>
+#include <wtf/text/StringConcatenate.h>
namespace WebCore {
static String formatBreakpointId(const String& sourceID, unsigned lineNumber)
{
- return String::format("%s:%d", sourceID.utf8().data(), lineNumber);
+ return makeString(sourceID, ':', String::number(lineNumber));
}
PassOwnPtr<InspectorDebuggerAgent> InspectorDebuggerAgent::create(InspectorController* inspectorController, InspectorFrontend* frontend)
@@ -57,8 +57,6 @@ PassOwnPtr<InspectorDebuggerAgent> InspectorDebuggerAgent::create(InspectorContr
return agent.release();
}
-InspectorDebuggerAgent* InspectorDebuggerAgent::s_debuggerAgentOnBreakpoint = 0;
-
InspectorDebuggerAgent::InspectorDebuggerAgent(InspectorController* inspectorController, InspectorFrontend* frontend)
: m_inspectorController(inspectorController)
, m_frontend(frontend)
@@ -71,9 +69,6 @@ InspectorDebuggerAgent::~InspectorDebuggerAgent()
{
ScriptDebugServer::shared().removeListener(this, m_inspectorController->inspectedPage());
m_pausedScriptState = 0;
-
- if (this == s_debuggerAgentOnBreakpoint)
- s_debuggerAgentOnBreakpoint = 0;
}
bool InspectorDebuggerAgent::isDebuggerAlwaysEnabled()
@@ -147,9 +142,23 @@ void InspectorDebuggerAgent::getScriptSource(const String& sourceID, String* scr
*scriptSource = m_scriptIDToContent.get(sourceID);
}
+void InspectorDebuggerAgent::schedulePauseOnNextStatement(DebuggerEventType type, PassRefPtr<InspectorValue> data)
+{
+ m_breakProgramDetails = InspectorObject::create();
+ m_breakProgramDetails->setNumber("eventType", type);
+ m_breakProgramDetails->setValue("eventData", data);
+ ScriptDebugServer::shared().setPauseOnNextStatement(true);
+}
+
+void InspectorDebuggerAgent::cancelPauseOnNextStatement()
+{
+ m_breakProgramDetails = 0;
+ ScriptDebugServer::shared().setPauseOnNextStatement(false);
+}
+
void InspectorDebuggerAgent::pause()
{
- ScriptDebugServer::shared().pause();
+ schedulePauseOnNextStatement(JavaScriptPauseEventType, InspectorObject::create());
}
void InspectorDebuggerAgent::resume()
@@ -305,6 +314,7 @@ void InspectorDebuggerAgent::didPause(ScriptState* scriptState)
void InspectorDebuggerAgent::didContinue()
{
m_pausedScriptState = 0;
+ m_breakProgramDetails = 0;
m_frontend->resumedScript();
}
@@ -313,14 +323,7 @@ void InspectorDebuggerAgent::breakProgram(DebuggerEventType type, PassRefPtr<Ins
m_breakProgramDetails = InspectorObject::create();
m_breakProgramDetails->setNumber("eventType", type);
m_breakProgramDetails->setValue("eventData", data);
- s_debuggerAgentOnBreakpoint = this;
-
ScriptDebugServer::shared().breakProgram();
- if (!s_debuggerAgentOnBreakpoint)
- return;
-
- s_debuggerAgentOnBreakpoint = 0;
- m_breakProgramDetails = 0;
}
} // namespace WebCore