diff options
author | Steve Block <steveblock@google.com> | 2010-08-24 07:50:47 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-08-24 07:50:47 -0700 |
commit | c570a147a94b126d4172c30914f53dea17b4c8f5 (patch) | |
tree | 99c11741887d21f65d67c5bbdab58b7ba2a5d4d5 /WebCore/bindings/v8/ScriptDebugServer.cpp | |
parent | c952714bc6809a5ad081baaf9fcc04107b92ea3f (diff) | |
parent | 6c65f16005b91786c2b7c0791b9ea1dd684d57f4 (diff) | |
download | external_webkit-c570a147a94b126d4172c30914f53dea17b4c8f5.zip external_webkit-c570a147a94b126d4172c30914f53dea17b4c8f5.tar.gz external_webkit-c570a147a94b126d4172c30914f53dea17b4c8f5.tar.bz2 |
Merge changes I2e7e2317,Ie6ccde3a,I3e89f231,Id06ff339,I268dfe7d,Icaf70d9f,Ie234f1a0,Iff5c7aaa,I69b75bf0,Ifbf384f4
* changes:
Merge WebKit at r65615 : Update WebKit revision number
Merge WebKit at r65615 : Ignore http/tests/appcache/origin-quota.html
Merge WebKit at r65615 : Android-specific results for Geolocation tests.
Merge WebKit at r65615 : Fix GraphicsContext and ImageBuffer.
Merge WebKit at r65615 : processingUserGesture() is now static.
Merge WebKit at r65615 : UTF8String() becomes utf8().
Merge WebKit at r65615 : Fix include paths for string headers.
Merge WebKit at r65615 : Fix Makefiles.
Merge WebKit at r65615 : Fix conflicts.
Merge WebKit at r65615 : Initial merge by git.
Diffstat (limited to 'WebCore/bindings/v8/ScriptDebugServer.cpp')
-rw-r--r-- | WebCore/bindings/v8/ScriptDebugServer.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/WebCore/bindings/v8/ScriptDebugServer.cpp b/WebCore/bindings/v8/ScriptDebugServer.cpp index 0a432b7..0c24678 100644 --- a/WebCore/bindings/v8/ScriptDebugServer.cpp +++ b/WebCore/bindings/v8/ScriptDebugServer.cpp @@ -44,6 +44,19 @@ namespace WebCore { +namespace { + +class ClientDataImpl : public v8::Debug::ClientData { +public: + ClientDataImpl(PassOwnPtr<ScriptDebugServer::Task> task) : m_task(task) { } + virtual ~ClientDataImpl() { } + ScriptDebugServer::Task* task() const { return m_task.get(); } +private: + OwnPtr<ScriptDebugServer::Task> m_task; +}; + +} + static Frame* retrieveFrame(v8::Handle<v8::Context> context) { if (context.IsEmpty()) @@ -209,6 +222,12 @@ void ScriptDebugServer::setPauseOnExceptionsState(PauseOnExceptionsState pauseOn setPauseOnExceptionsFunction->Call(m_debuggerScript.get(), 1, argv); } +void ScriptDebugServer::pause() +{ + if (!m_pausedPage) + v8::Debug::DebugBreak(); +} + void ScriptDebugServer::continueProgram() { if (m_pausedPage) @@ -294,6 +313,16 @@ bool ScriptDebugServer::isDebuggerAlwaysEnabled() return m_enabled; } +void ScriptDebugServer::interruptAndRun(PassOwnPtr<Task> task) +{ + v8::Debug::DebugBreakForCommand(new ClientDataImpl(task)); +} + +void ScriptDebugServer::runPendingTasks() +{ + v8::Debug::ProcessDebugMessages(); +} + void ScriptDebugServer::v8DebugEventCallback(const v8::Debug::EventDetails& eventDetails) { ScriptDebugServer::shared().handleV8DebugEvent(eventDetails); @@ -302,6 +331,13 @@ void ScriptDebugServer::v8DebugEventCallback(const v8::Debug::EventDetails& even void ScriptDebugServer::handleV8DebugEvent(const v8::Debug::EventDetails& eventDetails) { v8::DebugEvent event = eventDetails.GetEvent(); + + if (event == v8::BreakForCommand) { + ClientDataImpl* data = static_cast<ClientDataImpl*>(eventDetails.GetClientData()); + data->task()->run(); + return; + } + if (event != v8::Break && event != v8::Exception && event != v8::AfterCompile) return; |