diff options
| author | Iain Merrick <husky@google.com> | 2010-08-19 17:55:56 +0100 |
|---|---|---|
| committer | Iain Merrick <husky@google.com> | 2010-08-23 11:05:40 +0100 |
| commit | f486d19d62f1bc33246748b14b14a9dfa617b57f (patch) | |
| tree | 195485454c93125455a30e553a73981c3816144d /WebCore/bindings/v8/ScriptDebugServer.cpp | |
| parent | 6ba0b43722d16bc295606bec39f396f596e4fef1 (diff) | |
| download | external_webkit-f486d19d62f1bc33246748b14b14a9dfa617b57f.zip external_webkit-f486d19d62f1bc33246748b14b14a9dfa617b57f.tar.gz external_webkit-f486d19d62f1bc33246748b14b14a9dfa617b57f.tar.bz2 | |
Merge WebKit at r65615 : Initial merge by git.
Change-Id: Ifbf384f4531e3b58475a662e38195c2d9152ae79
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; |
