From 635860845790a19bf50bbc51ba8fb66a96dde068 Mon Sep 17 00:00:00 2001 From: The Android Open Source Project Date: Thu, 5 Mar 2009 14:34:32 -0800 Subject: auto import from //depot/cupcake/@136594 --- WebCore/inspector/JavaScriptDebugServer.cpp | 56 ++++++++++++++++------------- 1 file changed, 31 insertions(+), 25 deletions(-) (limited to 'WebCore/inspector/JavaScriptDebugServer.cpp') diff --git a/WebCore/inspector/JavaScriptDebugServer.cpp b/WebCore/inspector/JavaScriptDebugServer.cpp index ed9ae85..05dca70 100644 --- a/WebCore/inspector/JavaScriptDebugServer.cpp +++ b/WebCore/inspector/JavaScriptDebugServer.cpp @@ -39,7 +39,6 @@ #include "JavaScriptDebugListener.h" #include "Page.h" #include "PageGroup.h" -#include "PausedTimeouts.h" #include "PluginView.h" #include "ScrollView.h" #include "Widget.h" @@ -47,8 +46,9 @@ #include #include #include -#include +#include #include +#include #include using namespace JSC; @@ -59,7 +59,7 @@ typedef JavaScriptDebugServer::ListenerSet ListenerSet; JavaScriptDebugServer& JavaScriptDebugServer::shared() { - static JavaScriptDebugServer server; + DEFINE_STATIC_LOCAL(JavaScriptDebugServer, server, ()); return server; } @@ -78,7 +78,6 @@ JavaScriptDebugServer::~JavaScriptDebugServer() { deleteAllValues(m_pageListenersMap); deleteAllValues(m_breakpoints); - deleteAllValues(m_pausedTimeouts); } void JavaScriptDebugServer::addListener(JavaScriptDebugListener* listener) @@ -364,23 +363,26 @@ void JavaScriptDebugServer::setJavaScriptPaused(Frame* frame, bool paused) frame->script()->setPaused(paused); - if (JSDOMWindow* window = toJSDOMWindow(frame)) { - if (paused) { - OwnPtr timeouts; - window->pauseTimeouts(timeouts); - m_pausedTimeouts.set(frame, timeouts.release()); - } else { - OwnPtr timeouts(m_pausedTimeouts.take(frame)); - window->resumeTimeouts(timeouts); - } + if (Document* document = frame->document()) { + if (paused) + document->suspendActiveDOMObjects(); + else + document->resumeActiveDOMObjects(); } setJavaScriptPaused(frame->view(), paused); } +#if PLATFORM(MAC) + +void JavaScriptDebugServer::setJavaScriptPaused(FrameView*, bool) +{ +} + +#else + void JavaScriptDebugServer::setJavaScriptPaused(FrameView* view, bool paused) { -#if !PLATFORM(MAC) if (!view) return; @@ -394,9 +396,10 @@ void JavaScriptDebugServer::setJavaScriptPaused(FrameView* view, bool paused) continue; static_cast(widget)->setJavaScriptPaused(paused); } -#endif } +#endif + void JavaScriptDebugServer::pauseIfNeeded(Page* page) { if (m_paused) @@ -552,19 +555,19 @@ void JavaScriptDebugServer::recompileAllJSFunctions(Timer } typedef HashMap, RefPtr > FunctionBodyMap; - typedef HashSet SourceProviderSet; + typedef HashMap SourceProviderMap; FunctionBodyMap functionBodies; - SourceProviderSet sourceProviders; + SourceProviderMap sourceProviders; size_t size = functions.size(); for (size_t i = 0; i < size; ++i) { JSFunction* function = functions[i]; - FunctionBodyNode* oldBody = function->m_body.get(); + FunctionBodyNode* oldBody = function->body(); pair result = functionBodies.add(oldBody, 0); if (!result.second) { - function->m_body = result.first->second; + function->setBody(result.first->second.get()); continue; } @@ -576,14 +579,17 @@ void JavaScriptDebugServer::recompileAllJSFunctions(Timer newBody->finishParsing(oldBody->copyParameters(), oldBody->parameterCount()); result.first->second = newBody; - function->m_body = newBody.release(); + function->setBody(newBody.release()); - if (hasListeners()) { - SourceProvider* provider = sourceCode.provider(); - if (sourceProviders.add(provider).second) - sourceParsed(exec, SourceCode(provider), -1, 0); - } + if (hasListeners()) + sourceProviders.add(sourceCode.provider(), exec); } + + // Call sourceParsed() after reparsing all functions because it will execute + // JavaScript in the inspector. + SourceProviderMap::const_iterator end = sourceProviders.end(); + for (SourceProviderMap::const_iterator iter = sourceProviders.begin(); iter != end; ++iter) + sourceParsed((*iter).second, SourceCode((*iter).first), -1, 0); } void JavaScriptDebugServer::didAddListener(Page* page) -- cgit v1.1