<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[189438] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/189438">189438</a></dd>
<dt>Author</dt> <dd>bburg@apple.com</dd>
<dt>Date</dt> <dd>2015-09-05 11:52:16 -0700 (Sat, 05 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: tighten up lifetimes for Agent-owned objects, and initialize agents using contexts
https://bugs.webkit.org/show_bug.cgi?id=148625

Reviewed by Joseph Pecoraro.

All agents own their domain-specific frontend and backend dispatchers. Change so that
they are initialized in constructors rather than when a frontend connects or disconnects.
This may cause additional memory use, but this can be counteracted by lazily creating
some agents that are not required for other agents to function (i.e., runtime and page agents).

To avoid adding frontend/backend dispatcher arguments to every single agent constructor,
change agent construction to take a AgentContext or a subclass of it. This provides agents with
references to objects in the owning InspectorEnvironment subclass that are guaranteed to
outlive all agents. AgentContext and its subclasses follow the existing Agent class hierarchy.

Source/JavaScriptCore:

* inspector/InspectorAgentBase.h:
(Inspector::JSAgentContext::JSAgentContext):
* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::connectFrontend):
(Inspector::JSGlobalObjectInspectorController::disconnectFrontend):
(Inspector::JSGlobalObjectInspectorController::disconnectAllFrontends):
(Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
* inspector/JSGlobalObjectInspectorController.h:
* inspector/agents/InspectorAgent.cpp:
(Inspector::InspectorAgent::InspectorAgent):
(Inspector::InspectorAgent::didCreateFrontendAndBackend):
(Inspector::InspectorAgent::willDestroyFrontendAndBackend):
* inspector/agents/InspectorAgent.h:
* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::InspectorConsoleAgent):
(Inspector::InspectorConsoleAgent::didCreateFrontendAndBackend):
(Inspector::InspectorConsoleAgent::willDestroyFrontendAndBackend):
* inspector/agents/InspectorConsoleAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent):
(Inspector::InspectorDebuggerAgent::didCreateFrontendAndBackend):
(Inspector::InspectorDebuggerAgent::willDestroyFrontendAndBackend):
* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::InspectorRuntimeAgent):
* inspector/agents/InspectorRuntimeAgent.h:
* inspector/agents/JSGlobalObjectConsoleAgent.cpp:
(Inspector::JSGlobalObjectConsoleAgent::JSGlobalObjectConsoleAgent):
* inspector/agents/JSGlobalObjectConsoleAgent.h:
* inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
(Inspector::JSGlobalObjectDebuggerAgent::JSGlobalObjectDebuggerAgent):
* inspector/agents/JSGlobalObjectDebuggerAgent.h:
* inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
(Inspector::JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent):
(Inspector::JSGlobalObjectRuntimeAgent::didCreateFrontendAndBackend):
* inspector/agents/JSGlobalObjectRuntimeAgent.h:
* inspector/augmentable/AlternateDispatchableAgent.h:
* inspector/augmentable/AugmentableInspectorController.h: Alternate agents should
have access to frontend router and backend dispatcher at construction time.

* inspector/scripts/codegen/cpp_generator_templates.py:
* inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:
(CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event):
* inspector/scripts/codegen/objc_generator_templates.py:

Source/WebCore:

No new tests, no behavior changed.

