diff options
Diffstat (limited to 'Source/WebCore/inspector/PageDebuggerAgent.cpp')
-rw-r--r-- | Source/WebCore/inspector/PageDebuggerAgent.cpp | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/Source/WebCore/inspector/PageDebuggerAgent.cpp b/Source/WebCore/inspector/PageDebuggerAgent.cpp index 67f4951ac..a86ed135b 100644 --- a/Source/WebCore/inspector/PageDebuggerAgent.cpp +++ b/Source/WebCore/inspector/PageDebuggerAgent.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2011 Google Inc. All rights reserved. + * Copyright (C) 2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -31,25 +32,28 @@ #include "config.h" #include "PageDebuggerAgent.h" -#if ENABLE(INSPECTOR) - #include "CachedResource.h" #include "InspectorOverlay.h" #include "InspectorPageAgent.h" #include "InstrumentingAgents.h" +#include "MainFrame.h" #include "Page.h" -#include "PageConsole.h" +#include "PageConsoleClient.h" #include "PageScriptDebugServer.h" #include "ScriptState.h" #include <inspector/InjectedScript.h> #include <inspector/InjectedScriptManager.h> +#include <inspector/ScriptCallStack.h> +#include <inspector/ScriptCallStackFactory.h> +#include <wtf/NeverDestroyed.h> using namespace Inspector; namespace WebCore { -PageDebuggerAgent::PageDebuggerAgent(InjectedScriptManager* injectedScriptManager, InstrumentingAgents* instrumentingAgents, InspectorPageAgent* pageAgent, InspectorOverlay* overlay) - : WebDebuggerAgent(injectedScriptManager, instrumentingAgents) +PageDebuggerAgent::PageDebuggerAgent(PageAgentContext& context, InspectorPageAgent* pageAgent, InspectorOverlay* overlay) + : WebDebuggerAgent(context) + , m_page(context.inspectedPage) , m_pageAgent(pageAgent) , m_overlay(overlay) { @@ -58,22 +62,22 @@ PageDebuggerAgent::PageDebuggerAgent(InjectedScriptManager* injectedScriptManage void PageDebuggerAgent::enable() { WebDebuggerAgent::enable(); - m_instrumentingAgents->setPageDebuggerAgent(this); + m_instrumentingAgents.setPageDebuggerAgent(this); } void PageDebuggerAgent::disable(bool isBeingDestroyed) { WebDebuggerAgent::disable(isBeingDestroyed); - m_instrumentingAgents->setPageDebuggerAgent(nullptr); + m_instrumentingAgents.setPageDebuggerAgent(nullptr); } String PageDebuggerAgent::sourceMapURLForScript(const Script& script) { - DEFINE_STATIC_LOCAL(String, sourceMapHTTPHeader, (ASCIILiteral("SourceMap"))); - DEFINE_STATIC_LOCAL(String, sourceMapHTTPHeaderDeprecated, (ASCIILiteral("X-SourceMap"))); + static NeverDestroyed<String> sourceMapHTTPHeader(ASCIILiteral("SourceMap")); + static NeverDestroyed<String> sourceMapHTTPHeaderDeprecated(ASCIILiteral("X-SourceMap")); if (!script.url.isEmpty()) { - CachedResource* resource = m_pageAgent->cachedResource(m_pageAgent->mainFrame(), URL(ParsedURLString, script.url)); + CachedResource* resource = m_pageAgent->cachedResource(&m_page.mainFrame(), URL(ParsedURLString, script.url)); if (resource) { String sourceMapHeader = resource->response().httpHeaderField(sourceMapHTTPHeader); if (!sourceMapHeader.isEmpty()) @@ -88,51 +92,36 @@ String PageDebuggerAgent::sourceMapURLForScript(const Script& script) return InspectorDebuggerAgent::sourceMapURLForScript(script); } -void PageDebuggerAgent::startListeningScriptDebugServer() -{ - scriptDebugServer().addListener(this, m_pageAgent->page()); -} - -void PageDebuggerAgent::stopListeningScriptDebugServer(bool isBeingDestroyed) -{ - scriptDebugServer().removeListener(this, m_pageAgent->page(), isBeingDestroyed); -} - -PageScriptDebugServer& PageDebuggerAgent::scriptDebugServer() -{ - return PageScriptDebugServer::shared(); -} - void PageDebuggerAgent::muteConsole() { - PageConsole::mute(); + PageConsoleClient::mute(); } void PageDebuggerAgent::unmuteConsole() { - PageConsole::unmute(); + PageConsoleClient::unmute(); } -void PageDebuggerAgent::breakpointActionLog(JSC::ExecState*, const String& message) +void PageDebuggerAgent::breakpointActionLog(JSC::ExecState& state, const String& message) { - m_pageAgent->page()->console().addMessage(JSMessageSource, LogMessageLevel, message); + m_pageAgent->page().console().addMessage(MessageSource::JS, MessageLevel::Log, message, createScriptCallStack(&state, ScriptCallStack::maxCallStackSizeToCapture)); } -InjectedScript PageDebuggerAgent::injectedScriptForEval(ErrorString* errorString, const int* executionContextId) +InjectedScript PageDebuggerAgent::injectedScriptForEval(ErrorString& errorString, const int* executionContextId) { if (!executionContextId) { - JSC::ExecState* scriptState = mainWorldExecState(m_pageAgent->mainFrame()); - return injectedScriptManager()->injectedScriptFor(scriptState); + JSC::ExecState* scriptState = mainWorldExecState(&m_pageAgent->mainFrame()); + return injectedScriptManager().injectedScriptFor(scriptState); } - InjectedScript injectedScript = injectedScriptManager()->injectedScriptForId(*executionContextId); + InjectedScript injectedScript = injectedScriptManager().injectedScriptForId(*executionContextId); if (injectedScript.hasNoValue()) - *errorString = ASCIILiteral("Execution context with given id not found."); + errorString = ASCIILiteral("Execution context with given id not found."); return injectedScript; } -void PageDebuggerAgent::setOverlayMessage(ErrorString*, const String* message) +void PageDebuggerAgent::setOverlayMessage(ErrorString&, const String* message) { m_overlay->setPausedInDebuggerMessage(message); } @@ -142,6 +131,23 @@ void PageDebuggerAgent::didClearMainFrameWindowObject() didClearGlobalObject(); } -} // namespace WebCore +void PageDebuggerAgent::mainFrameStartedLoading() +{ + if (isPaused()) { + setSuppressAllPauses(true); + ErrorString unused; + resume(unused); + } +} + +void PageDebuggerAgent::mainFrameStoppedLoading() +{ + setSuppressAllPauses(false); +} -#endif // ENABLE(INSPECTOR) +void PageDebuggerAgent::mainFrameNavigated() +{ + setSuppressAllPauses(false); +} + +} // namespace WebCore |