<!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>[196891] 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/196891">196891</a></dd>
<dt>Author</dt> <dd>bburg@apple.com</dd>
<dt>Date</dt> <dd>2016-02-21 20:49:29 -0800 (Sun, 21 Feb 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: add 'Automation' protocol domain and generate its backend classes separately in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=154509
&lt;rdar://problem/24759098&gt;

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Add a new 'WebKit' framework, which is used to generate protocol code
in WebKit2.

Add --backend and --frontend flags to the main generator script.
These allow a framework to trigger two different sets of generators
so they can be separately generated and compiled.

* inspector/scripts/codegen/models.py:
(Framework.fromString):
(Frameworks): Add new framework.

* inspector/scripts/generate-inspector-protocol-bindings.py:
If neither --backend or --frontend is specified, assume both are wanted.
This matches the behavior for JavaScriptCore and WebInspector frameworks.

(generate_from_specification):
Generate C++ files for the backend and Objective-C files for the frontend.

Source/WebKit2:

Add a new 'Automation' domain which presents an RPC interface
for sending automation commands to an active WebAutomationSession
in the UIProcess via RemoteInspector. This is similar to how the
Inspector backend communicates bidirectionally with a remote
Inspector frontend.

Add build system logic to generate JSON-RPC protocol bindings
for the 'Automation' domain using the inspector code generators.

Move automation-related files that are not API or SPI into their
own directory.

* Configurations/BaseTarget.xcconfig: Tell where JavaScriptCore's
private headers are, since that's where the code generators live.

* CMakeLists.txt: Look in UIProcess/Automation directory.
* PlatformMac.cmake:
* DerivedSources.make: Generate protocol bindings for a single domain.
The names of the generated files will be improved in a follow-up patch
so that they do not clash with generated files in JavaScriptCore.

* UIProcess/Automation/Automation.json: Added.
* UIProcess/Automation/WebAutomationSession.cpp: Renamed from Source/WebKit2/UIProcess/WebAutomationSession.cpp.
(WebKit::WebAutomationSession::WebAutomationSession):
(WebKit::WebAutomationSession::~WebAutomationSession):
Set up a backend dispatcher and frontend router. They will be used later.

(WebKit::WebAutomationSession::dispatchMessageFromRemote):
Forward messages from the remote to the backend dispatcher. When
an agent / command handler is registered, it will receive the message.

(WebKit::WebAutomationSession::connect):
(WebKit::WebAutomationSession::disconnect):
Connenct and disconnect the frontend router to the remote channel.

* UIProcess/Automation/WebAutomationSession.h: Renamed from Source/WebKit2/UIProcess/WebAutomationSession.h.
* WebKit2.xcodeproj/project.pbxproj: Add and move files.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegenmodelspy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptsgenerateinspectorprotocolbindingspy">trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py</a></li>
<li><a href="#trunkSourceWebKit2CMakeListstxt">trunk/Source/WebKit2/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsBaseTargetxcconfig">trunk/Source/WebKit2/Configurations/BaseTarget.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2DerivedSourcesmake">trunk/Source/WebKit2/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebKit2PlatformMaccmake">trunk/Source/WebKit2/PlatformMac.cmake</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/Source/WebKit2/UIProcess/Automation/</li>
<li><a href="#trunkSourceWebKit2UIProcessAutomationAutomationjson">trunk/Source/WebKit2/UIProcess/Automation/Automation.json</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAutomationWebAutomationSessioncpp">trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAutomationWebAutomationSessionh">trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessWebAutomationSessioncpp">trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebAutomationSessionh">trunk/Source/WebKit2/UIProcess/WebAutomationSession.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2016-02-21  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: add 'Automation' protocol domain and generate its backend classes separately in WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=154509
+        &lt;rdar://problem/24759098&gt;
+
+        Reviewed by Timothy Hatcher.
+
+        Add a new 'WebKit' framework, which is used to generate protocol code
+        in WebKit2.
+
+        Add --backend and --frontend flags to the main generator script.
+        These allow a framework to trigger two different sets of generators
+        so they can be separately generated and compiled.
+
+        * inspector/scripts/codegen/models.py:
+        (Framework.fromString):
+        (Frameworks): Add new framework.
+
+        * inspector/scripts/generate-inspector-protocol-bindings.py:
+        If neither --backend or --frontend is specified, assume both are wanted.
+        This matches the behavior for JavaScriptCore and WebInspector frameworks.
+
+        (generate_from_specification):
+        Generate C++ files for the backend and Objective-C files for the frontend.
+
</ins><span class="cx"> 2016-02-21  Sukolsak Sakshuwong  &lt;sukolsak@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Improvements to Intl code
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegenmodelspy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -45,6 +45,8 @@
</span><span class="cx">         &quot;export_macro&quot;: &quot;JS_EXPORT_PRIVATE&quot;,
</span><span class="cx">         &quot;alternate_dispatchers&quot;: True,
</span><span class="cx">     },
</span><ins>+    &quot;WebKit&quot;: {
+    },
</ins><span class="cx">     &quot;WebInspector&quot;: {
</span><span class="cx">     },
</span><span class="cx">     # Used for code generator tests.
</span><span class="lines">@@ -78,6 +80,9 @@
</span><span class="cx">         if frameworkString == &quot;JavaScriptCore&quot;:
</span><span class="cx">             return Frameworks.JavaScriptCore
</span><span class="cx"> 
</span><ins>+        if frameworkString == &quot;WebKit&quot;:
+            return Frameworks.WebKit
+
</ins><span class="cx">         if frameworkString == &quot;WebInspector&quot;:
</span><span class="cx">             return Frameworks.WebInspector
</span><span class="cx"> 
</span><span class="lines">@@ -90,6 +95,7 @@
</span><span class="cx"> class Frameworks:
</span><span class="cx">     Global = Framework(&quot;Global&quot;)
</span><span class="cx">     JavaScriptCore = Framework(&quot;JavaScriptCore&quot;)
</span><ins>+    WebKit = Framework(&quot;WebKit&quot;)
</ins><span class="cx">     WebInspector = Framework(&quot;WebInspector&quot;)
</span><span class="cx">     Test = Framework(&quot;Test&quot;)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptsgenerateinspectorprotocolbindingspy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -112,7 +112,9 @@
</span><span class="cx">                                 concatenate_output=False,
</span><span class="cx">                                 output_dirpath=None,
</span><span class="cx">                                 force_output=False,
</span><del>-                                framework_name=&quot;&quot;):
</del><ins>+                                framework_name=&quot;&quot;,
+                                generate_frontend=True,
+                                generate_backend=True):
</ins><span class="cx"> 
</span><span class="cx">     def load_specification(protocol, filepath, isSupplemental=False):
</span><span class="cx">         try:
</span><span class="lines">@@ -148,6 +150,7 @@
</span><span class="cx">         generators.append(ObjCHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(ObjCInternalHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(ObjCProtocolTypesImplementationGenerator(protocol, primary_specification_filepath))
</span><ins>+
</ins><span class="cx">     elif protocol.framework is Frameworks.JavaScriptCore:
</span><span class="cx">         generators.append(JSBackendCommandsGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(CppAlternateBackendDispatcherHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="lines">@@ -157,6 +160,19 @@
</span><span class="cx">         generators.append(CppFrontendDispatcherImplementationGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(CppProtocolTypesHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(CppProtocolTypesImplementationGenerator(protocol, primary_specification_filepath))
</span><ins>+
+    elif protocol.framework is Frameworks.WebKit and generate_backend:
+        generators.append(CppBackendDispatcherHeaderGenerator(protocol, primary_specification_filepath))
+        generators.append(CppBackendDispatcherImplementationGenerator(protocol, primary_specification_filepath))
+        generators.append(CppProtocolTypesHeaderGenerator(protocol, primary_specification_filepath))
+        generators.append(CppProtocolTypesImplementationGenerator(protocol, primary_specification_filepath))
+
+    elif protocol.framework is Frameworks.WebKit and generate_frontend:
+        # FIXME &lt;rdar://problem/23466925&gt;: This list of generators for the frontend is a placeholder.
+        generators.append(ObjCConversionHelpersGenerator(protocol, primary_specification_filepath))
+        generators.append(ObjCFrontendDispatcherImplementationGenerator(protocol, primary_specification_filepath))
+        generators.append(ObjCProtocolTypesImplementationGenerator(protocol, primary_specification_filepath))
+
</ins><span class="cx">     elif protocol.framework is Frameworks.WebInspector:
</span><span class="cx">         generators.append(ObjCBackendDispatcherHeaderGenerator(protocol, primary_specification_filepath))
</span><span class="cx">         generators.append(ObjCBackendDispatcherImplementationGenerator(protocol, primary_specification_filepath))
</span><span class="lines">@@ -190,14 +206,15 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> if __name__ == '__main__':
</span><del>-    allowed_framework_names = ['JavaScriptCore', 'WebInspector', 'Test']
</del><ins>+    allowed_framework_names = ['JavaScriptCore', 'WebInspector', 'WebKit', 'Test']
</ins><span class="cx">     cli_parser = optparse.OptionParser(usage=&quot;usage: %prog [options] PrimaryProtocol.json [SupplementalProtocol.json ...]&quot;)
</span><span class="cx">     cli_parser.add_option(&quot;-o&quot;, &quot;--outputDir&quot;, help=&quot;Directory where generated files should be written.&quot;)
</span><span class="cx">     cli_parser.add_option(&quot;--framework&quot;, type=&quot;choice&quot;, choices=allowed_framework_names, help=&quot;The framework that the primary specification belongs to.&quot;)
</span><span class="cx">     cli_parser.add_option(&quot;--force&quot;, action=&quot;store_true&quot;, help=&quot;Force output of generated scripts, even if nothing changed.&quot;)
</span><span class="cx">     cli_parser.add_option(&quot;-v&quot;, &quot;--debug&quot;, action=&quot;store_true&quot;, help=&quot;Log extra output for debugging the generator itself.&quot;)
</span><span class="cx">     cli_parser.add_option(&quot;-t&quot;, &quot;--test&quot;, action=&quot;store_true&quot;, help=&quot;Enable test mode. Use unique output filenames created by prepending the input filename.&quot;)
</span><del>-
</del><ins>+    cli_parser.add_option(&quot;--frontend&quot;, action=&quot;store_true&quot;, help=&quot;Generate code for the frontend-side of the protocol only.&quot;)
+    cli_parser.add_option(&quot;--backend&quot;, action=&quot;store_true&quot;, help=&quot;Generate code for the backend-side of the protocol only.&quot;)
</ins><span class="cx">     options = None
</span><span class="cx"> 
</span><span class="cx">     arg_options, arg_values = cli_parser.parse_args()
</span><span class="lines">@@ -210,13 +227,22 @@
</span><span class="cx">     if arg_options.debug:
</span><span class="cx">         log.setLevel(logging.DEBUG)
</span><span class="cx"> 
</span><ins>+    generate_backend = arg_options.backend;
+    generate_frontend = arg_options.frontend;
+    # Default to generating both the frontend and backend if neither is specified.
+    if not generate_backend and not generate_frontend:
+        generate_backend = True
+        generate_frontend = True
+
</ins><span class="cx">     options = {
</span><span class="cx">         'primary_specification_filepath': arg_values[0],
</span><span class="cx">         'supplemental_specification_filepaths': arg_values[1:],
</span><span class="cx">         'output_dirpath': arg_options.outputDir,
</span><span class="cx">         'concatenate_output': arg_options.test,
</span><span class="cx">         'framework_name': arg_options.framework,
</span><del>-        'force_output': arg_options.force
</del><ins>+        'force_output': arg_options.force,
+        'generate_backend': generate_backend,
+        'generate_frontend': generate_frontend,
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     try:
</span></span></pre></div>
<a id="trunkSourceWebKit2CMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/CMakeLists.txt (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/CMakeLists.txt        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/CMakeLists.txt        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/C&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/cpp&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Authentication&quot;
</span><ins>+    &quot;${WEBKIT2_DIR}/UIProcess/Automation&quot;
</ins><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Databases&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Downloads&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/InspectorServer&quot;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/ChangeLog        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2016-02-21  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Web Inspector: add 'Automation' protocol domain and generate its backend classes separately in WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=154509
+        &lt;rdar://problem/24759098&gt;
+
+        Reviewed by Timothy Hatcher.
+
+        Add a new 'Automation' domain which presents an RPC interface
+        for sending automation commands to an active WebAutomationSession
+        in the UIProcess via RemoteInspector. This is similar to how the
+        Inspector backend communicates bidirectionally with a remote
+        Inspector frontend.
+
+        Add build system logic to generate JSON-RPC protocol bindings
+        for the 'Automation' domain using the inspector code generators.
+
+        Move automation-related files that are not API or SPI into their
+        own directory.
+
+        * Configurations/BaseTarget.xcconfig: Tell where JavaScriptCore's
+        private headers are, since that's where the code generators live.
+
+        * CMakeLists.txt: Look in UIProcess/Automation directory.
+        * PlatformMac.cmake:
+        * DerivedSources.make: Generate protocol bindings for a single domain.
+        The names of the generated files will be improved in a follow-up patch
+        so that they do not clash with generated files in JavaScriptCore.
+
+        * UIProcess/Automation/Automation.json: Added.
+        * UIProcess/Automation/WebAutomationSession.cpp: Renamed from Source/WebKit2/UIProcess/WebAutomationSession.cpp.
+        (WebKit::WebAutomationSession::WebAutomationSession):
+        (WebKit::WebAutomationSession::~WebAutomationSession):
+        Set up a backend dispatcher and frontend router. They will be used later.
+
+        (WebKit::WebAutomationSession::dispatchMessageFromRemote):
+        Forward messages from the remote to the backend dispatcher. When
+        an agent / command handler is registered, it will receive the message.
+
+        (WebKit::WebAutomationSession::connect):
+        (WebKit::WebAutomationSession::disconnect):
+        Connenct and disconnect the frontend router to the remote channel.
+
+        * UIProcess/Automation/WebAutomationSession.h: Renamed from Source/WebKit2/UIProcess/WebAutomationSession.h.
+        * WebKit2.xcodeproj/project.pbxproj: Add and move files.
+
</ins><span class="cx"> 2016-02-20  Olivier Blin  &lt;olivier.blin@softathome.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [cmake] Use ICU include dirs in WebKit2 and WebKitTestRunner
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsBaseTargetxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/BaseTarget.xcconfig (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/BaseTarget.xcconfig        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/Configurations/BaseTarget.xcconfig        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx"> UMBRELLA_FRAMEWORKS_DIR_Production_macosx_USE_OVERRIDE_FRAMEWORKS_DIR_YES = $(WK_OVERRIDE_FRAMEWORKS_DIR);
</span><span class="cx"> UMBRELLA_FRAMEWORKS_DIR_engineering = $(BUILT_PRODUCTS_DIR);
</span><span class="cx"> 
</span><ins>+JAVASCRIPTCORE_PRIVATE_HEADERS_DIR = $(UMBRELLA_FRAMEWORKS_DIR)/JavaScriptCore.framework/PrivateHeaders;
</ins><span class="cx"> WEBCORE_PRIVATE_HEADERS_DIR = $(UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/PrivateHeaders;
</span><span class="cx"> WEBKIT_LEGACY_PRIVATE_HEADERS_DIR = $(UMBRELLA_FRAMEWORKS_DIR)/WebKitLegacy.framework/PrivateHeaders;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2DerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/DerivedSources.make (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/DerivedSources.make        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/DerivedSources.make        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -56,6 +56,7 @@
</span><span class="cx">     $(WebKit2)/WebProcess/ios \
</span><span class="cx">     $(WebKit2)/WebProcess \
</span><span class="cx">     $(WebKit2)/UIProcess \
</span><ins>+    $(WebKit2)/UIProcess/Automation \
</ins><span class="cx">     $(WebKit2)/UIProcess/Cocoa \
</span><span class="cx">     $(WebKit2)/UIProcess/Databases \
</span><span class="cx">     $(WebKit2)/UIProcess/Downloads \
</span><span class="lines">@@ -192,3 +193,31 @@
</span><span class="cx"> %.sb : %.sb.in
</span><span class="cx">         @echo Pre-processing $* sandbox profile...
</span><span class="cx">         $(CC) $(SDK_FLAGS) $(TEXT_PREPROCESSOR_FLAGS) $(FRAMEWORK_FLAGS) $(HEADER_FLAGS) -include &quot;wtf/Platform.h&quot; $&lt; &gt; $@
</span><ins>+
+JSON_RPC_GENERATOR_SCRIPTS = \
+        $(JavaScriptCore_SCRIPTS_DIR)/cpp_generator_templates.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/cpp_generator.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_backend_dispatcher_header.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_backend_dispatcher_implementation.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_protocol_types_header.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generate_cpp_protocol_types_implementation.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generator_templates.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generator.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/models.py \
+        $(JavaScriptCore_SCRIPTS_DIR)/generate-inspector-protocol-bindings.py \
+#
+
+JSON_RPC_INPUT_FILES = \
+    $(WebKit2)/UIProcess/Automation/Automation.json \
+#
+
+JSON_RPC_OUTPUT_FILES = \
+    InspectorBackendDispatchers.h \
+    InspectorBackendDispatchers.cpp \
+#
+
+# JSON-RPC Backend Dispatchers, Type Builders
+$(JSON_RPC_OUTPUT_FILES) : $(JSON_RPC_INPUT_FILES) $(JSON_RPC_GENERATOR_SCRIPTS)
+        $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-inspector-protocol-bindings.py --framework WebKit --backend --outputDir . $(JSON_RPC_INPUT_FILES)
+
+all : $(JSON_RPC_OUTPUT_FILES)
</ins></span></pre></div>
<a id="trunkSourceWebKit2PlatformMaccmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformMac.cmake (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformMac.cmake        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/PlatformMac.cmake        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -6,6 +6,8 @@
</span><span class="cx"> add_definitions(-iframework ${CARBON_LIBRARY}/Frameworks)
</span><span class="cx"> add_definitions(-DWK_XPC_SERVICE_SUFFIX=&quot;.Development&quot;)
</span><span class="cx"> 
</span><ins>+set(JavaScriptCore_SCRIPTS_DIR &quot;${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore/Scripts&quot;)
+
</ins><span class="cx"> list(APPEND WebKit2_LIBRARIES
</span><span class="cx">     WebKit
</span><span class="cx"> )
</span><span class="lines">@@ -140,8 +142,9 @@
</span><span class="cx">     Shared/mac/WebMemorySampler.mac.mm
</span><span class="cx"> 
</span><span class="cx">     UIProcess/ViewGestureController.cpp
</span><del>-    UIProcess/WebAutomationSession.cpp
</del><span class="cx"> 
</span><ins>+    UIProcess/Automation/WebAutomationSession.cpp
+
</ins><span class="cx">     UIProcess/API/APIUserScript.cpp
</span><span class="cx">     UIProcess/API/APIUserStyleSheet.cpp
</span><span class="cx">     UIProcess/API/APIWebsiteDataRecord.cpp
</span><span class="lines">@@ -352,6 +355,7 @@
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/C/mac&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/Cocoa&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/API/mac&quot;
</span><ins>+    &quot;${WEBKIT2_DIR}/UIProcess/Automation&quot;
</ins><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Cocoa&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Launcher/mac&quot;
</span><span class="cx">     &quot;${WEBKIT2_DIR}/UIProcess/Scrolling&quot;
</span><span class="lines">@@ -495,4 +499,38 @@
</span><span class="cx">     ${DERIVED_SOURCES_WEBKIT2_DIR}/MessageRecorderProbes.h
</span><span class="cx"> )
</span><span class="cx"> 
</span><ins>+set(WebKit2_JSON_RPC_GENERATOR_SCRIPTS
+    ${JavaScriptCore_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/cpp_generator.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/cpp_generator_templates.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generate_cpp_backend_dispatcher_header.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generate_cpp_backend_dispatcher_implementation.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generate_cpp_protocol_types_header.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generate_cpp_protocol_types_implementation.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generator.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/generator_templates.py
+    ${JavaScriptCore_SCRIPTS_DIR}/codegen/models.py
+)
+
+set(WebKit2_JSON_RPC_GENERATOR_INPUTS
+    ${WEBKIT2_DIR}/UIProcess/Automation/Automation.json
+)
+
+add_custom_command(
+    OUTPUT ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorBackendDispatchers.h ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorBackendDispatchers.cpp ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorProtocolObjects.h ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorProtocolObjects.cpp
+    MAIN_DEPENDENCY ${WebKit2_JSON_RPC_GENERATOR_INPUTS}
+    DEPENDS ${WebKit2_JSON_RPC_GENERATOR_SCRIPTS}
+    COMMAND ${PYTHON_EXECUTABLE} ${JavaScriptCore_SCRIPTS_DIR}/generate-inspector-protocol-bindings.py --outputDir &quot;${DERIVED_SOURCES_WEBKIT2_DIR}&quot; --framework WebKit --backend ${WebKit2_JSON_RPC_GENERATOR_INPUTS}
+    VERBATIM)
+
+list(APPEND WebKit2_HEADERS
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorBackendDispatchers.h
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorProtocolObjects.h
+)
+
+list(APPEND WebKit2_SOURCES
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorBackendDispatchers.cpp
+    ${DERIVED_SOURCES_WEBKIT2_DIR}/InspectorProtocolObjects.cpp
+)
+
</ins><span class="cx"> WEBKIT_CREATE_FORWARDING_HEADERS(WebKit FILES ${WebKit2_FORWARDING_HEADERS_FILES} DIRECTORIES ${WebKit2_FORWARDING_HEADERS_DIRECTORIES})
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAutomationAutomationjson"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/Automation/Automation.json (0 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Automation/Automation.json                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Automation/Automation.json        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+{
+    &quot;domain&quot;: &quot;Automation&quot;,
+    &quot;description&quot;: &quot;Automation domain exposes commands for automating user interactions with the browser.&quot;,
+    &quot;types&quot;: [
+        {
+            &quot;id&quot;: &quot;OpaqueWindowHandle&quot;,
+            &quot;type&quot;: &quot;string&quot;,
+            &quot;description&quot;: &quot;An opaque identifier for a window.&quot;
+        },
+        {
+            &quot;id&quot;: &quot;BrowsingWindow&quot;,
+            &quot;type&quot;: &quot;object&quot;,
+            &quot;description&quot;: &quot;A handle representing an open window or tab in the automation session.&quot;,
+            &quot;properties&quot;: [
+                { &quot;name&quot;: &quot;handle&quot;, &quot;$ref&quot;: &quot;OpaqueWindowHandle&quot;, &quot;description&quot;: &quot;Opaque handle for the window. Used as a key for window-related commands.&quot; },
+                { &quot;name&quot;: &quot;active&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Whether the window is active at the time the command is handled.&quot; }
+            ]
+        }
+    ],
+    &quot;commands&quot;: [
+        {
+            &quot;name&quot;: &quot;getWindows&quot;,
+            &quot;returns&quot;: [
+                { &quot;name&quot;: &quot;windows&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;BrowsingWindow&quot;}, &quot;description&quot;: &quot;All known windows and tabs in the browsing session.&quot; }
+            ],
+            &quot;description&quot;: &quot;Gets information about all open windows and tabs in the automation session.&quot;
+        },
+        {
+            &quot;name&quot;: &quot;openWindow&quot;,
+            &quot;description&quot;: &quot;Opens a new automation window in the current browsing context.&quot;
+        },
+        {
+            &quot;name&quot;: &quot;closeWindow&quot;,
+            &quot;parameters&quot;: [
+                { &quot;name&quot;: &quot;handle&quot;, &quot;$ref&quot;: &quot;OpaqueWindowHandle&quot;, &quot;description&quot;: &quot;The handle for the window that should be closed.&quot; }
+            ],
+            &quot;description&quot;: &quot;Closes the specified window.&quot;
+        }
+    ]
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAutomationWebAutomationSessioncppfromrev196890trunkSourceWebKit2UIProcessWebAutomationSessioncpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp (from rev 196890, trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp) (0 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -0,0 +1,93 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. 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.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;WebAutomationSession.h&quot;
+
+#include &quot;APIAutomationSessionClient.h&quot;
+#include &lt;JavaScriptCore/InspectorBackendDispatcher.h&gt;
+#include &lt;JavaScriptCore/InspectorFrontendRouter.h&gt;
+
+using namespace Inspector;
+
+namespace WebKit {
+
+WebAutomationSession::WebAutomationSession()
+    : m_client(std::make_unique&lt;API::AutomationSessionClient&gt;())
+    , m_frontendRouter(FrontendRouter::create())
+    , m_backendDispatcher(BackendDispatcher::create(m_frontendRouter.copyRef()))
+{
+    // FIXME: to actually handle incoming commands, an agent needs to be created
+    // and registered with the backend dispatcher in the constructor.
+}
+
+WebAutomationSession::~WebAutomationSession()
+{
+    ASSERT(!m_client);
+}
+
+void WebAutomationSession::setClient(std::unique_ptr&lt;API::AutomationSessionClient&gt; client)
+{
+    m_client = WTFMove(client);
+}
+
+// NOTE: this class could be split at some point to support local and remote automation sessions.
+// For now, it only works with a remote automation driver over a RemoteInspector connection.
+
+#if ENABLE(REMOTE_INSPECTOR)
+
+// Inspector::RemoteAutomationTarget API
+
+void WebAutomationSession::dispatchMessageFromRemote(const String&amp; message)
+{
+    m_backendDispatcher-&gt;dispatch(message);
+}
+
+void WebAutomationSession::connect(Inspector::FrontendChannel* channel, bool isAutomaticConnection)
+{
+    UNUSED_PARAM(isAutomaticConnection);
+
+    m_remoteChannel = channel;
+    m_frontendRouter-&gt;connectFrontend(channel);
+
+    setIsPaired(true);
+}
+
+void WebAutomationSession::disconnect(Inspector::FrontendChannel* channel)
+{
+    ASSERT(channel == m_remoteChannel);
+
+    m_remoteChannel = nullptr;
+    m_frontendRouter-&gt;disconnectFrontend(channel);
+
+    setIsPaired(false);
+
+    if (m_client)
+        m_client-&gt;didDisconnectFromRemote(this);
+}
+
+#endif // ENABLE(REMOTE_INSPECTOR)
+
+} // namespace WebKit
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAutomationWebAutomationSessioncpp"></a>
<div class="propset"><h4>Property changes: trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkSourceWebKit2UIProcessAutomationWebAutomationSessionhfromrev196890trunkSourceWebKit2UIProcessWebAutomationSessionh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.h (from rev 196890, trunk/Source/WebKit2/UIProcess/WebAutomationSession.h) (0 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.h        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+/*
+ * Copyright (C) 2016 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. 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.
+ */
+
+#ifndef WebAutomationSession_h
+#define WebAutomationSession_h
+
+#include &quot;APIObject.h&quot;
+#include &lt;wtf/Forward.h&gt;
+
+#if ENABLE(REMOTE_INSPECTOR)
+#include &lt;JavaScriptCore/RemoteAutomationTarget.h&gt;
+#endif
+
+namespace API {
+class AutomationSessionClient;
+}
+
+namespace Inspector {
+class BackendDispatcher;
+class FrontendRouter;
+}
+
+namespace WebKit {
+
+class WebAutomationSessionClient;
+
+class WebAutomationSession final : public API::ObjectImpl&lt;API::Object::Type::AutomationSession&gt;
+#if ENABLE(REMOTE_INSPECTOR)
+    , public Inspector::RemoteAutomationTarget
+#endif
+{
+public:
+    WebAutomationSession();
+    ~WebAutomationSession();
+
+    void setClient(std::unique_ptr&lt;API::AutomationSessionClient&gt;);
+
+    void setSessionIdentifier(const String&amp; sessionIdentifier) { m_sessionIdentifier = sessionIdentifier; }
+    String sessionIdentifier() const { return m_sessionIdentifier; }
+
+#if ENABLE(REMOTE_INSPECTOR)
+    // Inspector::RemoteAutomationTarget API
+    virtual String name() const override { return m_sessionIdentifier; }
+    virtual void dispatchMessageFromRemote(const String&amp; message) override;
+    virtual void connect(Inspector::FrontendChannel*, bool isAutomaticConnection = false) override;
+    virtual void disconnect(Inspector::FrontendChannel*) override;
+#endif
+
+private:
+    std::unique_ptr&lt;API::AutomationSessionClient&gt; m_client;
+    String m_sessionIdentifier { ASCIILiteral(&quot;Untitled Session&quot;) };
+    Ref&lt;Inspector::FrontendRouter&gt; m_frontendRouter;
+    Ref&lt;Inspector::BackendDispatcher&gt; m_backendDispatcher;
+
+#if ENABLE(REMOTE_INSPECTOR)
+    Inspector::FrontendChannel* m_remoteChannel { nullptr };
+#endif
+};
+
+} // namespace WebKit
+
+#endif // WebAutomationSession_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAutomationWebAutomationSessionh"></a>
<div class="propset"><h4>Property changes: trunk/Source/WebKit2/UIProcess/Automation/WebAutomationSession.h</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkSourceWebKit2UIProcessWebAutomationSessioncpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/UIProcess/WebAutomationSession.cpp        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -1,79 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 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. 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WebAutomationSession.h&quot;
-
-#include &quot;APIAutomationSessionClient.h&quot;
-
-namespace WebKit {
-
-WebAutomationSession::WebAutomationSession()
-    : m_client(std::make_unique&lt;API::AutomationSessionClient&gt;())
-{
-}
-
-WebAutomationSession::~WebAutomationSession()
-{
-    ASSERT(!m_client);
-}
-
-void WebAutomationSession::setClient(std::unique_ptr&lt;API::AutomationSessionClient&gt; client)
-{
-    m_client = WTFMove(client);
-}
-
-// NOTE: this class could be split at some point to support local and remote automation sessions.
-// For now, it only works with a remote automation driver over a RemoteInspector connection.
-
-#if ENABLE(REMOTE_INSPECTOR)
-
-// Inspector::RemoteAutomationTarget API
-
-void WebAutomationSession::dispatchMessageFromRemote(const String&amp;)
-{
-    // FIXME: to be implemented.
-}
-
-void WebAutomationSession::connect(Inspector::FrontendChannel* channel, bool isAutomaticConnection)
-{
-    UNUSED_PARAM(isAutomaticConnection);
-
-    m_remoteChannel = channel;
-    setIsPaired(true);
-}
-
-void WebAutomationSession::disconnect(Inspector::FrontendChannel* channel)
-{
-    m_remoteChannel = nullptr;
-    setIsPaired(false);
-    
-    if (m_client)
-        m_client-&gt;didDisconnectFromRemote(this);
-}
-
-#endif // ENABLE(REMOTE_INSPECTOR)
-
-} // namespace WebKit
</del></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebAutomationSessionh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebKit2/UIProcess/WebAutomationSession.h (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebAutomationSession.h        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/UIProcess/WebAutomationSession.h        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -1,77 +0,0 @@
</span><del>-/*
- * Copyright (C) 2016 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. 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.
- */
-
-#ifndef WebAutomationSession_h
-#define WebAutomationSession_h
-
-#include &quot;APIObject.h&quot;
-#include &lt;wtf/Forward.h&gt;
-
-#if ENABLE(REMOTE_INSPECTOR)
-#include &lt;JavaScriptCore/RemoteAutomationTarget.h&gt;
-#endif
-
-namespace API {
-class AutomationSessionClient;
-}
-
-namespace WebKit {
-
-class WebAutomationSessionClient;
-
-class WebAutomationSession final : public API::ObjectImpl&lt;API::Object::Type::AutomationSession&gt;
-#if ENABLE(REMOTE_INSPECTOR)
-    , public Inspector::RemoteAutomationTarget
-#endif
-{
-public:
-    WebAutomationSession();
-    ~WebAutomationSession();
-
-    void setClient(std::unique_ptr&lt;API::AutomationSessionClient&gt;);
-
-    void setSessionIdentifier(const String&amp; sessionIdentifier) { m_sessionIdentifier = sessionIdentifier; }
-    String sessionIdentifier() const { return m_sessionIdentifier; }
-
-#if ENABLE(REMOTE_INSPECTOR)
-    // Inspector::RemoteAutomationTarget API
-    virtual String name() const override { return m_sessionIdentifier; }
-    virtual void dispatchMessageFromRemote(const String&amp; message) override;
-    virtual void connect(Inspector::FrontendChannel*, bool isAutomaticConnection = false) override;
-    virtual void disconnect(Inspector::FrontendChannel*) override;
-#endif
-
-private:
-    std::unique_ptr&lt;API::AutomationSessionClient&gt; m_client;
-    String m_sessionIdentifier { ASCIILiteral(&quot;Untitled Session&quot;) };
-
-#if ENABLE(REMOTE_INSPECTOR)
-    Inspector::FrontendChannel* m_remoteChannel { nullptr };
-#endif
-};
-
-} // namespace WebKit
-
-#endif // WebAutomationSession_h
</del></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (196890 => 196891)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-02-22 03:28:55 UTC (rev 196890)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2016-02-22 04:49:29 UTC (rev 196891)
</span><span class="lines">@@ -1231,9 +1231,14 @@
</span><span class="cx">                 990D28B21C65209400986977 /* _WKAutomationSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = 990D28AD1C65190400986977 /* _WKAutomationSession.mm */; };
</span><span class="cx">                 990D28BB1C6539D300986977 /* AutomationSessionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B71C6539A000986977 /* AutomationSessionClient.h */; };
</span><span class="cx">                 990D28BC1C6539DA00986977 /* AutomationSessionClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 990D28B81C6539A000986977 /* AutomationSessionClient.mm */; };
</span><del>-                990D28BF1C654D3900986977 /* WebAutomationSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 990D28BD1C65490A00986977 /* WebAutomationSession.cpp */; };
</del><span class="cx">                 990D28C01C6553F100986977 /* APIAutomationSessionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B31C6526D400986977 /* APIAutomationSessionClient.h */; };
</span><del>-                990D28C11C65626500986977 /* WebAutomationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 990D28B51C6526F500986977 /* WebAutomationSession.h */; };
</del><ins>+                9955A6EC1C7980C200EB6A93 /* WebAutomationSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 9955A6EB1C7980BB00EB6A93 /* WebAutomationSession.h */; };
+                9955A6ED1C7980CA00EB6A93 /* WebAutomationSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9955A6EA1C7980BB00EB6A93 /* WebAutomationSession.cpp */; };
+                9955A6EF1C79810800EB6A93 /* Automation.json in Headers */ = {isa = PBXBuildFile; fileRef = 9955A6E91C7980BB00EB6A93 /* Automation.json */; settings = {ATTRIBUTES = (Private, ); }; };
+                9955A6F41C7986DC00EB6A93 /* InspectorBackendDispatchers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9955A6F01C79866400EB6A93 /* InspectorBackendDispatchers.cpp */; };
+                9955A6F51C7986E000EB6A93 /* InspectorBackendDispatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 9955A6F11C79866400EB6A93 /* InspectorBackendDispatchers.h */; };
+                9955A6F61C7986E300EB6A93 /* InspectorProtocolObjects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9955A6F21C79866400EB6A93 /* InspectorProtocolObjects.cpp */; };
+                9955A6F71C7986E500EB6A93 /* InspectorProtocolObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 9955A6F31C79866400EB6A93 /* InspectorProtocolObjects.h */; };
</ins><span class="cx">                 99C81D591C20E1E5005C4C82 /* AutomationClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99C81D561C20DFBE005C4C82 /* AutomationClient.mm */; };
</span><span class="cx">                 99C81D5A1C20E7E2005C4C82 /* AutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D551C20DFBE005C4C82 /* AutomationClient.h */; };
</span><span class="cx">                 99C81D5D1C21F38B005C4C82 /* APIAutomationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */; };
</span><span class="lines">@@ -3256,10 +3261,15 @@
</span><span class="cx">                 990D28AD1C65190400986977 /* _WKAutomationSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKAutomationSession.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 990D28AF1C65203900986977 /* _WKAutomationSessionInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKAutomationSessionInternal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 990D28B31C6526D400986977 /* APIAutomationSessionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIAutomationSessionClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                990D28B51C6526F500986977 /* WebAutomationSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAutomationSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 990D28B71C6539A000986977 /* AutomationSessionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationSessionClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 990D28B81C6539A000986977 /* AutomationSessionClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutomationSessionClient.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                990D28BD1C65490A00986977 /* WebAutomationSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAutomationSession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                9955A6E91C7980BB00EB6A93 /* Automation.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = Automation.json; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6EA1C7980BB00EB6A93 /* WebAutomationSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAutomationSession.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6EB1C7980BB00EB6A93 /* WebAutomationSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAutomationSession.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6F01C79866400EB6A93 /* InspectorBackendDispatchers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBackendDispatchers.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6F11C79866400EB6A93 /* InspectorBackendDispatchers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBackendDispatchers.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6F21C79866400EB6A93 /* InspectorProtocolObjects.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorProtocolObjects.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9955A6F31C79866400EB6A93 /* InspectorProtocolObjects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorProtocolObjects.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 99C81D551C20DFBE005C4C82 /* AutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutomationClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99C81D561C20DFBE005C4C82 /* AutomationClient.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AutomationClient.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 99C81D5B1C20E817005C4C82 /* APIAutomationClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIAutomationClient.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5611,6 +5621,16 @@
</span><span class="cx">                         path = mac;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="cx">                 };
</span><ins>+                9955A6E81C79809000EB6A93 /* Automation */ = {
+                        isa = PBXGroup;
+                        children = (
+                                9955A6E91C7980BB00EB6A93 /* Automation.json */,
+                                9955A6EA1C7980BB00EB6A93 /* WebAutomationSession.cpp */,
+                                9955A6EB1C7980BB00EB6A93 /* WebAutomationSession.h */,
+                        );
+                        path = Automation;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 A182D5B11BE6BCF40087A7CC /* ios */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -5805,6 +5825,7 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 BC032DC410F4387C0058C15A /* API */,
</span><span class="cx">                                 512F588D12A8836F00629530 /* Authentication */,
</span><ins>+                                9955A6E81C79809000EB6A93 /* Automation */,
</ins><span class="cx">                                 1ABC3DF21899E415004F0626 /* Cocoa */,
</span><span class="cx">                                 1AB7D4C71288AA9A00CFD08C /* Downloads */,
</span><span class="cx">                                 2DA944A81884E9AB00ED86DB /* ios */,
</span><span class="lines">@@ -5856,8 +5877,6 @@
</span><span class="cx">                                 1A0F29E1120B44420053D1B9 /* VisitedLinkStore.cpp */,
</span><span class="cx">                                 1A0F29E2120B44420053D1B9 /* VisitedLinkStore.h */,
</span><span class="cx">                                 1A60224918C16B0800C3E8C9 /* VisitedLinkStore.messages.in */,
</span><del>-                                990D28BD1C65490A00986977 /* WebAutomationSession.cpp */,
-                                990D28B51C6526F500986977 /* WebAutomationSession.h */,
</del><span class="cx">                                 BC72BA1B11E64907001EB4EA /* WebBackForwardList.cpp */,
</span><span class="cx">                                 BC72BA1C11E64907001EB4EA /* WebBackForwardList.h */,
</span><span class="cx">                                 F036978715F4BF0500C3A80E /* WebColorPicker.cpp */,
</span><span class="lines">@@ -6830,6 +6849,10 @@
</span><span class="cx">                                 1A64230712DD09EB00CAAE2C /* DrawingAreaProxyMessages.h */,
</span><span class="cx">                                 1AA575FF1496B7C000A4EE06 /* EventDispatcherMessageReceiver.cpp */,
</span><span class="cx">                                 1AA576001496B7C000A4EE06 /* EventDispatcherMessages.h */,
</span><ins>+                                9955A6F01C79866400EB6A93 /* InspectorBackendDispatchers.cpp */,
+                                9955A6F11C79866400EB6A93 /* InspectorBackendDispatchers.h */,
+                                9955A6F21C79866400EB6A93 /* InspectorProtocolObjects.cpp */,
+                                9955A6F31C79866400EB6A93 /* InspectorProtocolObjects.h */,
</ins><span class="cx">                                 51DD9F2616367DA2001578E9 /* NetworkConnectionToWebProcessMessageReceiver.cpp */,
</span><span class="cx">                                 51DD9F2716367DA2001578E9 /* NetworkConnectionToWebProcessMessages.h */,
</span><span class="cx">                                 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */,
</span><span class="lines">@@ -7172,6 +7195,7 @@
</span><span class="cx">                                 93E6A4EE1BC5DD3900F8A0E7 /* _WKHitTestResult.h in Headers */,
</span><span class="cx">                                 93A88B3B1BC710D900ABA5C2 /* _WKHitTestResultInternal.h in Headers */,
</span><span class="cx">                                 37A64E5518F38E3C00EB30F1 /* _WKInputDelegate.h in Headers */,
</span><ins>+                                9955A6EF1C79810800EB6A93 /* Automation.json in Headers */,
</ins><span class="cx">                                 2D790A9D1AD7050D00AB90B3 /* _WKLayoutMode.h in Headers */,
</span><span class="cx">                                 A118A9F31908B8EA00F7C92B /* _WKNSFileManagerExtras.h in Headers */,
</span><span class="cx">                                 9323611E1B015DA800FA9232 /* _WKOverlayScrollbarStyle.h in Headers */,
</span><span class="lines">@@ -7352,12 +7376,12 @@
</span><span class="cx">                                 E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */,
</span><span class="cx">                                 BC14E10A120B905E00826C0C /* InjectedBundlePageFormClient.h in Headers */,
</span><span class="cx">                                 510523821C7541FF007993CB /* LegacyUniqueIDBDatabaseIdentifier.h in Headers */,
</span><del>-                                990D28C11C65626500986977 /* WebAutomationSession.h in Headers */,
</del><span class="cx">                                 CD5C66A1134B9D38004FE2A8 /* InjectedBundlePageFullScreenClient.h in Headers */,
</span><span class="cx">                                 BCA8C6A911E3BA5F00812FB7 /* InjectedBundlePageLoaderClient.h in Headers */,
</span><span class="cx">                                 510523801C7541FF007993CB /* LegacyUniqueIDBDatabase.h in Headers */,
</span><span class="cx">                                 BC8147A912F64CDA007B2C32 /* InjectedBundlePagePolicyClient.h in Headers */,
</span><span class="cx">                                 BCA8C6B011E3C08700812FB7 /* InjectedBundlePageUIClient.h in Headers */,
</span><ins>+                                9955A6F71C7986E500EB6A93 /* InspectorProtocolObjects.h in Headers */,
</ins><span class="cx">                                 BC33E0D112408E8600360F3F /* InjectedBundleRangeHandle.h in Headers */,
</span><span class="cx">                                 BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */,
</span><span class="cx">                                 C58CDF2A1887548B00871536 /* InteractionInformationAtPosition.h in Headers */,
</span><span class="lines">@@ -7422,6 +7446,7 @@
</span><span class="cx">                                 E14A954A16E016A40068DE82 /* NetworkProcessPlatformStrategies.h in Headers */,
</span><span class="cx">                                 5179556E162877B300FA43B6 /* NetworkProcessProxy.h in Headers */,
</span><span class="cx">                                 513A163D163088F6005D7D22 /* NetworkProcessProxyMessages.h in Headers */,
</span><ins>+                                9955A6F51C7986E000EB6A93 /* InspectorBackendDispatchers.h in Headers */,
</ins><span class="cx">                                 51FD18B61651FBAD00DBE1CE /* NetworkResourceLoader.h in Headers */,
</span><span class="cx">                                 E152551B17011819003D7ADB /* NetworkResourceLoaderMessages.h in Headers */,
</span><span class="cx">                                 5C20CBA01BB1ECD800895BB1 /* NetworkSession.h in Headers */,
</span><span class="lines">@@ -7524,6 +7549,7 @@
</span><span class="cx">                                 1A002D49196B345D00B9AD44 /* SessionStateCoding.h in Headers */,
</span><span class="cx">                                 753E3E0E1887398900188496 /* SessionTracker.h in Headers */,
</span><span class="cx">                                 99C81D5A1C20E7E2005C4C82 /* AutomationClient.h in Headers */,
</span><ins>+                                9955A6EC1C7980C200EB6A93 /* WebAutomationSession.h in Headers */,
</ins><span class="cx">                                 1A6420E512DCE2FF00CAAE2C /* ShareableBitmap.h in Headers */,
</span><span class="cx">                                 51217461164C20E30037A5C1 /* ShareableResource.h in Headers */,
</span><span class="cx">                                 1A24BED5120894D100FBB059 /* SharedMemory.h in Headers */,
</span><span class="lines">@@ -8613,7 +8639,7 @@
</span><span class="cx">                         );
</span><span class="cx">                         runOnlyForDeploymentPostprocessing = 0;
</span><span class="cx">                         shellPath = /bin/sh;
</span><del>-                        shellScript = &quot;mkdir -p \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit2\&quot;\ncd \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit2\&quot;\n\nexport WebKit2=\&quot;${SRCROOT}\&quot;\n\nif [ ! $CC ]; then\n    export CC=\&quot;`xcrun -find clang`\&quot;\nfi\n\nMAKEFILE_INCLUDE_FLAGS=$(echo \&quot;${WEBKITADDITIONS_HEADER_SEARCH_PATHS}\&quot; | perl -e 'print \&quot;-I\&quot; . join(\&quot; -I\&quot;, split(\&quot; \&quot;, &lt;&gt;));')\n\nif [ \&quot;${ACTION}\&quot; = \&quot;build\&quot; -o \&quot;${ACTION}\&quot; = \&quot;install\&quot; -o \&quot;${ACTION}\&quot; = \&quot;installhdrs\&quot; ]; then\n    make --no-builtin-rules ${MAKEFILE_INCLUDE_FLAGS} -f \&quot;${WebKit2}/DerivedSources.make\&quot; -j `/usr/sbin/sysctl -n hw.activecpu` SDKROOT=${SDKROOT}\nfi\n&quot;;
</del><ins>+                        shellScript = &quot;mkdir -p \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit2\&quot;\ncd \&quot;${BUILT_PRODUCTS_DIR}/DerivedSources/WebKit2\&quot;\n\nexport WebKit2=\&quot;${SRCROOT}\&quot;\n\n/bin/ln -sfh \&quot;${JAVASCRIPTCORE_PRIVATE_HEADERS_DIR}\&quot; JavaScriptCorePrivateHeaders\nexport JavaScriptCore_SCRIPTS_DIR=\&quot;JavaScriptCorePrivateHeaders\&quot;\n\nif [ ! $CC ]; then\n    export CC=\&quot;`xcrun -find clang`\&quot;\nfi\n\nMAKEFILE_INCLUDE_FLAGS=$(echo \&quot;${WEBKITADDITIONS_HEADER_SEARCH_PATHS}\&quot; | perl -e 'print \&quot;-I\&quot; . join(\&quot; -I\&quot;, split(\&quot; \&quot;, &lt;&gt;));')\n\nif [ \&quot;${ACTION}\&quot; = \&quot;build\&quot; -o \&quot;${ACTION}\&quot; = \&quot;install\&quot; -o \&quot;${ACTION}\&quot; = \&quot;installhdrs\&quot; ]; then\n    make --no-builtin-rules ${MAKEFILE_INCLUDE_FLAGS} -f \&quot;${WebKit2}/DerivedSources.make\&quot; -j `/usr/sbin/sysctl -n hw.activecpu` SDKROOT=${SDKROOT}\nfi\n&quot;;
</ins><span class="cx">                 };
</span><span class="cx"> /* End PBXShellScriptBuildPhase section */
</span><span class="cx"> 
</span><span class="lines">@@ -8648,6 +8674,7 @@
</span><span class="cx">                         files = (
</span><span class="cx">                                 37A5E01318BBF937000A081E /* _WKActivatedElementInfo.mm in Sources */,
</span><span class="cx">                                 1A5704F71BE01FF400874AF1 /* _WKContextMenuElementInfo.mm in Sources */,
</span><ins>+                                9955A6F41C7986DC00EB6A93 /* InspectorBackendDispatchers.cpp in Sources */,
</ins><span class="cx">                                 A1A4FE5B18DCE9FA00B5EA8A /* _WKDownload.mm in Sources */,
</span><span class="cx">                                 379A873918BBFE0F00588AF2 /* _WKElementAction.mm in Sources */,
</span><span class="cx">                                 1A5704F11BE0173F00874AF1 /* _WKElementInfo.mm in Sources */,
</span><span class="lines">@@ -9022,6 +9049,7 @@
</span><span class="cx">                                 1AC1336718565B5700F3EC05 /* UserData.cpp in Sources */,
</span><span class="cx">                                 15739BBC1B42040300D258C1 /* UserMediaPermissionRequestManager.cpp in Sources */,
</span><span class="cx">                                 4A3CC18A19B063E700D14AEF /* UserMediaPermissionRequestManagerProxy.cpp in Sources */,
</span><ins>+                                9955A6ED1C7980CA00EB6A93 /* WebAutomationSession.cpp in Sources */,
</ins><span class="cx">                                 4A3CC18C19B0641500D14AEF /* UserMediaPermissionRequestProxy.cpp in Sources */,
</span><span class="cx">                                 E4E864921B16750100C82F40 /* VersionChecks.mm in Sources */,
</span><span class="cx">                                 2DAF4FFB1B636181006013D6 /* ViewGestureController.cpp in Sources */,
</span><span class="lines">@@ -9156,6 +9184,7 @@
</span><span class="cx">                                 BC857FB612B830E600EDEB2E /* WebOpenPanelParameters.cpp in Sources */,
</span><span class="cx">                                 BC857F8612B82D0B00EDEB2E /* WebOpenPanelResultListener.cpp in Sources */,
</span><span class="cx">                                 BC857F7E12B82CEE00EDEB2E /* WebOpenPanelResultListenerProxy.cpp in Sources */,
</span><ins>+                                9955A6F61C7986E300EB6A93 /* InspectorProtocolObjects.cpp in Sources */,
</ins><span class="cx">                                 BC963D6B113DD19200574BE2 /* WebPage.cpp in Sources */,
</span><span class="cx">                                 C06C6095124C144B0001682F /* WebPageCreationParameters.cpp in Sources */,
</span><span class="cx">                                 8372DB281A67562800C697C5 /* WebPageDiagnosticLoggingClient.cpp in Sources */,
</span><span class="lines">@@ -9342,7 +9371,6 @@
</span><span class="cx">                                 C98C48A91B6FD5B500145103 /* WKMediaSessionFocusManager.cpp in Sources */,
</span><span class="cx">                                 C9CD439E1B4B025300239E33 /* WKMediaSessionMetadata.cpp in Sources */,
</span><span class="cx">                                 BC4075FD124FF0270068F20A /* WKMutableArray.cpp in Sources */,
</span><del>-                                990D28BF1C654D3900986977 /* WebAutomationSession.cpp in Sources */,
</del><span class="cx">                                 BC4075FF124FF0270068F20A /* WKMutableDictionary.cpp in Sources */,
</span><span class="cx">                                 1A5B1C501898606F004FCF9B /* WKNavigation.mm in Sources */,
</span><span class="cx">                                 1A256E3718A1A788006FB922 /* WKNavigationAction.mm in Sources */,
</span></span></pre>
</div>
</div>

</body>
</html>