* bindings/js/WorkerScriptDebugServer.cpp:
(WebCore::WorkerScriptDebugServer::WorkerScriptDebugServer):
(WebCore::WorkerScriptDebugServer::addListener):
(WebCore::WorkerScriptDebugServer::removeListener):
(WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):
* bindings/js/WorkerScriptDebugServer.h:
* inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
(WebCore::InspectorApplicationCacheAgent::didCreateFrontendAndBackend):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::willDestroyFrontendAndBackend):
* inspector/InspectorApplicationCacheAgent.h:
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::InspectorCSSAgent):
(WebCore::InspectorCSSAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCSSAgent::willDestroyFrontendAndBackend):
* inspector/InspectorCSSAgent.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::InspectorDOMAgent):
(WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
* inspector/InspectorDOMAgent.h:
* inspector/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMDebuggerAgent::willDestroyFrontendAndBackend):
* inspector/InspectorDOMDebuggerAgent.h:
* inspector/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
(WebCore::InspectorDOMStorageAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDOMStorageAgent::findStorageArea):
(WebCore::InspectorDOMStorageAgent::willDestroyFrontendAndBackend):
* inspector/InspectorDOMStorageAgent.h:
* inspector/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
(WebCore::InspectorDatabaseAgent::didCreateFrontendAndBackend):
(WebCore::InspectorDatabaseAgent::willDestroyFrontendAndBackend):
* inspector/InspectorDatabaseAgent.h:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
(WebCore::InspectorIndexedDBAgent::didCreateFrontendAndBackend):
(WebCore::InspectorIndexedDBAgent::willDestroyFrontendAndBackend):
* inspector/InspectorIndexedDBAgent.h:
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):
* inspector/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
(WebCore::InspectorLayerTreeAgent::didCreateFrontendAndBackend):
(WebCore::InspectorLayerTreeAgent::willDestroyFrontendAndBackend):
* inspector/InspectorLayerTreeAgent.h:
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::InspectorPageAgent):
(WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
(WebCore::InspectorPageAgent::enable):
(WebCore::InspectorPageAgent::reload):
(WebCore::InspectorPageAgent::navigate):
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::deleteCookie):
(WebCore::InspectorPageAgent::getResourceTree):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::getScriptExecutionStatus):
(WebCore::InspectorPageAgent::setScriptExecutionDisabled):
(WebCore::InspectorPageAgent::mainFrame):
(WebCore::InspectorPageAgent::findFrameWithSecurityOrigin):
(WebCore::InspectorPageAgent::buildObjectForFrame):
(WebCore::InspectorPageAgent::buildObjectForFrameTree):
(WebCore::InspectorPageAgent::setEmulatedMedia):
(WebCore::InspectorPageAgent::getCompositingBordersVisible):
(WebCore::InspectorPageAgent::setCompositingBordersVisible):
(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):
(WebCore::InspectorPageAgent::archive):
(WebCore::InspectorPageAgent::willDestroyFrontendAndBackend):
* inspector/InspectorPageAgent.h:
* inspector/InspectorReplayAgent.cpp:
(WebCore::InspectorReplayAgent::InspectorReplayAgent):
(WebCore::InspectorReplayAgent::didCreateFrontendAndBackend):
(WebCore::InspectorReplayAgent::willDestroyFrontendAndBackend):
* inspector/InspectorReplayAgent.h:
* inspector/InspectorResourceAgent.cpp:
(WebCore::InspectorResourceAgent::InspectorResourceAgent):
(WebCore::InspectorResourceAgent::didCreateFrontendAndBackend):
(WebCore::InspectorResourceAgent::willDestroyFrontendAndBackend):
* inspector/InspectorResourceAgent.h:
* inspector/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
(WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
(WebCore::InspectorTimelineAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorTimelineAgent::page):
* inspector/InspectorTimelineAgent.h:
* inspector/InspectorWebAgentBase.h:
(WebCore::WebAgentContext::WebAgentContext):
(WebCore::PageAgentContext::PageAgentContext):
(WebCore::WorkerAgentContext::WorkerAgentContext):
(WebCore::InspectorAgentBase::InspectorAgentBase):
* inspector/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
(WebCore::InspectorWorkerAgent::didCreateFrontendAndBackend):
(WebCore::InspectorWorkerAgent::willDestroyFrontendAndBackend):
* inspector/InspectorWorkerAgent.h:
* inspector/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent):
* inspector/PageConsoleAgent.h:
* inspector/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::PageDebuggerAgent):
(WebCore::PageDebuggerAgent::sourceMapURLForScript):
(WebCore::PageDebuggerAgent::breakpointActionLog):
(WebCore::PageDebuggerAgent::injectedScriptForEval):
* inspector/PageDebuggerAgent.h:
* inspector/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::PageRuntimeAgent):
(WebCore::PageRuntimeAgent::didCreateFrontendAndBackend):
(WebCore::PageRuntimeAgent::injectedScriptForEval):
(WebCore::PageRuntimeAgent::reportExecutionContextCreation):
(WebCore::PageRuntimeAgent::willDestroyFrontendAndBackend):
* inspector/PageRuntimeAgent.h:
* inspector/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::WebConsoleAgent):
* inspector/WebConsoleAgent.h:
* inspector/WebDebuggerAgent.cpp:
(WebCore::WebDebuggerAgent::WebDebuggerAgent):
* inspector/WebDebuggerAgent.h:
* inspector/WorkerConsoleAgent.cpp:
(WebCore::WorkerConsoleAgent::WorkerConsoleAgent):
* inspector/WorkerConsoleAgent.h:
* inspector/WorkerDebuggerAgent.cpp:
(WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
(WebCore::WorkerDebuggerAgent::interruptAndDispatchInspectorCommands):
(WebCore::WorkerDebuggerAgent::breakpointActionLog):
(WebCore::WorkerDebuggerAgent::injectedScriptForEval):
* inspector/WorkerDebuggerAgent.h:
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
* inspector/WorkerRuntimeAgent.cpp:
(WebCore::WorkerRuntimeAgent::WorkerRuntimeAgent):
(WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend):
(WebCore::WorkerRuntimeAgent::injectedScriptForEval):
(WebCore::WorkerRuntimeAgent::willDestroyFrontendAndBackend):
* inspector/WorkerRuntimeAgent.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorInspectorAgentBaseh">trunk/Source/JavaScriptCore/inspector/InspectorAgentBase.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp">trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllerh">trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorConsoleAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorConsoleAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectConsoleAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectConsoleAgenth">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectDebuggerAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectDebuggerAgenth">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectRuntimeAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectRuntimeAgenth">trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoraugmentableAlternateDispatchableAgenth">trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerh">trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generator_templatespy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator_templates.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_frontend_dispatcher_implementationpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegenobjc_generator_templatespy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator_templates.py</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWorkerScriptDebugServercpp">trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWorkerScriptDebugServerh">trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorApplicationCacheAgentcpp">trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorApplicationCacheAgenth">trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgentcpp">trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgenth">trunk/Source/WebCore/inspector/InspectorCSSAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllercpp">trunk/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgenth">trunk/Source/WebCore/inspector/InspectorDOMAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMDebuggerAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMDebuggerAgenth">trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMStorageAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMStorageAgenth">trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDatabaseAgentcpp">trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDatabaseAgenth">trunk/Source/WebCore/inspector/InspectorDatabaseAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorIndexedDBAgentcpp">trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorIndexedDBAgenth">trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorInstrumentationcpp">trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorLayerTreeAgentcpp">trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorLayerTreeAgenth">trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgentcpp">trunk/Source/WebCore/inspector/InspectorPageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorPageAgenth">trunk/Source/WebCore/inspector/InspectorPageAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorReplayAgentcpp">trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorReplayAgenth">trunk/Source/WebCore/inspector/InspectorReplayAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgentcpp">trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgenth">trunk/Source/WebCore/inspector/InspectorResourceAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorTimelineAgentcpp">trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorTimelineAgenth">trunk/Source/WebCore/inspector/InspectorTimelineAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorWebAgentBaseh">trunk/Source/WebCore/inspector/InspectorWebAgentBase.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorWorkerAgentcpp">trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorWorkerAgenth">trunk/Source/WebCore/inspector/InspectorWorkerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageConsoleAgentcpp">trunk/Source/WebCore/inspector/PageConsoleAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageConsoleAgenth">trunk/Source/WebCore/inspector/PageConsoleAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageDebuggerAgentcpp">trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageDebuggerAgenth">trunk/Source/WebCore/inspector/PageDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageRuntimeAgentcpp">trunk/Source/WebCore/inspector/PageRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorPageRuntimeAgenth">trunk/Source/WebCore/inspector/PageRuntimeAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebConsoleAgentcpp">trunk/Source/WebCore/inspector/WebConsoleAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebConsoleAgenth">trunk/Source/WebCore/inspector/WebConsoleAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebDebuggerAgentcpp">trunk/Source/WebCore/inspector/WebDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebDebuggerAgenth">trunk/Source/WebCore/inspector/WebDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerConsoleAgentcpp">trunk/Source/WebCore/inspector/WorkerConsoleAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerConsoleAgenth">trunk/Source/WebCore/inspector/WorkerConsoleAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp">trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerDebuggerAgenth">trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerInspectorControllercpp">trunk/Source/WebCore/inspector/WorkerInspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerRuntimeAgentcpp">trunk/Source/WebCore/inspector/WorkerRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWorkerRuntimeAgenth">trunk/Source/WebCore/inspector/WorkerRuntimeAgent.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2015-09-05  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: tighten up lifetimes for Agent-owned objects, and initialize agents using contexts
+        https://bugs.webkit.org/show_bug.cgi?id=148625
+
+        Reviewed by Joseph Pecoraro.
+
+        All agents own their domain-specific frontend and backend dispatchers. Change so that
+        they are initialized in constructors rather than when a frontend connects or disconnects.
+        This may cause additional memory use, but this can be counteracted by lazily creating
+        some agents that are not required for other agents to function (i.e., runtime and page agents).
+
+        To avoid adding frontend/backend dispatcher arguments to every single agent constructor,
+        change agent construction to take a AgentContext or a subclass of it. This provides agents with
+        references to objects in the owning InspectorEnvironment subclass that are guaranteed to
+        outlive all agents. AgentContext and its subclasses follow the existing Agent class hierarchy.
+
+        * inspector/InspectorAgentBase.h:
+        (Inspector::JSAgentContext::JSAgentContext):
+        * inspector/JSGlobalObjectInspectorController.cpp:
+        (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
+        (Inspector::JSGlobalObjectInspectorController::connectFrontend):
+        (Inspector::JSGlobalObjectInspectorController::disconnectFrontend):
+        (Inspector::JSGlobalObjectInspectorController::disconnectAllFrontends):
+        (Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
+        * inspector/JSGlobalObjectInspectorController.h:
+        * inspector/agents/InspectorAgent.cpp:
+        (Inspector::InspectorAgent::InspectorAgent):
+        (Inspector::InspectorAgent::didCreateFrontendAndBackend):
+        (Inspector::InspectorAgent::willDestroyFrontendAndBackend):
+        * inspector/agents/InspectorAgent.h:
+        * inspector/agents/InspectorConsoleAgent.cpp:
+        (Inspector::InspectorConsoleAgent::InspectorConsoleAgent):
+        (Inspector::InspectorConsoleAgent::didCreateFrontendAndBackend):
+        (Inspector::InspectorConsoleAgent::willDestroyFrontendAndBackend):
+        * inspector/agents/InspectorConsoleAgent.h:
+        * inspector/agents/InspectorDebuggerAgent.cpp:
+        (Inspector::InspectorDebuggerAgent::InspectorDebuggerAgent):
+        (Inspector::InspectorDebuggerAgent::didCreateFrontendAndBackend):
+        (Inspector::InspectorDebuggerAgent::willDestroyFrontendAndBackend):
+        * inspector/agents/InspectorDebuggerAgent.h:
+        * inspector/agents/InspectorRuntimeAgent.cpp:
+        (Inspector::InspectorRuntimeAgent::InspectorRuntimeAgent):
+        * inspector/agents/InspectorRuntimeAgent.h:
+        * inspector/agents/JSGlobalObjectConsoleAgent.cpp:
+        (Inspector::JSGlobalObjectConsoleAgent::JSGlobalObjectConsoleAgent):
+        * inspector/agents/JSGlobalObjectConsoleAgent.h:
+        * inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
+        (Inspector::JSGlobalObjectDebuggerAgent::JSGlobalObjectDebuggerAgent):
+        * inspector/agents/JSGlobalObjectDebuggerAgent.h:
+        * inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
+        (Inspector::JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent):
+        (Inspector::JSGlobalObjectRuntimeAgent::didCreateFrontendAndBackend):
+        * inspector/agents/JSGlobalObjectRuntimeAgent.h:
+        * inspector/augmentable/AlternateDispatchableAgent.h:
+        * inspector/augmentable/AugmentableInspectorController.h: Alternate agents should
+        have access to frontend router and backend dispatcher at construction time.
+        
+        * inspector/scripts/codegen/cpp_generator_templates.py:
+        * inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:
+        (CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event):
+        * inspector/scripts/codegen/objc_generator_templates.py:
+
</ins><span class="cx"> 2015-09-04  Brian Burg  &lt;bburg@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: agents should send messages through FrontendRouter instead of FrontendChannel
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorInspectorAgentBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/InspectorAgentBase.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/InspectorAgentBase.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/InspectorAgentBase.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -29,11 +29,34 @@
</span><span class="cx"> 
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+namespace JSC {
+class JSGlobalObject;
+}
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> class BackendDispatcher;
</span><span class="cx"> class FrontendRouter;
</span><ins>+class InjectedScriptManager;
+class InspectorEnvironment;
</ins><span class="cx"> 
</span><ins>+struct AgentContext {
+    InspectorEnvironment&amp; environment;
+    InjectedScriptManager&amp; injectedScriptManager;
+    FrontendRouter&amp; frontendRouter;
+    BackendDispatcher&amp; backendDispatcher;
+};
+
+struct JSAgentContext : public AgentContext {
+    JSAgentContext(AgentContext&amp; context, JSC::JSGlobalObject&amp; globalObject)
+        : AgentContext(context)
+        , inspectedGlobalObject(globalObject)
+    {
+    }
+
+    JSC::JSGlobalObject&amp; inspectedGlobalObject;
+};
+
</ins><span class="cx"> enum class DisconnectReason {
</span><span class="cx">     InspectedTargetDestroyed,
</span><span class="cx">     InspectorDestroyed
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -62,17 +62,31 @@
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> JSGlobalObjectInspectorController::JSGlobalObjectInspectorController(JSGlobalObject&amp; globalObject)
</span><del>-    : m_globalObject(globalObject)
-    , m_injectedScriptManager(std::make_unique&lt;InjectedScriptManager&gt;(*this, InjectedScriptHost::create()))
</del><ins>+    : m_injectedScriptManager(std::make_unique&lt;InjectedScriptManager&gt;(*this, InjectedScriptHost::create()))
</ins><span class="cx">     , m_executionStopwatch(Stopwatch::create())
</span><span class="cx">     , m_frontendRouter(FrontendRouter::create())
</span><span class="cx">     , m_backendDispatcher(BackendDispatcher::create(m_frontendRouter.copyRef()))
</span><ins>+#if ENABLE(REMOTE_INSPECTOR)
+    , m_globalObject(globalObject)
+#endif
</ins><span class="cx"> {
</span><del>-    auto inspectorAgent = std::make_unique&lt;InspectorAgent&gt;(*this);
-    auto runtimeAgent = std::make_unique&lt;JSGlobalObjectRuntimeAgent&gt;(*m_injectedScriptManager, m_globalObject);
-    auto consoleAgent = std::make_unique&lt;JSGlobalObjectConsoleAgent&gt;(*m_injectedScriptManager);
-    auto debuggerAgent = std::make_unique&lt;JSGlobalObjectDebuggerAgent&gt;(*m_injectedScriptManager, m_globalObject, consoleAgent.get());
</del><ins>+    AgentContext baseContext = {
+        *this,
+        *m_injectedScriptManager,
+        m_frontendRouter.get(),
+        m_backendDispatcher.get()
+    };
</ins><span class="cx"> 
</span><ins>+    JSAgentContext context = {
+        baseContext,
+        globalObject
+    };
+
+    auto inspectorAgent = std::make_unique&lt;InspectorAgent&gt;(context);
+    auto runtimeAgent = std::make_unique&lt;JSGlobalObjectRuntimeAgent&gt;(context);
+    auto consoleAgent = std::make_unique&lt;JSGlobalObjectConsoleAgent&gt;(context);
+    auto debuggerAgent = std::make_unique&lt;JSGlobalObjectDebuggerAgent&gt;(context, consoleAgent.get());
+
</ins><span class="cx">     m_inspectorAgent = inspectorAgent.get();
</span><span class="cx">     m_debuggerAgent = debuggerAgent.get();
</span><span class="cx">     m_consoleAgent = consoleAgent.get();
</span><span class="lines">@@ -111,7 +125,8 @@
</span><span class="cx">     if (!connectedFirstFrontend)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_agents.didCreateFrontendAndBackend(&amp;m_frontendRouter.get(), &amp;m_backendDispatcher.get());
</del><ins>+    // FIXME: change this to notify agents which frontend has connected (by id).
+    m_agents.didCreateFrontendAndBackend(nullptr, nullptr);
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx">     m_inspectorAgent-&gt;activateExtraDomains(m_agents.extraDomains());
</span><span class="lines">@@ -125,6 +140,7 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT_ARG(frontendChannel, frontendChannel);
</span><span class="cx"> 
</span><ins>+    // FIXME: change this to notify agents which frontend has disconnected (by id).
</ins><span class="cx">     m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectorDestroyed);
</span><span class="cx"> 
</span><span class="cx">     m_frontendRouter-&gt;disconnectFrontend(frontendChannel);
</span><span class="lines">@@ -143,6 +159,7 @@
</span><span class="cx"> 
</span><span class="cx"> void JSGlobalObjectInspectorController::disconnectAllFrontends()
</span><span class="cx"> {
</span><ins>+    // FIXME: change this to notify agents which frontend has disconnected (by id).
</ins><span class="cx">     m_agents.willDestroyFrontendAndBackend(DisconnectReason::InspectedTargetDestroyed);
</span><span class="cx"> 
</span><span class="cx">     m_frontendRouter-&gt;disconnectAllFrontends();
</span><span class="lines">@@ -271,7 +288,8 @@
</span><span class="cx"> {
</span><span class="cx">     String domainName = agent-&gt;domainName();
</span><span class="cx"> 
</span><del>-    agent-&gt;didCreateFrontendAndBackend(&amp;m_frontendRouter.get(), &amp;m_backendDispatcher.get());
</del><ins>+    // FIXME: change this to notify agents which frontend has connected (by id).
+    agent-&gt;didCreateFrontendAndBackend(nullptr, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     m_agents.appendExtraAgent(WTF::move(agent));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -103,13 +103,13 @@
</span><span class="cx">     virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient* client) override { m_augmentingClient = client; }
</span><span class="cx"> 
</span><span class="cx">     virtual const FrontendRouter&amp; frontendRouter() const override { return m_frontendRouter.get(); }
</span><ins>+    virtual BackendDispatcher&amp; backendDispatcher() override { return m_backendDispatcher.get(); }
</ins><span class="cx">     virtual void appendExtraAgent(std::unique_ptr&lt;InspectorAgentBase&gt;) override;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     void appendAPIBacktrace(ScriptCallStack* callStack);
</span><span class="cx"> 
</span><del>-    JSC::JSGlobalObject&amp; m_globalObject;
</del><span class="cx">     std::unique_ptr&lt;InjectedScriptManager&gt; m_injectedScriptManager;
</span><span class="cx">     std::unique_ptr&lt;JSGlobalObjectConsoleClient&gt; m_consoleClient;
</span><span class="cx">     Ref&lt;WTF::Stopwatch&gt; m_executionStopwatch;
</span><span class="lines">@@ -125,6 +125,10 @@
</span><span class="cx">     bool m_includeNativeCallStackWithExceptions { false };
</span><span class="cx">     bool m_isAutomaticInspection { false };
</span><span class="cx"> 
</span><ins>+#if ENABLE(REMOTE_INSPECTOR)
+    JSC::JSGlobalObject&amp; m_globalObject;
+#endif
+
</ins><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx">     AugmentableInspectorControllerClient* m_augmentingClient { nullptr };
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -38,9 +38,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-InspectorAgent::InspectorAgent(InspectorEnvironment&amp; environment)
</del><ins>+InspectorAgent::InspectorAgent(AgentContext&amp; context)
</ins><span class="cx">     : InspectorAgentBase(ASCIILiteral(&quot;Inspector&quot;))
</span><del>-    , m_environment(environment)
</del><ins>+    , m_environment(context.environment)
+    , m_frontendDispatcher(std::make_unique&lt;InspectorFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(InspectorBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -48,17 +50,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorAgent::didCreateFrontendAndBackend(FrontendRouter* frontendRouter, BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;InspectorFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = InspectorBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorAgent::willDestroyFrontendAndBackend(DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     m_pendingEvaluateTestCommands.clear();
</span><span class="cx"> 
</span><span class="cx">     ErrorString unused;
</span><span class="lines">@@ -77,12 +74,8 @@
</span><span class="cx">         m_frontendDispatcher-&gt;activateExtraDomains(m_pendingExtraDomainsData);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    for (auto&amp; testCommand : m_pendingEvaluateTestCommands) {
-        if (!m_frontendDispatcher)
-            break;
-
</del><ins>+    for (auto&amp; testCommand : m_pendingEvaluateTestCommands)
</ins><span class="cx">         m_frontendDispatcher-&gt;evaluateForTestInFrontend(testCommand);
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">     m_pendingEvaluateTestCommands.clear();
</span><span class="cx"> }
</span><span class="lines">@@ -99,7 +92,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorAgent::inspect(RefPtr&lt;Protocol::Runtime::RemoteObject&gt;&amp;&amp; objectToInspect, RefPtr&lt;InspectorObject&gt;&amp;&amp; hints)
</span><span class="cx"> {
</span><del>-    if (m_enabled &amp;&amp; m_frontendDispatcher) {
</del><ins>+    if (m_enabled) {
</ins><span class="cx">         m_frontendDispatcher-&gt;inspect(objectToInspect, hints);
</span><span class="cx">         m_pendingInspectData.first = nullptr;
</span><span class="cx">         m_pendingInspectData.second = nullptr;
</span><span class="lines">@@ -112,7 +105,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorAgent::evaluateForTestInFrontend(const String&amp; script)
</span><span class="cx"> {
</span><del>-    if (m_enabled &amp;&amp; m_frontendDispatcher)
</del><ins>+    if (m_enabled)
</ins><span class="cx">         m_frontendDispatcher-&gt;evaluateForTestInFrontend(script);
</span><span class="cx">     else
</span><span class="cx">         m_pendingEvaluateTestCommands.append(script);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorAgent(InspectorEnvironment&amp;);
</del><ins>+    InspectorAgent(AgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) override;
</span><span class="lines">@@ -69,7 +69,8 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorEnvironment&amp; m_environment;
</span><span class="cx">     std::unique_ptr&lt;InspectorFrontendDispatcher&gt; m_frontendDispatcher;
</span><del>-    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
</del><ins>+    Ref&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+
</ins><span class="cx">     Vector&lt;String&gt; m_pendingEvaluateTestCommands;
</span><span class="cx">     std::pair&lt;RefPtr&lt;Protocol::Runtime::RemoteObject&gt;, RefPtr&lt;InspectorObject&gt;&gt; m_pendingInspectData;
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -43,9 +43,11 @@
</span><span class="cx"> static const unsigned maximumConsoleMessages = 1000;
</span><span class="cx"> static const int expireConsoleMessagesStep = 100;
</span><span class="cx"> 
</span><del>-InspectorConsoleAgent::InspectorConsoleAgent(InjectedScriptManager&amp; injectedScriptManager)
</del><ins>+InspectorConsoleAgent::InspectorConsoleAgent(AgentContext&amp; context)
</ins><span class="cx">     : InspectorAgentBase(ASCIILiteral(&quot;Console&quot;))
</span><del>-    , m_injectedScriptManager(injectedScriptManager)
</del><ins>+    , m_injectedScriptManager(context.injectedScriptManager)
+    , m_frontendDispatcher(std::make_unique&lt;ConsoleFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(ConsoleBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -53,17 +55,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorConsoleAgent::didCreateFrontendAndBackend(FrontendRouter* frontendRouter, BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorConsoleAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;ConsoleFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = ConsoleBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorConsoleAgent::willDestroyFrontendAndBackend(DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     String errorString;
</span><span class="cx">     disable(errorString);
</span><span class="cx"> }
</span><span class="lines">@@ -101,7 +98,7 @@
</span><span class="cx"> 
</span><span class="cx">     m_injectedScriptManager.releaseObjectGroup(ASCIILiteral(&quot;console&quot;));
</span><span class="cx"> 
</span><del>-    if (m_frontendDispatcher &amp;&amp; m_enabled)
</del><ins>+    if (m_enabled)
</ins><span class="cx">         m_frontendDispatcher-&gt;messagesCleared();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -203,16 +200,16 @@
</span><span class="cx"> 
</span><span class="cx">     if (m_previousMessage &amp;&amp; !isGroupMessage(m_previousMessage-&gt;type()) &amp;&amp; m_previousMessage-&gt;isEqual(consoleMessage.get())) {
</span><span class="cx">         m_previousMessage-&gt;incrementCount();
</span><del>-        if (m_frontendDispatcher &amp;&amp; m_enabled)
</del><ins>+        if (m_enabled)
</ins><span class="cx">             m_previousMessage-&gt;updateRepeatCountInConsole(*m_frontendDispatcher);
</span><span class="cx">     } else {
</span><span class="cx">         m_previousMessage = consoleMessage.get();
</span><span class="cx">         m_consoleMessages.append(WTF::move(consoleMessage));
</span><del>-        if (m_frontendDispatcher &amp;&amp; m_enabled)
</del><ins>+        if (m_enabled)
</ins><span class="cx">             m_previousMessage-&gt;addToFrontend(*m_frontendDispatcher, m_injectedScriptManager, true);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!m_frontendDispatcher &amp;&amp; m_consoleMessages.size() &gt;= maximumConsoleMessages) {
</del><ins>+    if (m_consoleMessages.size() &gt;= maximumConsoleMessages) {
</ins><span class="cx">         m_expiredConsoleMessageCount += expireConsoleMessagesStep;
</span><span class="cx">         m_consoleMessages.remove(0, expireConsoleMessagesStep);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorConsoleAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorConsoleAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorConsoleAgent(InjectedScriptManager&amp;);
</del><ins>+    InspectorConsoleAgent(AgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorConsoleAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) override;
</span><span class="lines">@@ -83,6 +83,7 @@
</span><span class="cx">     InjectedScriptManager&amp; m_injectedScriptManager;
</span><span class="cx">     std::unique_ptr&lt;ConsoleFrontendDispatcher&gt; m_frontendDispatcher;
</span><span class="cx">     RefPtr&lt;ConsoleBackendDispatcher&gt; m_backendDispatcher;
</span><ins>+
</ins><span class="cx">     ConsoleMessage* m_previousMessage { nullptr };
</span><span class="cx">     Vector&lt;std::unique_ptr&lt;ConsoleMessage&gt;&gt; m_consoleMessages;
</span><span class="cx">     int m_expiredConsoleMessageCount { 0 };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -56,9 +56,11 @@
</span><span class="cx">     return makeString(objectGroup, String::number(action.identifier));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorDebuggerAgent::InspectorDebuggerAgent(InjectedScriptManager&amp; injectedScriptManager)
</del><ins>+InspectorDebuggerAgent::InspectorDebuggerAgent(AgentContext&amp; context)
</ins><span class="cx">     : InspectorAgentBase(ASCIILiteral(&quot;Debugger&quot;))
</span><del>-    , m_injectedScriptManager(injectedScriptManager)
</del><ins>+    , m_injectedScriptManager(context.injectedScriptManager)
+    , m_frontendDispatcher(std::make_unique&lt;DebuggerFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(DebuggerBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_continueToLocationBreakpointID(JSC::noBreakpointID)
</span><span class="cx"> {
</span><span class="cx">     // FIXME: make breakReason optional so that there was no need to init it with &quot;other&quot;.
</span><span class="lines">@@ -69,17 +71,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::didCreateFrontendAndBackend(FrontendRouter* frontendRouter, BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDebuggerAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;DebuggerFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = DebuggerBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDebuggerAgent::willDestroyFrontendAndBackend(DisconnectReason reason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     bool skipRecompile = reason == DisconnectReason::InspectedTargetDestroyed;
</span><span class="cx">     disable(skipRecompile);
</span><span class="cx"> }
</span><span class="lines">@@ -799,8 +796,7 @@
</span><span class="cx">     // pages have what breakpoints, as the mapping is only sent to DebuggerAgent once.
</span><span class="cx">     clearDebuggerBreakpointState();
</span><span class="cx"> 
</span><del>-    if (m_frontendDispatcher)
-        m_frontendDispatcher-&gt;globalObjectCleared();
</del><ins>+    m_frontendDispatcher-&gt;globalObjectCleared();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InspectorDebuggerAgent::assertPaused(ErrorString&amp; errorString)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx">     virtual ScriptDebugServer&amp; scriptDebugServer() = 0;
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    InspectorDebuggerAgent(InjectedScriptManager&amp;);
</del><ins>+    InspectorDebuggerAgent(AgentContext&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InjectedScriptManager&amp; injectedScriptManager() const { return m_injectedScriptManager; }
</span><span class="cx">     virtual InjectedScript injectedScriptForEval(ErrorString&amp;, const int* executionContextId) = 0;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -57,9 +57,9 @@
</span><span class="cx">     return b ? *b : false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorRuntimeAgent::InspectorRuntimeAgent(InjectedScriptManager&amp; injectedScriptManager)
</del><ins>+InspectorRuntimeAgent::InspectorRuntimeAgent(AgentContext&amp; context)
</ins><span class="cx">     : InspectorAgentBase(ASCIILiteral(&quot;Runtime&quot;))
</span><del>-    , m_injectedScriptManager(injectedScriptManager)
</del><ins>+    , m_injectedScriptManager(context.injectedScriptManager)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">     bool enabled() const { return m_enabled; }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span><del>-    InspectorRuntimeAgent(InjectedScriptManager&amp;);
</del><ins>+    InspectorRuntimeAgent(AgentContext&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InjectedScriptManager&amp; injectedScriptManager() { return m_injectedScriptManager; }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -28,8 +28,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-JSGlobalObjectConsoleAgent::JSGlobalObjectConsoleAgent(InjectedScriptManager&amp; injectedScriptManager)
-    : InspectorConsoleAgent(injectedScriptManager)
</del><ins>+JSGlobalObjectConsoleAgent::JSGlobalObjectConsoleAgent(AgentContext&amp; context)
+    : InspectorConsoleAgent(context)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectConsoleAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectConsoleAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(JSGlobalObjectConsoleAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    JSGlobalObjectConsoleAgent(InjectedScriptManager&amp;);
</del><ins>+    JSGlobalObjectConsoleAgent(AgentContext&amp;);
</ins><span class="cx">     virtual ~JSGlobalObjectConsoleAgent() { }
</span><span class="cx"> 
</span><span class="cx">     // FIXME: XHRs and Nodes only makes sense debugging a Web context. Can this be moved to a different agent?
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-JSGlobalObjectDebuggerAgent::JSGlobalObjectDebuggerAgent(InjectedScriptManager&amp; injectedScriptManager, JSC::JSGlobalObject&amp; globalObject, InspectorConsoleAgent* consoleAgent)
-    : InspectorDebuggerAgent(injectedScriptManager)
-    , m_scriptDebugServer(globalObject)
</del><ins>+JSGlobalObjectDebuggerAgent::JSGlobalObjectDebuggerAgent(JSAgentContext&amp; context, InspectorConsoleAgent* consoleAgent)
+    : InspectorDebuggerAgent(context)
+    , m_scriptDebugServer(context.inspectedGlobalObject)
</ins><span class="cx">     , m_consoleAgent(consoleAgent)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(JSGlobalObjectDebuggerAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    JSGlobalObjectDebuggerAgent(InjectedScriptManager&amp;, JSC::JSGlobalObject&amp;, InspectorConsoleAgent*);
</del><ins>+    JSGlobalObjectDebuggerAgent(JSAgentContext&amp;, InspectorConsoleAgent*);
</ins><span class="cx">     virtual ~JSGlobalObjectDebuggerAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual JSGlobalObjectScriptDebugServer&amp; scriptDebugServer() override { return m_scriptDebugServer; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -34,24 +34,20 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent(InjectedScriptManager&amp; injectedScriptManager, JSGlobalObject&amp; globalObject)
-    : InspectorRuntimeAgent(injectedScriptManager)
-    , m_globalObject(globalObject)
</del><ins>+JSGlobalObjectRuntimeAgent::JSGlobalObjectRuntimeAgent(JSAgentContext&amp; context)
+    : InspectorRuntimeAgent(context)
+    , m_frontendDispatcher(std::make_unique&lt;RuntimeFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(RuntimeBackendDispatcher::create(context.backendDispatcher, this))
+    , m_globalObject(context.inspectedGlobalObject)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSGlobalObjectRuntimeAgent::didCreateFrontendAndBackend(FrontendRouter* frontendRouter, BackendDispatcher* backendDispatcher)
</del><ins>+void JSGlobalObjectRuntimeAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;RuntimeFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = RuntimeBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JSGlobalObjectRuntimeAgent::willDestroyFrontendAndBackend(DisconnectReason reason)
</del><ins>+void JSGlobalObjectRuntimeAgent::willDestroyFrontendAndBackend(DisconnectReason)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
-    InspectorRuntimeAgent::willDestroyFrontendAndBackend(reason);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> VM&amp; JSGlobalObjectRuntimeAgent::globalVM()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsJSGlobalObjectRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/agents/JSGlobalObjectRuntimeAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> 
</span><span class="cx"> class JSGlobalObjectRuntimeAgent final : public InspectorRuntimeAgent {
</span><span class="cx"> public:
</span><del>-    JSGlobalObjectRuntimeAgent(InjectedScriptManager&amp;, JSC::JSGlobalObject&amp;);
</del><ins>+    JSGlobalObjectRuntimeAgent(JSAgentContext&amp;);
</ins><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) override;
</span><span class="cx">     virtual void willDestroyFrontendAndBackend(DisconnectReason) override;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAlternateDispatchableAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -39,23 +39,26 @@
</span><span class="cx"> class AlternateDispatchableAgent final : public InspectorAgentBase {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    AlternateDispatchableAgent(const String&amp; domainName, std::unique_ptr&lt;TAlternateDispatcher&gt; alternateDispatcher)
</del><ins>+    AlternateDispatchableAgent(const String&amp; domainName, AugmentableInspectorController&amp; controller, std::unique_ptr&lt;TAlternateDispatcher&gt; alternateDispatcher)
</ins><span class="cx">         : InspectorAgentBase(domainName)
</span><span class="cx">         , m_alternateDispatcher(WTF::move(alternateDispatcher))
</span><ins>+        , m_backendDispatcher(TBackendDispatcher::create(controller.backendDispatcher(), nullptr))
</ins><span class="cx">     {
</span><ins>+        m_backendDispatcher-&gt;setAlternateDispatcher(m_alternateDispatcher.get());
+        m_alternateDispatcher-&gt;setBackendDispatcher(&amp;controller.backendDispatcher());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher* backendDispatcher) override
</del><ins>+    virtual ~AlternateDispatchableAgent()
</ins><span class="cx">     {
</span><del>-        m_backendDispatcher = TBackendDispatcher::create(backendDispatcher, nullptr);
-        m_backendDispatcher-&gt;setAlternateDispatcher(m_alternateDispatcher.get());
-        m_alternateDispatcher-&gt;setBackendDispatcher(backendDispatcher);
</del><ins>+        m_alternateDispatcher-&gt;setBackendDispatcher(nullptr);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) override
+    {
+    }
+
</ins><span class="cx">     virtual void willDestroyFrontendAndBackend(DisconnectReason) override
</span><span class="cx">     {
</span><del>-        m_backendDispatcher = nullptr;
-        m_alternateDispatcher-&gt;setBackendDispatcher(nullptr);
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx"> 
</span><span class="cx"> #include &lt;JavaScriptCore/AugmentableInspectorControllerClient.h&gt;
</span><ins>+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
</ins><span class="cx"> #include &lt;JavaScriptCore/InspectorFrontendRouter.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="lines">@@ -43,6 +44,7 @@
</span><span class="cx">     virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient*) = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual const FrontendRouter&amp; frontendRouter() const = 0;
</span><ins>+    virtual BackendDispatcher&amp; backendDispatcher() = 0;
</ins><span class="cx">     virtual void appendExtraAgent(std::unique_ptr&lt;InspectorAgentBase&gt;) = 0;
</span><span class="cx"> 
</span><span class="cx">     bool connected() const { return frontendRouter().hasFrontends(); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generator_templatespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator_templates.py (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator_templates.py        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator_templates.py        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -100,7 +100,7 @@
</span><span class="cx">     BackendDispatcherHeaderDomainDispatcherDeclaration = (
</span><span class="cx">     &quot;&quot;&quot;${classAndExportMacro} ${domainName}BackendDispatcher final : public SupplementalBackendDispatcher {
</span><span class="cx"> public:
</span><del>-    static Ref&lt;${domainName}BackendDispatcher&gt; create(BackendDispatcher*, ${domainName}BackendDispatcherHandler*);
</del><ins>+    static Ref&lt;${domainName}BackendDispatcher&gt; create(BackendDispatcher&amp;, ${domainName}BackendDispatcherHandler*);
</ins><span class="cx">     virtual void dispatch(long requestId, const String&amp; method, Ref&lt;InspectorObject&gt;&amp;&amp; message) override;
</span><span class="cx"> ${commandDeclarations}
</span><span class="cx"> private:
</span><span class="lines">@@ -168,9 +168,9 @@
</span><span class="cx"> }&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     BackendDispatcherImplementationDomainConstructor = (
</span><del>-    &quot;&quot;&quot;Ref&lt;${domainName}BackendDispatcher&gt; ${domainName}BackendDispatcher::create(BackendDispatcher* backendDispatcher, ${domainName}BackendDispatcherHandler* agent)
</del><ins>+    &quot;&quot;&quot;Ref&lt;${domainName}BackendDispatcher&gt; ${domainName}BackendDispatcher::create(BackendDispatcher&amp; backendDispatcher, ${domainName}BackendDispatcherHandler* agent)
</ins><span class="cx"> {
</span><del>-    return adoptRef(*new ${domainName}BackendDispatcher(*backendDispatcher, agent));
</del><ins>+    return adoptRef(*new ${domainName}BackendDispatcher(backendDispatcher, agent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ${domainName}BackendDispatcher::${domainName}BackendDispatcher(BackendDispatcher&amp; backendDispatcher, ${domainName}BackendDispatcherHandler* agent)
</span><span class="lines">@@ -204,10 +204,10 @@
</span><span class="cx">     FrontendDispatcherDomainDispatcherDeclaration = (
</span><span class="cx"> &quot;&quot;&quot;${classAndExportMacro} ${domainName}FrontendDispatcher {
</span><span class="cx"> public:
</span><del>-    ${domainName}FrontendDispatcher(FrontendRouter* frontendRouter) : m_frontendRouter(frontendRouter) { }
</del><ins>+    ${domainName}FrontendDispatcher(FrontendRouter&amp; frontendRouter) : m_frontendRouter(frontendRouter) { }
</ins><span class="cx"> ${eventDeclarations}
</span><span class="cx"> private:
</span><del>-    FrontendRouter* m_frontendRouter;
</del><ins>+    FrontendRouter&amp; m_frontendRouter;
</ins><span class="cx"> };&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     ProtocolObjectBuilderDeclarationPrelude = (
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_frontend_dispatcher_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -119,6 +119,6 @@
</span><span class="cx">             lines.append('    jsonMessage-&gt;setObject(ASCIILiteral(&quot;params&quot;), WTF::move(paramsObject));')
</span><span class="cx"> 
</span><span class="cx">         lines.append('')
</span><del>-        lines.append('    m_frontendRouter-&gt;sendEvent(jsonMessage-&gt;toJSONString());')
</del><ins>+        lines.append('    m_frontendRouter.sendEvent(jsonMessage-&gt;toJSONString());')
</ins><span class="cx">         lines.append('}')
</span><span class="cx">         return &quot;\n&quot;.join(lines)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegenobjc_generator_templatespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator_templates.py (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator_templates.py        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/objc_generator_templates.py        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx">     _${variableNamePrefix}Handler = [handler retain];
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspector${domainName}BackendDispatcher&gt;(handler);
</span><del>-    auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;${domainName}BackendDispatcher, Alternate${domainName}BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;${domainName}&quot;), WTF::move(alternateDispatcher));
</del><ins>+    auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;${domainName}BackendDispatcher, Alternate${domainName}BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;${domainName}&quot;), *_controller, WTF::move(alternateDispatcher));
</ins><span class="cx">     _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/ChangeLog        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -1,3 +1,165 @@
</span><ins>+2015-09-05  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: tighten up lifetimes for Agent-owned objects, and initialize agents using contexts
+        https://bugs.webkit.org/show_bug.cgi?id=148625
+
+        Reviewed by Joseph Pecoraro.
+
+        All agents own their domain-specific frontend and backend dispatchers. Change so that
+        they are initialized in constructors rather than when a frontend connects or disconnects.
+        This may cause additional memory use, but this can be counteracted by lazily creating
+        some agents that are not required for other agents to function (i.e., runtime and page agents).
+
+        To avoid adding frontend/backend dispatcher arguments to every single agent constructor,
+        change agent construction to take a AgentContext or a subclass of it. This provides agents with
+        references to objects in the owning InspectorEnvironment subclass that are guaranteed to
+        outlive all agents. AgentContext and its subclasses follow the existing Agent class hierarchy.
+
+        No new tests, no behavior changed.
+
+        * bindings/js/WorkerScriptDebugServer.cpp:
+        (WebCore::WorkerScriptDebugServer::WorkerScriptDebugServer):
+        (WebCore::WorkerScriptDebugServer::addListener):
+        (WebCore::WorkerScriptDebugServer::removeListener):
+        (WebCore::WorkerScriptDebugServer::runEventLoopWhilePaused):
+        * bindings/js/WorkerScriptDebugServer.h:
+        * inspector/InspectorApplicationCacheAgent.cpp:
+        (WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
+        (WebCore::InspectorApplicationCacheAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
+        (WebCore::InspectorApplicationCacheAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorApplicationCacheAgent.h:
+        * inspector/InspectorCSSAgent.cpp:
+        (WebCore::InspectorCSSAgent::InspectorCSSAgent):
+        (WebCore::InspectorCSSAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorCSSAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorCSSAgent.h:
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::InspectorController):
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::InspectorDOMAgent):
+        (WebCore::InspectorDOMAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorDOMAgent.h:
+        * inspector/InspectorDOMDebuggerAgent.cpp:
+        (WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
+        (WebCore::InspectorDOMDebuggerAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMDebuggerAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorDOMDebuggerAgent.h:
+        * inspector/InspectorDOMStorageAgent.cpp:
+        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
+        (WebCore::InspectorDOMStorageAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDOMStorageAgent::findStorageArea):
+        (WebCore::InspectorDOMStorageAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorDOMStorageAgent.h:
+        * inspector/InspectorDatabaseAgent.cpp:
+        (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
+        (WebCore::InspectorDatabaseAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorDatabaseAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorDatabaseAgent.h:
+        * inspector/InspectorIndexedDBAgent.cpp:
+        (WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
+        (WebCore::InspectorIndexedDBAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorIndexedDBAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorIndexedDBAgent.h:
+        * inspector/InspectorInstrumentation.cpp:
+        (WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):
+        * inspector/InspectorLayerTreeAgent.cpp:
+        (WebCore::InspectorLayerTreeAgent::InspectorLayerTreeAgent):
+        (WebCore::InspectorLayerTreeAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorLayerTreeAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorLayerTreeAgent.h:
+        * inspector/InspectorPageAgent.cpp:
+        (WebCore::InspectorPageAgent::InspectorPageAgent):
+        (WebCore::InspectorPageAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorPageAgent::enable):
+        (WebCore::InspectorPageAgent::reload):
+        (WebCore::InspectorPageAgent::navigate):
+        (WebCore::InspectorPageAgent::getCookies):
+        (WebCore::InspectorPageAgent::deleteCookie):
+        (WebCore::InspectorPageAgent::getResourceTree):
+        (WebCore::InspectorPageAgent::searchInResources):
+        (WebCore::InspectorPageAgent::getScriptExecutionStatus):
+        (WebCore::InspectorPageAgent::setScriptExecutionDisabled):
+        (WebCore::InspectorPageAgent::mainFrame):
+        (WebCore::InspectorPageAgent::findFrameWithSecurityOrigin):
+        (WebCore::InspectorPageAgent::buildObjectForFrame):
+        (WebCore::InspectorPageAgent::buildObjectForFrameTree):
+        (WebCore::InspectorPageAgent::setEmulatedMedia):
+        (WebCore::InspectorPageAgent::getCompositingBordersVisible):
+        (WebCore::InspectorPageAgent::setCompositingBordersVisible):
+        (WebCore::InspectorPageAgent::snapshotNode):
+        (WebCore::InspectorPageAgent::snapshotRect):
+        (WebCore::InspectorPageAgent::archive):
+        (WebCore::InspectorPageAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorPageAgent.h:
+        * inspector/InspectorReplayAgent.cpp:
+        (WebCore::InspectorReplayAgent::InspectorReplayAgent):
+        (WebCore::InspectorReplayAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorReplayAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorReplayAgent.h:
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore::InspectorResourceAgent::InspectorResourceAgent):
+        (WebCore::InspectorResourceAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorResourceAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorResourceAgent.h:
+        * inspector/InspectorTimelineAgent.cpp:
+        (WebCore::InspectorTimelineAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorTimelineAgent::InspectorTimelineAgent):
+        (WebCore::InspectorTimelineAgent::willDestroyFrontendAndBackend):
+        (WebCore::InspectorTimelineAgent::page):
+        * inspector/InspectorTimelineAgent.h:
+        * inspector/InspectorWebAgentBase.h:
+        (WebCore::WebAgentContext::WebAgentContext):
+        (WebCore::PageAgentContext::PageAgentContext):
+        (WebCore::WorkerAgentContext::WorkerAgentContext):
+        (WebCore::InspectorAgentBase::InspectorAgentBase):
+        * inspector/InspectorWorkerAgent.cpp:
+        (WebCore::InspectorWorkerAgent::InspectorWorkerAgent):
+        (WebCore::InspectorWorkerAgent::didCreateFrontendAndBackend):
+        (WebCore::InspectorWorkerAgent::willDestroyFrontendAndBackend):
+        * inspector/InspectorWorkerAgent.h:
+        * inspector/PageConsoleAgent.cpp:
+        (WebCore::PageConsoleAgent::PageConsoleAgent):
+        * inspector/PageConsoleAgent.h:
+        * inspector/PageDebuggerAgent.cpp:
+        (WebCore::PageDebuggerAgent::PageDebuggerAgent):
+        (WebCore::PageDebuggerAgent::sourceMapURLForScript):
+        (WebCore::PageDebuggerAgent::breakpointActionLog):
+        (WebCore::PageDebuggerAgent::injectedScriptForEval):
+        * inspector/PageDebuggerAgent.h:
+        * inspector/PageRuntimeAgent.cpp:
+        (WebCore::PageRuntimeAgent::PageRuntimeAgent):
+        (WebCore::PageRuntimeAgent::didCreateFrontendAndBackend):
+        (WebCore::PageRuntimeAgent::injectedScriptForEval):
+        (WebCore::PageRuntimeAgent::reportExecutionContextCreation):
+        (WebCore::PageRuntimeAgent::willDestroyFrontendAndBackend):
+        * inspector/PageRuntimeAgent.h:
+        * inspector/WebConsoleAgent.cpp:
+        (WebCore::WebConsoleAgent::WebConsoleAgent):
+        * inspector/WebConsoleAgent.h:
+        * inspector/WebDebuggerAgent.cpp:
+        (WebCore::WebDebuggerAgent::WebDebuggerAgent):
+        * inspector/WebDebuggerAgent.h:
+        * inspector/WorkerConsoleAgent.cpp:
+        (WebCore::WorkerConsoleAgent::WorkerConsoleAgent):
+        * inspector/WorkerConsoleAgent.h:
+        * inspector/WorkerDebuggerAgent.cpp:
+        (WebCore::WorkerDebuggerAgent::WorkerDebuggerAgent):
+        (WebCore::WorkerDebuggerAgent::~WorkerDebuggerAgent):
+        (WebCore::WorkerDebuggerAgent::interruptAndDispatchInspectorCommands):
+        (WebCore::WorkerDebuggerAgent::breakpointActionLog):
+        (WebCore::WorkerDebuggerAgent::injectedScriptForEval):
+        * inspector/WorkerDebuggerAgent.h:
+        * inspector/WorkerInspectorController.cpp:
+        (WebCore::WorkerInspectorController::WorkerInspectorController):
+        * inspector/WorkerRuntimeAgent.cpp:
+        (WebCore::WorkerRuntimeAgent::WorkerRuntimeAgent):
+        (WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend):
+        (WebCore::WorkerRuntimeAgent::injectedScriptForEval):
+        (WebCore::WorkerRuntimeAgent::willDestroyFrontendAndBackend):
+        * inspector/WorkerRuntimeAgent.h:
+
</ins><span class="cx"> 2015-09-04  Brian Burg  &lt;bburg@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: agents should send messages through FrontendRouter instead of FrontendChannel
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWorkerScriptDebugServercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -44,8 +44,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WorkerScriptDebugServer::WorkerScriptDebugServer(WorkerGlobalScope* context, const String&amp; mode)
-    : ScriptDebugServer(context-&gt;script()-&gt;vm(), true)
</del><ins>+WorkerScriptDebugServer::WorkerScriptDebugServer(WorkerGlobalScope&amp; context, const String&amp; mode)
+    : ScriptDebugServer(context.script()-&gt;vm(), true)
</ins><span class="cx">     , m_workerGlobalScope(context)
</span><span class="cx">     , m_debuggerTaskMode(mode)
</span><span class="cx"> {
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     m_listeners.add(listener);
</span><span class="cx"> 
</span><span class="cx">     if (wasEmpty) {
</span><del>-        m_workerGlobalScope-&gt;script()-&gt;attachDebugger(this);
</del><ins>+        m_workerGlobalScope.script()-&gt;attachDebugger(this);
</ins><span class="cx">         recompileAllJSFunctions();
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -73,8 +73,8 @@
</span><span class="cx">     m_listeners.remove(listener);
</span><span class="cx"> 
</span><span class="cx">     if (m_listeners.isEmpty()) {
</span><del>-        if (m_workerGlobalScope-&gt;script())
-            m_workerGlobalScope-&gt;script()-&gt;detachDebugger(this);
</del><ins>+        if (m_workerGlobalScope.script())
+            m_workerGlobalScope.script()-&gt;detachDebugger(this);
</ins><span class="cx">         if (!skipRecompile)
</span><span class="cx">             recompileAllJSFunctions();
</span><span class="cx">     }
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> 
</span><span class="cx">     MessageQueueWaitResult result;
</span><span class="cx">     do {
</span><del>-        result = m_workerGlobalScope-&gt;thread().runLoop().runInMode(m_workerGlobalScope, m_debuggerTaskMode);
</del><ins>+        result = m_workerGlobalScope.thread().runLoop().runInMode(&amp;m_workerGlobalScope, m_debuggerTaskMode);
</ins><span class="cx">     // Keep waiting until execution is resumed.
</span><span class="cx">     } while (result != MessageQueueTerminated &amp;&amp; !m_doneProcessingDebuggerEvents);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWorkerScriptDebugServerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptDebugServer.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> class WorkerScriptDebugServer final : public Inspector::ScriptDebugServer {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WorkerScriptDebugServer);
</span><span class="cx"> public:
</span><del>-    WorkerScriptDebugServer(WorkerGlobalScope*, const String&amp;);
</del><ins>+    WorkerScriptDebugServer(WorkerGlobalScope&amp;, const String&amp;);
</ins><span class="cx">     ~WorkerScriptDebugServer() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void recompileAllJSFunctions() override;
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">     virtual bool isContentScript(JSC::ExecState*) const override { return false; }
</span><span class="cx">     virtual void reportException(JSC::ExecState*, JSC::Exception*) const override;
</span><span class="cx"> 
</span><del>-    WorkerGlobalScope* m_workerGlobalScope;
</del><ins>+    WorkerGlobalScope&amp; m_workerGlobalScope;
</ins><span class="cx">     ListenerSet m_listeners;
</span><span class="cx">     String m_debuggerTaskMode;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorApplicationCacheAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><ins>+#include &quot;MainFrame.h&quot;
</ins><span class="cx"> #include &quot;NetworkStateNotifier.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;ResourceResponse.h&quot;
</span><span class="lines">@@ -43,23 +44,20 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-InspectorApplicationCacheAgent::InspectorApplicationCacheAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;ApplicationCache&quot;), instrumentingAgents)
</del><ins>+InspectorApplicationCacheAgent::InspectorApplicationCacheAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent)
+    : InspectorAgentBase(ASCIILiteral(&quot;ApplicationCache&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::ApplicationCacheFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::ApplicationCacheBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorApplicationCacheAgent::didCreateFrontendAndBackend(FrontendRouter* frontendRouter, BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorApplicationCacheAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::ApplicationCacheFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::ApplicationCacheBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorApplicationCacheAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     m_instrumentingAgents.setInspectorApplicationCacheAgent(nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -95,7 +93,7 @@
</span><span class="cx"> {
</span><span class="cx">     result = Inspector::Protocol::Array&lt;Inspector::Protocol::ApplicationCache::FrameWithManifest&gt;::create();
</span><span class="cx"> 
</span><del>-    for (Frame* frame = m_pageAgent-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</del><ins>+    for (Frame* frame = &amp;m_pageAgent-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</ins><span class="cx">         DocumentLoader* documentLoader = frame-&gt;loader().documentLoader();
</span><span class="cx">         if (!documentLoader)
</span><span class="cx">             continue;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorApplicationCacheAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorApplicationCacheAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -41,7 +41,6 @@
</span><span class="cx"> 
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Page;
</span><span class="cx"> class ResourceResponse;
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +49,7 @@
</span><span class="cx"> class InspectorApplicationCacheAgent final : public InspectorAgentBase, public Inspector::ApplicationCacheBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorApplicationCacheAgent); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorApplicationCacheAgent(InstrumentingAgents&amp;, InspectorPageAgent*);
</del><ins>+    InspectorApplicationCacheAgent(WebAgentContext&amp;, InspectorPageAgent*);
</ins><span class="cx">     virtual ~InspectorApplicationCacheAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -341,8 +341,10 @@
</span><span class="cx">     return downcast&lt;CSSStyleRule&gt;(&amp;rule);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorCSSAgent::InspectorCSSAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorDOMAgent* domAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;CSS&quot;), instrumentingAgents)
</del><ins>+InspectorCSSAgent::InspectorCSSAgent(WebAgentContext&amp; context, InspectorDOMAgent* domAgent)
+    : InspectorAgentBase(ASCIILiteral(&quot;CSS&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;CSSFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(CSSBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_domAgent(domAgent)
</span><span class="cx"> {
</span><span class="cx">     m_domAgent-&gt;setDOMListener(this);
</span><span class="lines">@@ -354,17 +356,12 @@
</span><span class="cx">     reset();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorCSSAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;CSSFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = CSSBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     resetNonPersistentData();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1179,8 +1176,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::styleSheetChanged(InspectorStyleSheet* styleSheet)
</span><span class="cx"> {
</span><del>-    if (m_frontendDispatcher)
-        m_frontendDispatcher-&gt;styleSheetChanged(styleSheet-&gt;id());
</del><ins>+    m_frontendDispatcher-&gt;styleSheetChanged(styleSheet-&gt;id());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorCSSAgent::resetPseudoStates()
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -51,7 +51,6 @@
</span><span class="cx"> class ChangeRegionOversetTask;
</span><span class="cx"> class Document;
</span><span class="cx"> class Element;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Node;
</span><span class="cx"> class NodeList;
</span><span class="cx"> class StyleResolver;
</span><span class="lines">@@ -82,7 +81,7 @@
</span><span class="cx">         ContentSecurityPolicy* m_contentSecurityPolicy;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    InspectorCSSAgent(InstrumentingAgents&amp;, InspectorDOMAgent*);
</del><ins>+    InspectorCSSAgent(WebAgentContext&amp;, InspectorDOMAgent*);
</ins><span class="cx">     virtual ~InspectorCSSAgent();
</span><span class="cx"> 
</span><span class="cx">     static CSSStyleRule* asCSSStyleRule(CSSRule&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -95,67 +95,84 @@
</span><span class="cx"> {
</span><span class="cx">     ASSERT_ARG(inspectorClient, inspectorClient);
</span><span class="cx"> 
</span><del>-    auto inspectorAgentPtr = std::make_unique&lt;InspectorAgent&gt;(*this);
</del><ins>+    AgentContext baseContext = {
+        *this,
+        *m_injectedScriptManager,
+        m_frontendRouter.get(),
+        m_backendDispatcher.get()
+    };
+
+    WebAgentContext webContext = {
+        baseContext,
+        m_instrumentingAgents.get()
+    };
+
+    PageAgentContext pageContext = {
+        webContext,
+        m_page
+    };
+
+    auto inspectorAgentPtr = std::make_unique&lt;InspectorAgent&gt;(pageContext);
</ins><span class="cx">     m_inspectorAgent = inspectorAgentPtr.get();
</span><span class="cx">     m_instrumentingAgents-&gt;setInspectorAgent(m_inspectorAgent);
</span><span class="cx">     m_agents.append(WTF::move(inspectorAgentPtr));
</span><span class="cx"> 
</span><del>-    auto pageAgentPtr = std::make_unique&lt;InspectorPageAgent&gt;(m_instrumentingAgents.get(), &amp;page, inspectorClient, m_overlay.get());
</del><ins>+    auto pageAgentPtr = std::make_unique&lt;InspectorPageAgent&gt;(pageContext, inspectorClient, m_overlay.get());
</ins><span class="cx">     InspectorPageAgent* pageAgent = pageAgentPtr.get();
</span><span class="cx">     m_pageAgent = pageAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(pageAgentPtr));
</span><span class="cx"> 
</span><del>-    auto runtimeAgentPtr = std::make_unique&lt;PageRuntimeAgent&gt;(*m_injectedScriptManager, &amp;page, pageAgent);
</del><ins>+    auto runtimeAgentPtr = std::make_unique&lt;PageRuntimeAgent&gt;(pageContext, pageAgent);
</ins><span class="cx">     PageRuntimeAgent* runtimeAgent = runtimeAgentPtr.get();
</span><span class="cx">     m_instrumentingAgents-&gt;setPageRuntimeAgent(runtimeAgent);
</span><span class="cx">     m_agents.append(WTF::move(runtimeAgentPtr));
</span><span class="cx"> 
</span><del>-    auto domAgentPtr = std::make_unique&lt;InspectorDOMAgent&gt;(m_instrumentingAgents.get(), pageAgent, *m_injectedScriptManager, m_overlay.get());
</del><ins>+    auto domAgentPtr = std::make_unique&lt;InspectorDOMAgent&gt;(pageContext, pageAgent, m_overlay.get());
</ins><span class="cx">     m_domAgent = domAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(domAgentPtr));
</span><span class="cx"> 
</span><del>-    m_agents.append(std::make_unique&lt;InspectorCSSAgent&gt;(m_instrumentingAgents.get(), m_domAgent));
</del><ins>+    m_agents.append(std::make_unique&lt;InspectorCSSAgent&gt;(pageContext, m_domAgent));
</ins><span class="cx"> 
</span><del>-    auto databaseAgentPtr = std::make_unique&lt;InspectorDatabaseAgent&gt;(m_instrumentingAgents.get());
</del><ins>+    auto databaseAgentPtr = std::make_unique&lt;InspectorDatabaseAgent&gt;(pageContext);
</ins><span class="cx">     InspectorDatabaseAgent* databaseAgent = databaseAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(databaseAgentPtr));
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INDEXED_DATABASE)
</span><del>-    m_agents.append(std::make_unique&lt;InspectorIndexedDBAgent&gt;(m_instrumentingAgents.get(), *m_injectedScriptManager, pageAgent));
</del><ins>+    m_agents.append(std::make_unique&lt;InspectorIndexedDBAgent&gt;(pageContext, pageAgent));
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><del>-    m_agents.append(std::make_unique&lt;InspectorReplayAgent&gt;(m_instrumentingAgents.get(), pageAgent));
</del><ins>+    m_agents.append(std::make_unique&lt;InspectorReplayAgent&gt;(pageContext));
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    auto domStorageAgentPtr = std::make_unique&lt;InspectorDOMStorageAgent&gt;(m_instrumentingAgents.get(), m_pageAgent);
</del><ins>+    auto domStorageAgentPtr = std::make_unique&lt;InspectorDOMStorageAgent&gt;(pageContext, m_pageAgent);
</ins><span class="cx">     InspectorDOMStorageAgent* domStorageAgent = domStorageAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(domStorageAgentPtr));
</span><span class="cx"> 
</span><del>-    auto timelineAgentPtr = std::make_unique&lt;InspectorTimelineAgent&gt;(m_instrumentingAgents.get(), pageAgent, InspectorTimelineAgent::PageInspector, inspectorClient);
</del><ins>+    auto timelineAgentPtr = std::make_unique&lt;InspectorTimelineAgent&gt;(pageContext, pageAgent, InspectorTimelineAgent::PageInspector, inspectorClient);
</ins><span class="cx">     m_timelineAgent = timelineAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(timelineAgentPtr));
</span><span class="cx"> 
</span><del>-    auto resourceAgentPtr = std::make_unique&lt;InspectorResourceAgent&gt;(m_instrumentingAgents.get(), pageAgent, inspectorClient);
</del><ins>+    auto resourceAgentPtr = std::make_unique&lt;InspectorResourceAgent&gt;(pageContext, pageAgent, inspectorClient);
</ins><span class="cx">     m_resourceAgent = resourceAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(resourceAgentPtr));
</span><span class="cx"> 
</span><del>-    auto consoleAgentPtr = std::make_unique&lt;PageConsoleAgent&gt;(*m_injectedScriptManager, m_domAgent);
</del><ins>+    auto consoleAgentPtr = std::make_unique&lt;PageConsoleAgent&gt;(pageContext, m_domAgent);
</ins><span class="cx">     WebConsoleAgent* consoleAgent = consoleAgentPtr.get();
</span><span class="cx">     m_instrumentingAgents-&gt;setWebConsoleAgent(consoleAgentPtr.get());
</span><span class="cx">     m_agents.append(WTF::move(consoleAgentPtr));
</span><span class="cx"> 
</span><del>-    auto debuggerAgentPtr = std::make_unique&lt;PageDebuggerAgent&gt;(*m_injectedScriptManager, m_instrumentingAgents.get(), pageAgent, m_overlay.get());
</del><ins>+    auto debuggerAgentPtr = std::make_unique&lt;PageDebuggerAgent&gt;(pageContext, pageAgent, m_overlay.get());
</ins><span class="cx">     m_debuggerAgent = debuggerAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(debuggerAgentPtr));
</span><span class="cx"> 
</span><del>-    auto domDebuggerAgentPtr = std::make_unique&lt;InspectorDOMDebuggerAgent&gt;(m_instrumentingAgents.get(), m_domAgent, m_debuggerAgent);
</del><ins>+    auto domDebuggerAgentPtr = std::make_unique&lt;InspectorDOMDebuggerAgent&gt;(pageContext, m_domAgent, m_debuggerAgent);
</ins><span class="cx">     m_domDebuggerAgent = domDebuggerAgentPtr.get();
</span><span class="cx">     m_agents.append(WTF::move(domDebuggerAgentPtr));
</span><span class="cx"> 
</span><del>-    m_agents.append(std::make_unique&lt;InspectorApplicationCacheAgent&gt;(m_instrumentingAgents.get(), pageAgent));
-    m_agents.append(std::make_unique&lt;InspectorWorkerAgent&gt;(m_instrumentingAgents.get()));
-    m_agents.append(std::make_unique&lt;InspectorLayerTreeAgent&gt;(m_instrumentingAgents.get()));
</del><ins>+    m_agents.append(std::make_unique&lt;InspectorApplicationCacheAgent&gt;(pageContext, pageAgent));
+    m_agents.append(std::make_unique&lt;InspectorWorkerAgent&gt;(pageContext));
+    m_agents.append(std::make_unique&lt;InspectorLayerTreeAgent&gt;(pageContext));
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(m_injectedScriptManager-&gt;commandLineAPIHost());
</span><span class="cx">     if (CommandLineAPIHost* commandLineAPIHost = m_injectedScriptManager-&gt;commandLineAPIHost()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -64,6 +64,7 @@
</span><span class="cx"> #include &quot;HitTestResult.h&quot;
</span><span class="cx"> #include &quot;InspectorHistory.h&quot;
</span><span class="cx"> #include &quot;InspectorNodeFinder.h&quot;
</span><ins>+#include &quot;InspectorOverlay.h&quot;
</ins><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><span class="cx"> #include &quot;IntRect.h&quot;
</span><span class="lines">@@ -201,9 +202,11 @@
</span><span class="cx">     return &quot;&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorDOMAgent::InspectorDOMAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent, InjectedScriptManager&amp; injectedScriptManager, InspectorOverlay* overlay)
-    : InspectorAgentBase(ASCIILiteral(&quot;DOM&quot;), instrumentingAgents)
-    , m_injectedScriptManager(injectedScriptManager)
</del><ins>+InspectorDOMAgent::InspectorDOMAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent, InspectorOverlay* overlay)
+    : InspectorAgentBase(ASCIILiteral(&quot;DOM&quot;), context)
+    , m_injectedScriptManager(context.injectedScriptManager)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::DOMFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::DOMBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_overlay(overlay)
</span><span class="cx"> {
</span><span class="lines">@@ -215,16 +218,13 @@
</span><span class="cx">     ASSERT(!m_searchingForNode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::DOMFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::DOMBackendDispatcher::create(backendDispatcher, this);
-
</del><span class="cx">     m_history = std::make_unique&lt;InspectorHistory&gt;();
</span><span class="cx">     m_domEditor = std::make_unique&lt;DOMEditor&gt;(m_history.get());
</span><span class="cx"> 
</span><span class="cx">     m_instrumentingAgents.setInspectorDOMAgent(this);
</span><del>-    m_document = m_pageAgent-&gt;mainFrame()-&gt;document();
</del><ins>+    m_document = m_pageAgent-&gt;mainFrame().document();
</ins><span class="cx"> 
</span><span class="cx">     if (m_nodeToFocus)
</span><span class="cx">         focusNode();
</span><span class="lines">@@ -232,9 +232,6 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     m_history.reset();
</span><span class="cx">     m_domEditor.reset();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #define InspectorDOMAgent_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;EventTarget.h&quot;
</span><del>-#include &quot;InspectorOverlay.h&quot;
</del><span class="cx"> #include &quot;InspectorWebAgentBase.h&quot;
</span><span class="cx"> #include &quot;RenderLayer.h&quot;
</span><span class="cx"> #include &quot;Timer.h&quot;
</span><span class="lines">@@ -67,7 +66,6 @@
</span><span class="cx"> class InspectorPageAgent;
</span><span class="cx"> class HitTestResult;
</span><span class="cx"> class HTMLElement;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class NameNodeMap;
</span><span class="cx"> class Node;
</span><span class="cx"> class RevalidateStyleAttributeTask;
</span><span class="lines">@@ -104,7 +102,7 @@
</span><span class="cx">         virtual void didModifyDOMAttr(Element*) = 0;
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    InspectorDOMAgent(InstrumentingAgents&amp;, InspectorPageAgent*, Inspector::InjectedScriptManager&amp;, InspectorOverlay*);
</del><ins>+    InspectorDOMAgent(WebAgentContext&amp;, InspectorPageAgent*, InspectorOverlay*);
</ins><span class="cx">     virtual ~InspectorDOMAgent();
</span><span class="cx"> 
</span><span class="cx">     static String toErrorString(const ExceptionCode&amp;);
</span><span class="lines">@@ -247,9 +245,9 @@
</span><span class="cx"> 
</span><span class="cx">     void innerHighlightQuad(std::unique_ptr&lt;FloatQuad&gt;, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates);
</span><span class="cx"> 
</span><ins>+    Inspector::InjectedScriptManager&amp; m_injectedScriptManager;
</ins><span class="cx">     std::unique_ptr&lt;Inspector::DOMFrontendDispatcher&gt; m_frontendDispatcher;
</span><span class="cx">     RefPtr&lt;Inspector::DOMBackendDispatcher&gt; m_backendDispatcher;
</span><del>-    Inspector::InjectedScriptManager&amp; m_injectedScriptManager;
</del><span class="cx">     InspectorPageAgent* m_pageAgent { nullptr };
</span><span class="cx"> 
</span><span class="cx">     InspectorOverlay* m_overlay { nullptr };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -60,8 +60,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;DOMDebugger&quot;), instrumentingAgents)
</del><ins>+InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent(WebAgentContext&amp; context, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent)
+    : InspectorAgentBase(ASCIILiteral(&quot;DOMDebugger&quot;), context)
+    , m_backendDispatcher(Inspector::DOMDebuggerBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_domAgent(domAgent)
</span><span class="cx">     , m_debuggerAgent(debuggerAgent)
</span><span class="cx"> {
</span><span class="lines">@@ -101,15 +102,12 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMDebuggerAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMDebuggerAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_backendDispatcher = Inspector::DOMDebuggerBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMDebuggerAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     disable();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> 
</span><span class="cx"> class Element;
</span><span class="cx"> class InspectorDOMAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Node;
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="lines">@@ -56,7 +55,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorDOMDebuggerAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorDOMDebuggerAgent(InstrumentingAgents&amp;, InspectorDOMAgent*, Inspector::InspectorDebuggerAgent*);
</del><ins>+    InspectorDOMDebuggerAgent(WebAgentContext&amp;, InspectorDOMAgent*, Inspector::InspectorDebuggerAgent*);
</ins><span class="cx">     virtual ~InspectorDOMDebuggerAgent();
</span><span class="cx"> 
</span><span class="cx">     // DOMDebugger API
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMStorageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -54,8 +54,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-InspectorDOMStorageAgent::InspectorDOMStorageAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;DOMStorage&quot;), instrumentingAgents)
</del><ins>+InspectorDOMStorageAgent::InspectorDOMStorageAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent)
+    : InspectorAgentBase(ASCIILiteral(&quot;DOMStorage&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::DOMStorageFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::DOMStorageBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx"> {
</span><span class="cx">     m_instrumentingAgents.setInspectorDOMStorageAgent(this);
</span><span class="lines">@@ -66,17 +68,12 @@
</span><span class="cx">     m_instrumentingAgents.setInspectorDOMStorageAgent(nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDOMStorageAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::DOMStorageFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::DOMStorageBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMStorageAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> }
</span><span class="lines">@@ -164,7 +161,7 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorDOMStorageAgent::didDispatchDOMStorageEvent(const String&amp; key, const String&amp; oldValue, const String&amp; newValue, StorageType storageType, SecurityOrigin* securityOrigin, Page*)
</span><span class="cx"> {
</span><del>-    if (!m_frontendDispatcher || !m_enabled)
</del><ins>+    if (!m_enabled)
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::DOMStorage::StorageId&gt; id = storageId(securityOrigin, storageType == LocalStorage);
</span><span class="lines">@@ -199,8 +196,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!isLocalStorage)
</span><del>-        return m_pageAgent-&gt;page()-&gt;sessionStorage()-&gt;storageArea(targetFrame-&gt;document()-&gt;securityOrigin());
-    return m_pageAgent-&gt;page()-&gt;storageNamespaceProvider().localStorageArea(*targetFrame-&gt;document());
</del><ins>+        return m_pageAgent-&gt;page().sessionStorage()-&gt;storageArea(targetFrame-&gt;document()-&gt;securityOrigin());
+    return m_pageAgent-&gt;page().storageNamespaceProvider().localStorageArea(*targetFrame-&gt;document());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMStorageAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> 
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Page;
</span><span class="cx"> class SecurityOrigin;
</span><span class="cx"> class Storage;
</span><span class="lines">@@ -55,7 +54,7 @@
</span><span class="cx"> class InspectorDOMStorageAgent final : public InspectorAgentBase, public Inspector::DOMStorageBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorDOMStorageAgent(InstrumentingAgents&amp;, InspectorPageAgent*);
</del><ins>+    InspectorDOMStorageAgent(WebAgentContext&amp;, InspectorPageAgent*);
</ins><span class="cx">     virtual ~InspectorDOMStorageAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDatabaseAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDatabaseAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx">     RefPtr&lt;InspectorDatabaseResource&gt; resource = InspectorDatabaseResource::create(database, domain, name, version);
</span><span class="cx">     m_resources.set(resource-&gt;id(), resource);
</span><span class="cx">     // Resources are only bound while visible.
</span><del>-    if (m_frontendDispatcher &amp;&amp; m_enabled)
</del><ins>+    if (m_enabled)
</ins><span class="cx">         resource-&gt;bind(m_frontendDispatcher.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -212,8 +212,10 @@
</span><span class="cx">     m_resources.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorDatabaseAgent::InspectorDatabaseAgent(InstrumentingAgents&amp; instrumentingAgents)
-    : InspectorAgentBase(ASCIILiteral(&quot;Database&quot;), instrumentingAgents)
</del><ins>+InspectorDatabaseAgent::InspectorDatabaseAgent(WebAgentContext&amp; context)
+    : InspectorAgentBase(ASCIILiteral(&quot;Database&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::DatabaseFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::DatabaseBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx"> {
</span><span class="cx">     m_instrumentingAgents.setInspectorDatabaseAgent(this);
</span><span class="cx"> }
</span><span class="lines">@@ -223,17 +225,12 @@
</span><span class="cx">     m_instrumentingAgents.setInspectorDatabaseAgent(nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorDatabaseAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::DatabaseFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::DatabaseBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorDatabaseAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDatabaseAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDatabaseAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDatabaseAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorDatabaseAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -44,14 +44,13 @@
</span><span class="cx"> 
</span><span class="cx"> class Database;
</span><span class="cx"> class InspectorDatabaseResource;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><span class="cx"> class InspectorDatabaseAgent final : public InspectorAgentBase, public Inspector::DatabaseBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    explicit InspectorDatabaseAgent(InstrumentingAgents&amp;);
</del><ins>+    explicit InspectorDatabaseAgent(WebAgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorDatabaseAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorIndexedDBAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -566,9 +566,10 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span><span class="cx"> 
</span><del>-InspectorIndexedDBAgent::InspectorIndexedDBAgent(InstrumentingAgents&amp; instrumentingAgents, InjectedScriptManager&amp; injectedScriptManager, InspectorPageAgent* pageAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;IndexedDB&quot;), instrumentingAgents)
-    , m_injectedScriptManager(injectedScriptManager)
</del><ins>+InspectorIndexedDBAgent::InspectorIndexedDBAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent)
+    : InspectorAgentBase(ASCIILiteral(&quot;IndexedDB&quot;), context)
+    , m_injectedScriptManager(context.injectedScriptManager)
+    , m_backendDispatcher(Inspector::IndexedDBBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -577,15 +578,12 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorIndexedDBAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorIndexedDBAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_backendDispatcher = Inspector::IndexedDBBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorIndexedDBAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorIndexedDBAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> class InspectorIndexedDBAgent final : public InspectorAgentBase, public Inspector::IndexedDBBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorIndexedDBAgent(InstrumentingAgents&amp;, Inspector::InjectedScriptManager&amp;, InspectorPageAgent*);
</del><ins>+    InspectorIndexedDBAgent(WebAgentContext&amp;, InspectorPageAgent*);
</ins><span class="cx">     virtual ~InspectorIndexedDBAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span><span class="lines">@@ -66,8 +66,8 @@
</span><span class="cx">     virtual void clearObjectStore(ErrorString&amp;, const String&amp; in_securityOrigin, const String&amp; in_databaseName, const String&amp; in_objectStoreName, Ref&lt;ClearObjectStoreCallback&gt;&amp;&amp;) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    Inspector::InjectedScriptManager&amp; m_injectedScriptManager;
</ins><span class="cx">     RefPtr&lt;Inspector::IndexedDBBackendDispatcher&gt; m_backendDispatcher;
</span><del>-    Inspector::InjectedScriptManager&amp; m_injectedScriptManager;
</del><span class="cx">     InspectorPageAgent* m_pageAgent { nullptr };
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorInstrumentationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">     if (pageAgent)
</span><span class="cx">         pageAgent-&gt;didClearWindowObjectInWorld(&amp;frame, world);
</span><span class="cx">     if (PageDebuggerAgent* debuggerAgent = instrumentingAgents.pageDebuggerAgent()) {
</span><del>-        if (pageAgent &amp;&amp; &amp;world == &amp;mainThreadNormalWorld() &amp;&amp; &amp;frame == pageAgent-&gt;mainFrame())
</del><ins>+        if (pageAgent &amp;&amp; &amp;world == &amp;mainThreadNormalWorld() &amp;&amp; &amp;frame == &amp;pageAgent-&gt;mainFrame())
</ins><span class="cx">             debuggerAgent-&gt;didClearMainFrameWindowObject();
</span><span class="cx">     }
</span><span class="cx">     if (PageRuntimeAgent* pageRuntimeAgent = instrumentingAgents.pageRuntimeAgent()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorLayerTreeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -46,8 +46,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-InspectorLayerTreeAgent::InspectorLayerTreeAgent(InstrumentingAgents&amp; instrumentingAgents)
-    : InspectorAgentBase(ASCIILiteral(&quot;LayerTree&quot;), instrumentingAgents)
</del><ins>+InspectorLayerTreeAgent::InspectorLayerTreeAgent(WebAgentContext&amp; context)
+    : InspectorAgentBase(ASCIILiteral(&quot;LayerTree&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::LayerTreeFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::LayerTreeBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -56,17 +58,12 @@
</span><span class="cx">     reset();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorLayerTreeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorLayerTreeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::LayerTreeFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::LayerTreeBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorLayerTreeAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorLayerTreeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorLayerTreeAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -40,14 +40,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class InstrumentingAgents;
-
</del><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><span class="cx"> class InspectorLayerTreeAgent final : public InspectorAgentBase, public Inspector::LayerTreeBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    explicit InspectorLayerTreeAgent(InstrumentingAgents&amp;);
</del><ins>+    explicit InspectorLayerTreeAgent(WebAgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorLayerTreeAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -326,25 +326,22 @@
</span><span class="cx">     return resourceTypeJson(cachedResourceType(cachedResource));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorPageAgent::InspectorPageAgent(InstrumentingAgents&amp; instrumentingAgents, Page* page, InspectorClient* client, InspectorOverlay* overlay)
-    : InspectorAgentBase(ASCIILiteral(&quot;Page&quot;), instrumentingAgents)
-    , m_page(page)
</del><ins>+InspectorPageAgent::InspectorPageAgent(PageAgentContext&amp; context, InspectorClient* client, InspectorOverlay* overlay)
+    : InspectorAgentBase(ASCIILiteral(&quot;Page&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::PageFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::PageBackendDispatcher::create(context.backendDispatcher, this))
+    , m_page(context.inspectedPage)
</ins><span class="cx">     , m_client(client)
</span><span class="cx">     , m_overlay(overlay)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorPageAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorPageAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::PageFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::PageBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="lines">@@ -366,8 +363,7 @@
</span><span class="cx">     stopwatch-&gt;reset();
</span><span class="cx">     stopwatch-&gt;start();
</span><span class="cx"> 
</span><del>-    if (Frame* frame = mainFrame())
-        m_originalScriptExecutionDisabled = !frame-&gt;settings().isScriptEnabled();
</del><ins>+    m_originalScriptExecutionDisabled = !mainFrame().settings().isScriptEnabled();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::disable(ErrorString&amp;)
</span><span class="lines">@@ -409,13 +405,13 @@
</span><span class="cx"> void InspectorPageAgent::reload(ErrorString&amp;, const bool* const optionalIgnoreCache, const String* optionalScriptToEvaluateOnLoad)
</span><span class="cx"> {
</span><span class="cx">     m_pendingScriptToEvaluateOnLoadOnce = optionalScriptToEvaluateOnLoad ? *optionalScriptToEvaluateOnLoad : &quot;&quot;;
</span><del>-    m_page-&gt;mainFrame().loader().reload(optionalIgnoreCache ? *optionalIgnoreCache : false);
</del><ins>+    m_page.mainFrame().loader().reload(optionalIgnoreCache ? *optionalIgnoreCache : false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::navigate(ErrorString&amp;, const String&amp; url)
</span><span class="cx"> {
</span><span class="cx">     UserGestureIndicator indicator(DefinitelyProcessingUserGesture);
</span><del>-    Frame&amp; frame = m_page-&gt;mainFrame();
</del><ins>+    Frame&amp; frame = m_page.mainFrame();
</ins><span class="cx"> 
</span><span class="cx">     ResourceRequest resourceRequest(frame.document()-&gt;completeURL(url));
</span><span class="cx">     FrameLoadRequest frameRequest(frame.document()-&gt;securityOrigin(), resourceRequest, &quot;_self&quot;, LockHistory::No, LockBackForwardList::No, MaybeSendReferrer, AllowNavigationToInvalidURL::No, NewFrameOpenerPolicy::Allow, ShouldReplaceDocumentIfJavaScriptURL::ReplaceDocumentIfJavaScriptURL, ShouldOpenExternalURLsPolicy::ShouldNotAllow);
</span><span class="lines">@@ -503,7 +499,7 @@
</span><span class="cx">     // always return the same true/false value.
</span><span class="cx">     bool rawCookiesImplemented = false;
</span><span class="cx"> 
</span><del>-    for (Frame* frame = mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</del><ins>+    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</ins><span class="cx">         Document* document = frame-&gt;document();
</span><span class="cx"> 
</span><span class="cx">         for (auto&amp; url : allResourcesURLsForFrame(frame)) {
</span><span class="lines">@@ -535,13 +531,13 @@
</span><span class="cx"> void InspectorPageAgent::deleteCookie(ErrorString&amp;, const String&amp; cookieName, const String&amp; url)
</span><span class="cx"> {
</span><span class="cx">     URL parsedURL(ParsedURLString, url);
</span><del>-    for (Frame* frame = &amp;m_page-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</del><ins>+    for (Frame* frame = &amp;m_page.mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
</ins><span class="cx">         WebCore::deleteCookie(frame-&gt;document(), parsedURL, cookieName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::getResourceTree(ErrorString&amp;, RefPtr&lt;Inspector::Protocol::Page::FrameResourceTree&gt;&amp; object)
</span><span class="cx"> {
</span><del>-    object = buildObjectForFrameTree(&amp;m_page-&gt;mainFrame());
</del><ins>+    object = buildObjectForFrameTree(&amp;m_page.mainFrame());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::getResourceContent(ErrorString&amp; errorString, const String&amp; frameId, const String&amp; url, String* content, bool* base64Encoded)
</span><span class="lines">@@ -617,7 +613,7 @@
</span><span class="cx">     bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false;
</span><span class="cx">     JSC::Yarr::RegularExpression regex = ContentSearchUtilities::createSearchRegex(text, caseSensitive, isRegex);
</span><span class="cx"> 
</span><del>-    for (Frame* frame = &amp;m_page-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</del><ins>+    for (Frame* frame = &amp;m_page.mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</ins><span class="cx">         String content;
</span><span class="cx"> 
</span><span class="cx">         for (auto* cachedResource : cachedResourcesForFrame(frame)) {
</span><span class="lines">@@ -665,11 +661,8 @@
</span><span class="cx"> {
</span><span class="cx">     bool disabledByScriptController = false;
</span><span class="cx">     bool disabledInSettings = false;
</span><del>-    Frame* frame = mainFrame();
-    if (frame) {
-        disabledByScriptController = !frame-&gt;script().canExecuteScripts(NotAboutToExecuteScript);
-        disabledInSettings = !frame-&gt;settings().isScriptEnabled();
-    }
</del><ins>+    disabledByScriptController = mainFrame().script().canExecuteScripts(NotAboutToExecuteScript);
+    disabledInSettings = !mainFrame().settings().isScriptEnabled();
</ins><span class="cx"> 
</span><span class="cx">     if (!disabledByScriptController) {
</span><span class="cx">         *status = Inspector::PageBackendDispatcherHandler::Result::Allowed;
</span><span class="lines">@@ -684,11 +677,8 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::setScriptExecutionDisabled(ErrorString&amp;, bool value)
</span><span class="cx"> {
</span><del>-    if (!mainFrame())
-        return;
-
</del><span class="cx">     m_ignoreScriptsEnabledNotification = true;
</span><del>-    mainFrame()-&gt;settings().setScriptEnabled(!value);
</del><ins>+    mainFrame().settings().setScriptEnabled(!value);
</ins><span class="cx">     m_ignoreScriptsEnabledNotification = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -697,9 +687,6 @@
</span><span class="cx">     if (&amp;world != &amp;mainThreadNormalWorld())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!m_frontendDispatcher)
-        return;
-
</del><span class="cx">     if (m_scriptsToEvaluateOnLoad) {
</span><span class="cx">         for (auto&amp; keyValuePair : *m_scriptsToEvaluateOnLoad) {
</span><span class="cx">             String scriptText;
</span><span class="lines">@@ -742,10 +729,9 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Frame* InspectorPageAgent::mainFrame()
</del><ins>+MainFrame&amp; InspectorPageAgent::mainFrame()
</ins><span class="cx"> {
</span><del>-    // FIXME: This should return a Frame&amp;
-    return &amp;m_page-&gt;mainFrame();
</del><ins>+    return m_page.mainFrame();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> Frame* InspectorPageAgent::frameForId(const String&amp; frameId)
</span><span class="lines">@@ -785,7 +771,7 @@
</span><span class="cx"> 
</span><span class="cx"> Frame* InspectorPageAgent::findFrameWithSecurityOrigin(const String&amp; originRawString)
</span><span class="cx"> {
</span><del>-    for (Frame* frame = &amp;m_page-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</del><ins>+    for (Frame* frame = &amp;m_page.mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</ins><span class="cx">         RefPtr&lt;SecurityOrigin&gt; documentOrigin = frame-&gt;document()-&gt;securityOrigin();
</span><span class="cx">         if (documentOrigin-&gt;toRawString() == originRawString)
</span><span class="cx">             return frame;
</span><span class="lines">@@ -908,6 +894,8 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;Inspector::Protocol::Page::Frame&gt; InspectorPageAgent::buildObjectForFrame(Frame* frame)
</span><span class="cx"> {
</span><ins>+    ASSERT_ARG(frame, frame);
+
</ins><span class="cx">     auto frameObject = Inspector::Protocol::Page::Frame::create()
</span><span class="cx">         .setId(frameId(frame))
</span><span class="cx">         .setLoaderId(loaderId(frame-&gt;loader().documentLoader()))
</span><span class="lines">@@ -929,6 +917,8 @@
</span><span class="cx"> 
</span><span class="cx"> Ref&lt;Inspector::Protocol::Page::FrameResourceTree&gt; InspectorPageAgent::buildObjectForFrameTree(Frame* frame)
</span><span class="cx"> {
</span><ins>+    ASSERT_ARG(frame, frame);
+
</ins><span class="cx">     Ref&lt;Inspector::Protocol::Page::Frame&gt; frameObject = buildObjectForFrame(frame);
</span><span class="cx">     auto subresources = Inspector::Protocol::Array&lt;Inspector::Protocol::Page::FrameResource&gt;::create();
</span><span class="cx">     auto result = Inspector::Protocol::Page::FrameResourceTree::create()
</span><span class="lines">@@ -966,8 +956,7 @@
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span><span class="cx"> void InspectorPageAgent::updateTouchEventEmulationInPage(bool enabled)
</span><span class="cx"> {
</span><del>-    if (mainFrame())
-        mainFrame()-&gt;settings().setTouchEventEmulationEnabled(enabled);
</del><ins>+    mainFrame().settings().setTouchEventEmulationEnabled(enabled);
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -988,7 +977,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_emulatedMedia = media;
</span><del>-    Document* document = m_page-&gt;mainFrame().document();
</del><ins>+    Document* document = m_page.mainFrame().document();
</ins><span class="cx">     if (document) {
</span><span class="cx">         document-&gt;styleResolverChanged(RecalcStyleImmediately);
</span><span class="cx">         document-&gt;updateLayout();
</span><span class="lines">@@ -1003,19 +992,18 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::getCompositingBordersVisible(ErrorString&amp;, bool* outParam)
</span><span class="cx"> {
</span><del>-    *outParam = m_page-&gt;settings().showDebugBorders() || m_page-&gt;settings().showRepaintCounter();
</del><ins>+    *outParam = m_page.settings().showDebugBorders() || m_page.settings().showRepaintCounter();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::setCompositingBordersVisible(ErrorString&amp;, bool visible)
</span><span class="cx"> {
</span><del>-    m_page-&gt;settings().setShowDebugBorders(visible);
-    m_page-&gt;settings().setShowRepaintCounter(visible);
</del><ins>+    m_page.settings().setShowDebugBorders(visible);
+    m_page.settings().setShowRepaintCounter(visible);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::snapshotNode(ErrorString&amp; errorString, int nodeId, String* outDataURL)
</span><span class="cx"> {
</span><del>-    Frame* frame = mainFrame();
-    ASSERT(frame);
</del><ins>+    Frame&amp; frame = mainFrame();
</ins><span class="cx"> 
</span><span class="cx">     InspectorDOMAgent* domAgent = m_instrumentingAgents.inspectorDOMAgent();
</span><span class="cx">     ASSERT(domAgent);
</span><span class="lines">@@ -1023,7 +1011,7 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;ImageBuffer&gt; snapshot = WebCore::snapshotNode(*frame, *node);
</del><ins>+    std::unique_ptr&lt;ImageBuffer&gt; snapshot = WebCore::snapshotNode(frame, *node);
</ins><span class="cx">     if (!snapshot) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Could not capture snapshot&quot;);
</span><span class="cx">         return;
</span><span class="lines">@@ -1034,15 +1022,14 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::snapshotRect(ErrorString&amp; errorString, int x, int y, int width, int height, const String&amp; coordinateSystem, String* outDataURL)
</span><span class="cx"> {
</span><del>-    Frame* frame = mainFrame();
-    ASSERT(frame);
</del><ins>+    Frame&amp; frame = mainFrame();
</ins><span class="cx"> 
</span><span class="cx">     SnapshotOptions options = SnapshotOptionsNone;
</span><span class="cx">     if (coordinateSystem == &quot;Viewport&quot;)
</span><span class="cx">         options |= SnapshotOptionsInViewCoordinates;
</span><span class="cx"> 
</span><span class="cx">     IntRect rectangle(x, y, width, height);
</span><del>-    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotFrameRect(*frame, rectangle, options);
</del><ins>+    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotFrameRect(frame, rectangle, options);
</ins><span class="cx"> 
</span><span class="cx">     if (!snapshot) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Could not capture snapshot&quot;);
</span><span class="lines">@@ -1060,14 +1047,9 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorPageAgent::archive(ErrorString&amp; errorString, String* data)
</span><span class="cx"> {
</span><del>-    Frame* frame = mainFrame();
-    if (!frame) {
-        errorString = ASCIILiteral(&quot;No main frame&quot;);
-        return;
-    }
-
</del><span class="cx"> #if ENABLE(WEB_ARCHIVE) &amp;&amp; USE(CF)
</span><del>-    RefPtr&lt;LegacyWebArchive&gt; archive = LegacyWebArchive::create(frame);
</del><ins>+    Frame&amp; frame = mainFrame();
+    RefPtr&lt;LegacyWebArchive&gt; archive = LegacyWebArchive::create(&amp;frame);
</ins><span class="cx">     if (!archive) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Could not create web archive for main frame&quot;);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorPageAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorPageAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorPageAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorPageAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> class Frontend;
</span><span class="cx"> class InspectorClient;
</span><span class="cx"> class InspectorOverlay;
</span><del>-class InstrumentingAgents;
</del><ins>+class MainFrame;
</ins><span class="cx"> class URL;
</span><span class="cx"> class Page;
</span><span class="cx"> class RenderObject;
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorPageAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorPageAgent(InstrumentingAgents&amp;, Page*, InspectorClient*, InspectorOverlay*);
</del><ins>+    InspectorPageAgent(PageAgentContext&amp;, InspectorClient*, InspectorOverlay*);
</ins><span class="cx"> 
</span><span class="cx">     enum ResourceType {
</span><span class="cx">         DocumentResource,
</span><span class="lines">@@ -144,8 +144,8 @@
</span><span class="cx">     virtual void willDestroyFrontendAndBackend(Inspector::DisconnectReason) override;
</span><span class="cx"> 
</span><span class="cx">     // Cross-agents API
</span><del>-    Page* page() { return m_page; }
-    Frame* mainFrame();
</del><ins>+    Page&amp; page() { return m_page; }
+    MainFrame&amp; mainFrame();
</ins><span class="cx">     String createIdentifier();
</span><span class="cx">     Frame* frameForId(const String&amp; frameId);
</span><span class="cx">     WEBCORE_EXPORT String frameId(Frame*);
</span><span class="lines">@@ -171,7 +171,7 @@
</span><span class="cx">     std::unique_ptr&lt;Inspector::PageFrontendDispatcher&gt; m_frontendDispatcher;
</span><span class="cx">     RefPtr&lt;Inspector::PageBackendDispatcher&gt; m_backendDispatcher;
</span><span class="cx"> 
</span><del>-    Page* m_page { nullptr };
</del><ins>+    Page&amp; m_page;
</ins><span class="cx">     InspectorClient* m_client { nullptr };
</span><span class="cx">     InspectorOverlay* m_overlay { nullptr };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorReplayAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -156,9 +156,11 @@
</span><span class="cx">         .release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorReplayAgent::InspectorReplayAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent)
-    : InspectorAgentBase(ASCIILiteral(&quot;Replay&quot;), instrumentingAgents)
-    , m_page(*pageAgent-&gt;page())
</del><ins>+InspectorReplayAgent::InspectorReplayAgent(PageAgentContext&amp; context)
+    : InspectorAgentBase(ASCIILiteral(&quot;Replay&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::ReplayFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::ReplayBackendDispatcher::create(context.backendDispatcher, this))
+    , m_page(context.inspectedPage)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -173,11 +175,8 @@
</span><span class="cx">     return m_page.replayController().sessionState();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorReplayAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorReplayAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::ReplayFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::ReplayBackendDispatcher::create(backendDispatcher, this);
-
</del><span class="cx">     m_instrumentingAgents.setInspectorReplayAgent(this);
</span><span class="cx">     ASSERT(sessionState() == WebCore::SessionState::Inactive);
</span><span class="cx"> 
</span><span class="lines">@@ -192,9 +191,6 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorReplayAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     m_instrumentingAgents.setInspectorReplayAgent(nullptr);
</span><span class="cx"> 
</span><span class="cx">     // Drop references to all sessions and segments.
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorReplayAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorReplayAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorReplayAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorReplayAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> class Event;
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Page;
</span><span class="cx"> class ReplaySession;
</span><span class="cx"> class ReplaySessionSegment;
</span><span class="lines">@@ -62,7 +61,7 @@
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(InspectorReplayAgent);
</span><span class="cx"> public:
</span><del>-    InspectorReplayAgent(InstrumentingAgents&amp;, InspectorPageAgent*);
</del><ins>+    InspectorReplayAgent(PageAgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorReplayAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -162,25 +162,22 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace
</span><span class="cx"> 
</span><del>-InspectorResourceAgent::InspectorResourceAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent, InspectorClient* client)
-    : InspectorAgentBase(ASCIILiteral(&quot;Network&quot;), instrumentingAgents)
</del><ins>+InspectorResourceAgent::InspectorResourceAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent, InspectorClient* client)
+    : InspectorAgentBase(ASCIILiteral(&quot;Network&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::NetworkFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::NetworkBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_client(client)
</span><span class="cx">     , m_resourcesData(std::make_unique&lt;NetworkResourcesData&gt;())
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorResourceAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorResourceAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::NetworkFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::NetworkBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> }
</span><span class="lines">@@ -602,8 +599,6 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::enable()
</span><span class="cx"> {
</span><del>-    if (!m_frontendDispatcher)
-        return;
</del><span class="cx">     m_enabled = true;
</span><span class="cx">     m_instrumentingAgents.setInspectorResourceAgent(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -55,7 +55,6 @@
</span><span class="cx"> class HTTPHeaderMap;
</span><span class="cx"> class InspectorClient;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class NetworkResourcesData;
</span><span class="cx"> class Page;
</span><span class="cx"> class ResourceError;
</span><span class="lines">@@ -76,7 +75,7 @@
</span><span class="cx"> class InspectorResourceAgent final : public InspectorAgentBase, public Inspector::NetworkBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    InspectorResourceAgent(InstrumentingAgents&amp;, InspectorPageAgent*, InspectorClient*);
</del><ins>+    InspectorResourceAgent(WebAgentContext&amp;, InspectorPageAgent*, InspectorClient*);
</ins><span class="cx">     virtual ~InspectorResourceAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorTimelineAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorTimelineAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -90,11 +90,8 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorTimelineAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorTimelineAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::TimelineFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::TimelineBackendDispatcher::create(backendDispatcher, this);
-
</del><span class="cx">     m_instrumentingAgents.setPersistentInspectorTimelineAgent(this);
</span><span class="cx"> 
</span><span class="cx">     if (m_scriptDebugServer)
</span><span class="lines">@@ -103,9 +100,6 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason reason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     m_instrumentingAgents.setPersistentInspectorTimelineAgent(nullptr);
</span><span class="cx"> 
</span><span class="cx">     if (reason != Inspector::DisconnectReason::InspectedTargetDestroyed) {
</span><span class="lines">@@ -185,8 +179,7 @@
</span><span class="cx">     m_runLoopNestingLevel = 1;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    if (m_frontendDispatcher)
-        m_frontendDispatcher-&gt;recordingStarted(timestamp());
</del><ins>+    m_frontendDispatcher-&gt;recordingStarted(timestamp());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::internalStop()
</span><span class="lines">@@ -214,8 +207,7 @@
</span><span class="cx">     m_enabled = false;
</span><span class="cx">     m_startedComposite = false;
</span><span class="cx"> 
</span><del>-    if (m_frontendDispatcher)
-        m_frontendDispatcher-&gt;recordingStopped(timestamp());
</del><ins>+    m_frontendDispatcher-&gt;recordingStopped(timestamp());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> double InspectorTimelineAgent::timestamp()
</span><span class="lines">@@ -730,8 +722,10 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-InspectorTimelineAgent::InspectorTimelineAgent(InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent, InspectorType type, InspectorClient* client)
-    : InspectorAgentBase(ASCIILiteral(&quot;Timeline&quot;), instrumentingAgents)
</del><ins>+InspectorTimelineAgent::InspectorTimelineAgent(WebAgentContext&amp; context, InspectorPageAgent* pageAgent, InspectorType type, InspectorClient* client)
+    : InspectorAgentBase(ASCIILiteral(&quot;Timeline&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::TimelineFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::TimelineBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_client(client)
</span><span class="cx">     , m_inspectorType(type)
</span><span class="lines">@@ -748,9 +742,6 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorTimelineAgent::sendEvent(RefPtr&lt;InspectorObject&gt;&amp;&amp; event)
</span><span class="cx"> {
</span><del>-    if (!m_frontendDispatcher)
-        return;
-
</del><span class="cx">     // FIXME: runtimeCast is a hack. We do it because we can't build TimelineEvent directly now.
</span><span class="cx">     auto recordChecked = BindingTraits&lt;Inspector::Protocol::Timeline::TimelineEvent&gt;::runtimeCast(WTF::move(event));
</span><span class="cx">     m_frontendDispatcher-&gt;eventRecorded(WTF::move(recordChecked));
</span><span class="lines">@@ -784,9 +775,4 @@
</span><span class="cx">     quad-&gt;setP4(frameView.contentsToRootView(roundedIntPoint(absolute.p4())));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-Page* InspectorTimelineAgent::page()
-{
-    return m_pageAgent ? m_pageAgent-&gt;page() : nullptr;
-}
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorTimelineAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorTimelineAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorTimelineAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorTimelineAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -54,7 +54,6 @@
</span><span class="cx"> class Frame;
</span><span class="cx"> class InspectorClient;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class IntRect;
</span><span class="cx"> class URL;
</span><span class="cx"> class Page;
</span><span class="lines">@@ -118,7 +117,7 @@
</span><span class="cx"> public:
</span><span class="cx">     enum InspectorType { PageInspector, WorkerInspector };
</span><span class="cx"> 
</span><del>-    InspectorTimelineAgent(InstrumentingAgents&amp;, InspectorPageAgent*, InspectorType, InspectorClient*);
</del><ins>+    InspectorTimelineAgent(WebAgentContext&amp;, InspectorPageAgent*, InspectorType, InspectorClient*);
</ins><span class="cx">     virtual ~InspectorTimelineAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span><span class="lines">@@ -230,7 +229,6 @@
</span><span class="cx">     void clearRecordStack();
</span><span class="cx"> 
</span><span class="cx">     void localToPageQuad(const RenderObject&amp;, const LayoutRect&amp;, FloatQuad*);
</span><del>-    Page* page();
</del><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;Inspector::TimelineFrontendDispatcher&gt; m_frontendDispatcher;
</span><span class="cx">     RefPtr&lt;Inspector::TimelineBackendDispatcher&gt; m_backendDispatcher;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorWebAgentBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorWebAgentBase.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorWebAgentBase.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorWebAgentBase.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -33,12 +33,45 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class InstrumentingAgents;
</span><ins>+class Page;
+class WorkerGlobalScope;
</ins><span class="cx"> 
</span><ins>+// FIXME: move this to Inspector namespace when remaining agents move.
+struct WebAgentContext : public Inspector::AgentContext {
+    WebAgentContext(AgentContext&amp; context, InstrumentingAgents&amp; instrumentingAgents)
+        : AgentContext(context)
+        , instrumentingAgents(instrumentingAgents)
+    {
+    }
+
+    InstrumentingAgents&amp; instrumentingAgents;
+};
+
+struct PageAgentContext : public WebAgentContext {
+    PageAgentContext(WebAgentContext&amp; context, Page&amp; inspectedPage)
+        : WebAgentContext(context)
+        , inspectedPage(inspectedPage)
+    {
+    }
+
+    Page&amp; inspectedPage;
+};
+
+struct WorkerAgentContext : public WebAgentContext {
+    WorkerAgentContext(WebAgentContext&amp; context, WorkerGlobalScope&amp; workerGlobalScope)
+        : WebAgentContext(context)
+        , workerGlobalScope(workerGlobalScope)
+    {
+    }
+
+    WorkerGlobalScope&amp; workerGlobalScope;
+};
+
</ins><span class="cx"> class InspectorAgentBase : public Inspector::InspectorAgentBase {
</span><span class="cx"> protected:
</span><del>-    InspectorAgentBase(const String&amp; name, InstrumentingAgents&amp; instrumentingAgents)
</del><ins>+    InspectorAgentBase(const String&amp; name, WebAgentContext&amp; context)
</ins><span class="cx">         : Inspector::InspectorAgentBase(name)
</span><del>-        , m_instrumentingAgents(instrumentingAgents)
</del><ins>+        , m_instrumentingAgents(context.instrumentingAgents)
</ins><span class="cx">     {
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorWorkerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -101,8 +101,10 @@
</span><span class="cx"> 
</span><span class="cx"> int InspectorWorkerAgent::WorkerFrontendChannel::s_nextId = 1;
</span><span class="cx"> 
</span><del>-InspectorWorkerAgent::InspectorWorkerAgent(InstrumentingAgents&amp; instrumentingAgents)
-    : InspectorAgentBase(ASCIILiteral(&quot;Worker&quot;), instrumentingAgents)
</del><ins>+InspectorWorkerAgent::InspectorWorkerAgent(WebAgentContext&amp; context)
+    : InspectorAgentBase(ASCIILiteral(&quot;Worker&quot;), context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::WorkerFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::WorkerBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx"> {
</span><span class="cx">     m_instrumentingAgents.setInspectorWorkerAgent(this);
</span><span class="cx"> }
</span><span class="lines">@@ -112,10 +114,8 @@
</span><span class="cx">     m_instrumentingAgents.setInspectorWorkerAgent(nullptr);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorWorkerAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void InspectorWorkerAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::WorkerFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::WorkerBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorWorkerAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason)
</span><span class="lines">@@ -123,16 +123,11 @@
</span><span class="cx">     m_shouldPauseDedicatedWorkerOnStart = false;
</span><span class="cx">     ErrorString unused;
</span><span class="cx">     disable(unused);
</span><del>-
-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorWorkerAgent::enable(ErrorString&amp;)
</span><span class="cx"> {
</span><span class="cx">     m_enabled = true;
</span><del>-    if (!m_frontendDispatcher)
-        return;
</del><span class="cx"> 
</span><span class="cx">     createWorkerFrontendChannelsForExistingWorkers();
</span><span class="cx"> }
</span><span class="lines">@@ -140,8 +135,6 @@
</span><span class="cx"> void InspectorWorkerAgent::disable(ErrorString&amp;)
</span><span class="cx"> {
</span><span class="cx">     m_enabled = false;
</span><del>-    if (!m_frontendDispatcher)
-        return;
</del><span class="cx"> 
</span><span class="cx">     destroyWorkerFrontendChannels();
</span><span class="cx"> }
</span><span class="lines">@@ -191,7 +184,7 @@
</span><span class="cx"> void InspectorWorkerAgent::didStartWorkerGlobalScope(WorkerGlobalScopeProxy* workerGlobalScopeProxy, const URL&amp; url)
</span><span class="cx"> {
</span><span class="cx">     m_dedicatedWorkers.set(workerGlobalScopeProxy, url.string());
</span><del>-    if (m_frontendDispatcher &amp;&amp; m_enabled)
</del><ins>+    if (m_enabled)
</ins><span class="cx">         createWorkerFrontendChannel(workerGlobalScopeProxy, url.string());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -228,7 +221,6 @@
</span><span class="cx">     WorkerFrontendChannel* channel = new WorkerFrontendChannel(m_frontendDispatcher.get(), workerGlobalScopeProxy);
</span><span class="cx">     m_idToChannel.set(channel-&gt;id(), channel);
</span><span class="cx"> 
</span><del>-    ASSERT(m_frontendDispatcher);
</del><span class="cx">     if (m_shouldPauseDedicatedWorkerOnStart)
</span><span class="cx">         channel-&gt;connectToWorkerGlobalScope();
</span><span class="cx">     m_frontendDispatcher-&gt;workerCreated(channel-&gt;id(), url, m_shouldPauseDedicatedWorkerOnStart);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorWorkerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class URL;
</span><span class="cx"> class WorkerGlobalScopeProxy;
</span><span class="cx"> 
</span><span class="lines">@@ -52,7 +51,7 @@
</span><span class="cx"> class InspectorWorkerAgent final : public InspectorAgentBase, public Inspector::WorkerBackendDispatcherHandler {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    explicit InspectorWorkerAgent(InstrumentingAgents&amp;);
</del><ins>+    explicit InspectorWorkerAgent(WebAgentContext&amp;);
</ins><span class="cx">     virtual ~InspectorWorkerAgent();
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageConsoleAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageConsoleAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageConsoleAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -41,8 +41,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PageConsoleAgent::PageConsoleAgent(WebInjectedScriptManager&amp; injectedScriptManager, InspectorDOMAgent* domAgent)
-    : WebConsoleAgent(injectedScriptManager)
</del><ins>+PageConsoleAgent::PageConsoleAgent(WebAgentContext&amp; context, InspectorDOMAgent* domAgent)
+    : WebConsoleAgent(context)
</ins><span class="cx">     , m_inspectorDOMAgent(domAgent)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageConsoleAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageConsoleAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageConsoleAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageConsoleAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #ifndef PageConsoleAgent_h
</span><span class="cx"> #define PageConsoleAgent_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;WebConsoleAgent.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -42,7 +43,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(PageConsoleAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    PageConsoleAgent(WebInjectedScriptManager&amp;, InspectorDOMAgent*);
</del><ins>+    PageConsoleAgent(WebAgentContext&amp;, InspectorDOMAgent*);
</ins><span class="cx">     virtual ~PageConsoleAgent() { }
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> #include &quot;InspectorOverlay.h&quot;
</span><span class="cx"> #include &quot;InspectorPageAgent.h&quot;
</span><span class="cx"> #include &quot;InstrumentingAgents.h&quot;
</span><ins>+#include &quot;MainFrame.h&quot;
</ins><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PageConsoleClient.h&quot;
</span><span class="cx"> #include &quot;PageScriptDebugServer.h&quot;
</span><span class="lines">@@ -50,11 +51,12 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PageDebuggerAgent::PageDebuggerAgent(InjectedScriptManager&amp; injectedScriptManager, InstrumentingAgents&amp; instrumentingAgents, InspectorPageAgent* pageAgent, InspectorOverlay* overlay)
-    : WebDebuggerAgent(injectedScriptManager, instrumentingAgents)
</del><ins>+PageDebuggerAgent::PageDebuggerAgent(PageAgentContext&amp; context, InspectorPageAgent* pageAgent, InspectorOverlay* overlay)
+    : WebDebuggerAgent(context)
+    , m_page(context.inspectedPage)
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><span class="cx">     , m_overlay(overlay)
</span><del>-    , m_scriptDebugServer(*pageAgent-&gt;page())
</del><ins>+    , m_scriptDebugServer(m_page)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -76,7 +78,7 @@
</span><span class="cx">     DEPRECATED_DEFINE_STATIC_LOCAL(String, sourceMapHTTPHeaderDeprecated, (ASCIILiteral(&quot;X-SourceMap&quot;)));
</span><span class="cx"> 
</span><span class="cx">     if (!script.url.isEmpty()) {
</span><del>-        CachedResource* resource = m_pageAgent-&gt;cachedResource(m_pageAgent-&gt;mainFrame(), URL(ParsedURLString, script.url));
</del><ins>+        CachedResource* resource = m_pageAgent-&gt;cachedResource(&amp;m_page.mainFrame(), URL(ParsedURLString, script.url));
</ins><span class="cx">         if (resource) {
</span><span class="cx">             String sourceMapHeader = resource-&gt;response().httpHeaderField(sourceMapHTTPHeader);
</span><span class="cx">             if (!sourceMapHeader.isEmpty())
</span><span class="lines">@@ -118,13 +120,13 @@
</span><span class="cx"> 
</span><span class="cx"> void PageDebuggerAgent::breakpointActionLog(JSC::ExecState* exec, const String&amp; message)
</span><span class="cx"> {
</span><del>-    m_pageAgent-&gt;page()-&gt;console().addMessage(MessageSource::JS, MessageLevel::Log, message, createScriptCallStack(exec, ScriptCallStack::maxCallStackSizeToCapture));
</del><ins>+    m_pageAgent-&gt;page().console().addMessage(MessageSource::JS, MessageLevel::Log, message, createScriptCallStack(exec, ScriptCallStack::maxCallStackSizeToCapture));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> InjectedScript PageDebuggerAgent::injectedScriptForEval(ErrorString&amp; errorString, const int* executionContextId)
</span><span class="cx"> {
</span><span class="cx">     if (!executionContextId) {
</span><del>-        JSC::ExecState* scriptState = mainWorldExecState(m_pageAgent-&gt;mainFrame());
</del><ins>+        JSC::ExecState* scriptState = mainWorldExecState(&amp;m_pageAgent-&gt;mainFrame());
</ins><span class="cx">         return injectedScriptManager().injectedScriptFor(scriptState);
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx"> 
</span><span class="cx"> class InspectorOverlay;
</span><span class="cx"> class InspectorPageAgent;
</span><del>-class InstrumentingAgents;
</del><span class="cx"> class Page;
</span><span class="cx"> class PageScriptDebugServer;
</span><span class="cx"> 
</span><span class="lines">@@ -47,7 +46,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(PageDebuggerAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    PageDebuggerAgent(Inspector::InjectedScriptManager&amp;, InstrumentingAgents&amp;, InspectorPageAgent*, InspectorOverlay*);
</del><ins>+    PageDebuggerAgent(PageAgentContext&amp;, InspectorPageAgent*, InspectorOverlay*);
</ins><span class="cx">     virtual ~PageDebuggerAgent() { }
</span><span class="cx"> 
</span><span class="cx">     void didClearMainFrameWindowObject();
</span><span class="lines">@@ -71,8 +70,9 @@
</span><span class="cx">     virtual Inspector::InjectedScript injectedScriptForEval(ErrorString&amp;, const int* executionContextId) override;
</span><span class="cx">     virtual void setOverlayMessage(ErrorString&amp;, const String*) override;
</span><span class="cx"> 
</span><del>-    InspectorPageAgent* m_pageAgent { nullptr };
</del><ins>+    Page&amp; m_page;
</ins><span class="cx"> 
</span><ins>+    InspectorPageAgent* m_pageAgent;
</ins><span class="cx">     InspectorOverlay* m_overlay { nullptr };
</span><span class="cx">     PageScriptDebugServer m_scriptDebugServer;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageRuntimeAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageRuntimeAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageRuntimeAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -53,24 +53,21 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-PageRuntimeAgent::PageRuntimeAgent(InjectedScriptManager&amp; injectedScriptManager, Page* page, InspectorPageAgent* pageAgent)
-    : InspectorRuntimeAgent(injectedScriptManager)
</del><ins>+PageRuntimeAgent::PageRuntimeAgent(PageAgentContext&amp; context, InspectorPageAgent* pageAgent)
+    : InspectorRuntimeAgent(context)
+    , m_frontendDispatcher(std::make_unique&lt;Inspector::RuntimeFrontendDispatcher&gt;(context.frontendRouter))
+    , m_backendDispatcher(Inspector::RuntimeBackendDispatcher::create(context.backendDispatcher, this))
</ins><span class="cx">     , m_pageAgent(pageAgent)
</span><del>-    , m_inspectedPage(page)
</del><ins>+    , m_inspectedPage(context.inspectedPage)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageRuntimeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter* frontendRouter, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void PageRuntimeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_frontendDispatcher = std::make_unique&lt;Inspector::RuntimeFrontendDispatcher&gt;(frontendRouter);
-    m_backendDispatcher = Inspector::RuntimeBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageRuntimeAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason reason)
</span><span class="cx"> {
</span><del>-    m_frontendDispatcher = nullptr;
-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     String unused;
</span><span class="cx">     disable(unused);
</span><span class="cx"> 
</span><span class="lines">@@ -106,7 +103,6 @@
</span><span class="cx">     if (!enabled())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    ASSERT(m_frontendDispatcher);
</del><span class="cx">     String frameId = m_pageAgent-&gt;frameId(&amp;frame);
</span><span class="cx">     JSC::ExecState* scriptState = mainWorldExecState(&amp;frame);
</span><span class="cx">     notifyContextCreated(frameId, scriptState, nullptr, true);
</span><span class="lines">@@ -120,7 +116,7 @@
</span><span class="cx"> InjectedScript PageRuntimeAgent::injectedScriptForEval(ErrorString&amp; errorString, const int* executionContextId)
</span><span class="cx"> {
</span><span class="cx">     if (!executionContextId) {
</span><del>-        JSC::ExecState* scriptState = mainWorldExecState(&amp;m_inspectedPage-&gt;mainFrame());
</del><ins>+        JSC::ExecState* scriptState = mainWorldExecState(&amp;m_inspectedPage.mainFrame());
</ins><span class="cx">         InjectedScript result = injectedScriptManager().injectedScriptFor(scriptState);
</span><span class="cx">         if (result.hasNoValue())
</span><span class="cx">             errorString = ASCIILiteral(&quot;Internal error: main world execution context not found.&quot;);
</span><span class="lines">@@ -146,7 +142,7 @@
</span><span class="cx"> void PageRuntimeAgent::reportExecutionContextCreation()
</span><span class="cx"> {
</span><span class="cx">     Vector&lt;std::pair&lt;JSC::ExecState*, SecurityOrigin*&gt;&gt; isolatedContexts;
</span><del>-    for (Frame* frame = &amp;m_inspectedPage-&gt;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</del><ins>+    for (Frame* frame = &amp;m_inspectedPage.mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
</ins><span class="cx">         if (!frame-&gt;script().canExecuteScripts(NotAboutToExecuteScript))
</span><span class="cx">             continue;
</span><span class="cx">         String frameId = m_pageAgent-&gt;frameId(frame);
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorPageRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/PageRuntimeAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/PageRuntimeAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/PageRuntimeAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #ifndef PageRuntimeAgent_h
</span><span class="cx"> #define PageRuntimeAgent_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;inspector/InspectorFrontendDispatchers.h&gt;
</span><span class="cx"> #include &lt;inspector/agents/InspectorRuntimeAgent.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +55,7 @@
</span><span class="cx"> class PageRuntimeAgent final : public Inspector::InspectorRuntimeAgent {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    PageRuntimeAgent(Inspector::InjectedScriptManager&amp;, Page*, InspectorPageAgent*);
</del><ins>+    PageRuntimeAgent(PageAgentContext&amp;, InspectorPageAgent*);
</ins><span class="cx">     virtual ~PageRuntimeAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span><span class="lines">@@ -77,7 +78,7 @@
</span><span class="cx">     RefPtr&lt;Inspector::RuntimeBackendDispatcher&gt; m_backendDispatcher;
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx"> 
</span><del>-    Page* m_inspectedPage;
</del><ins>+    Page&amp; m_inspectedPage;
</ins><span class="cx"> 
</span><span class="cx">     bool m_mainWorldContextCreated { false };
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebConsoleAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebConsoleAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WebConsoleAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -41,8 +41,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WebConsoleAgent::WebConsoleAgent(WebInjectedScriptManager&amp; injectedScriptManager)
-    : InspectorConsoleAgent(injectedScriptManager)
</del><ins>+WebConsoleAgent::WebConsoleAgent(AgentContext&amp; context)
+    : InspectorConsoleAgent(context)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx">     if (!m_injectedScriptManager.inspectorEnvironment().developerExtrasEnabled())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (m_frontendDispatcher &amp;&amp; m_monitoringXHREnabled) {
</del><ins>+    if (m_monitoringXHREnabled) {
</ins><span class="cx">         String message = &quot;XHR finished loading: \&quot;&quot; + url + &quot;\&quot;.&quot;;
</span><span class="cx">         addMessageToConsole(std::make_unique&lt;ConsoleMessage&gt;(MessageSource::Network, MessageType::Log, MessageLevel::Debug, message, sendURL, sendLineNumber, sendColumnNumber, nullptr, requestIdentifier));
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebConsoleAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebConsoleAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebConsoleAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WebConsoleAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -33,14 +33,13 @@
</span><span class="cx"> class DOMWindow;
</span><span class="cx"> class ResourceError;
</span><span class="cx"> class ResourceResponse;
</span><del>-class WebInjectedScriptManager;
</del><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><span class="cx"> class WebConsoleAgent : public Inspector::InspectorConsoleAgent {
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WebConsoleAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WebConsoleAgent(WebInjectedScriptManager&amp;);
</del><ins>+    WebConsoleAgent(Inspector::AgentContext&amp;);
</ins><span class="cx">     virtual ~WebConsoleAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void setMonitoringXHREnabled(ErrorString&amp;, bool enabled) override final;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WebDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WebDebuggerAgent::WebDebuggerAgent(InjectedScriptManager&amp; injectedScriptManager, InstrumentingAgents&amp; instrumentingAgents)
-    : InspectorDebuggerAgent(injectedScriptManager)
-    , m_instrumentingAgents(instrumentingAgents)
</del><ins>+WebDebuggerAgent::WebDebuggerAgent(WebAgentContext&amp; context)
+    : InspectorDebuggerAgent(context)
+    , m_instrumentingAgents(context.instrumentingAgents)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WebDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -26,6 +26,7 @@
</span><span class="cx"> #ifndef WebDebuggerAgent_h
</span><span class="cx"> #define WebDebuggerAgent_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;inspector/agents/InspectorDebuggerAgent.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -37,7 +38,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WebDebuggerAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WebDebuggerAgent(Inspector::InjectedScriptManager&amp;, InstrumentingAgents&amp;);
</del><ins>+    WebDebuggerAgent(WebAgentContext&amp;);
</ins><span class="cx">     virtual ~WebDebuggerAgent() { }
</span><span class="cx"> 
</span><span class="cx"> protected:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerConsoleAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerConsoleAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerConsoleAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerConsoleAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -36,8 +36,8 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WorkerConsoleAgent::WorkerConsoleAgent(WebInjectedScriptManager&amp; injectedScriptManager)
-    : WebConsoleAgent(injectedScriptManager)
</del><ins>+WorkerConsoleAgent::WorkerConsoleAgent(WorkerAgentContext&amp; context)
+    : WebConsoleAgent(context)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerConsoleAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerConsoleAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerConsoleAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerConsoleAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #ifndef WorkerConsoleAgent_h
</span><span class="cx"> #define WorkerConsoleAgent_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &quot;WebConsoleAgent.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -40,7 +41,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WorkerConsoleAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WorkerConsoleAgent(WebInjectedScriptManager&amp;);
</del><ins>+    WorkerConsoleAgent(WorkerAgentContext&amp;);
</ins><span class="cx">     virtual ~WorkerConsoleAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual bool isWorkerAgent() const override { return true; }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerDebuggerAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -81,21 +81,21 @@
</span><span class="cx"> 
</span><span class="cx"> const char* WorkerDebuggerAgent::debuggerTaskMode = &quot;debugger&quot;;
</span><span class="cx"> 
</span><del>-WorkerDebuggerAgent::WorkerDebuggerAgent(InjectedScriptManager&amp; injectedScriptManager, InstrumentingAgents&amp; instrumentingAgents, WorkerGlobalScope* inspectedWorkerGlobalScope)
-    : WebDebuggerAgent(injectedScriptManager, instrumentingAgents)
-    , m_scriptDebugServer(inspectedWorkerGlobalScope, WorkerDebuggerAgent::debuggerTaskMode)
-    , m_inspectedWorkerGlobalScope(inspectedWorkerGlobalScope)
</del><ins>+WorkerDebuggerAgent::WorkerDebuggerAgent(WorkerAgentContext&amp; context)
+    : WebDebuggerAgent(context)
+    , m_scriptDebugServer(context.workerGlobalScope, WorkerDebuggerAgent::debuggerTaskMode)
+    , m_inspectedWorkerGlobalScope(context.workerGlobalScope)
</ins><span class="cx"> {
</span><span class="cx">     std::lock_guard&lt;StaticLock&gt; lock(workerDebuggerAgentsMutex);
</span><del>-    workerDebuggerAgents().set(&amp;inspectedWorkerGlobalScope-&gt;thread(), this);
</del><ins>+    workerDebuggerAgents().set(&amp;context.workerGlobalScope.thread(), this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WorkerDebuggerAgent::~WorkerDebuggerAgent()
</span><span class="cx"> {
</span><span class="cx">     std::lock_guard&lt;StaticLock&gt; lock(workerDebuggerAgentsMutex);
</span><span class="cx"> 
</span><del>-    ASSERT(workerDebuggerAgents().contains(&amp;m_inspectedWorkerGlobalScope-&gt;thread()));
-    workerDebuggerAgents().remove(&amp;m_inspectedWorkerGlobalScope-&gt;thread());
</del><ins>+    ASSERT(workerDebuggerAgents().contains(&amp;m_inspectedWorkerGlobalScope.thread()));
+    workerDebuggerAgents().remove(&amp;m_inspectedWorkerGlobalScope.thread());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkerDebuggerAgent::interruptAndDispatchInspectorCommands(WorkerThread* thread)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx">     std::lock_guard&lt;StaticLock&gt; lock(workerDebuggerAgentsMutex);
</span><span class="cx"> 
</span><span class="cx">     if (WorkerDebuggerAgent* agent = workerDebuggerAgents().get(thread))
</span><del>-        agent-&gt;m_scriptDebugServer.interruptAndRunTask(std::make_unique&lt;RunInspectorCommandsTask&gt;(thread, agent-&gt;m_inspectedWorkerGlobalScope));
</del><ins>+        agent-&gt;m_scriptDebugServer.interruptAndRunTask(std::make_unique&lt;RunInspectorCommandsTask&gt;(thread, &amp;agent-&gt;m_inspectedWorkerGlobalScope));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkerDebuggerAgent::startListeningScriptDebugServer()
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WorkerDebuggerAgent::breakpointActionLog(JSC::ExecState*, const String&amp; message)
</span><span class="cx"> {
</span><del>-    m_inspectedWorkerGlobalScope-&gt;addConsoleMessage(MessageSource::JS, MessageLevel::Log, message);
</del><ins>+    m_inspectedWorkerGlobalScope.addConsoleMessage(MessageSource::JS, MessageLevel::Log, message);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WorkerScriptDebugServer&amp; WorkerDebuggerAgent::scriptDebugServer()
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">         return InjectedScript();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSC::ExecState* scriptState = execStateFromWorkerGlobalScope(m_inspectedWorkerGlobalScope);
</del><ins>+    JSC::ExecState* scriptState = execStateFromWorkerGlobalScope(&amp;m_inspectedWorkerGlobalScope);
</ins><span class="cx">     return injectedScriptManager().injectedScriptFor(scriptState);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerDebuggerAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">     WTF_MAKE_NONCOPYABLE(WorkerDebuggerAgent);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    WorkerDebuggerAgent(Inspector::InjectedScriptManager&amp;, InstrumentingAgents&amp;, WorkerGlobalScope*);
</del><ins>+    WorkerDebuggerAgent(WorkerAgentContext&amp;);
</ins><span class="cx">     virtual ~WorkerDebuggerAgent();
</span><span class="cx"> 
</span><span class="cx">     static const char* debuggerTaskMode;
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     WorkerScriptDebugServer m_scriptDebugServer;
</span><del>-    WorkerGlobalScope* m_inspectedWorkerGlobalScope { nullptr };
</del><ins>+    WorkerGlobalScope&amp; m_inspectedWorkerGlobalScope;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerInspectorController.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerInspectorController.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerInspectorController.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -85,19 +85,36 @@
</span><span class="cx">     , m_frontendRouter(FrontendRouter::create())
</span><span class="cx">     , m_backendDispatcher(BackendDispatcher::create(m_frontendRouter.copyRef()))
</span><span class="cx"> {
</span><del>-    auto runtimeAgent = std::make_unique&lt;WorkerRuntimeAgent&gt;(*m_injectedScriptManager, &amp;workerGlobalScope);
</del><ins>+    AgentContext baseContext = {
+        *this,
+        *m_injectedScriptManager,
+        m_frontendRouter.get(),
+        m_backendDispatcher.get()
+    };
+
+    WebAgentContext webContext = {
+        baseContext,
+        m_instrumentingAgents.get()
+    };
+
+    WorkerAgentContext workerContext = {
+        webContext,
+        workerGlobalScope,
+    };
+
+    auto runtimeAgent = std::make_unique&lt;WorkerRuntimeAgent&gt;(workerContext);
</ins><span class="cx">     m_runtimeAgent = runtimeAgent.get();
</span><span class="cx">     m_instrumentingAgents-&gt;setWorkerRuntimeAgent(m_runtimeAgent);
</span><span class="cx">     m_agents.append(WTF::move(runtimeAgent));
</span><span class="cx"> 
</span><del>-    auto consoleAgent = std::make_unique&lt;WorkerConsoleAgent&gt;(*m_injectedScriptManager);
</del><ins>+    auto consoleAgent = std::make_unique&lt;WorkerConsoleAgent&gt;(workerContext);
</ins><span class="cx">     m_instrumentingAgents-&gt;setWebConsoleAgent(consoleAgent.get());
</span><span class="cx"> 
</span><del>-    auto debuggerAgent = std::make_unique&lt;WorkerDebuggerAgent&gt;(*m_injectedScriptManager, m_instrumentingAgents.get(), &amp;workerGlobalScope);
</del><ins>+    auto debuggerAgent = std::make_unique&lt;WorkerDebuggerAgent&gt;(workerContext);
</ins><span class="cx">     m_runtimeAgent-&gt;setScriptDebugServer(&amp;debuggerAgent-&gt;scriptDebugServer());
</span><span class="cx">     m_agents.append(WTF::move(debuggerAgent));
</span><span class="cx"> 
</span><del>-    m_agents.append(std::make_unique&lt;InspectorTimelineAgent&gt;(m_instrumentingAgents.get(), nullptr, InspectorTimelineAgent::WorkerInspector, nullptr));
</del><ins>+    m_agents.append(std::make_unique&lt;InspectorTimelineAgent&gt;(workerContext, nullptr, InspectorTimelineAgent::WorkerInspector, nullptr));
</ins><span class="cx">     m_agents.append(WTF::move(consoleAgent));
</span><span class="cx"> 
</span><span class="cx">     if (CommandLineAPIHost* commandLineAPIHost = m_injectedScriptManager-&gt;commandLineAPIHost()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerRuntimeAgent.cpp (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerRuntimeAgent.cpp        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerRuntimeAgent.cpp        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -47,21 +47,19 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-WorkerRuntimeAgent::WorkerRuntimeAgent(InjectedScriptManager&amp; injectedScriptManager, WorkerGlobalScope* workerGlobalScope)
-    : InspectorRuntimeAgent(injectedScriptManager)
-    , m_workerGlobalScope(workerGlobalScope)
</del><ins>+WorkerRuntimeAgent::WorkerRuntimeAgent(WorkerAgentContext&amp; context)
+    : InspectorRuntimeAgent(context)
+    , m_backendDispatcher(Inspector::RuntimeBackendDispatcher::create(context.backendDispatcher, this))
+    , m_workerGlobalScope(context.workerGlobalScope)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WorkerRuntimeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher* backendDispatcher)
</del><ins>+void WorkerRuntimeAgent::didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*)
</ins><span class="cx"> {
</span><del>-    m_backendDispatcher = Inspector::RuntimeBackendDispatcher::create(backendDispatcher, this);
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WorkerRuntimeAgent::willDestroyFrontendAndBackend(Inspector::DisconnectReason reason)
</span><span class="cx"> {
</span><del>-    m_backendDispatcher = nullptr;
-
</del><span class="cx">     InspectorRuntimeAgent::willDestroyFrontendAndBackend(reason);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -72,7 +70,7 @@
</span><span class="cx">         return InjectedScript();
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSC::ExecState* scriptState = execStateFromWorkerGlobalScope(m_workerGlobalScope);
</del><ins>+    JSC::ExecState* scriptState = execStateFromWorkerGlobalScope(&amp;m_workerGlobalScope);
</ins><span class="cx">     return injectedScriptManager().injectedScriptFor(scriptState);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWorkerRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WorkerRuntimeAgent.h (189437 => 189438)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WorkerRuntimeAgent.h        2015-09-05 17:44:39 UTC (rev 189437)
+++ trunk/Source/WebCore/inspector/WorkerRuntimeAgent.h        2015-09-05 18:52:16 UTC (rev 189438)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #ifndef WorkerRuntimeAgent_h
</span><span class="cx"> #define WorkerRuntimeAgent_h
</span><span class="cx"> 
</span><ins>+#include &quot;InspectorWebAgentBase.h&quot;
</ins><span class="cx"> #include &lt;inspector/agents/InspectorRuntimeAgent.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -41,7 +42,7 @@
</span><span class="cx"> 
</span><span class="cx"> class WorkerRuntimeAgent final : public Inspector::InspectorRuntimeAgent {
</span><span class="cx"> public:
</span><del>-    WorkerRuntimeAgent(Inspector::InjectedScriptManager&amp;, WorkerGlobalScope*);
</del><ins>+    WorkerRuntimeAgent(WorkerAgentContext&amp;);
</ins><span class="cx">     virtual ~WorkerRuntimeAgent() { }
</span><span class="cx"> 
</span><span class="cx">     virtual void didCreateFrontendAndBackend(Inspector::FrontendRouter*, Inspector::BackendDispatcher*) override;
</span><span class="lines">@@ -56,9 +57,10 @@
</span><span class="cx">     virtual Inspector::InjectedScript injectedScriptForEval(ErrorString&amp;, const int* executionContextId) override;
</span><span class="cx">     virtual void muteConsole() override;
</span><span class="cx">     virtual void unmuteConsole() override;
</span><ins>+
</ins><span class="cx">     RefPtr&lt;Inspector::RuntimeBackendDispatcher&gt; m_backendDispatcher;
</span><ins>+    WorkerGlobalScope&amp; m_workerGlobalScope;
</ins><span class="cx"> 
</span><del>-    WorkerGlobalScope* m_workerGlobalScope { nullptr };
</del><span class="cx">     bool m_paused { false };
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>