<!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>[175151] 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/175151">175151</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2014-10-23 16:43:14 -0700 (Thu, 23 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: Provide a way to have alternate inspector agents
https://bugs.webkit.org/show_bug.cgi?id=137901

Reviewed by Brian Burg.

Source/JavaScriptCore:

Provide a way to use alternate inspector agents debugging a JSContext.
Expose a very slim private API that a client could use to know when
an inspector has connected/disconnected, and a way to register its
augmentative agents.

* Configurations/FeatureDefines.xcconfig:
* JavaScriptCore.xcodeproj/project.pbxproj:
New feature guard. New files.

* API/JSContextRef.cpp:
(JSGlobalContextGetAugmentableInspectorController):
* API/JSContextRefInspectorSupport.h: Added.
Access to the private interface from a JSContext.

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::connectFrontend):
(Inspector::JSGlobalObjectInspectorController::disconnectFrontend):
* inspector/JSGlobalObjectInspectorController.h:
* inspector/augmentable/AugmentableInspectorController.h: Added.
(Inspector::AugmentableInspectorController::~AugmentableInspectorController):
(Inspector::AugmentableInspectorController::connected):
* inspector/augmentable/AugmentableInspectorControllerClient.h: Added.
(Inspector::AugmentableInspectorControllerClient::~AugmentableInspectorControllerClient):
* inspector/augmentable/AlternateDispatchableAgent.h: Added.
(Inspector::AlternateDispatchableAgent::AlternateDispatchableAgent):
Provide the private APIs a client could use to add alternate agents using alternate backend dispatchers.

* inspector/scripts/codegen/__init__.py:
* inspector/scripts/generate-inspector-protocol-bindings.py:
(generate_from_specification):
New includes, and use the new generator.

* inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py: Added.
(AlternateBackendDispatcherHeaderGenerator):
(AlternateBackendDispatcherHeaderGenerator.__init__):
(AlternateBackendDispatcherHeaderGenerator.output_filename):
(AlternateBackendDispatcherHeaderGenerator.generate_output):
(AlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
(AlternateBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
Generate the abstract AlternateInspectorBackendDispatcher interfaces.

* inspector/scripts/codegen/generate_backend_dispatcher_header.py:
(BackendDispatcherHeaderGenerator.generate_output):
(BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains):
(BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains.AlternateInspector):
Forward declare alternate dispatchers, and allow setting an alternate dispatcher on a domain dispatcher.

* inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
(BackendDispatcherImplementationGenerator.generate_output):
(BackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
Check for and dispatch on an AlternateInspectorBackendDispatcher if there is one for this domain.

* inspector/scripts/codegen/generator_templates.py:
(AlternateInspectorBackendDispatcher):
(AlternateInspector):
Template boilerplate for prelude and postlude.

* 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/events-with-optional-parameters.json-result:
* inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
* inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
* inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
* inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
* inspector/scripts/tests/expected/type-declaration-array-type.json-result:
* inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
* inspector/scripts/tests/expected/type-declaration-object-type.json-result:
* inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
Rebaseline tests.

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSContextRefcpp">trunk/Source/JavaScriptCore/API/JSContextRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</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="#trunkSourceJavaScriptCoreinspectorscriptscodegen__init__py">trunk/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_backend_dispatcher_headerpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_backend_dispatcher_implementationpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerator_templatespy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptsgenerateinspectorprotocolbindingspy">trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.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="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedeventswithoptionalparametersjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.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="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedsametypeiddifferentdomainjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/same-type-id-different-domain.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedshadowedoptionaltypesettersjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationaliasedprimitivetypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationarraytypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationenumtypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-enum-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationobjecttypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtyperequiringruntimecastsjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfFeatureDefinesh">trunk/Source/WTF/wtf/FeatureDefines.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSContextRefInspectorSupporth">trunk/Source/JavaScriptCore/API/JSContextRefInspectorSupport.h</a></li>
<li>trunk/Source/JavaScriptCore/inspector/augmentable/</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="#trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerClienth">trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorControllerClient.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_alternate_backend_dispatcher_headerpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSContextRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSContextRef.cpp (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSContextRef.cpp        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/API/JSContextRef.cpp        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -45,6 +45,10 @@
</span><span class="cx"> #include &quot;JSGlobalObjectInspectorController.h&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;JSContextRefInspectorSupport.h&quot;
+#endif
+
</ins><span class="cx"> #if OS(DARWIN)
</span><span class="cx"> #include &lt;mach-o/dyld.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -410,4 +414,19 @@
</span><span class="cx">     UNUSED_PARAM(runLoop);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><ins>+#endif // USE(CF)
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+Inspector::AugmentableInspectorController* JSGlobalContextGetAugmentableInspectorController(JSGlobalContextRef ctx)
+{
+    if (!ctx) {
+        ASSERT_NOT_REACHED();
+        return nullptr;
+    }
+
+    ExecState* exec = toJS(ctx);
+    JSLockHolder lock(exec);
+
+    return &amp;exec-&gt;vmEntryGlobalObject()-&gt;inspectorController();
+}
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSContextRefInspectorSupporth"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/API/JSContextRefInspectorSupport.h (0 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSContextRefInspectorSupport.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/API/JSContextRefInspectorSupport.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef JSContextRefInspectorSupport_h
+#define JSContextRefInspectorSupport_h
+
+#ifndef __cplusplus
+#error Requires C++ Support.
+#endif
+
+#include &lt;JavaScriptCore/JSContextRefPrivate.h&gt;
+
+namespace Inspector {
+class AugmentableInspectorController;
+}
+
+extern &quot;C&quot; {
+JS_EXPORT Inspector::AugmentableInspectorController* JSGlobalContextGetAugmentableInspectorController(JSGlobalContextRef);
+}
+
+#endif // JSContextRefInspectorSupport_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,82 @@
</span><ins>+2014-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Provide a way to have alternate inspector agents
+        https://bugs.webkit.org/show_bug.cgi?id=137901
+
+        Reviewed by Brian Burg.
+
+        Provide a way to use alternate inspector agents debugging a JSContext.
+        Expose a very slim private API that a client could use to know when
+        an inspector has connected/disconnected, and a way to register its
+        augmentative agents.
+
+        * Configurations/FeatureDefines.xcconfig:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        New feature guard. New files.
+
+        * API/JSContextRef.cpp:
+        (JSGlobalContextGetAugmentableInspectorController):
+        * API/JSContextRefInspectorSupport.h: Added.
+        Access to the private interface from a JSContext.
+
+        * inspector/JSGlobalObjectInspectorController.cpp:
+        (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
+        (Inspector::JSGlobalObjectInspectorController::connectFrontend):
+        (Inspector::JSGlobalObjectInspectorController::disconnectFrontend):
+        * inspector/JSGlobalObjectInspectorController.h:
+        * inspector/augmentable/AugmentableInspectorController.h: Added.
+        (Inspector::AugmentableInspectorController::~AugmentableInspectorController):
+        (Inspector::AugmentableInspectorController::connected):
+        * inspector/augmentable/AugmentableInspectorControllerClient.h: Added.
+        (Inspector::AugmentableInspectorControllerClient::~AugmentableInspectorControllerClient):
+        * inspector/augmentable/AlternateDispatchableAgent.h: Added.
+        (Inspector::AlternateDispatchableAgent::AlternateDispatchableAgent):
+        Provide the private APIs a client could use to add alternate agents using alternate backend dispatchers.
+
+        * inspector/scripts/codegen/__init__.py:
+        * inspector/scripts/generate-inspector-protocol-bindings.py:
+        (generate_from_specification):
+        New includes, and use the new generator.
+        
+        * inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py: Added.
+        (AlternateBackendDispatcherHeaderGenerator):
+        (AlternateBackendDispatcherHeaderGenerator.__init__):
+        (AlternateBackendDispatcherHeaderGenerator.output_filename):
+        (AlternateBackendDispatcherHeaderGenerator.generate_output):
+        (AlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
+        (AlternateBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
+        Generate the abstract AlternateInspectorBackendDispatcher interfaces.
+
+        * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
+        (BackendDispatcherHeaderGenerator.generate_output):
+        (BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains):
+        (BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains.AlternateInspector):
+        Forward declare alternate dispatchers, and allow setting an alternate dispatcher on a domain dispatcher.
+
+        * inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
+        (BackendDispatcherImplementationGenerator.generate_output):
+        (BackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
+        Check for and dispatch on an AlternateInspectorBackendDispatcher if there is one for this domain.
+
+        * inspector/scripts/codegen/generator_templates.py:
+        (AlternateInspectorBackendDispatcher):
+        (AlternateInspector):
+        Template boilerplate for prelude and postlude.
+
+        * 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/events-with-optional-parameters.json-result:
+        * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
+        * inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
+        * inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
+        * inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
+        * inspector/scripts/tests/expected/type-declaration-array-type.json-result:
+        * inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
+        * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
+        * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
+        Rebaseline tests.
+
</ins><span class="cx"> 2014-10-23  Michael Saboff  &lt;msaboff@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         offsets.rb:183:in `buildOffsetsMap': unhandled exception - is offlineasm dependency tracking broken? (132668)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -121,6 +121,15 @@
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphoneos = ENABLE_INPUT_TYPE_WEEK;
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphonesimulator = $(ENABLE_INPUT_TYPE_WEEK_iphoneos);
</span><span class="cx"> ENABLE_INSPECTOR = ENABLE_INSPECTOR;
</span><ins>+
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_$(PLATFORM_NAME));
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphonesimulator = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos);
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1080 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1090 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_101000 = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+
</ins><span class="cx"> ENABLE_IOS_AIRPLAY = $(ENABLE_IOS_AIRPLAY_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphoneos = ENABLE_IOS_AIRPLAY;
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphonesimulator = $(ENABLE_IOS_AIRPLAY_iphoneos);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1185,6 +1185,13 @@
</span><span class="cx">                 A5CEEE14187F3BAD00E55C99 /* InspectorAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5CEEE12187F3BAD00E55C99 /* InspectorAgent.cpp */; };
</span><span class="cx">                 A5D0A1BB1862301B00C7B496 /* InspectorEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D0A1BA1862301B00C7B496 /* InspectorEnvironment.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A5D2E665195E174000A518E7 /* JSContextRefInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D2E664195E173800A518E7 /* JSContextRefInternal.h */; };
</span><ins>+                A5EA70E719F5B1010098F5EC /* AugmentableInspectorController.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EA70E419F5B1010098F5EC /* AugmentableInspectorController.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A5EA70E819F5B1010098F5EC /* AugmentableInspectorControllerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EA70E519F5B1010098F5EC /* AugmentableInspectorControllerClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A5EA70E919F5B1010098F5EC /* AlternateDispatchableAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EA70E619F5B1010098F5EC /* AlternateDispatchableAgent.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A5EA70EB19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py in Resources */ = {isa = PBXBuildFile; fileRef = A5EA70EA19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py */; };
+                A5EA70EC19F5B3EA0098F5EC /* generate_alternate_backend_dispatcher_header.py in Headers */ = {isa = PBXBuildFile; fileRef = A5EA70EA19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py */; settings = {ATTRIBUTES = (Private, ); }; };
+                A5EA70EE19F5B5C40098F5EC /* JSContextRefInspectorSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EA70ED19F5B5C40098F5EC /* JSContextRefInspectorSupport.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                A5EA710E19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 A5FD0067189AFE9C00633231 /* ScriptArguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5FD0065189AFE9C00633231 /* ScriptArguments.cpp */; };
</span><span class="cx">                 A5FD0068189AFE9C00633231 /* ScriptArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FD0066189AFE9C00633231 /* ScriptArguments.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A5FD006D189B00AA00633231 /* ScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5FD0069189B00A900633231 /* ScriptCallFrame.cpp */; };
</span><span class="lines">@@ -2854,6 +2861,12 @@
</span><span class="cx">                 A5CEEE13187F3BAD00E55C99 /* InspectorAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5D0A1BA1862301B00C7B496 /* InspectorEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorEnvironment.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5D2E664195E173800A518E7 /* JSContextRefInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSContextRefInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                A5EA70E419F5B1010098F5EC /* AugmentableInspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AugmentableInspectorController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5EA70E519F5B1010098F5EC /* AugmentableInspectorControllerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AugmentableInspectorControllerClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5EA70E619F5B1010098F5EC /* AlternateDispatchableAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlternateDispatchableAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5EA70EA19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = generate_alternate_backend_dispatcher_header.py; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5EA70ED19F5B5C40098F5EC /* JSContextRefInspectorSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContextRefInspectorSupport.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAlternateBackendDispatchers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A5FD0065189AFE9C00633231 /* ScriptArguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptArguments.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5FD0066189AFE9C00633231 /* ScriptArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptArguments.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5FD0069189B00A900633231 /* ScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallFrame.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3904,6 +3917,7 @@
</span><span class="cx">                                 86E3C609167BAB87006D760A /* JSContextInternal.h */,
</span><span class="cx">                                 14BD5A290A3E91F600BAF59C /* JSContextRef.cpp */,
</span><span class="cx">                                 14BD5A2A0A3E91F600BAF59C /* JSContextRef.h */,
</span><ins>+                                A5EA70ED19F5B5C40098F5EC /* JSContextRefInspectorSupport.h */,
</ins><span class="cx">                                 A5D2E664195E173800A518E7 /* JSContextRefInternal.h */,
</span><span class="cx">                                 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */,
</span><span class="cx">                                 A72028B41797601E0098028C /* JSCTestRunnerUtils.cpp */,
</span><span class="lines">@@ -4011,6 +4025,7 @@
</span><span class="cx">                                 BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */,
</span><span class="cx">                                 6514F21818B3E1670098FF8B /* InitBytecodes.asm */,
</span><span class="cx">                                 A513E5C6185F9436007E95AD /* InjectedScriptSource.h */,
</span><ins>+                                A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */,
</ins><span class="cx">                                 A53243961856A475002ED692 /* InspectorBackendCommands.js */,
</span><span class="cx">                                 A532438118568317002ED692 /* InspectorBackendDispatchers.cpp */,
</span><span class="cx">                                 A532438218568317002ED692 /* InspectorBackendDispatchers.h */,
</span><span class="lines">@@ -5143,6 +5158,7 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 A513E5CC185FB992007E95AD /* agents */,
</span><ins>+                                A5EA70E319F5B0E20098F5EC /* augmentable */,
</ins><span class="cx">                                 A532438D185696CA002ED692 /* protocol */,
</span><span class="cx">                                 A5BA15E01823409D00A82E69 /* remote */,
</span><span class="cx">                                 A532438E185696CE002ED692 /* scripts */,
</span><span class="lines">@@ -5223,6 +5239,16 @@
</span><span class="cx">                         path = remote;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                A5EA70E319F5B0E20098F5EC /* augmentable */ = {
+                        isa = PBXGroup;
+                        children = (
+                                A5EA70E419F5B1010098F5EC /* AugmentableInspectorController.h */,
+                                A5EA70E519F5B1010098F5EC /* AugmentableInspectorControllerClient.h */,
+                                A5EA70E619F5B1010098F5EC /* AlternateDispatchableAgent.h */,
+                        );
+                        path = augmentable;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 A7D8019F1880D66E0026C39B /* builtins */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -5240,6 +5266,7 @@
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="cx">                                 C4703CC2192844CC0013FBEA /* __init__.py */,
</span><ins>+                                A5EA70EA19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py */,
</ins><span class="cx">                                 C4703CC3192844CC0013FBEA /* generate_backend_commands.py */,
</span><span class="cx">                                 C4703CC4192844CC0013FBEA /* generate_backend_dispatcher_header.py */,
</span><span class="cx">                                 C4703CC5192844CC0013FBEA /* generate_backend_dispatcher_implementation.py */,
</span><span class="lines">@@ -5298,7 +5325,9 @@
</span><span class="cx">                                 0F6B1CB91861244C00845D97 /* ArityCheckMode.h in Headers */,
</span><span class="cx">                                 A1A009C11831A26E00CF8711 /* ARM64Assembler.h in Headers */,
</span><span class="cx">                                 86D3B2C410156BDE002865E7 /* ARMAssembler.h in Headers */,
</span><ins>+                                A5EA710E19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h in Headers */,
</ins><span class="cx">                                 C49FE4AB19AAC86100F40CE9 /* generate_protocol_types_header.py in Headers */,
</span><ins>+                                A5EA70EC19F5B3EA0098F5EC /* generate_alternate_backend_dispatcher_header.py in Headers */,
</ins><span class="cx">                                 6AD2CB4D19B9140100065719 /* DebuggerEvalEnabler.h in Headers */,
</span><span class="cx">                                 C49FE4AC19AAC86100F40CE9 /* generate_protocol_types_implementation.py in Headers */,
</span><span class="cx">                                 658D3A5619638268003C45D6 /* VMEntryRecord.h in Headers */,
</span><span class="lines">@@ -5427,6 +5456,7 @@
</span><span class="cx">                                 0FC712DF17CD877C008CC93C /* DeferredCompilationCallback.h in Headers */,
</span><span class="cx">                                 2A2825D018341F2D0087FBA9 /* DelayedReleaseScope.h in Headers */,
</span><span class="cx">                                 A77A423E17A0BBFD00A8DB81 /* DFGAbstractHeap.h in Headers */,
</span><ins>+                                A5EA70E819F5B1010098F5EC /* AugmentableInspectorControllerClient.h in Headers */,
</ins><span class="cx">                                 A704D90317A0BAA8006BA554 /* DFGAbstractInterpreter.h in Headers */,
</span><span class="cx">                                 A704D90417A0BAA8006BA554 /* DFGAbstractInterpreterInlines.h in Headers */,
</span><span class="cx">                                 0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */,
</span><span class="lines">@@ -5530,6 +5560,7 @@
</span><span class="cx">                                 0F4CED5F18CEA7AB00802FE0 /* PolymorphicGetByIdList.h in Headers */,
</span><span class="cx">                                 0F235BEE17178E7300690C7F /* DFGOSRExitPreparation.h in Headers */,
</span><span class="cx">                                 0FFFC95C14EF90AF00C72532 /* DFGPhase.h in Headers */,
</span><ins>+                                A5EA70EE19F5B5C40098F5EC /* JSContextRefInspectorSupport.h in Headers */,
</ins><span class="cx">                                 A78A977B179738B8009DF744 /* DFGPlan.h in Headers */,
</span><span class="cx">                                 0FBE0F7516C1DB0B0082C5E8 /* DFGPredictionInjectionPhase.h in Headers */,
</span><span class="cx">                                 0FFFC95E14EF90B700C72532 /* DFGPredictionPropagationPhase.h in Headers */,
</span><span class="lines">@@ -5731,6 +5762,7 @@
</span><span class="cx">                                 BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
</span><span class="cx">                                 BC18C4150E16F5CD00B34460 /* JavaScriptCorePrefix.h in Headers */,
</span><span class="cx">                                 1429D9300ED22D7000B89619 /* JIT.h in Headers */,
</span><ins>+                                A5EA70E919F5B1010098F5EC /* AlternateDispatchableAgent.h in Headers */,
</ins><span class="cx">                                 86CCEFDE0F413F8900FD7F9E /* JITCode.h in Headers */,
</span><span class="cx">                                 0F0776BF14FF002B00102332 /* JITCompilationEffort.h in Headers */,
</span><span class="cx">                                 0FAF7EFE165BA91F000C8455 /* JITDisassembler.h in Headers */,
</span><span class="lines">@@ -5979,6 +6011,7 @@
</span><span class="cx">                                 0F9FC8C414E1B60000D52AE0 /* PolymorphicPutByIdList.h in Headers */,
</span><span class="cx">                                 0F98206116BFE38300240D02 /* PreciseJumpTargets.h in Headers */,
</span><span class="cx">                                 868916B0155F286300CB2B9A /* PrivateName.h in Headers */,
</span><ins>+                                A5EA70E719F5B1010098F5EC /* AugmentableInspectorController.h in Headers */,
</ins><span class="cx">                                 BC18C4500E16F5CD00B34460 /* Profile.h in Headers */,
</span><span class="cx">                                 95CD45770E1C4FDD0085358E /* ProfileGenerator.h in Headers */,
</span><span class="cx">                                 BC18C4510E16F5CD00B34460 /* ProfileNode.h in Headers */,
</span><span class="lines">@@ -6353,6 +6386,7 @@
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><span class="cx">                                 C49FE4A919AAC83E00F40CE9 /* generate_protocol_types_header.py in Resources */,
</span><ins>+                                A5EA70EB19F5B3D50098F5EC /* generate_alternate_backend_dispatcher_header.py in Resources */,
</ins><span class="cx">                                 A53F1AC018C90F8F0072EB6D /* framework.sb in Resources */,
</span><span class="cx">                                 C49FE4AA19AAC83E00F40CE9 /* generate_protocol_types_implementation.py in Resources */,
</span><span class="cx">                         );
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -61,6 +61,9 @@
</span><span class="cx">     , m_inspectorFrontendChannel(nullptr)
</span><span class="cx">     , m_includeNativeCallStackWithExceptions(true)
</span><span class="cx">     , m_isAutomaticInspection(false)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_augmentingClient(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     auto runtimeAgent = std::make_unique&lt;JSGlobalObjectRuntimeAgent&gt;(m_injectedScriptManager.get(), m_globalObject);
</span><span class="cx">     auto consoleAgent = std::make_unique&lt;JSGlobalObjectConsoleAgent&gt;(m_injectedScriptManager.get());
</span><span class="lines">@@ -101,6 +104,11 @@
</span><span class="cx">     m_inspectorBackendDispatcher = InspectorBackendDispatcher::create(frontendChannel);
</span><span class="cx"> 
</span><span class="cx">     m_agents.didCreateFrontendAndBackend(frontendChannel, m_inspectorBackendDispatcher.get());
</span><ins>+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_augmentingClient)
+        m_augmentingClient-&gt;inspectorConnected();
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSGlobalObjectInspectorController::disconnectFrontend(InspectorDisconnectReason reason)
</span><span class="lines">@@ -115,6 +123,11 @@
</span><span class="cx">     m_inspectorFrontendChannel = nullptr;
</span><span class="cx"> 
</span><span class="cx">     m_isAutomaticInspection = false;
</span><ins>+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_augmentingClient)
+        m_augmentingClient-&gt;inspectorDisconnected();
+#endif
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JSGlobalObjectInspectorController::dispatchMessageFromFrontend(const String&amp; message)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx"> #include &lt;wtf/Noncopyable.h&gt;
</span><span class="cx"> #include &lt;wtf/text/WTFString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;AugmentableInspectorController.h&quot;
+#endif
+
</ins><span class="cx"> namespace JSC {
</span><span class="cx"> class ConsoleClient;
</span><span class="cx"> class ExecState;
</span><span class="lines">@@ -52,7 +56,12 @@
</span><span class="cx"> class JSGlobalObjectConsoleClient;
</span><span class="cx"> class ScriptCallStack;
</span><span class="cx"> 
</span><del>-class JSGlobalObjectInspectorController final : public InspectorEnvironment {
</del><ins>+class JSGlobalObjectInspectorController final
+    : public InspectorEnvironment
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , public AugmentableInspectorController
+#endif
+{
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(JSGlobalObjectInspectorController);
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><span class="lines">@@ -71,6 +80,7 @@
</span><span class="cx">     void reportAPIException(JSC::ExecState*, JSC::JSValue exception);
</span><span class="cx"> 
</span><span class="cx">     JSC::ConsoleClient* consoleClient() const;
</span><ins>+    InspectorAgentRegistry&amp; inspectorAgentRegistry() { return m_agents; }
</ins><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">@@ -80,6 +90,14 @@
</span><span class="cx">     virtual void didCallInjectedScriptFunction(JSC::ExecState*) override { }
</span><span class="cx">     virtual void frontendInitialized() override;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    virtual AugmentableInspectorControllerClient* augmentableInspectorControllerClient() const override { return m_augmentingClient; } 
+    virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient* client) override { m_augmentingClient = client; }
+
+    virtual InspectorFrontendChannel* frontendChannel() const override { return m_inspectorFrontendChannel; }
+    virtual InspectorAgentRegistry&amp; agentRegistry() override { return m_agents; }
+#endif
+
</ins><span class="cx"> private:
</span><span class="cx">     void appendAPIBacktrace(ScriptCallStack* callStack);
</span><span class="cx"> 
</span><span class="lines">@@ -93,6 +111,10 @@
</span><span class="cx">     RefPtr&lt;InspectorBackendDispatcher&gt; m_inspectorBackendDispatcher;
</span><span class="cx">     bool m_includeNativeCallStackWithExceptions;
</span><span class="cx">     bool m_isAutomaticInspection;
</span><ins>+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    AugmentableInspectorControllerClient* m_augmentingClient;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace Inspector
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAlternateDispatchableAgenth"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h (0 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AlternateDispatchableAgent.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AlternateDispatchableAgent_h
+#define AlternateDispatchableAgent_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#include &quot;InspectorBackendDispatchers.h&quot;
+#include &lt;JavaScriptCore/InspectorAgentBase.h&gt;
+#include &lt;wtf/Forward.h&gt;
+
+namespace Inspector {
+
+template&lt;typename BackendDispatcher, typename AlternateDispatcher&gt;
+class AlternateDispatchableAgent final : public InspectorAgentBase {
+    WTF_MAKE_FAST_ALLOCATED;
+public:
+    AlternateDispatchableAgent(const String&amp; domainName, std::unique_ptr&lt;AlternateDispatcher&gt; alternateDispatcher)
+        : InspectorAgentBase(domainName)
+        , m_alternateDispatcher(WTF::move(alternateDispatcher))
+    {
+    }
+
+    virtual void didCreateFrontendAndBackend(InspectorFrontendChannel*, InspectorBackendDispatcher* backendDispatcher) override
+    {
+        m_backendDispatcher = BackendDispatcher::create(backendDispatcher, nullptr);
+        m_backendDispatcher-&gt;setAlternateDispatcher(m_alternateDispatcher.get());
+        m_alternateDispatcher-&gt;setBackendDispatcher(backendDispatcher);
+    }
+
+    virtual void willDestroyFrontendAndBackend(InspectorDisconnectReason) override
+    {
+        m_backendDispatcher = nullptr;
+        m_alternateDispatcher-&gt;setBackendDispatcher(nullptr);
+    }
+
+private:
+    std::unique_ptr&lt;AlternateDispatcher&gt; m_alternateDispatcher;
+    RefPtr&lt;BackendDispatcher&gt; m_backendDispatcher;
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // AlternateDispatchableAgent_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerh"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h (0 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorController.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AugmentableInspectorController_h
+#define AugmentableInspectorController_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &lt;JavaScriptCore/AugmentableInspectorControllerClient.h&gt;
+#include &lt;JavaScriptCore/InspectorAgentRegistry.h&gt;
+#include &lt;JavaScriptCore/InspectorFrontendChannel.h&gt;
+
+namespace Inspector {
+
+class AugmentableInspectorController {
+public:
+    virtual ~AugmentableInspectorController() { }
+
+    virtual AugmentableInspectorControllerClient* augmentableInspectorControllerClient() const = 0;
+    virtual void setAugmentableInspectorControllerClient(AugmentableInspectorControllerClient*) = 0;
+
+    virtual InspectorFrontendChannel* frontendChannel() const = 0;
+    virtual InspectorAgentRegistry&amp; agentRegistry() = 0;
+
+    bool connected() const { return !!frontendChannel(); }
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(AugmentableInspectorController_h)
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoraugmentableAugmentableInspectorControllerClienth"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorControllerClient.h (0 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorControllerClient.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/inspector/augmentable/AugmentableInspectorControllerClient.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AugmentableInspectorControllerClient_h
+#define AugmentableInspectorControllerClient_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+namespace Inspector {
+
+class AugmentableInspectorControllerClient {
+public:
+    virtual ~AugmentableInspectorControllerClient() { }
+    virtual void inspectorConnected() = 0;
+    virtual void inspectorDisconnected() = 0;
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(AugmentableInspectorControllerClient_h)
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegen__init__py"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/__init__.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -3,6 +3,7 @@
</span><span class="cx"> from models import *
</span><span class="cx"> from generator import *
</span><span class="cx"> 
</span><ins>+from generate_alternate_backend_dispatcher_header import *
</ins><span class="cx"> from generate_backend_commands import *
</span><span class="cx"> from generate_backend_dispatcher_header import *
</span><span class="cx"> from generate_backend_dispatcher_implementation import *
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_alternate_backend_dispatcher_headerpy"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py (0 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py                                (rev 0)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+#!/usr/bin/env python
+#
+# Copyright (c) 2014 Apple Inc. All rights reserved.
+# Copyright (c) 2014 University of Washington. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+
+import logging
+import string
+import re
+from string import Template
+
+from generator import Generator
+from generator_templates import GeneratorTemplates as Templates
+
+log = logging.getLogger('global')
+
+
+class AlternateBackendDispatcherHeaderGenerator(Generator):
+    def __init__(self, model, input_filepath):
+        Generator.__init__(self, model, input_filepath)
+
+    def output_filename(self):
+        return 'InspectorAlternateBackendDispatchers.h'
+
+    def generate_output(self):
+        headers = [
+            '&quot;InspectorProtocolTypes.h&quot;',
+            '&lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;',
+        ]
+
+        header_args = {
+            'headerGuardString': re.sub('\W+', '_', self.output_filename()),
+            'includes': '\n'.join(['#include ' + header for header in headers]),
+        }
+
+        domains = self.domains_to_generate()
+        sections = []
+        sections.append(self.generate_license())
+        sections.append(Template(Templates.AlternateDispatchersHeaderPrelude).substitute(None, **header_args))
+        sections.append('\n'.join(filter(None, map(self._generate_handler_declarations_for_domain, domains))))
+        sections.append(Template(Templates.AlternateDispatchersHeaderPostlude).substitute(None, **header_args))
+        return '\n\n'.join(sections)
+
+    def _generate_handler_declarations_for_domain(self, domain):
+        if not domain.commands:
+            return ''
+
+        command_declarations = []
+        for command in domain.commands:
+            command_declarations.append(self._generate_handler_declaration_for_command(command))
+
+        handler_args = {
+            'domainName': domain.domain_name,
+            'commandDeclarations': '\n'.join(command_declarations),
+        }
+
+        return Generator.wrap_with_guard_for_domain(domain, Template(Templates.AlternateBackendDispatcherHeaderDomainHandlerInterfaceDeclaration).substitute(None, **handler_args))
+
+    def _generate_handler_declaration_for_command(self, command):
+        lines = []
+        parameters = ['long callId']
+        for _parameter in command.call_parameters:
+            parameters.append('%s in_%s' % (Generator.type_string_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
+
+        command_args = {
+            'commandName': command.command_name,
+            'parameters': ', '.join(parameters),
+        }
+        lines.append('    virtual void %(commandName)s(%(parameters)s) = 0;' % command_args)
+        return '\n'.join(lines)
</ins><span class="cx">Property changes on: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_backend_dispatcher_headerpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_header.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -62,16 +62,30 @@
</span><span class="cx">             'typedefs': '\n'.join(['typedef %s %s;' % typedef for typedef in typedefs]),
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        domains = self.domains_to_generate()
+
</ins><span class="cx">         sections = []
</span><span class="cx">         sections.append(self.generate_license())
</span><span class="cx">         sections.append(Template(Templates.CppHeaderPrelude).substitute(None, **header_args))
</span><del>-        sections.extend(map(self._generate_handler_declarations_for_domain, self.domains_to_generate()))
-        sections.extend(map(self._generate_dispatcher_declarations_for_domain, self.domains_to_generate()))
</del><ins>+        sections.append(self._generate_alternate_handler_forward_declarations_for_domains(domains))
+        sections.extend(map(self._generate_handler_declarations_for_domain, domains))
+        sections.extend(map(self._generate_dispatcher_declarations_for_domain, domains))
</ins><span class="cx">         sections.append(Template(Templates.CppHeaderPostlude).substitute(None, **header_args))
</span><span class="cx">         return &quot;\n\n&quot;.join(sections)
</span><span class="cx"> 
</span><span class="cx">     # Private methods.
</span><span class="cx"> 
</span><ins>+    def _generate_alternate_handler_forward_declarations_for_domains(self, domains):
+        if not domains:
+            return ''
+
+        lines = []
+        lines.append('#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)')
+        for domain in domains:
+            lines.append(Generator.wrap_with_guard_for_domain(domain, 'class AlternateInspector%sBackendDispatcher;' % domain.domain_name))
+        lines.append('#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)')
+        return '\n'.join(lines)
+
</ins><span class="cx">     def _generate_handler_declarations_for_domain(self, domain):
</span><span class="cx">         classComponents = ['class']
</span><span class="cx">         exportMacro = self.model().framework.setting('export_macro', None)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_backend_dispatcher_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_backend_dispatcher_implementation.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -52,9 +52,15 @@
</span><span class="cx">             '&lt;inspector/InspectorValues.h&gt;',
</span><span class="cx">             '&lt;wtf/text/CString.h&gt;']
</span><span class="cx"> 
</span><ins>+        secondary_includes = ['#include %s' % header for header in secondary_headers]
+        secondary_includes.append('')
+        secondary_includes.append('#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)')
+        secondary_includes.append('#include &quot;InspectorAlternateBackendDispatchers.h&quot;')
+        secondary_includes.append('#endif')
+
</ins><span class="cx">         header_args = {
</span><span class="cx">             'primaryInclude': '&quot;InspectorBackendDispatchers.h&quot;',
</span><del>-            'secondaryIncludes': &quot;\n&quot;.join(['#include %s' % header for header in secondary_headers]),
</del><ins>+            'secondaryIncludes': '\n'.join(secondary_includes),
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         sections = []
</span><span class="lines">@@ -162,6 +168,7 @@
</span><span class="cx">         in_parameter_declarations = []
</span><span class="cx">         out_parameter_declarations = []
</span><span class="cx">         out_parameter_assignments = []
</span><ins>+        alternate_dispatcher_method_parameters = ['callId']
</ins><span class="cx">         method_parameters = ['error']
</span><span class="cx"> 
</span><span class="cx">         for parameter in command.call_parameters:
</span><span class="lines">@@ -180,8 +187,11 @@
</span><span class="cx">             in_parameter_declarations.append('    %(parameterType)s in_%(parameterName)s = InspectorBackendDispatcher::%(keyedGetMethod)s(paramsContainerPtr, ASCIILiteral(&quot;%(parameterName)s&quot;), %(successOutParam)s, protocolErrorsPtr);' % param_args)
</span><span class="cx"> 
</span><span class="cx">             if parameter.is_optional:
</span><del>-                method_parameters.append('%(parameterName)s_valueFound ? &amp;in_%(parameterName)s : nullptr' % param_args)
</del><ins>+                optional_in_parameter_string = '%(parameterName)s_valueFound ? &amp;in_%(parameterName)s : nullptr' % param_args
+                alternate_dispatcher_method_parameters.append(optional_in_parameter_string)
+                method_parameters.append(optional_in_parameter_string)
</ins><span class="cx">             else:
</span><ins>+                alternate_dispatcher_method_parameters.append('in_' + parameter.parameter_name)
</ins><span class="cx">                 method_parameters.append('in_' + parameter.parameter_name)
</span><span class="cx"> 
</span><span class="cx">         if command.is_async:
</span><span class="lines">@@ -226,8 +236,9 @@
</span><span class="cx">             'domainName': domain.domain_name,
</span><span class="cx">             'callbackName': '%sCallback' % ucfirst(command.command_name),
</span><span class="cx">             'commandName': command.command_name,
</span><del>-            'inParameterDeclarations': &quot;\n&quot;.join(in_parameter_declarations),
-            'invocationParameters': &quot;, &quot;.join(method_parameters)
</del><ins>+            'inParameterDeclarations': '\n'.join(in_parameter_declarations),
+            'invocationParameters': ', '.join(method_parameters),
+            'alternateInvocationParameters': ', '.join(alternate_dispatcher_method_parameters),
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         lines = []
</span><span class="lines">@@ -240,6 +251,14 @@
</span><span class="cx">         if len(command.call_parameters) &gt; 0:
</span><span class="cx">             lines.append(Template(Templates.BackendDispatcherImplementationPrepareCommandArguments).substitute(None, **command_args))
</span><span class="cx"> 
</span><ins>+        lines.append('#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)')
+        lines.append('    if (m_alternateDispatcher) {')
+        lines.append('        m_alternateDispatcher-&gt;%(commandName)s(%(alternateInvocationParameters)s);' % command_args)
+        lines.append('        return;')
+        lines.append('    }')
+        lines.append('#endif')
+        lines.append('')
+
</ins><span class="cx">         lines.append('    ErrorString error;')
</span><span class="cx">         lines.append('    RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();')
</span><span class="cx">         if command.is_async:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerator_templatespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generator_templates.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -95,6 +95,39 @@
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="cx"> &quot;&quot;&quot;)
</span><span class="cx"> 
</span><ins>+    AlternateDispatchersHeaderPrelude = (
+    &quot;&quot;&quot;#ifndef ${headerGuardString}
+#define ${headerGuardString}
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+${includes}
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+&quot;&quot;&quot;)
+
+    AlternateDispatchersHeaderPostlude = (
+    &quot;&quot;&quot;} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(${headerGuardString})&quot;&quot;&quot;)
+
+    AlternateBackendDispatcherHeaderDomainHandlerInterfaceDeclaration = (
+    &quot;&quot;&quot;class AlternateInspector${domainName}BackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspector${domainName}BackendDispatcher() { }
+${commandDeclarations}
+};&quot;&quot;&quot;)
+
</ins><span class="cx">     BackendDispatcherHeaderDomainHandlerDeclaration = (
</span><span class="cx">     &quot;&quot;&quot;${classAndExportMacro} Inspector${domainName}BackendDispatcherHandler {
</span><span class="cx"> public:
</span><span class="lines">@@ -112,6 +145,12 @@
</span><span class="cx"> private:
</span><span class="cx">     Inspector${domainName}BackendDispatcher(Inspector::InspectorBackendDispatcher*, Inspector${domainName}BackendDispatcherHandler*);
</span><span class="cx">     Inspector${domainName}BackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspector${domainName}BackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspector${domainName}BackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     BackendDispatcherHeaderAsyncCommandDeclaration = (
</span><span class="lines">@@ -170,6 +209,9 @@
</span><span class="cx"> Inspector${domainName}BackendDispatcher::Inspector${domainName}BackendDispatcher(InspectorBackendDispatcher* backendDispatcher, Inspector${domainName}BackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;${domainName}&quot;), this);
</span><span class="cx"> }&quot;&quot;&quot;)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptsgenerateinspectorprotocolbindingspy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -50,6 +50,7 @@
</span><span class="cx">     from models import *
</span><span class="cx">     from generator import *
</span><span class="cx"> 
</span><ins>+    from generate_alternate_backend_dispatcher_header import *
</ins><span class="cx">     from generate_backend_commands import *
</span><span class="cx">     from generate_backend_dispatcher_header import *
</span><span class="cx">     from generate_backend_dispatcher_implementation import *
</span><span class="lines">@@ -118,6 +119,7 @@
</span><span class="cx">     protocol.resolve_types()
</span><span class="cx"> 
</span><span class="cx">     generators = []
</span><ins>+    generators.append(AlternateBackendDispatcherHeaderGenerator(protocol, primary_specification_filepath))
</ins><span class="cx">     generators.append(BackendCommandsGenerator(protocol, primary_specification_filepath))
</span><span class="cx">     generators.append(BackendDispatcherHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="cx">     generators.append(BackendDispatcherImplementationGenerator(protocol, primary_specification_filepath))
</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 (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,69 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from commands-with-async-attribute.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+class AlternateInspectorDatabaseBackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspectorDatabaseBackendDispatcher() { }
+    virtual void executeSQLSyncOptionalReturnValues(long callId, int in_databaseId, const String&amp; in_query) = 0;
+    virtual void executeSQLAsyncOptionalReturnValues(long callId, int in_databaseId, const String&amp; in_query) = 0;
+    virtual void executeSQLSync(long callId, int in_databaseId, const String&amp; in_query) = 0;
+    virtual void executeSQLAsync(long callId, int in_databaseId, const String&amp; in_query) = 0;
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -84,6 +150,10 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+class AlternateInspectorDatabaseBackendDispatcher;
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
</ins><span class="cx"> class InspectorDatabaseBackendDispatcherHandler {
</span><span class="cx"> public:
</span><span class="cx">     // Named after parameter 'screenColor' while generating command/event executeSQLSyncOptionalReturnValues.
</span><span class="lines">@@ -129,6 +199,12 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorDatabaseBackendDispatcher(Inspector::InspectorBackendDispatcher*, InspectorDatabaseBackendDispatcherHandler*);
</span><span class="cx">     InspectorDatabaseBackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspectorDatabaseBackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspectorDatabaseBackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace Inspector
</span><span class="lines">@@ -178,6 +254,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> InspectorDatabaseBackendDispatcherHandler::~InspectorDatabaseBackendDispatcherHandler() { }
</span><span class="lines">@@ -190,6 +270,9 @@
</span><span class="cx"> InspectorDatabaseBackendDispatcher::InspectorDatabaseBackendDispatcher(InspectorBackendDispatcher* backendDispatcher, InspectorDatabaseBackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;Database&quot;), this);
</span><span class="cx"> }
</span><span class="lines">@@ -224,6 +307,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeSQLSyncOptionalReturnValues(callId, in_databaseId, in_query);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; out_columnNames;
</span><span class="lines">@@ -300,6 +390,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeSQLAsyncOptionalReturnValues(callId, in_databaseId, in_query);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncOptionalReturnValuesCallback&gt; callback = adoptRef(new InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncOptionalReturnValuesCallback(m_backendDispatcher,callId));
</span><span class="lines">@@ -326,6 +423,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeSQLSync(callId, in_databaseId, in_query);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; out_columnNames;
</span><span class="lines">@@ -384,6 +488,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeSQLAsync(callId, in_databaseId, in_query);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncCallback&gt; callback = adoptRef(new InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncCallback(m_backendDispatcher,callId));
</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 (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,67 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from commands-with-optional-call-return-parameters.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+class AlternateInspectorDatabaseBackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspectorDatabaseBackendDispatcher() { }
+    virtual void executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;* in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;* in_sqlError, const String* in_screenColor, const String* in_printColor) = 0;
+    virtual void executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp; in_sqlError, const String&amp; in_screenColor, const String&amp; in_printColor) = 0;
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -81,6 +145,10 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+class AlternateInspectorDatabaseBackendDispatcher;
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
</ins><span class="cx"> class InspectorDatabaseBackendDispatcherHandler {
</span><span class="cx"> public:
</span><span class="cx">     // Named after parameter 'screenColor' while generating command/event executeAllOptionalParameters.
</span><span class="lines">@@ -112,6 +180,12 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorDatabaseBackendDispatcher(Inspector::InspectorBackendDispatcher*, InspectorDatabaseBackendDispatcherHandler*);
</span><span class="cx">     InspectorDatabaseBackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspectorDatabaseBackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspectorDatabaseBackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace Inspector
</span><span class="lines">@@ -161,6 +235,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> InspectorDatabaseBackendDispatcherHandler::~InspectorDatabaseBackendDispatcherHandler() { }
</span><span class="lines">@@ -173,6 +251,9 @@
</span><span class="cx"> InspectorDatabaseBackendDispatcher::InspectorDatabaseBackendDispatcher(InspectorBackendDispatcher* backendDispatcher, InspectorDatabaseBackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;Database&quot;), this);
</span><span class="cx"> }
</span><span class="lines">@@ -219,6 +300,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeAllOptionalParameters(callId, columnNames_valueFound ? &amp;in_columnNames : nullptr, notes_valueFound ? &amp;in_notes : nullptr, timestamp_valueFound ? &amp;in_timestamp : nullptr, values_valueFound ? &amp;in_values : nullptr, payload_valueFound ? &amp;in_payload : nullptr, databaseId_valueFound ? &amp;in_databaseId : nullptr, sqlError_valueFound ? &amp;in_sqlError : nullptr, screenColor_valueFound ? &amp;in_screenColor : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; out_columnNames;
</span><span class="lines">@@ -276,6 +364,13 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;executeNoOptionalParameters(callId, in_columnNames, in_notes, in_timestamp, in_values, in_payload, in_databaseId, in_sqlError, in_screenColor, in_printColor);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; out_columnNames;
</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 (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,77 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from domains-with-varying-command-sizes.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+class AlternateInspectorNetwork1BackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspectorNetwork1BackendDispatcher() { }
+    virtual void loadResource1(long callId) = 0;
+};
+class AlternateInspectorNetwork3BackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspectorNetwork3BackendDispatcher() { }
+    virtual void loadResource1(long callId) = 0;
+    virtual void loadResource2(long callId) = 0;
+    virtual void loadResource3(long callId) = 0;
+    virtual void loadResource4(long callId) = 0;
+    virtual void loadResource5(long callId) = 0;
+    virtual void loadResource6(long callId) = 0;
+    virtual void loadResource7(long callId) = 0;
+};
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -89,6 +163,11 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+class AlternateInspectorNetwork1BackendDispatcher;
+class AlternateInspectorNetwork3BackendDispatcher;
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
</ins><span class="cx"> class InspectorNetwork1BackendDispatcherHandler {
</span><span class="cx"> public:
</span><span class="cx">     virtual void loadResource1(ErrorString&amp;) = 0;
</span><span class="lines">@@ -118,6 +197,12 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorNetwork1BackendDispatcher(Inspector::InspectorBackendDispatcher*, InspectorNetwork1BackendDispatcherHandler*);
</span><span class="cx">     InspectorNetwork1BackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspectorNetwork1BackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspectorNetwork1BackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class InspectorNetwork3BackendDispatcher final : public Inspector::InspectorSupplementalBackendDispatcher {
</span><span class="lines">@@ -135,6 +220,12 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorNetwork3BackendDispatcher(Inspector::InspectorBackendDispatcher*, InspectorNetwork3BackendDispatcherHandler*);
</span><span class="cx">     InspectorNetwork3BackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspectorNetwork3BackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspectorNetwork3BackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace Inspector
</span><span class="lines">@@ -184,6 +275,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> InspectorNetwork1BackendDispatcherHandler::~InspectorNetwork1BackendDispatcherHandler() { }
</span><span class="lines">@@ -197,6 +292,9 @@
</span><span class="cx"> InspectorNetwork1BackendDispatcher::InspectorNetwork1BackendDispatcher(InspectorBackendDispatcher* backendDispatcher, InspectorNetwork1BackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;Network1&quot;), this);
</span><span class="cx"> }
</span><span class="lines">@@ -213,6 +311,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork1BackendDispatcher::loadResource1(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource1(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource1(error);
</span><span class="lines">@@ -228,6 +333,9 @@
</span><span class="cx"> InspectorNetwork3BackendDispatcher::InspectorNetwork3BackendDispatcher(InspectorBackendDispatcher* backendDispatcher, InspectorNetwork3BackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;Network3&quot;), this);
</span><span class="cx"> }
</span><span class="lines">@@ -268,6 +376,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource1(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource1(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource1(error);
</span><span class="lines">@@ -277,6 +392,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource2(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource2(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource2(error);
</span><span class="lines">@@ -286,6 +408,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource3(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource3(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource3(error);
</span><span class="lines">@@ -295,6 +424,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource4(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource4(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource4(error);
</span><span class="lines">@@ -304,6 +440,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource5(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource5(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource5(error);
</span><span class="lines">@@ -313,6 +456,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource6(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource6(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource6(error);
</span><span class="lines">@@ -322,6 +472,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork3BackendDispatcher::loadResource7(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource7(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource7(error);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedeventswithoptionalparametersjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from events-with-optional-parameters.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -81,6 +140,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -128,6 +189,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</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 (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,68 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from generate-domains-with-feature-guards.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+#if PLATFORM(WEB_COMMANDS)
+class AlternateInspectorNetwork1BackendDispatcher : public AlternateInspectorBackendDispatcher {
+public:
+    virtual ~AlternateInspectorNetwork1BackendDispatcher() { }
+    virtual void loadResource(long callId) = 0;
+};
+#endif // PLATFORM(WEB_COMMANDS)
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -84,7 +149,13 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</ins><span class="cx"> #if PLATFORM(WEB_COMMANDS)
</span><ins>+class AlternateInspectorNetwork1BackendDispatcher;
+#endif // PLATFORM(WEB_COMMANDS)
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#if PLATFORM(WEB_COMMANDS)
</ins><span class="cx"> class InspectorNetwork1BackendDispatcherHandler {
</span><span class="cx"> public:
</span><span class="cx">     virtual void loadResource(ErrorString&amp;) = 0;
</span><span class="lines">@@ -103,6 +174,12 @@
</span><span class="cx"> private:
</span><span class="cx">     InspectorNetwork1BackendDispatcher(Inspector::InspectorBackendDispatcher*, InspectorNetwork1BackendDispatcherHandler*);
</span><span class="cx">     InspectorNetwork1BackendDispatcherHandler* m_agent;
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+public:
+    void setAlternateDispatcher(AlternateInspectorNetwork1BackendDispatcher* alternateDispatcher) { m_alternateDispatcher = alternateDispatcher; }
+private:
+    AlternateInspectorNetwork1BackendDispatcher* m_alternateDispatcher;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> #endif // PLATFORM(WEB_COMMANDS)
</span><span class="cx"> 
</span><span class="lines">@@ -153,6 +230,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(WEB_COMMANDS)
</span><span class="lines">@@ -168,6 +249,9 @@
</span><span class="cx"> InspectorNetwork1BackendDispatcher::InspectorNetwork1BackendDispatcher(InspectorBackendDispatcher* backendDispatcher, InspectorNetwork1BackendDispatcherHandler* agent)
</span><span class="cx">     : InspectorSupplementalBackendDispatcher(backendDispatcher)
</span><span class="cx">     , m_agent(agent)
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    , m_alternateDispatcher(nullptr)
+#endif
</ins><span class="cx"> {
</span><span class="cx">     m_backendDispatcher-&gt;registerDispatcherForDomain(ASCIILiteral(&quot;Network1&quot;), this);
</span><span class="cx"> }
</span><span class="lines">@@ -184,6 +268,13 @@
</span><span class="cx"> 
</span><span class="cx"> void InspectorNetwork1BackendDispatcher::loadResource(long callId, const InspectorObject&amp;)
</span><span class="cx"> {
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    if (m_alternateDispatcher) {
+        m_alternateDispatcher-&gt;loadResource(callId);
+        return;
+    }
+#endif
+
</ins><span class="cx">     ErrorString error;
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; result = InspectorObject::create();
</span><span class="cx">     m_agent-&gt;loadResource(error);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedsametypeiddifferentdomainjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/same-type-id-different-domain.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/same-type-id-different-domain.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/same-type-id-different-domain.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from same-type-id-different-domain.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -75,6 +134,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -122,6 +183,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedshadowedoptionaltypesettersjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from shadowed-optional-type-setters.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -75,6 +134,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -122,6 +183,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationaliasedprimitivetypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from type-declaration-aliased-primitive-type.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -75,6 +134,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -122,6 +183,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationarraytypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from type-declaration-array-type.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -78,6 +137,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -125,6 +186,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationenumtypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-enum-type.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-enum-type.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-enum-type.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from type-declaration-enum-type.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -79,6 +138,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -126,6 +187,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationobjecttypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from type-declaration-object-type.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -75,6 +134,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -122,6 +183,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtyperequiringruntimecastsjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+### Begin File: InspectorAlternateBackendDispatchers.h
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ * Copyright (C) 2013, 2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2014 University of Washington. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from type-requiring-runtime-casts.json
+// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py
+
+#ifndef InspectorAlternateBackendDispatchers_h
+#define InspectorAlternateBackendDispatchers_h
+
+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#include &quot;InspectorProtocolTypes.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+
+namespace Inspector {
+
+class AlternateInspectorBackendDispatcher {
+public:
+    void setBackendDispatcher(PassRefPtr&lt;InspectorBackendDispatcher&gt; dispatcher) { m_backendDispatcher = dispatcher; }
+    InspectorBackendDispatcher* backendDispatcher() const { return m_backendDispatcher.get(); }
+private:
+    RefPtr&lt;InspectorBackendDispatcher&gt; m_backendDispatcher;
+};
+
+
+
+
+} // namespace Inspector
+
+#endif // ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+
+#endif // !defined(InspectorAlternateBackendDispatchers_h)
+### End File: InspectorAlternateBackendDispatchers.h
+
</ins><span class="cx"> ### Begin File: InspectorBackendCommands.js
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2013 Google Inc. All rights reserved.
</span><span class="lines">@@ -79,6 +138,8 @@
</span><span class="cx"> 
</span><span class="cx"> typedef String ErrorString;
</span><span class="cx"> 
</span><ins>+
+
</ins><span class="cx"> } // namespace Inspector
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(INSPECTOR)
</span><span class="lines">@@ -126,6 +187,10 @@
</span><span class="cx"> #include &lt;inspector/InspectorValues.h&gt;
</span><span class="cx"> #include &lt;wtf/text/CString.h&gt;
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+#include &quot;InspectorAlternateBackendDispatchers.h&quot;
+#endif
+
</ins><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WTF/ChangeLog        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Provide a way to have alternate inspector agents
+        https://bugs.webkit.org/show_bug.cgi?id=137901
+
+        Reviewed by Brian Burg.
+
+        * wtf/FeatureDefines.h:
+
</ins><span class="cx"> 2014-10-23  Alberto Garcia  &lt;berto@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Fix build on Hurd
</span></span></pre></div>
<a id="trunkSourceWTFwtfFeatureDefinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FeatureDefines.h (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FeatureDefines.h        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WTF/wtf/FeatureDefines.h        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -82,6 +82,10 @@
</span><span class="cx"> #define ENABLE_ICONDATABASE 0
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !defined(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS)
+#define ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS 1
+#endif
+
</ins><span class="cx"> #if !defined(ENABLE_LETTERPRESS)
</span><span class="cx"> #define ENABLE_LETTERPRESS 1
</span><span class="cx"> #endif
</span><span class="lines">@@ -192,7 +196,11 @@
</span><span class="cx"> #if !defined(ENABLE_REMOTE_INSPECTOR)
</span><span class="cx"> #define ENABLE_REMOTE_INSPECTOR 1
</span><span class="cx"> #endif
</span><ins>+
+#if !defined(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS)
+#define ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS 1
</ins><span class="cx"> #endif
</span><ins>+#endif
</ins><span class="cx"> 
</span><span class="cx"> #if !defined(ENABLE_SMOOTH_SCROLLING)
</span><span class="cx"> #define ENABLE_SMOOTH_SCROLLING 1
</span><span class="lines">@@ -495,6 +503,10 @@
</span><span class="cx"> #define ENABLE_INSPECTOR 1
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if !defined(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS)
+#define ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS 0
+#endif
+
</ins><span class="cx"> #if !defined(ENABLE_JAVASCRIPT_I18N_API)
</span><span class="cx"> #define ENABLE_JAVASCRIPT_I18N_API 0
</span><span class="cx"> #endif
</span><span class="lines">@@ -763,6 +775,10 @@
</span><span class="cx"> #error &quot;ENABLE(REMOTE_INSPECTOR) requires ENABLE(INSPECTOR)&quot;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS) &amp;&amp; !ENABLE(REMOTE_INSPECTOR)
+#error &quot;ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS) requires ENABLE(REMOTE_INSPECTOR)&quot;
+#endif
+
</ins><span class="cx"> #if ENABLE(IOS_TOUCH_EVENTS) &amp;&amp; !ENABLE(TOUCH_EVENTS)
</span><span class="cx"> #error &quot;ENABLE(IOS_TOUCH_EVENTS) requires ENABLE(TOUCH_EVENTS)&quot;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebCore/ChangeLog        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Provide a way to have alternate inspector agents
+        https://bugs.webkit.org/show_bug.cgi?id=137901
+
+        Reviewed by Brian Burg.
+
+        * Configurations/FeatureDefines.xcconfig:
+
</ins><span class="cx"> 2014-10-23  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Don't assume that style.overflowX() == style.overflowY()
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -121,6 +121,15 @@
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphoneos = ENABLE_INPUT_TYPE_WEEK;
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphonesimulator = $(ENABLE_INPUT_TYPE_WEEK_iphoneos);
</span><span class="cx"> ENABLE_INSPECTOR = ENABLE_INSPECTOR;
</span><ins>+
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_$(PLATFORM_NAME));
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphonesimulator = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos);
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1080 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1090 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_101000 = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+
</ins><span class="cx"> ENABLE_IOS_AIRPLAY = $(ENABLE_IOS_AIRPLAY_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphoneos = ENABLE_IOS_AIRPLAY;
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphonesimulator = $(ENABLE_IOS_AIRPLAY_iphoneos);
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebKit/mac/ChangeLog        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Provide a way to have alternate inspector agents
+        https://bugs.webkit.org/show_bug.cgi?id=137901
+
+        Reviewed by Brian Burg.
+
+        * Configurations/FeatureDefines.xcconfig:
+
</ins><span class="cx"> 2014-10-23  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add some SPI headers for NSExtension and NSSharingService{Picker}
</span></span></pre></div>
<a id="trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -121,6 +121,15 @@
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphoneos = ENABLE_INPUT_TYPE_WEEK;
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphonesimulator = $(ENABLE_INPUT_TYPE_WEEK_iphoneos);
</span><span class="cx"> ENABLE_INSPECTOR = ENABLE_INSPECTOR;
</span><ins>+
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_$(PLATFORM_NAME));
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphonesimulator = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos);
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1080 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1090 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_101000 = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+
</ins><span class="cx"> ENABLE_IOS_AIRPLAY = $(ENABLE_IOS_AIRPLAY_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphoneos = ENABLE_IOS_AIRPLAY;
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphonesimulator = $(ENABLE_IOS_AIRPLAY_iphoneos);
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebKit2/ChangeLog        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2014-10-23  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        Web Inspector: Provide a way to have alternate inspector agents
+        https://bugs.webkit.org/show_bug.cgi?id=137901
+
+        Reviewed by Brian Burg.
+
+        * Configurations/FeatureDefines.xcconfig:
+
</ins><span class="cx"> 2014-10-23  Tim Horton  &lt;timothy_horton@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add some SPI headers for NSExtension and NSSharingService{Picker}
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig (175150 => 175151)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-10-23 23:36:19 UTC (rev 175150)
+++ trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2014-10-23 23:43:14 UTC (rev 175151)
</span><span class="lines">@@ -121,6 +121,15 @@
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphoneos = ENABLE_INPUT_TYPE_WEEK;
</span><span class="cx"> ENABLE_INPUT_TYPE_WEEK_iphonesimulator = $(ENABLE_INPUT_TYPE_WEEK_iphoneos);
</span><span class="cx"> ENABLE_INSPECTOR = ENABLE_INSPECTOR;
</span><ins>+
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_$(PLATFORM_NAME));
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphonesimulator = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_iphoneos);
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx = $(ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR))
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1080 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_1090 = ;
+ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS_macosx_101000 = ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS;
+
</ins><span class="cx"> ENABLE_IOS_AIRPLAY = $(ENABLE_IOS_AIRPLAY_$(PLATFORM_NAME));
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphoneos = ENABLE_IOS_AIRPLAY;
</span><span class="cx"> ENABLE_IOS_AIRPLAY_iphonesimulator = $(ENABLE_IOS_AIRPLAY_iphoneos);
</span></span></pre>
</div>
</div>

</body>
</html>