<!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>[175999] 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/175999">175999</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-11-11 19:07:12 -0800 (Tue, 11 Nov 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Handle activating extra agents properly after inspector has connected
https://bugs.webkit.org/show_bug.cgi?id=138639

Patch by Joseph Pecoraro &lt;pecoraro@apple.com&gt; on 2014-11-11
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Instead of having the protocol configuration directly add the extra agent
to the inspector registry, isntead go through the augmentable controller.
The controller will initialize as required if we are already connected or not,
and will add to the registry.

The functional change here is that the frontend can be notified to activate
extra agents multiple times as agents eventually become available.

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
* inspector/JSGlobalObjectInspectorController.h:
* inspector/agents/InspectorAgent.cpp:
(Inspector::InspectorAgent::activateExtraDomain):
* inspector/agents/InspectorAgent.h:
* inspector/augmentable/AugmentableInspectorController.h:
* inspector/scripts/codegen/generator_templates.py:
* inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
* inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
* inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
* inspector/scripts/tests/expected/enum-values.json-result:
* inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
Rebased results.

Source/WebInspectorUI:

* UserInterface/Base/Main.js:
(WebInspector.activateExtraDomains):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</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="#trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerh">trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerator_templatespy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithasyncattributejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithoptionalcallreturnparametersjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpecteddomainswithvaryingcommandsizesjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedenumvaluesjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/enum-values.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedgeneratedomainswithfeatureguardsjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result</a></li>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseMainjs">trunk/Source/WebInspectorUI/UserInterface/Base/Main.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -1,3 +1,33 @@
</span><ins>+2014-11-11  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Handle activating extra agents properly after inspector has connected
+        https://bugs.webkit.org/show_bug.cgi?id=138639
+
+        Reviewed by Timothy Hatcher.
+
+        Instead of having the protocol configuration directly add the extra agent
+        to the inspector registry, isntead go through the augmentable controller.
+        The controller will initialize as required if we are already connected or not,
+        and will add to the registry.
+
+        The functional change here is that the frontend can be notified to activate
+        extra agents multiple times as agents eventually become available.
+
+        * inspector/JSGlobalObjectInspectorController.cpp:
+        (Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
+        * inspector/JSGlobalObjectInspectorController.h:
+        * inspector/agents/InspectorAgent.cpp:
+        (Inspector::InspectorAgent::activateExtraDomain):
+        * inspector/agents/InspectorAgent.h:
+        * inspector/augmentable/AugmentableInspectorController.h:
+        * inspector/scripts/codegen/generator_templates.py:
+        * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
+        * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
+        * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
+        * inspector/scripts/tests/expected/enum-values.json-result:
+        * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
+        Rebased results.
+
</ins><span class="cx"> 2014-11-11  Michael Saboff  &lt;msaboff@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Use scope register when processing op_resolve_scope in LLInt and Baseline JIT
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -227,6 +227,21 @@
</span><span class="cx">     return m_executionStopwatch;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+void JSGlobalObjectInspectorController::appendExtraAgent(std::unique_ptr&lt;InspectorAgentBase&gt; agent)
+{
+    String domainName = agent-&gt;domainName();
+
+    if (m_inspectorFrontendChannel)
+        agent-&gt;didCreateFrontendAndBackend(m_inspectorFrontendChannel, m_inspectorBackendDispatcher.get());
+
+    m_agents.appendExtraAgent(WTF::move(agent));
+
+    if (m_inspectorFrontendChannel)
+        m_inspectorAgent-&gt;activateExtraDomain(domainName);
+}
+#endif
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -85,7 +85,6 @@
</span><span class="cx">     void reportAPIException(JSC::ExecState*, JSC::JSValue exception);
</span><span class="cx"> 
</span><span class="cx">     JSC::ConsoleClient* consoleClient() const;
</span><del>-    InspectorAgentRegistry&amp; inspectorAgentRegistry() { return m_agents; }
</del><span class="cx"> 
</span><span class="cx">     virtual bool developerExtrasEnabled() const override { return true; }
</span><span class="cx">     virtual bool canAccessInspectedScriptState(JSC::ExecState*) const override { return true; }
</span><span class="lines">@@ -101,7 +100,7 @@
</span><span class="cx">     virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient* client) override { m_augmentingClient = client; }
</span><span class="cx"> 
</span><span class="cx">     virtual InspectorFrontendChannel* frontendChannel() const override { return m_inspectorFrontendChannel; }
</span><del>-    virtual InspectorAgentRegistry&amp; agentRegistry() override { return m_agents; }
</del><ins>+    virtual void appendExtraAgent(std::unique_ptr&lt;InspectorAgentBase&gt;) override;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -121,6 +121,20 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><ins>+void InspectorAgent::activateExtraDomain(const String&amp; domainName)
+{
+    if (!m_enabled) {
+        if (!m_pendingExtraDomainsData)
+            m_pendingExtraDomainsData = Inspector::Protocol::Array&lt;String&gt;::create();
+        m_pendingExtraDomainsData-&gt;addItem(domainName);
+        return;
+    }
+
+    RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; domainNames = Inspector::Protocol::Array&lt;String&gt;::create();
+    domainNames-&gt;addItem(domainName);
+    m_frontendDispatcher-&gt;activateExtraDomains(domainNames.release());
+}
+
</ins><span class="cx"> void InspectorAgent::activateExtraDomains(const Vector&lt;String&gt;&amp; extraDomains)
</span><span class="cx"> {
</span><span class="cx">     if (extraDomains.isEmpty())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorAgent.h        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx">     void evaluateForTestInFrontend(const String&amp; script);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><ins>+    void activateExtraDomain(const String&amp;);
</ins><span class="cx">     void activateExtraDomains(const Vector&lt;String&gt;&amp;);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -29,11 +29,12 @@
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx"> 
</span><span class="cx"> #include &lt;JavaScriptCore/AugmentableInspectorControllerClient.h&gt;
</span><del>-#include &lt;JavaScriptCore/InspectorAgentRegistry.h&gt;
</del><span class="cx"> #include &lt;JavaScriptCore/InspectorFrontendChannel.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><ins>+class InspectorAgentBase;
+
</ins><span class="cx"> class AugmentableInspectorController {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~AugmentableInspectorController() { }
</span><span class="lines">@@ -42,7 +43,7 @@
</span><span class="cx">     virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient*) = 0;
</span><span class="cx"> 
</span><span class="cx">     virtual InspectorFrontendChannel* frontendChannel() const = 0;
</span><del>-    virtual InspectorAgentRegistry&amp; agentRegistry() = 0;
</del><ins>+    virtual void appendExtraAgent(std::unique_ptr&lt;InspectorAgentBase&gt;) = 0;
</ins><span class="cx"> 
</span><span class="cx">     bool connected() const { return !!frontendChannel(); }
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerator_templatespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -415,7 +415,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspector${domainName}BackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;Inspector${domainName}BackendDispatcher, AlternateInspector${domainName}BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;${domainName}&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;${objcPrefix}${domainName}DomainHandler&gt;)${variableNamePrefix}Handler
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithasyncattributejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -963,7 +963,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorDatabaseBackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorDatabaseBackendDispatcher, AlternateInspectorDatabaseBackendDispatcher&gt;&gt;(ASCIILiteral(&quot;Database&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolDatabaseDomainHandler&gt;)databaseHandler
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithoptionalcallreturnparametersjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -852,7 +852,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorDatabaseBackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorDatabaseBackendDispatcher, AlternateInspectorDatabaseBackendDispatcher&gt;&gt;(ASCIILiteral(&quot;Database&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolDatabaseDomainHandler&gt;)databaseHandler
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpecteddomainswithvaryingcommandsizesjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -869,7 +869,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorNetwork1BackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorNetwork1BackendDispatcher, AlternateInspectorNetwork1BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;Network1&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolNetwork1DomainHandler&gt;)network1Handler
</span><span class="lines">@@ -887,7 +887,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorNetwork3BackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorNetwork3BackendDispatcher, AlternateInspectorNetwork3BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;Network3&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolNetwork3DomainHandler&gt;)network3Handler
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedenumvaluesjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/enum-values.json-result (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/enum-values.json-result        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/enum-values.json-result        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -701,7 +701,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorCommandDomainBackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorCommandDomainBackendDispatcher, AlternateInspectorCommandDomainBackendDispatcher&gt;&gt;(ASCIILiteral(&quot;CommandDomain&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolCommandDomainDomainHandler&gt;)commandDomainHandler
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedgeneratedomainswithfeatureguardsjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -750,7 +750,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto alternateDispatcher = std::make_unique&lt;ObjCInspectorNetwork1BackendDispatcher&gt;(handler);
</span><span class="cx">     auto alternateAgent = std::make_unique&lt;AlternateDispatchableAgent&lt;InspectorNetwork1BackendDispatcher, AlternateInspectorNetwork1BackendDispatcher&gt;&gt;(ASCIILiteral(&quot;Network1&quot;), WTF::move(alternateDispatcher));
</span><del>-    _controller-&gt;agentRegistry().appendExtraAgent(WTF::move(alternateAgent));
</del><ins>+    _controller-&gt;appendExtraAgent(WTF::move(alternateAgent));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (id&lt;RWIProtocolNetwork1DomainHandler&gt;)network1Handler
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/WebInspectorUI/ChangeLog        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-11-11  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Handle activating extra agents properly after inspector has connected
+        https://bugs.webkit.org/show_bug.cgi?id=138639
+
+        Reviewed by Timothy Hatcher.
+
+        * UserInterface/Base/Main.js:
+        (WebInspector.activateExtraDomains):
+
</ins><span class="cx"> 2014-11-11  Jonathan Wells  &lt;jonowells@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Main.js missing many trailing semicolons
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseMainjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (175998 => 175999)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2014-11-12 02:33:43 UTC (rev 175998)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js        2014-11-12 03:07:12 UTC (rev 175999)
</span><span class="lines">@@ -357,7 +357,6 @@
</span><span class="cx"> 
</span><span class="cx"> WebInspector.activateExtraDomains = function(domains)
</span><span class="cx"> {
</span><del>-    console.assert(!this.hasExtraDomains);
</del><span class="cx">     this.hasExtraDomains = true;
</span><span class="cx"> 
</span><span class="cx">     for (var domain of domains) {
</span></span></pre>
</div>
</div>

</body>
</html>