<!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>[178714] 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/178714">178714</a></dd>
<dt>Author</dt> <dd>burg@cs.washington.edu</dd>
<dt>Date</dt> <dd>2015-01-20 08:52:18 -0800 (Tue, 20 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Replay: code generator should take supplemental specifications and allow cross-framework references
https://bugs.webkit.org/show_bug.cgi?id=136312

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Some types are shared between replay inputs from different frameworks.
Previously, these type declarations were duplicated in every input
specification file in which they were used. This caused some type encoding
traits to be emitted twice if used from WebCore inputs and WebKit2 inputs.

This patch teaches the replay inputs code generator to accept multiple
input specification files. Inputs can freely reference types from other
frameworks without duplicating declarations.

On the code generation side, the model could contain types and inputs from
frameworks that are not the target framework. Only generate code for the
target framework.

To properly generate cross-framework type encoding traits, use
Type.encoding_type_argument in more places, and add the export macro for WebCore
and the Test framework.

Adjust some tests so that enum coverage is preserved by moving the enum types
into &quot;Test&quot; (the target framework for tests).

* JavaScriptCore.vcxproj/copy-files.cmd:
For Windows, copy over JSInputs.json as if it were a private header.

* JavaScriptCore.xcodeproj/project.pbxproj: Make JSInputs.json a private header.
* replay/JSInputs.json:
Put all primitive types and WTF types in this specification file.

* replay/scripts/CodeGeneratorReplayInputs.py:
(Input.__init__):
(InputsModel.__init__): Keep track of the input's framework.
(InputsModel.parse_specification): Parse the framework here. Adjust to new format,
and allow either types or inputs to be missing from a single file.

(InputsModel.parse_type_with_framework):
(InputsModel.parse_input_with_framework):
(Generator.should_generate_item): Added helper method.
(Generator.generate_header): Filter inputs to generate.
(Generator.generate_implementation): Filter inputs to generate.
(Generator.generate_enum_trait_declaration): Filter enums to generate.
Add WEBCORE_EXPORT macro to enum encoding traits.

(Generator.generate_for_each_macro): Filter inputs to generate.
(Generator.generate_enum_trait_implementation): Filter enums to generate.
(generate_from_specifications): Added.
(generate_from_specifications.parse_json_from_file):
(InputsModel.parse_toplevel): Deleted.
(InputsModel.parse_type_with_framework_name): Deleted.
(InputsModel.parse_input): Deleted.
(generate_from_specification): Deleted.
* replay/scripts/CodeGeneratorReplayInputsTemplates.py:
* replay/scripts/tests/expected/fail-on-no-inputs.json-error: Removed.
* replay/scripts/tests/expected/fail-on-no-types.json-error: Removed.
* replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp:
* replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:
* replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp:
* replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp:
* replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h:
* replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h:
* replay/scripts/tests/fail-on-c-style-enum-no-storage.json:
* replay/scripts/tests/fail-on-duplicate-enum-type.json:
* replay/scripts/tests/fail-on-duplicate-input-names.json:
* replay/scripts/tests/fail-on-duplicate-type-names.json:
* replay/scripts/tests/fail-on-enum-type-missing-values.json:
* replay/scripts/tests/fail-on-missing-input-member-name.json:
* replay/scripts/tests/fail-on-missing-input-name.json:
* replay/scripts/tests/fail-on-missing-input-queue.json:
* replay/scripts/tests/fail-on-missing-type-mode.json:
* replay/scripts/tests/fail-on-missing-type-name.json:
* replay/scripts/tests/fail-on-no-inputs.json:
Removed, no longer required to be in a single file.

* replay/scripts/tests/fail-on-no-types.json:
Removed, no longer required to be in a single file.

* replay/scripts/tests/fail-on-unknown-input-queue.json:
* replay/scripts/tests/fail-on-unknown-member-type.json:
* replay/scripts/tests/fail-on-unknown-type-mode.json:
* replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json:
* replay/scripts/tests/generate-enum-encoding-helpers.json:
* replay/scripts/tests/generate-enum-with-guard.json:
Include enums that are and are not generated.

* replay/scripts/tests/generate-enums-with-same-base-name.json:
* replay/scripts/tests/generate-event-loop-shape-types.json:
* replay/scripts/tests/generate-input-with-guard.json:
* replay/scripts/tests/generate-input-with-vector-members.json:
* replay/scripts/tests/generate-inputs-with-flags.json:
* replay/scripts/tests/generate-memoized-type-modes.json:

Source/WebCore:

Changes covered by existing input generator tests.

* DerivedSources.make: Add JSInputs.json as supplemental specification.
* replay/WebInputs.json: Moved common types to JSInputs.json.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayJSInputsjson">trunk/Source/JavaScriptCore/replay/JSInputs.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptsCodeGeneratorReplayInputspy">trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptsCodeGeneratorReplayInputsTemplatespy">trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelperswithguardedvaluesjsonTestReplayInputscpp">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelperswithguardedvaluesjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelpersjsonTestReplayInputscpp">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelpersjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumwithguardjsonTestReplayInputscpp">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumwithguardjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumswithsamebasenamejsonTestReplayInputscpp">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumswithsamebasenamejsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputwithguardjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputwithvectormembersjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputswithflagsjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedgeneratememoizedtypemodesjsonTestReplayInputsh">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailoncstyleenumnostoragejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-c-style-enum-no-storage.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonduplicateenumtypejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-enum-type.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonduplicateinputnamesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-input-names.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonduplicatetypenamesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-type-names.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonenumtypemissingvaluesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-enum-type-missing-values.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputmembernamejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-member-name.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputnamejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-name.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputqueuejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-queue.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonmissingtypemodejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-mode.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonmissingtypenamejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-name.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonunknowninputqueuejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-input-queue.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonunknownmembertypejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-member-type.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonunknowntypemodejson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-type-mode.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateenumencodinghelperswithguardedvaluesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateenumencodinghelpersjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateenumwithguardjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-with-guard.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateenumswithsamebasenamejson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enums-with-same-base-name.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateeventloopshapetypesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-event-loop-shape-types.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateinputwithguardjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-guard.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateinputwithvectormembersjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-vector-members.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgenerateinputswithflagsjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsgeneratememoizedtypemodesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/generate-memoized-type-modes.json</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCorereplayWebInputsjson">trunk/Source/WebCore/replay/WebInputs.json</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedfailonnoinputsjsonerror">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-inputs.json-error</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsexpectedfailonnotypesjsonerror">trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-types.json-error</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonnoinputsjson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-inputs.json</a></li>
<li><a href="#trunkSourceJavaScriptCorereplayscriptstestsfailonnotypesjson">trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-types.json</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,3 +1,105 @@
</span><ins>+2015-01-19  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
+        Web Replay: code generator should take supplemental specifications and allow cross-framework references
+        https://bugs.webkit.org/show_bug.cgi?id=136312
+
+        Reviewed by Joseph Pecoraro.
+
+        Some types are shared between replay inputs from different frameworks.
+        Previously, these type declarations were duplicated in every input
+        specification file in which they were used. This caused some type encoding
+        traits to be emitted twice if used from WebCore inputs and WebKit2 inputs.
+
+        This patch teaches the replay inputs code generator to accept multiple
+        input specification files. Inputs can freely reference types from other
+        frameworks without duplicating declarations.
+
+        On the code generation side, the model could contain types and inputs from
+        frameworks that are not the target framework. Only generate code for the
+        target framework.
+
+        To properly generate cross-framework type encoding traits, use
+        Type.encoding_type_argument in more places, and add the export macro for WebCore
+        and the Test framework.
+
+        Adjust some tests so that enum coverage is preserved by moving the enum types
+        into &quot;Test&quot; (the target framework for tests).
+
+        * JavaScriptCore.vcxproj/copy-files.cmd:
+        For Windows, copy over JSInputs.json as if it were a private header.
+
+        * JavaScriptCore.xcodeproj/project.pbxproj: Make JSInputs.json a private header.
+        * replay/JSInputs.json:
+        Put all primitive types and WTF types in this specification file.
+
+        * replay/scripts/CodeGeneratorReplayInputs.py:
+        (Input.__init__):
+        (InputsModel.__init__): Keep track of the input's framework.
+        (InputsModel.parse_specification): Parse the framework here. Adjust to new format,
+        and allow either types or inputs to be missing from a single file.
+
+        (InputsModel.parse_type_with_framework):
+        (InputsModel.parse_input_with_framework):
+        (Generator.should_generate_item): Added helper method.
+        (Generator.generate_header): Filter inputs to generate.
+        (Generator.generate_implementation): Filter inputs to generate.
+        (Generator.generate_enum_trait_declaration): Filter enums to generate.
+        Add WEBCORE_EXPORT macro to enum encoding traits.
+
+        (Generator.generate_for_each_macro): Filter inputs to generate.
+        (Generator.generate_enum_trait_implementation): Filter enums to generate.
+        (generate_from_specifications): Added.
+        (generate_from_specifications.parse_json_from_file):
+        (InputsModel.parse_toplevel): Deleted.
+        (InputsModel.parse_type_with_framework_name): Deleted.
+        (InputsModel.parse_input): Deleted.
+        (generate_from_specification): Deleted.
+        * replay/scripts/CodeGeneratorReplayInputsTemplates.py:
+        * replay/scripts/tests/expected/fail-on-no-inputs.json-error: Removed.
+        * replay/scripts/tests/expected/fail-on-no-types.json-error: Removed.
+        * replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp:
+        * replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:
+        * replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp:
+        * replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp:
+        * replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h:
+        * replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h:
+        * replay/scripts/tests/fail-on-c-style-enum-no-storage.json:
+        * replay/scripts/tests/fail-on-duplicate-enum-type.json:
+        * replay/scripts/tests/fail-on-duplicate-input-names.json:
+        * replay/scripts/tests/fail-on-duplicate-type-names.json:
+        * replay/scripts/tests/fail-on-enum-type-missing-values.json:
+        * replay/scripts/tests/fail-on-missing-input-member-name.json:
+        * replay/scripts/tests/fail-on-missing-input-name.json:
+        * replay/scripts/tests/fail-on-missing-input-queue.json:
+        * replay/scripts/tests/fail-on-missing-type-mode.json:
+        * replay/scripts/tests/fail-on-missing-type-name.json:
+        * replay/scripts/tests/fail-on-no-inputs.json:
+        Removed, no longer required to be in a single file.
+
+        * replay/scripts/tests/fail-on-no-types.json:
+        Removed, no longer required to be in a single file.
+
+        * replay/scripts/tests/fail-on-unknown-input-queue.json:
+        * replay/scripts/tests/fail-on-unknown-member-type.json:
+        * replay/scripts/tests/fail-on-unknown-type-mode.json:
+        * replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json:
+        * replay/scripts/tests/generate-enum-encoding-helpers.json:
+        * replay/scripts/tests/generate-enum-with-guard.json:
+        Include enums that are and are not generated.
+
+        * replay/scripts/tests/generate-enums-with-same-base-name.json:
+        * replay/scripts/tests/generate-event-loop-shape-types.json:
+        * replay/scripts/tests/generate-input-with-guard.json:
+        * replay/scripts/tests/generate-input-with-vector-members.json:
+        * replay/scripts/tests/generate-inputs-with-flags.json:
+        * replay/scripts/tests/generate-memoized-type-modes.json:
+
</ins><span class="cx"> 2015-01-20  Tomas Popela  &lt;tpopela@redhat.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [GTK] Cannot compile 2.7.3 on PowerPC machines
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojcopyfilescmd"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/copy-files.cmd        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -86,9 +86,12 @@
</span><span class="cx"> echo Copying Web Replay generated headers as if they were private headers...
</span><span class="cx"> xcopy /y &quot;%DerivedSourcesDirectory%\JSReplayInputs.h&quot; &quot;%PrivateHeadersDirectory%&quot; &gt;NUL
</span><span class="cx"> 
</span><ins>+echo Copying Web Replay specification files as if they were private headers...
+xcopy /y /d ..\replay\*.json &quot;%PrivateHeadersDirectory%&quot; &gt;NUL
+
</ins><span class="cx"> echo Copying builtins header as if it were a private header...
</span><span class="cx"> xcopy /y &quot;%DerivedSourcesDirectory%\JSCBuiltins.h&quot; &quot;%PrivateHeadersDirectory%&quot; &gt;NUL
</span><del>-xcopy /y &quot;%DerivedSourcesDirectory%\Bytecodes.h&quot; &quot;%PrivateHeadersDirectory%&quot; &gt;NUL
</del><ins>+xcopy /y &quot;%DerivedSourcesDirectory%\Bytecodes.h&quot; &quot;%PrivateHeadersDirectory%&quot; &gt;NUL
</ins><span class="cx"> 
</span><span class="cx"> echo Copying resources...
</span><span class="cx"> mkdir &quot;%ResourcesDirectory%&quot; 2&gt;NUL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1575,6 +1575,7 @@
</span><span class="cx">                 C2FCAE1217A9C24E0034C735 /* BytecodeLivenessAnalysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2FCAE0E17A9C24E0034C735 /* BytecodeLivenessAnalysis.cpp */; };
</span><span class="cx">                 C2FCAE1317A9C24E0034C735 /* BytecodeLivenessAnalysis.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FCAE0F17A9C24E0034C735 /* BytecodeLivenessAnalysis.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 C2FE18A416BAEC4000AF3061 /* StructureRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = C2FE18A316BAEC4000AF3061 /* StructureRareData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                C442CB251A6CDB8C005D3D7C /* JSInputs.json in Headers */ = {isa = PBXBuildFile; fileRef = 9928FF3D18AC4B1C00B8CF12 /* JSInputs.json */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 C4703CC0192844960013FBEA /* generate-inspector-protocol-bindings.py in Headers */ = {isa = PBXBuildFile; fileRef = C4703CBF192844960013FBEA /* generate-inspector-protocol-bindings.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 C4703CCE192844CC0013FBEA /* generate_js_backend_commands.py in Headers */ = {isa = PBXBuildFile; fileRef = C4703CC3192844CC0013FBEA /* generate_js_backend_commands.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 C4703CD5192844CC0013FBEA /* generator_templates.py in Headers */ = {isa = PBXBuildFile; fileRef = C4703CCA192844CC0013FBEA /* generator_templates.py */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -5386,6 +5387,7 @@
</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>+                                C442CB251A6CDB8C005D3D7C /* JSInputs.json in Headers */,
</ins><span class="cx">                                 52678F911A04177C006A306D /* ControlFlowProfiler.h in Headers */,
</span><span class="cx">                                 52678F8F1A031009006A306D /* BasicBlockLocation.h in Headers */,
</span><span class="cx">                                 A5EA710E19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h in Headers */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayJSInputsjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/JSInputs.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/JSInputs.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/JSInputs.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,27 +1,49 @@
</span><span class="cx"> {
</span><span class="cx">     &quot;types&quot;: {
</span><span class="cx">         &quot;Global&quot;: [
</span><ins>+            { &quot;name&quot;: &quot;bool&quot;, &quot;mode&quot;: &quot;SCALAR&quot; },
</ins><span class="cx">             { &quot;name&quot;: &quot;double&quot;, &quot;mode&quot;: &quot;SCALAR&quot; },
</span><del>-            { &quot;name&quot;: &quot;uint64_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot; }
</del><ins>+            { &quot;name&quot;: &quot;uint32_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Unsigned 32-bit integer.&quot; },
+            { &quot;name&quot;: &quot;uint64_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Unsigned 64-bit integer.&quot; },
+            { &quot;name&quot;: &quot;int32_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Signed 32-bit integer.&quot; },
+            { &quot;name&quot;: &quot;int64_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Signed 64-bit integer.&quot; }
+        ],
+
+        &quot;WTF&quot;: [
+            {
+                &quot;name&quot;: &quot;String&quot;, &quot;mode&quot;: &quot;HEAVY_SCALAR&quot;,
+                &quot;header&quot;: &quot;wtf/text/WTFString.h&quot;
+            }
+        ],
+
+        &quot;JavaScriptCore&quot;: [
+            {
+                &quot;name&quot;: &quot;InputQueue&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint8_t&quot;,
+                &quot;flags&quot;: [&quot;ENUM_CLASS&quot;],
+                &quot;values&quot;: [&quot;EventLoopInput&quot;, &quot;LoaderMemoizedData&quot;, &quot;ScriptMemoizedData&quot;, &quot;Count&quot;],
+                &quot;header&quot;: &quot;replay/NondeterministicInput.h&quot;
+            }
</ins><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;SetRandomSeed&quot;,
-            &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;JavaScriptCore&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;SetRandomSeed&quot;,
+                &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptsCodeGeneratorReplayInputspy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputs.py        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -112,11 +112,13 @@
</span><span class="cx">     &quot;WebCore&quot;: {
</span><span class="cx">         &quot;prefix&quot;: &quot;Web&quot;,
</span><span class="cx">         &quot;namespace&quot;: &quot;WebCore&quot;,
</span><ins>+        &quot;exportMacro&quot;: &quot;WEBCORE_EXPORT&quot;
</ins><span class="cx">     },
</span><span class="cx">     # Used for bindings tests.
</span><span class="cx">     &quot;Test&quot;: {
</span><span class="cx">         &quot;prefix&quot;: &quot;Test&quot;,
</span><span class="cx">         &quot;namespace&quot;: &quot;Test&quot;,
</span><ins>+        &quot;exportMacro&quot;: &quot;TEST_EXPORT_MACRO&quot;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -215,9 +217,10 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class Input:
</span><del>-    def __init__(self, name, description, queueString, flags, guard=None):
</del><ins>+    def __init__(self, name, description, framework, queueString, flags, guard=None):
</ins><span class="cx">         self.name = name
</span><span class="cx">         self.description = description
</span><ins>+        self.framework = framework
</ins><span class="cx">         self.queue = InputQueue.fromString(queueString)
</span><span class="cx">         self._flags = flags
</span><span class="cx">         self.guard = guard
</span><span class="lines">@@ -397,7 +400,7 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class InputsModel:
</span><del>-    def __init__(self, parsed_json):
</del><ins>+    def __init__(self):
</ins><span class="cx">         self.inputs = []
</span><span class="cx">         self.types = []
</span><span class="cx"> 
</span><span class="lines">@@ -406,8 +409,6 @@
</span><span class="cx">         self.types_by_name = {}
</span><span class="cx">         self.inputs_by_name = {}
</span><span class="cx"> 
</span><del>-        self.parse_toplevel(parsed_json)
-
</del><span class="cx">     def enum_types(self):
</span><span class="cx">         _enums = filter(lambda x: x.is_enum() or x.is_enum_class(), self.types)
</span><span class="cx">         return sorted(_enums, key=lambda _enum: _enum.type_name())
</span><span class="lines">@@ -418,27 +419,33 @@
</span><span class="cx">         else:
</span><span class="cx">             return self.types_by_name.get(member.typeName)
</span><span class="cx"> 
</span><del>-    def parse_toplevel(self, json):
-        check_for_required_properties(['types', 'inputs'], json, 'toplevel')
-        if not isinstance(json['types'], dict):
-            raise ParseException(&quot;Malformed specification: types is not a dict of framework-&gt;type list&quot;)
</del><ins>+    def parse_specification(self, json):
+        if 'types' in json:
+            if not isinstance(json['types'], dict):
+                raise ParseException(&quot;Malformed specification: types is not a dict of framework-&gt;type list&quot;)
</ins><span class="cx"> 
</span><del>-        if not isinstance(json['inputs'], list):
-            raise ParseException(&quot;Malformed specification: inputs is not an array&quot;)
</del><ins>+            for framework_name, type_list in json['types'].iteritems():
+                if not isinstance(type_list, list):
+                    raise ParseException(&quot;Malformed specification: type list for framework %s is not a list&quot; % framework_name)
</ins><span class="cx"> 
</span><del>-        for type_framework_name, type_list in json['types'].iteritems():
-            if not isinstance(type_list, list):
-                raise ParseException(&quot;Malformed specification: type list for framework %s is not a list&quot; % type_framework_name)
</del><ins>+                framework = Framework.fromString(framework_name)
+                for _type in type_list:
+                    self.parse_type_with_framework(_type, framework)
</ins><span class="cx"> 
</span><del>-            for _type in type_list:
-                self.parse_type_with_framework_name(_type, type_framework_name)
</del><ins>+        if 'inputs' in json:
+            if not isinstance(json['inputs'], dict):
+                raise ParseException(&quot;Malformed specification: inputs is not a dict of framework-&gt;input list&quot;)
</ins><span class="cx"> 
</span><del>-        for val in json['inputs']:
-            self.parse_input(val)
</del><ins>+            for framework_name, input_list in json['inputs'].iteritems():
+                if not isinstance(input_list, list):
+                    raise ParseException(&quot;Malformed specification: input list for framework %s is not a list&quot; % framework_name)
</ins><span class="cx"> 
</span><del>-    def parse_type_with_framework_name(self, json, framework_name):
</del><ins>+                framework = Framework.fromString(framework_name)
+                for _input in input_list:
+                    self.parse_input_with_framework(_input, framework)
+
+    def parse_type_with_framework(self, json, framework):
</ins><span class="cx">         check_for_required_properties(['name', 'mode'], json, 'type')
</span><del>-        framework = Framework.fromString(framework_name)
</del><span class="cx">         if framework is not Frameworks.Global:
</span><span class="cx">             check_for_required_properties(['header'], json, 'non-global type')
</span><span class="cx"> 
</span><span class="lines">@@ -462,9 +469,9 @@
</span><span class="cx"> 
</span><span class="cx">         self.types.append(_type)
</span><span class="cx"> 
</span><del>-    def parse_input(self, json):
</del><ins>+    def parse_input_with_framework(self, json, framework):
</ins><span class="cx">         check_for_required_properties(['name', 'description', 'queue', 'members'], json, 'input')
</span><del>-        _input = Input(json['name'], json['description'], json['queue'], json.get('flags', []), json.get('guard'))
</del><ins>+        _input = Input(json['name'], json['description'], framework, json['queue'], json.get('flags', []), json.get('guard'))
</ins><span class="cx">         if isinstance(json['members'], list):
</span><span class="cx">             for member in json['members']:
</span><span class="cx">                 check_for_required_properties(['name', 'type'], member, 'member')
</span><span class="lines">@@ -563,6 +570,9 @@
</span><span class="cx">     def setting(self, key, default=''):
</span><span class="cx">         return self.target_framework.setting(key, GLOBAL_CONFIG.get(key, default))
</span><span class="cx"> 
</span><ins>+    def should_generate_item(self, item):
+        return item.framework is self.target_framework
+
</ins><span class="cx">     # This does not account for any filename mangling performed on behalf of the test harness.
</span><span class="cx">     def output_filename(self, extension=None):
</span><span class="cx">         components = []
</span><span class="lines">@@ -587,6 +597,9 @@
</span><span class="cx">         implementation_file.close()
</span><span class="cx"> 
</span><span class="cx">     def generate_header(self):
</span><ins>+        enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
+        inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
+
</ins><span class="cx">         template_arguments = {
</span><span class="cx">             'licenseBlock': self.generate_license(),
</span><span class="cx">             'headerGuard': re.sub('[-./]', '_', self.output_filename() + &quot;.h&quot;),
</span><span class="lines">@@ -596,17 +609,20 @@
</span><span class="cx">             'inputsNamespace': self.target_framework.setting('namespace'),
</span><span class="cx">             'includes': self.generate_includes(defaults=self.setting('headerIncludes')),
</span><span class="cx">             'typeForwardDeclarations': self.generate_type_forward_declarations(),
</span><del>-            'inputForwardDeclarations': &quot;\n&quot;.join([wrap_with_guard(&quot;class %s;&quot;, _input.guard) % _input.name for _input in self._model.inputs]),
-            'inputClassDeclarations': &quot;\n\n&quot;.join([self.generate_class_declaration(_input) for _input in self._model.inputs]),
-            'inputTraitDeclarations': &quot;\n\n&quot;.join([self.generate_input_trait_declaration(_input) for _input in self._model.inputs]),
-            'inputTypeTraitDeclarations': &quot;\n\n&quot;.join([self.generate_input_type_trait_declaration(_input) for _input in self._model.inputs]),
-            'enumTraitDeclarations': &quot;\n\n&quot;.join([wrap_with_guard(self.generate_enum_trait_declaration(_type), _type.guard) for _type in self._model.enum_types()]),
</del><ins>+            'inputForwardDeclarations': &quot;\n&quot;.join([wrap_with_guard(&quot;class %s;&quot;, _input.guard) % _input.name for _input in inputs_to_generate]),
+            'inputClassDeclarations': &quot;\n\n&quot;.join([self.generate_class_declaration(_input) for _input in inputs_to_generate]),
+            'inputTraitDeclarations': &quot;\n\n&quot;.join([self.generate_input_trait_declaration(_input) for _input in inputs_to_generate]),
+            'inputTypeTraitDeclarations': &quot;\n\n&quot;.join([self.generate_input_type_trait_declaration(_input) for _input in inputs_to_generate]),
+            'enumTraitDeclarations': &quot;\n\n&quot;.join([wrap_with_guard(self.generate_enum_trait_declaration(_type), _type.guard) for _type in enums_to_generate]),
</ins><span class="cx">             'forEachMacro': self.generate_for_each_macro(),
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         return Template(Templates.HeaderSkeleton).substitute(template_arguments)
</span><span class="cx"> 
</span><span class="cx">     def generate_implementation(self):
</span><ins>+        enums_to_generate = filter(self.should_generate_item, self._model.enum_types())
+        inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
+
</ins><span class="cx">         template_arguments = {
</span><span class="cx">             'licenseBlock': self.generate_license(),
</span><span class="cx">             'filename': self.output_filename(),
</span><span class="lines">@@ -614,9 +630,9 @@
</span><span class="cx">             'traitsNamespace': self.traits_framework.setting('namespace'),
</span><span class="cx">             'inputsNamespace': self.target_framework.setting('namespace'),
</span><span class="cx">             'includes': self.generate_includes(defaults=self.setting('implIncludes'), includes_for_types=True),
</span><del>-            'inputClassImplementations': &quot;\n\n&quot;.join([self.generate_class_implementation(_input) for _input in self._model.inputs]),
-            'inputTraitImplementations': &quot;\n\n&quot;.join([self.generate_input_trait_implementation(_input) for _input in self._model.inputs]),
-            'enumTraitImplementations': &quot;\n\n&quot;.join([wrap_with_guard(self.generate_enum_trait_implementation(_type), _type.guard) for _type in self._model.enum_types()]),
</del><ins>+            'inputClassImplementations': &quot;\n\n&quot;.join([self.generate_class_implementation(_input) for _input in inputs_to_generate]),
+            'inputTraitImplementations': &quot;\n\n&quot;.join([self.generate_input_trait_implementation(_input) for _input in inputs_to_generate]),
+            'enumTraitImplementations': &quot;\n\n&quot;.join([wrap_with_guard(self.generate_enum_trait_implementation(_type), _type.guard) for _type in enums_to_generate]),
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         return Template(Templates.ImplementationSkeleton).substitute(template_arguments)
</span><span class="lines">@@ -778,18 +794,26 @@
</span><span class="cx">         return wrap_with_guard(Template(Templates.InputTypeTraitsDeclaration).substitute(template_arguments), _input.guard)
</span><span class="cx"> 
</span><span class="cx">     def generate_enum_trait_declaration(self, _type):
</span><ins>+        decl_type = ['struct']
+        if len(self.setting('exportMacro')) &gt; 0:
+            decl_type.append(self.setting('exportMacro'))
+
</ins><span class="cx">         should_qualify_type = _type.framework != self.traits_framework
</span><span class="cx">         template = Templates.EnumTraitDeclaration if _type.is_enum() else Templates.EnumClassTraitDeclaration
</span><span class="cx">         template_arguments = {
</span><del>-            'enumName': _type.type_name(qualified=should_qualify_type),
</del><ins>+            'encodingTypeArgument': _type.encoding_type_argument(qualified=should_qualify_type),
+            'enumType': _type.type_name(qualified=should_qualify_type),
+            'structOrClass': &quot; &quot;.join(decl_type)
</ins><span class="cx">         }
</span><span class="cx">         return Template(template).substitute(template_arguments)
</span><span class="cx"> 
</span><span class="cx">     def generate_for_each_macro(self):
</span><ins>+        inputs_to_generate = filter(self.should_generate_item, self._model.inputs)
+
</ins><span class="cx">         macro_name = &quot;%s_REPLAY_INPUT_NAMES_FOR_EACH&quot; % self.setting('prefix').upper()
</span><span class="cx">         lines = []
</span><span class="cx">         lines.append(&quot;#define %s(macro) \\&quot; % macro_name)
</span><del>-        lines.extend([&quot;    macro(%s) \\&quot; % _input.name for _input in self._model.inputs])
</del><ins>+        lines.extend([&quot;    macro(%s) \\&quot; % _input.name for _input in inputs_to_generate])
</ins><span class="cx">         lines.append(&quot;    \\&quot;)
</span><span class="cx">         lines.append(&quot;// end of %s&quot; % macro_name)
</span><span class="cx">         return &quot;\n&quot;.join(lines)
</span><span class="lines">@@ -869,7 +893,8 @@
</span><span class="cx">             decodeLines.append(wrap_with_guard(&quot;\n&quot;.join(guardedLines), guard))
</span><span class="cx"> 
</span><span class="cx">         template_arguments = {
</span><del>-            'enumName': _type.type_name(qualified=should_qualify_type),
</del><ins>+            'encodingTypeArgument': _type.encoding_type_argument(qualified=should_qualify_type),
+            'enumType': _type.type_name(qualified=should_qualify_type),
</ins><span class="cx">             'encodeCases': &quot;\n&quot;.join(encodeLines),
</span><span class="cx">             'decodeCases': &quot;\n&quot;.join(decodeLines)
</span><span class="cx">         }
</span><span class="lines">@@ -959,19 +984,29 @@
</span><span class="cx">         return &quot;, &quot;.join([self.generate_member_move_expression(_member) for _member in _input.members])
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def generate_from_specification(input_filepath=None, output_prefix=&quot;&quot;, output_dirpath=None, framework_name=None, force_output=False):
-    try:
-        with open(input_filepath, &quot;r&quot;) as input_file:
-            parsed_json = json.load(input_file)
-    except ValueError as e:
-        raise Exception(&quot;Error parsing valid JSON in file: &quot; + input_filepath)
</del><ins>+def generate_from_specifications(input_filepaths=[], output_prefix=&quot;&quot;, output_dirpath=None, framework_name=None, force_output=False):
</ins><span class="cx"> 
</span><span class="cx">     if not framework_name in FRAMEWORK_CONFIG_MAP:
</span><span class="cx">         raise ParseException(&quot;Unknown or unsupported framework name supplied: &quot; + framework_name)
</span><span class="cx"> 
</span><del>-    model = InputsModel(parsed_json)
</del><ins>+    if len(input_filepaths) == 0:
+        raise ParseException(&quot;Must provide at least one specification file, none were provided.&quot;)
+
+    def parse_json_from_file(input_filepath):
+        try:
+            with open(input_filepath, &quot;r&quot;) as input_file:
+                return json.load(input_file)
+        except ValueError as e:
+            raise Exception(&quot;Error parsing valid JSON in file: &quot; + input_filepath)
+
+    specifications = map(parse_json_from_file, input_filepaths)
+
+    model = InputsModel()
+    for spec in specifications:
+        model.parse_specification(spec)
+
</ins><span class="cx">     model.resolve_types()
</span><del>-    generator = Generator(model, framework_name, input_filepath, output_prefix)
</del><ins>+    generator = Generator(model, framework_name, input_filepaths[0], output_prefix)
</ins><span class="cx"> 
</span><span class="cx">     generator.write_output_files(output_dirpath, force_output)
</span><span class="cx"> 
</span><span class="lines">@@ -979,7 +1014,7 @@
</span><span class="cx"> if __name__ == '__main__':
</span><span class="cx">     allowed_framework_names = FRAMEWORK_CONFIG_MAP.keys()
</span><span class="cx"> 
</span><del>-    cli_parser = optparse.OptionParser(usage=&quot;usage: %prog [options] &lt;Inputs.json&gt;&quot;)
</del><ins>+    cli_parser = optparse.OptionParser(usage=&quot;usage: %prog [options] &lt;Inputs.json&gt; [, &lt;MoreInputs.json&gt; ]&quot;)
</ins><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 these inputs belong to.&quot;)  # JavaScriptCore, WebCore
</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="lines">@@ -989,8 +1024,6 @@
</span><span class="cx">     options = None
</span><span class="cx"> 
</span><span class="cx">     arg_options, arg_values = cli_parser.parse_args()
</span><del>-    if (len(arg_values) &lt; 1):
-        raise ParseException(&quot;At least one plain argument expected&quot;)
</del><span class="cx"> 
</span><span class="cx">     if not arg_options.outputDir:
</span><span class="cx">         raise ParseException(&quot;Missing output directory&quot;)
</span><span class="lines">@@ -999,7 +1032,7 @@
</span><span class="cx">         log.setLevel(logging.DEBUG)
</span><span class="cx"> 
</span><span class="cx">     options = {
</span><del>-        'input_filepath': arg_values[0],
</del><ins>+        'input_filepaths': arg_values,
</ins><span class="cx">         'output_dirpath': arg_options.outputDir,
</span><span class="cx">         'output_prefix': os.path.basename(arg_values[0]) if arg_options.test else &quot;&quot;,
</span><span class="cx">         'framework_name': arg_options.framework,
</span><span class="lines">@@ -1007,7 +1040,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     try:
</span><del>-        generate_from_specification(**options)
</del><ins>+        generate_from_specifications(**options)
</ins><span class="cx">     except (ParseException, TypecheckException) as e:
</span><span class="cx">         if arg_options.test:
</span><span class="cx">             log.error(e.message)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptsCodeGeneratorReplayInputsTemplatespy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/CodeGeneratorReplayInputsTemplates.py        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -112,19 +112,19 @@
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     EnumTraitDeclaration = (
</span><del>-    &quot;&quot;&quot;template&lt;&gt; struct EncodingTraits&lt;${enumName}&gt; {
-    typedef ${enumName} DecodedType;
</del><ins>+    &quot;&quot;&quot;template&lt;&gt; ${structOrClass} EncodingTraits&lt;${encodingTypeArgument}&gt; {
+    typedef ${enumType} DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const ${enumName}&amp; value);
-    static bool decodeValue(EncodedValue&amp;, ${enumName}&amp; value);
</del><ins>+    static EncodedValue encodeValue(const ${enumType}&amp; value);
+    static bool decodeValue(EncodedValue&amp;, ${enumType}&amp; value);
</ins><span class="cx"> };&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     EnumClassTraitDeclaration = (
</span><del>-    &quot;&quot;&quot;template&lt;&gt; struct EncodingTraits&lt;${enumName}&gt; {
-    typedef ${enumName} DecodedType;
</del><ins>+    &quot;&quot;&quot;template&lt;&gt; ${structOrClass} EncodingTraits&lt;${encodingTypeArgument}&gt; {
+    typedef ${enumType} DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const ${enumName}&amp; value);
-    static bool decodeValue(EncodedValue&amp;, ${enumName}&amp; value);
</del><ins>+    static EncodedValue encodeValue(const ${enumType}&amp; value);
+    static bool decodeValue(EncodedValue&amp;, ${enumType}&amp; value);
</ins><span class="cx"> };&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     InputClassDeclaration = (
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> }&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     EnumClassTraitImplementation = (
</span><del>-    &quot;&quot;&quot;EncodedValue EncodingTraits&lt;${enumName}&gt;::encodeValue(const ${enumName}&amp; enumValue)
</del><ins>+    &quot;&quot;&quot;EncodedValue EncodingTraits&lt;${encodingTypeArgument}&gt;::encodeValue(const ${enumType}&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     switch (enumValue) {
</span><span class="cx"> ${encodeCases}
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;${enumName}&gt;::decodeValue(EncodedValue&amp; encodedValue, ${enumName}&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;${encodingTypeArgument}&gt;::decodeValue(EncodedValue&amp; encodedValue, ${enumType}&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     String enumString = encodedValue.convertTo&lt;String&gt;();
</span><span class="cx"> ${decodeCases}
</span><span class="lines">@@ -203,14 +203,14 @@
</span><span class="cx">     }&quot;&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx">     EnumTraitImplementation = (
</span><del>-    &quot;&quot;&quot;EncodedValue EncodingTraits&lt;${enumName}&gt;::encodeValue(const ${enumName}&amp; enumValue)
</del><ins>+    &quot;&quot;&quot;EncodedValue EncodingTraits&lt;${encodingTypeArgument}&gt;::encodeValue(const ${enumType}&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     EncodedValue encodedValue = EncodedValue::createArray();
</span><span class="cx"> ${encodeCases}
</span><span class="cx">     return encodedValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;${enumName}&gt;::decodeValue(EncodedValue&amp; encodedValue, ${enumName}&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;${encodingTypeArgument}&gt;::decodeValue(EncodedValue&amp; encodedValue, ${enumType}&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; enumStrings;
</span><span class="cx">     if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedfailonnoinputsjsonerror"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-inputs.json-error (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-inputs.json-error        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-inputs.json-error        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1 +0,0 @@
</span><del>-ERROR: When parsing toplevel, required property missing: inputs
</del></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedfailonnotypesjsonerror"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-types.json-error (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-types.json-error        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/fail-on-no-types.json-error        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1 +0,0 @@
</span><del>-ERROR: When parsing toplevel, required property missing: types
</del></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelperswithguardedvaluesjsonTestReplayInputscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -68,80 +68,7 @@
</span><span class="cx">     input = std::make_unique&lt;Test::SavedMouseButton&gt;(button);
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><del>-EncodedValue EncodingTraits&lt;WebCore::MouseButton&gt;::encodeValue(const WebCore::MouseButton&amp; enumValue)
-{
-    EncodedValue encodedValue = EncodedValue::createArray();
-    if (enumValue &amp; WebCore::NoButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;NoButton&quot;));
-        if (enumValue == WebCore::NoButton)
-            return encodedValue;
-    }
-    if (enumValue &amp; WebCore::LeftButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;LeftButton&quot;));
-        if (enumValue == WebCore::LeftButton)
-            return encodedValue;
-    }
-    if (enumValue &amp; WebCore::MiddleButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;MiddleButton&quot;));
-        if (enumValue == WebCore::MiddleButton)
-            return encodedValue;
-    }
-    if (enumValue &amp; WebCore::RightButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;RightButton&quot;));
-        if (enumValue == WebCore::RightButton)
-            return encodedValue;
-    }
-#if ENABLE(SIDE_BUTTONS)
-    if (enumValue &amp; WebCore::LeftSideButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;LeftSideButton&quot;));
-        if (enumValue == WebCore::LeftSideButton)
-            return encodedValue;
-    }
-    if (enumValue &amp; WebCore::RightSideButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;RightSideButton&quot;));
-        if (enumValue == WebCore::RightSideButton)
-            return encodedValue;
-    }
-#endif // ENABLE(SIDE_BUTTONS)
-#if PLATFORM(WINDOWS)
-    if (enumValue &amp; WebCore::WindowsButton) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;WindowsButton&quot;));
-        if (enumValue == WebCore::WindowsButton)
-            return encodedValue;
-    }
-#endif // PLATFORM(WINDOWS)
-    return encodedValue;
-}
</del><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::MouseButton&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::MouseButton&amp; enumValue)
-{
-    Vector&lt;String&gt; enumStrings;
-    if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
-        return false;
-
-    for (const String&amp; enumString : enumStrings) {
-        if (enumString == &quot;NoButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::NoButton);
-        else if (enumString == &quot;LeftButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::LeftButton);
-        else if (enumString == &quot;MiddleButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::MiddleButton);
-        else if (enumString == &quot;RightButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::RightButton);
-#if ENABLE(SIDE_BUTTONS)
-        if (enumString == &quot;LeftSideButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::LeftSideButton);
-        else if (enumString == &quot;RightSideButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::RightSideButton);
-#endif // ENABLE(SIDE_BUTTONS)
-#if PLATFORM(WINDOWS)
-        if (enumString == &quot;WindowsButton&quot;)
-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::WindowsButton);
-#endif // PLATFORM(WINDOWS)
-    }
-
-    return true;
-}
</del><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_REPLAY)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelperswithguardedvaluesjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -44,25 +44,20 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::SavedMouseButton&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::SavedMouseButton&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="cx">     static void encode(JSC::EncodedValue&amp;, const Test::SavedMouseButton&amp;);
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::SavedMouseButton&gt;&amp;);
</span><span class="cx"> };
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::MouseButton&gt; {
-    typedef WebCore::MouseButton DecodedType;
</del><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::MouseButton&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::MouseButton&amp; value);
-};
</del><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> namespace Test {
</span><span class="cx"> class SavedMouseButton : public NondeterministicInput&lt;SavedMouseButton&gt; {
</span><span class="cx"> public:
</span><del>-    SavedMouseButton(MouseButton button);
</del><ins>+    TEST_EXPORT_MACRO SavedMouseButton(MouseButton button);
</ins><span class="cx">     virtual ~SavedMouseButton();
</span><span class="cx"> 
</span><span class="cx">     MouseButton button() const { return m_button; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelpersjsonTestReplayInputscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -32,9 +32,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx"> #include &quot;InternalNamespaceImplIncludeDummy.h&quot;
</span><ins>+#include &quot;NondeterministicInput.h&quot;
+#include &quot;PlatformMouseEvent.h&quot;
</ins><span class="cx"> #include &lt;platform/ExternalNamespaceImplIncludeDummy.h&gt;
</span><del>-#include &lt;platform/PlatformMouseEvent.h&gt;
-#include &lt;replay/NondeterministicInput.h&gt;
</del><span class="cx"> 
</span><span class="cx"> namespace Test {
</span><span class="cx"> SavedMouseButton::SavedMouseButton(MouseButton button)
</span><span class="lines">@@ -57,73 +57,73 @@
</span><span class="cx"> 
</span><span class="cx"> void InputTraits&lt;Test::SavedMouseButton&gt;::encode(EncodedValue&amp; encodedValue, const Test::SavedMouseButton&amp; input)
</span><span class="cx"> {
</span><del>-    encodedValue.put&lt;WebCore::MouseButton&gt;(ASCIILiteral(&quot;button&quot;), input.button());
</del><ins>+    encodedValue.put&lt;Test::MouseButton&gt;(ASCIILiteral(&quot;button&quot;), input.button());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputTraits&lt;Test::SavedMouseButton&gt;::decode(EncodedValue&amp; encodedValue, std::unique_ptr&lt;Test::SavedMouseButton&gt;&amp; input)
</span><span class="cx"> {
</span><del>-    WebCore::MouseButton button;
-    if (!encodedValue.get&lt;WebCore::MouseButton&gt;(ASCIILiteral(&quot;button&quot;), button))
</del><ins>+    Test::MouseButton button;
+    if (!encodedValue.get&lt;Test::MouseButton&gt;(ASCIILiteral(&quot;button&quot;), button))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     input = std::make_unique&lt;Test::SavedMouseButton&gt;(button);
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><del>-EncodedValue EncodingTraits&lt;InputQueue&gt;::encodeValue(const InputQueue&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::InputQueue&gt;::encodeValue(const Test::InputQueue&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     switch (enumValue) {
</span><del>-    case InputQueue::EventLoopInput: return EncodedValue::createString(&quot;EventLoopInput&quot;);
-    case InputQueue::LoaderMemoizedData: return EncodedValue::createString(&quot;LoaderMemoizedData&quot;);
-    case InputQueue::ScriptMemoizedData: return EncodedValue::createString(&quot;ScriptMemoizedData&quot;);
</del><ins>+    case Test::InputQueue::EventLoopInput: return EncodedValue::createString(&quot;EventLoopInput&quot;);
+    case Test::InputQueue::LoaderMemoizedData: return EncodedValue::createString(&quot;LoaderMemoizedData&quot;);
+    case Test::InputQueue::ScriptMemoizedData: return EncodedValue::createString(&quot;ScriptMemoizedData&quot;);
</ins><span class="cx">     default: ASSERT_NOT_REACHED(); return EncodedValue::createString(&quot;Error!&quot;);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;InputQueue&gt;::decodeValue(EncodedValue&amp; encodedValue, InputQueue&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::InputQueue&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::InputQueue&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     String enumString = encodedValue.convertTo&lt;String&gt;();
</span><span class="cx">     if (enumString == &quot;EventLoopInput&quot;) {
</span><del>-        enumValue = InputQueue::EventLoopInput;
</del><ins>+        enumValue = Test::InputQueue::EventLoopInput;
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     if (enumString == &quot;LoaderMemoizedData&quot;) {
</span><del>-        enumValue = InputQueue::LoaderMemoizedData;
</del><ins>+        enumValue = Test::InputQueue::LoaderMemoizedData;
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     if (enumString == &quot;ScriptMemoizedData&quot;) {
</span><del>-        enumValue = InputQueue::ScriptMemoizedData;
</del><ins>+        enumValue = Test::InputQueue::ScriptMemoizedData;
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedValue EncodingTraits&lt;WebCore::MouseButton&gt;::encodeValue(const WebCore::MouseButton&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::MouseButton&gt;::encodeValue(const Test::MouseButton&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     EncodedValue encodedValue = EncodedValue::createArray();
</span><del>-    if (enumValue &amp; WebCore::NoButton) {
</del><ins>+    if (enumValue &amp; Test::NoButton) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;NoButton&quot;));
</span><del>-        if (enumValue == WebCore::NoButton)
</del><ins>+        if (enumValue == Test::NoButton)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::LeftButton) {
</del><ins>+    if (enumValue &amp; Test::LeftButton) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;LeftButton&quot;));
</span><del>-        if (enumValue == WebCore::LeftButton)
</del><ins>+        if (enumValue == Test::LeftButton)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::MiddleButton) {
</del><ins>+    if (enumValue &amp; Test::MiddleButton) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;MiddleButton&quot;));
</span><del>-        if (enumValue == WebCore::MiddleButton)
</del><ins>+        if (enumValue == Test::MiddleButton)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::RightButton) {
</del><ins>+    if (enumValue &amp; Test::RightButton) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;RightButton&quot;));
</span><del>-        if (enumValue == WebCore::RightButton)
</del><ins>+        if (enumValue == Test::RightButton)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><span class="cx">     return encodedValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::MouseButton&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::MouseButton&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::MouseButton&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::MouseButton&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; enumStrings;
</span><span class="cx">     if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
</span><span class="lines">@@ -131,45 +131,45 @@
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; enumString : enumStrings) {
</span><span class="cx">         if (enumString == &quot;NoButton&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::NoButton);
</del><ins>+            enumValue = static_cast&lt;Test::MouseButton&gt;(enumValue | Test::NoButton);
</ins><span class="cx">         else if (enumString == &quot;LeftButton&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::LeftButton);
</del><ins>+            enumValue = static_cast&lt;Test::MouseButton&gt;(enumValue | Test::LeftButton);
</ins><span class="cx">         else if (enumString == &quot;MiddleButton&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::MiddleButton);
</del><ins>+            enumValue = static_cast&lt;Test::MouseButton&gt;(enumValue | Test::MiddleButton);
</ins><span class="cx">         else if (enumString == &quot;RightButton&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::MouseButton&gt;(enumValue | WebCore::RightButton);
</del><ins>+            enumValue = static_cast&lt;Test::MouseButton&gt;(enumValue | Test::RightButton);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedValue EncodingTraits&lt;WebCore::PlatformEvent::Type&gt;::encodeValue(const WebCore::PlatformEvent::Type&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::PlatformEvent::Type&gt;::encodeValue(const Test::PlatformEvent::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     EncodedValue encodedValue = EncodedValue::createArray();
</span><del>-    if (enumValue &amp; WebCore::PlatformEvent::Mouse) {
</del><ins>+    if (enumValue &amp; Test::PlatformEvent::Mouse) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Mouse&quot;));
</span><del>-        if (enumValue == WebCore::PlatformEvent::Mouse)
</del><ins>+        if (enumValue == Test::PlatformEvent::Mouse)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::PlatformEvent::Key) {
</del><ins>+    if (enumValue &amp; Test::PlatformEvent::Key) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Key&quot;));
</span><del>-        if (enumValue == WebCore::PlatformEvent::Key)
</del><ins>+        if (enumValue == Test::PlatformEvent::Key)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::PlatformEvent::Touch) {
</del><ins>+    if (enumValue &amp; Test::PlatformEvent::Touch) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Touch&quot;));
</span><del>-        if (enumValue == WebCore::PlatformEvent::Touch)
</del><ins>+        if (enumValue == Test::PlatformEvent::Touch)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::PlatformEvent::Wheel) {
</del><ins>+    if (enumValue &amp; Test::PlatformEvent::Wheel) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Wheel&quot;));
</span><del>-        if (enumValue == WebCore::PlatformEvent::Wheel)
</del><ins>+        if (enumValue == Test::PlatformEvent::Wheel)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><span class="cx">     return encodedValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::PlatformEvent::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::PlatformEvent::Type&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::PlatformEvent::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::PlatformEvent::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; enumStrings;
</span><span class="cx">     if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
</span><span class="lines">@@ -177,13 +177,13 @@
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; enumString : enumStrings) {
</span><span class="cx">         if (enumString == &quot;Mouse&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::PlatformEvent::Type&gt;(enumValue | WebCore::PlatformEvent::Mouse);
</del><ins>+            enumValue = static_cast&lt;Test::PlatformEvent::Type&gt;(enumValue | Test::PlatformEvent::Mouse);
</ins><span class="cx">         else if (enumString == &quot;Key&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::PlatformEvent::Type&gt;(enumValue | WebCore::PlatformEvent::Key);
</del><ins>+            enumValue = static_cast&lt;Test::PlatformEvent::Type&gt;(enumValue | Test::PlatformEvent::Key);
</ins><span class="cx">         else if (enumString == &quot;Touch&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::PlatformEvent::Type&gt;(enumValue | WebCore::PlatformEvent::Touch);
</del><ins>+            enumValue = static_cast&lt;Test::PlatformEvent::Type&gt;(enumValue | Test::PlatformEvent::Touch);
</ins><span class="cx">         else if (enumString == &quot;Wheel&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::PlatformEvent::Type&gt;(enumValue | WebCore::PlatformEvent::Wheel);
</del><ins>+            enumValue = static_cast&lt;Test::PlatformEvent::Type&gt;(enumValue | Test::PlatformEvent::Wheel);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumencodinghelpersjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -32,14 +32,11 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx"> #include &quot;InternalNamespaceHeaderIncludeDummy.h&quot;
</span><ins>+#include &quot;PlatformEvent.h&quot;
</ins><span class="cx"> #include &lt;platform/ExternalNamespaceHeaderIncludeDummy.h&gt;
</span><del>-#include &lt;platform/PlatformEvent.h&gt;
</del><span class="cx"> 
</span><del>-namespace WebCore {
</del><ins>+namespace Test {
</ins><span class="cx"> enum MouseButton : unsigned;
</span><del>-}
-
-namespace JSC {
</del><span class="cx"> enum class InputQueue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -49,39 +46,39 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::SavedMouseButton&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::SavedMouseButton&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="cx">     static void encode(JSC::EncodedValue&amp;, const Test::SavedMouseButton&amp;);
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::SavedMouseButton&gt;&amp;);
</span><span class="cx"> };
</span><del>-template&lt;&gt; struct EncodingTraits&lt;InputQueue&gt; {
-    typedef InputQueue DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::InputQueue&gt; {
+    typedef Test::InputQueue DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const InputQueue&amp; value);
-    static bool decodeValue(EncodedValue&amp;, InputQueue&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::InputQueue&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::InputQueue&amp; value);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::MouseButton&gt; {
-    typedef WebCore::MouseButton DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::MouseButton&gt; {
+    typedef Test::MouseButton DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::MouseButton&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::MouseButton&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::MouseButton&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::MouseButton&amp; value);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::PlatformEvent::Type&gt; {
-    typedef WebCore::PlatformEvent::Type DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::PlatformEvent::Type&gt; {
+    typedef Test::PlatformEvent::Type DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::PlatformEvent::Type&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::PlatformEvent::Type&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::PlatformEvent::Type&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::PlatformEvent::Type&amp; value);
</ins><span class="cx"> };
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> namespace Test {
</span><span class="cx"> class SavedMouseButton : public NondeterministicInput&lt;SavedMouseButton&gt; {
</span><span class="cx"> public:
</span><del>-    SavedMouseButton(MouseButton button);
</del><ins>+    TEST_EXPORT_MACRO SavedMouseButton(MouseButton button);
</ins><span class="cx">     virtual ~SavedMouseButton();
</span><span class="cx"> 
</span><span class="cx">     MouseButton button() const { return m_button; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumwithguardjsonTestReplayInputscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.cpp        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -32,13 +32,15 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><span class="cx"> #include &quot;InternalNamespaceImplIncludeDummy.h&quot;
</span><ins>+#include &quot;PlatformWheelEvent.h&quot;
</ins><span class="cx"> #include &lt;platform/ExternalNamespaceImplIncludeDummy.h&gt;
</span><span class="cx"> #include &lt;platform/PlatformWheelEvent.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace Test {
</span><del>-HandleWheelEvent::HandleWheelEvent(std::unique_ptr&lt;PlatformWheelEvent&gt; platformEvent)
</del><ins>+HandleWheelEvent::HandleWheelEvent(std::unique_ptr&lt;PlatformWheelEvent&gt; platformEvent, PlatformWheelPhase phase)
</ins><span class="cx">     : EventLoopInput&lt;HandleWheelEvent&gt;()
</span><span class="cx">     , m_platformEvent(WTF::move(platformEvent))
</span><ins>+    , m_phase(phase)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -57,6 +59,7 @@
</span><span class="cx"> void InputTraits&lt;Test::HandleWheelEvent&gt;::encode(EncodedValue&amp; encodedValue, const Test::HandleWheelEvent&amp; input)
</span><span class="cx"> {
</span><span class="cx">     encodedValue.put&lt;WebCore::PlatformWheelEvent&gt;(ASCIILiteral(&quot;platformEvent&quot;), input.platformEvent());
</span><ins>+    encodedValue.put&lt;Test::PlatformWheelPhase&gt;(ASCIILiteral(&quot;phase&quot;), input.phase());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputTraits&lt;Test::HandleWheelEvent&gt;::decode(EncodedValue&amp; encodedValue, std::unique_ptr&lt;Test::HandleWheelEvent&gt;&amp; input)
</span><span class="lines">@@ -65,22 +68,26 @@
</span><span class="cx">     if (!encodedValue.get&lt;WebCore::PlatformWheelEvent&gt;(ASCIILiteral(&quot;platformEvent&quot;), platformEvent))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    input = std::make_unique&lt;Test::HandleWheelEvent&gt;(WTF::move(platformEvent));
</del><ins>+    Test::PlatformWheelPhase phase;
+    if (!encodedValue.get&lt;Test::PlatformWheelPhase&gt;(ASCIILiteral(&quot;phase&quot;), phase))
+        return false;
+
+    input = std::make_unique&lt;Test::HandleWheelEvent&gt;(WTF::move(platformEvent), phase);
</ins><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(DUMMY_FEATURE)
</span><del>-EncodedValue EncodingTraits&lt;WebCore::PlatformWheelEventPhase&gt;::encodeValue(const WebCore::PlatformWheelEventPhase&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::PlatformWheelPhase&gt;::encodeValue(const Test::PlatformWheelPhase&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     EncodedValue encodedValue = EncodedValue::createArray();
</span><del>-    if (enumValue &amp; WebCore::PlatformWheelEventPhaseNone) {
</del><ins>+    if (enumValue &amp; Test::PlatformWheelEventPhaseNone) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;PlatformWheelEventPhaseNone&quot;));
</span><del>-        if (enumValue == WebCore::PlatformWheelEventPhaseNone)
</del><ins>+        if (enumValue == Test::PlatformWheelEventPhaseNone)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><span class="cx">     return encodedValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::PlatformWheelEventPhase&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::PlatformWheelEventPhase&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::PlatformWheelPhase&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::PlatformWheelPhase&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; enumStrings;
</span><span class="cx">     if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
</span><span class="lines">@@ -88,7 +95,7 @@
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; enumString : enumStrings) {
</span><span class="cx">         if (enumString == &quot;PlatformWheelEventPhaseNone&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::PlatformWheelEventPhase&gt;(enumValue | WebCore::PlatformWheelEventPhaseNone);
</del><ins>+            enumValue = static_cast&lt;Test::PlatformWheelPhase&gt;(enumValue | Test::PlatformWheelEventPhaseNone);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumwithguardjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enum-with-guard.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -34,9 +34,12 @@
</span><span class="cx"> #include &quot;InternalNamespaceHeaderIncludeDummy.h&quot;
</span><span class="cx"> #include &lt;platform/ExternalNamespaceHeaderIncludeDummy.h&gt;
</span><span class="cx"> 
</span><ins>+namespace Test {
+enum PlatformWheelPhase : uint64_t;
+}
+
</ins><span class="cx"> namespace WebCore {
</span><span class="cx"> class PlatformWheelEvent;
</span><del>-enum PlatformWheelEventPhase : uint64_t;
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -45,7 +48,7 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::HandleWheelEvent&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::HandleWheelEvent&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::EventLoopInput; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -53,11 +56,11 @@
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::HandleWheelEvent&gt;&amp;);
</span><span class="cx"> };
</span><span class="cx"> #if ENABLE(DUMMY_FEATURE)
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::PlatformWheelEventPhase&gt; {
-    typedef WebCore::PlatformWheelEventPhase DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::PlatformWheelPhase&gt; {
+    typedef Test::PlatformWheelPhase DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::PlatformWheelEventPhase&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::PlatformWheelEventPhase&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::PlatformWheelPhase&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::PlatformWheelPhase&amp; value);
</ins><span class="cx"> };
</span><span class="cx"> #endif // ENABLE(DUMMY_FEATURE)
</span><span class="cx"> } // namespace JSC
</span><span class="lines">@@ -65,14 +68,16 @@
</span><span class="cx"> namespace Test {
</span><span class="cx"> class HandleWheelEvent : public EventLoopInput&lt;HandleWheelEvent&gt; {
</span><span class="cx"> public:
</span><del>-    HandleWheelEvent(std::unique_ptr&lt;PlatformWheelEvent&gt; platformEvent);
</del><ins>+    TEST_EXPORT_MACRO HandleWheelEvent(std::unique_ptr&lt;PlatformWheelEvent&gt; platformEvent, PlatformWheelPhase phase);
</ins><span class="cx">     virtual ~HandleWheelEvent();
</span><span class="cx"> 
</span><span class="cx">     // EventLoopInput API
</span><span class="cx">     virtual void dispatch(ReplayController&amp;) override final;
</span><span class="cx">     const PlatformWheelEvent&amp; platformEvent() const { return *m_platformEvent; }
</span><ins>+    PlatformWheelPhase phase() const { return m_phase; }
</ins><span class="cx"> private:
</span><span class="cx">     std::unique_ptr&lt;PlatformWheelEvent&gt; m_platformEvent;
</span><ins>+    PlatformWheelPhase m_phase;
</ins><span class="cx"> };
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumswithsamebasenamejsonTestReplayInputscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -60,8 +60,8 @@
</span><span class="cx"> {
</span><span class="cx">     encodedValue.put&lt;PlatformEvent1::Type&gt;(ASCIILiteral(&quot;eventType1&quot;), input.eventType1());
</span><span class="cx">     encodedValue.put&lt;PlatformEvent2::Type&gt;(ASCIILiteral(&quot;eventType2&quot;), input.eventType2());
</span><del>-    encodedValue.put&lt;WebCore::FormData1::Type&gt;(ASCIILiteral(&quot;formType1&quot;), input.formType1());
-    encodedValue.put&lt;WebCore::FormData2::Type&gt;(ASCIILiteral(&quot;formType2&quot;), input.formType2());
</del><ins>+    encodedValue.put&lt;Test::FormData1::Type&gt;(ASCIILiteral(&quot;formType1&quot;), input.formType1());
+    encodedValue.put&lt;Test::FormData2::Type&gt;(ASCIILiteral(&quot;formType2&quot;), input.formType2());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool InputTraits&lt;Test::FormCombo&gt;::decode(EncodedValue&amp; encodedValue, std::unique_ptr&lt;Test::FormCombo&gt;&amp; input)
</span><span class="lines">@@ -74,34 +74,34 @@
</span><span class="cx">     if (!encodedValue.get&lt;PlatformEvent2::Type&gt;(ASCIILiteral(&quot;eventType2&quot;), eventType2))
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    WebCore::FormData1::Type formType1;
-    if (!encodedValue.get&lt;WebCore::FormData1::Type&gt;(ASCIILiteral(&quot;formType1&quot;), formType1))
</del><ins>+    Test::FormData1::Type formType1;
+    if (!encodedValue.get&lt;Test::FormData1::Type&gt;(ASCIILiteral(&quot;formType1&quot;), formType1))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><del>-    WebCore::FormData2::Type formType2;
-    if (!encodedValue.get&lt;WebCore::FormData2::Type&gt;(ASCIILiteral(&quot;formType2&quot;), formType2))
</del><ins>+    Test::FormData2::Type formType2;
+    if (!encodedValue.get&lt;Test::FormData2::Type&gt;(ASCIILiteral(&quot;formType2&quot;), formType2))
</ins><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     input = std::make_unique&lt;Test::FormCombo&gt;(eventType1, eventType2, formType1, formType2);
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><del>-EncodedValue EncodingTraits&lt;WebCore::FormData1::Type&gt;::encodeValue(const WebCore::FormData1::Type&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::FormData1::Type&gt;::encodeValue(const Test::FormData1::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     EncodedValue encodedValue = EncodedValue::createArray();
</span><del>-    if (enumValue &amp; WebCore::FormData1::Text) {
</del><ins>+    if (enumValue &amp; Test::FormData1::Text) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Text&quot;));
</span><del>-        if (enumValue == WebCore::FormData1::Text)
</del><ins>+        if (enumValue == Test::FormData1::Text)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><del>-    if (enumValue &amp; WebCore::FormData1::Blob) {
</del><ins>+    if (enumValue &amp; Test::FormData1::Blob) {
</ins><span class="cx">         encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Blob&quot;));
</span><del>-        if (enumValue == WebCore::FormData1::Blob)
</del><ins>+        if (enumValue == Test::FormData1::Blob)
</ins><span class="cx">             return encodedValue;
</span><span class="cx">     }
</span><span class="cx">     return encodedValue;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::FormData1::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::FormData1::Type&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::FormData1::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::FormData1::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     Vector&lt;String&gt; enumStrings;
</span><span class="cx">     if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
</span><span class="lines">@@ -109,91 +109,36 @@
</span><span class="cx"> 
</span><span class="cx">     for (const String&amp; enumString : enumStrings) {
</span><span class="cx">         if (enumString == &quot;Text&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::FormData1::Type&gt;(enumValue | WebCore::FormData1::Text);
</del><ins>+            enumValue = static_cast&lt;Test::FormData1::Type&gt;(enumValue | Test::FormData1::Text);
</ins><span class="cx">         else if (enumString == &quot;Blob&quot;)
</span><del>-            enumValue = static_cast&lt;WebCore::FormData1::Type&gt;(enumValue | WebCore::FormData1::Blob);
</del><ins>+            enumValue = static_cast&lt;Test::FormData1::Type&gt;(enumValue | Test::FormData1::Blob);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedValue EncodingTraits&lt;WebCore::FormData2::Type&gt;::encodeValue(const WebCore::FormData2::Type&amp; enumValue)
</del><ins>+EncodedValue EncodingTraits&lt;Test::FormData2::Type&gt;::encodeValue(const Test::FormData2::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     switch (enumValue) {
</span><del>-    case WebCore::FormData2::Type::Text: return EncodedValue::createString(&quot;Text&quot;);
-    case WebCore::FormData2::Type::Blob: return EncodedValue::createString(&quot;Blob&quot;);
</del><ins>+    case Test::FormData2::Type::Text: return EncodedValue::createString(&quot;Text&quot;);
+    case Test::FormData2::Type::Blob: return EncodedValue::createString(&quot;Blob&quot;);
</ins><span class="cx">     default: ASSERT_NOT_REACHED(); return EncodedValue::createString(&quot;Error!&quot;);
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool EncodingTraits&lt;WebCore::FormData2::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, WebCore::FormData2::Type&amp; enumValue)
</del><ins>+bool EncodingTraits&lt;Test::FormData2::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, Test::FormData2::Type&amp; enumValue)
</ins><span class="cx"> {
</span><span class="cx">     String enumString = encodedValue.convertTo&lt;String&gt;();
</span><span class="cx">     if (enumString == &quot;Text&quot;) {
</span><del>-        enumValue = WebCore::FormData2::Type::Text;
</del><ins>+        enumValue = Test::FormData2::Type::Text;
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     if (enumString == &quot;Blob&quot;) {
</span><del>-        enumValue = WebCore::FormData2::Type::Blob;
</del><ins>+        enumValue = Test::FormData2::Type::Blob;
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><del>-
-EncodedValue EncodingTraits&lt;PlatformEvent1::Type&gt;::encodeValue(const PlatformEvent1::Type&amp; enumValue)
-{
-    EncodedValue encodedValue = EncodedValue::createArray();
-    if (enumValue &amp; PlatformEvent1::Mouse) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Mouse&quot;));
-        if (enumValue == PlatformEvent1::Mouse)
-            return encodedValue;
-    }
-    if (enumValue &amp; PlatformEvent1::Keyboard) {
-        encodedValue.append&lt;String&gt;(ASCIILiteral(&quot;Keyboard&quot;));
-        if (enumValue == PlatformEvent1::Keyboard)
-            return encodedValue;
-    }
-    return encodedValue;
-}
-
-bool EncodingTraits&lt;PlatformEvent1::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, PlatformEvent1::Type&amp; enumValue)
-{
-    Vector&lt;String&gt; enumStrings;
-    if (!EncodingTraits&lt;Vector&lt;String&gt;&gt;::decodeValue(encodedValue, enumStrings))
-        return false;
-
-    for (const String&amp; enumString : enumStrings) {
-        if (enumString == &quot;Mouse&quot;)
-            enumValue = static_cast&lt;PlatformEvent1::Type&gt;(enumValue | PlatformEvent1::Mouse);
-        else if (enumString == &quot;Keyboard&quot;)
-            enumValue = static_cast&lt;PlatformEvent1::Type&gt;(enumValue | PlatformEvent1::Keyboard);
-    }
-
-    return true;
-}
-
-EncodedValue EncodingTraits&lt;PlatformEvent2::Type&gt;::encodeValue(const PlatformEvent2::Type&amp; enumValue)
-{
-    switch (enumValue) {
-    case PlatformEvent2::Type::Mouse: return EncodedValue::createString(&quot;Mouse&quot;);
-    case PlatformEvent2::Type::Keyboard: return EncodedValue::createString(&quot;Keyboard&quot;);
-    default: ASSERT_NOT_REACHED(); return EncodedValue::createString(&quot;Error!&quot;);
-    }
-}
-
-bool EncodingTraits&lt;PlatformEvent2::Type&gt;::decodeValue(EncodedValue&amp; encodedValue, PlatformEvent2::Type&amp; enumValue)
-{
-    String enumString = encodedValue.convertTo&lt;String&gt;();
-    if (enumString == &quot;Mouse&quot;) {
-        enumValue = PlatformEvent2::Type::Mouse;
-        return true;
-    }
-    if (enumString == &quot;Keyboard&quot;) {
-        enumValue = PlatformEvent2::Type::Keyboard;
-        return true;
-    }
-    return false;
-}
</del><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(WEB_REPLAY)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateenumswithsamebasenamejsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -31,10 +31,10 @@
</span><span class="cx"> #define generate_enums_with_same_base_name_json_TestReplayInputs_h
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEB_REPLAY)
</span><ins>+#include &quot;FormData1.h&quot;
+#include &quot;FormData2.h&quot;
</ins><span class="cx"> #include &quot;InternalNamespaceHeaderIncludeDummy.h&quot;
</span><span class="cx"> #include &lt;platform/ExternalNamespaceHeaderIncludeDummy.h&gt;
</span><del>-#include &lt;replay/FormData1.h&gt;
-#include &lt;replay/FormData2.h&gt;
</del><span class="cx"> #include &lt;replay/PlatformEvent.h&gt;
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -44,46 +44,32 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::FormCombo&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::FormCombo&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="cx">     static void encode(JSC::EncodedValue&amp;, const Test::FormCombo&amp;);
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::FormCombo&gt;&amp;);
</span><span class="cx"> };
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::FormData1::Type&gt; {
-    typedef WebCore::FormData1::Type DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::FormData1::Type&gt; {
+    typedef Test::FormData1::Type DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::FormData1::Type&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::FormData1::Type&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::FormData1::Type&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::FormData1::Type&amp; value);
</ins><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct EncodingTraits&lt;WebCore::FormData2::Type&gt; {
-    typedef WebCore::FormData2::Type DecodedType;
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO EncodingTraits&lt;Test::FormData2::Type&gt; {
+    typedef Test::FormData2::Type DecodedType;
</ins><span class="cx"> 
</span><del>-    static EncodedValue encodeValue(const WebCore::FormData2::Type&amp; value);
-    static bool decodeValue(EncodedValue&amp;, WebCore::FormData2::Type&amp; value);
</del><ins>+    static EncodedValue encodeValue(const Test::FormData2::Type&amp; value);
+    static bool decodeValue(EncodedValue&amp;, Test::FormData2::Type&amp; value);
</ins><span class="cx"> };
</span><del>-
-template&lt;&gt; struct EncodingTraits&lt;PlatformEvent1::Type&gt; {
-    typedef PlatformEvent1::Type DecodedType;
-
-    static EncodedValue encodeValue(const PlatformEvent1::Type&amp; value);
-    static bool decodeValue(EncodedValue&amp;, PlatformEvent1::Type&amp; value);
-};
-
-template&lt;&gt; struct EncodingTraits&lt;PlatformEvent2::Type&gt; {
-    typedef PlatformEvent2::Type DecodedType;
-
-    static EncodedValue encodeValue(const PlatformEvent2::Type&amp; value);
-    static bool decodeValue(EncodedValue&amp;, PlatformEvent2::Type&amp; value);
-};
</del><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> namespace Test {
</span><span class="cx"> class FormCombo : public NondeterministicInput&lt;FormCombo&gt; {
</span><span class="cx"> public:
</span><del>-    FormCombo(PlatformEvent1::Type eventType1, PlatformEvent2::Type eventType2, FormData1::Type formType1, FormData2::Type formType2);
</del><ins>+    TEST_EXPORT_MACRO FormCombo(PlatformEvent1::Type eventType1, PlatformEvent2::Type eventType2, FormData1::Type formType1, FormData2::Type formType2);
</ins><span class="cx">     virtual ~FormCombo();
</span><span class="cx"> 
</span><span class="cx">     PlatformEvent1::Type eventType1() const { return m_eventType1; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputwithguardjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-guard.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> #if ENABLE(DUMMY_FEATURE)
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::GetCurrentTime&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::GetCurrentTime&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> };
</span><span class="cx"> #endif // ENABLE(DUMMY_FEATURE)
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::SetRandomSeed&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::SetRandomSeed&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> #if ENABLE(DUMMY_FEATURE)
</span><span class="cx"> class GetCurrentTime : public NondeterministicInput&lt;GetCurrentTime&gt; {
</span><span class="cx"> public:
</span><del>-    GetCurrentTime(double currentTime);
</del><ins>+    TEST_EXPORT_MACRO GetCurrentTime(double currentTime);
</ins><span class="cx">     virtual ~GetCurrentTime();
</span><span class="cx"> 
</span><span class="cx">     double currentTime() const { return m_currentTime; }
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> 
</span><span class="cx"> class SetRandomSeed : public NondeterministicInput&lt;SetRandomSeed&gt; {
</span><span class="cx"> public:
</span><del>-    SetRandomSeed(uint64_t randomSeed);
</del><ins>+    TEST_EXPORT_MACRO SetRandomSeed(uint64_t randomSeed);
</ins><span class="cx">     virtual ~SetRandomSeed();
</span><span class="cx"> 
</span><span class="cx">     uint64_t randomSeed() const { return m_randomSeed; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputwithvectormembersjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-input-with-vector-members.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::ArrayOfThings&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::ArrayOfThings&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::ArrayOfThings&gt;&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::SavedHistory&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::SavedHistory&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> namespace Test {
</span><span class="cx"> class ArrayOfThings : public NondeterministicInput&lt;ArrayOfThings&gt; {
</span><span class="cx"> public:
</span><del>-    ArrayOfThings(Vector&lt;double&gt;&amp; doubles, Vector&lt;JSThing&gt;&amp; jsthings, Vector&lt;WebThing&gt;&amp; webthings);
</del><ins>+    TEST_EXPORT_MACRO ArrayOfThings(Vector&lt;double&gt;&amp; doubles, Vector&lt;JSThing&gt;&amp; jsthings, Vector&lt;WebThing&gt;&amp; webthings);
</ins><span class="cx">     virtual ~ArrayOfThings();
</span><span class="cx"> 
</span><span class="cx">     const Vector&lt;double&gt;&amp; doubles() const { return m_doubles; }
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> 
</span><span class="cx"> class SavedHistory : public NondeterministicInput&lt;SavedHistory&gt; {
</span><span class="cx"> public:
</span><del>-    SavedHistory(Vector&lt;RefPtr&lt;HistoryItem&gt;&gt;&amp; entries);
</del><ins>+    TEST_EXPORT_MACRO SavedHistory(Vector&lt;RefPtr&lt;HistoryItem&gt;&gt;&amp; entries);
</ins><span class="cx">     virtual ~SavedHistory();
</span><span class="cx"> 
</span><span class="cx">     const Vector&lt;RefPtr&lt;HistoryItem&gt;&gt;&amp; entries() const { return m_entries; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgenerateinputswithflagsjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-inputs-with-flags.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::ScalarInput1&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::ScalarInput1&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::ScalarInput1&gt;&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::ScalarInput2&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::ScalarInput2&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> namespace Test {
</span><span class="cx"> class ScalarInput1 : public NondeterministicInput&lt;ScalarInput1&gt; {
</span><span class="cx"> public:
</span><del>-    ScalarInput1(ScalarType data);
</del><ins>+    TEST_EXPORT_MACRO ScalarInput1(ScalarType data);
</ins><span class="cx">     virtual ~ScalarInput1();
</span><span class="cx"> 
</span><span class="cx">     ScalarType data() const { return m_data; }
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx"> class ScalarInput2 : public NondeterministicInput&lt;ScalarInput2&gt; {
</span><span class="cx"> public:
</span><del>-    ScalarInput2(ScalarType data);
</del><ins>+    TEST_EXPORT_MACRO ScalarInput2(ScalarType data);
</ins><span class="cx">     virtual ~ScalarInput2();
</span><span class="cx"> 
</span><span class="cx">     ScalarType data() const { return m_data; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsexpectedgeneratememoizedtypemodesjsonTestReplayInputsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/expected/generate-memoized-type-modes.json-TestReplayInputs.h        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> } // namespace Test
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::ScalarInput&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::ScalarInput&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">     static bool decode(JSC::EncodedValue&amp;, std::unique_ptr&lt;Test::ScalarInput&gt;&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template&lt;&gt; struct InputTraits&lt;Test::MapInput&gt; {
</del><ins>+template&lt;&gt; struct TEST_EXPORT_MACRO InputTraits&lt;Test::MapInput&gt; {
</ins><span class="cx">     static InputQueue queue() { return InputQueue::ScriptMemoizedData; }
</span><span class="cx">     static const String&amp; type();
</span><span class="cx"> 
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> namespace Test {
</span><span class="cx"> class ScalarInput : public NondeterministicInput&lt;ScalarInput&gt; {
</span><span class="cx"> public:
</span><del>-    ScalarInput(ScalarType data);
</del><ins>+    TEST_EXPORT_MACRO ScalarInput(ScalarType data);
</ins><span class="cx">     virtual ~ScalarInput();
</span><span class="cx"> 
</span><span class="cx">     ScalarType data() const { return m_data; }
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> 
</span><span class="cx"> class MapInput : public NondeterministicInput&lt;MapInput&gt; {
</span><span class="cx"> public:
</span><del>-    MapInput(std::unique_ptr&lt;MapType&gt; data);
</del><ins>+    TEST_EXPORT_MACRO MapInput(std::unique_ptr&lt;MapType&gt; data);
</ins><span class="cx">     virtual ~MapInput();
</span><span class="cx"> 
</span><span class="cx">     const MapType&amp; data() const { return *m_data; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailoncstyleenumnostoragejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-c-style-enum-no-storage.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-c-style-enum-no-storage.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-c-style-enum-no-storage.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> {
</span><span class="cx">     &quot;types&quot;: {
</span><del>-        &quot;WebCore&quot;: [
</del><ins>+        &quot;Test&quot;: [
</ins><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;MouseButton&quot;, &quot;mode&quot;: &quot;SCALAR&quot;,
</span><span class="cx">                 &quot;flags&quot;: [&quot;ENUM&quot;],
</span><span class="lines">@@ -10,14 +10,16 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SavedMouseButton&quot;,
-            &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SavedMouseButton&quot;,
+                &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonduplicateenumtypejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-enum-type.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-enum-type.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-enum-type.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -20,14 +20,16 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;FormCombo&quot;,
-            &quot;description&quot;: &quot;Combines an event type and form data type.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;eventType&quot;, &quot;type&quot;: &quot;PlatformEvent::Type&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;FormCombo&quot;,
+                &quot;description&quot;: &quot;Combines an event type and form data type.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;eventType&quot;, &quot;type&quot;: &quot;PlatformEvent::Type&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonduplicateinputnamesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-input-names.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-input-names.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-input-names.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -6,22 +6,24 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonduplicatetypenamesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-type-names.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-type-names.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-duplicate-type-names.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -6,17 +6,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SetRandomSeed&quot;,
-            &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;randomSeed&quot;,
-                    &quot;type&quot;: &quot;uint64_t&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SetRandomSeed&quot;,
+                &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;randomSeed&quot;,
+                        &quot;type&quot;: &quot;uint64_t&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonenumtypemissingvaluesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-enum-type-missing-values.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-enum-type-missing-values.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-enum-type-missing-values.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -8,14 +8,16 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SavedMouseButton&quot;,
-            &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SavedMouseButton&quot;,
+                &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputmembernamejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-member-name.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-member-name.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-member-name.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,16 +5,18 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputnamejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-name.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-name.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-name.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,16 +5,18 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonmissinginputqueuejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-queue.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-queue.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-input-queue.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,16 +5,18 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonmissingtypemodejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-mode.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-mode.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-mode.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,17 +5,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonmissingtypenamejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-name.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-name.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-missing-type-name.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,17 +5,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonnoinputsjson"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-inputs.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-inputs.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-inputs.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,7 +0,0 @@
</span><del>-{
-    &quot;types&quot;: {
-        &quot;Global&quot;: [
-            { &quot;name&quot;: &quot;double&quot;, &quot;mode&quot;: &quot;SCALAR&quot; }
-        ]
-    }
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonnotypesjson"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-types.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-types.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-no-types.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-{
-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
- }
</del></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonunknowninputqueuejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-input-queue.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-input-queue.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-input-queue.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,17 +5,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonunknownmembertypejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-member-type.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-member-type.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-member-type.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,17 +5,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SetRandomSeed&quot;,
-            &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;randomSeed&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SetRandomSeed&quot;,
+                &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;randomSeed&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsfailonunknowntypemodejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-type-mode.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-type-mode.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/fail-on-unknown-type-mode.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,17 +5,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {
-                    &quot;name&quot;: &quot;currentTime&quot;,
-                    &quot;type&quot;: &quot;double&quot;
-                }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {
+                        &quot;name&quot;: &quot;currentTime&quot;,
+                        &quot;type&quot;: &quot;double&quot;
+                    }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateenumencodinghelperswithguardedvaluesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers-with-guarded-values.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -14,14 +14,16 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SavedMouseButton&quot;,
-            &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SavedMouseButton&quot;,
+                &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateenumencodinghelpersjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-encoding-helpers.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,14 +1,12 @@
</span><span class="cx"> {
</span><span class="cx">     &quot;types&quot;: {
</span><del>-        &quot;JavaScriptCore&quot;: [
</del><ins>+        &quot;Test&quot;: [
</ins><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;InputQueue&quot;, &quot;mode&quot;: &quot;SCALAR&quot;,
</span><span class="cx">                 &quot;flags&quot;: [&quot;ENUM_CLASS&quot;],
</span><span class="cx">                 &quot;values&quot;: [&quot;EventLoopInput&quot;, &quot;LoaderMemoizedData&quot;, &quot;ScriptMemoizedData&quot;],
</span><span class="cx">                 &quot;header&quot;: &quot;replay/NondeterministicInput.h&quot;
</span><del>-            }
-        ],
-        &quot;WebCore&quot;: [
</del><ins>+            },
</ins><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;MouseButton&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;unsigned&quot;,
</span><span class="cx">                 &quot;flags&quot;: [&quot;ENUM&quot;],
</span><span class="lines">@@ -25,14 +23,16 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;SavedMouseButton&quot;,
-            &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;SavedMouseButton&quot;,
+                &quot;description&quot;: &quot;Supplies a mouse button enum value.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;button&quot;, &quot;type&quot;: &quot;MouseButton&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateenumwithguardjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-with-guard.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-with-guard.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enum-with-guard.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -7,9 +7,11 @@
</span><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;PlatformWheelEvent&quot;, &quot;mode&quot;: &quot;OWNED&quot;,
</span><span class="cx">                 &quot;header&quot;: &quot;platform/PlatformWheelEvent.h&quot;
</span><del>-            },
</del><ins>+            }
+        ],
+        &quot;Test&quot;: [
</ins><span class="cx">             {
</span><del>-                &quot;name&quot;: &quot;PlatformWheelEventPhase&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint64_t&quot;,
</del><ins>+                &quot;name&quot;: &quot;PlatformWheelPhase&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint64_t&quot;,
</ins><span class="cx">                 &quot;flags&quot;: [&quot;ENUM&quot;],
</span><span class="cx">                 &quot;guard&quot;: &quot;ENABLE(DUMMY_FEATURE)&quot;,
</span><span class="cx">                 &quot;values&quot;: [&quot;PlatformWheelEventPhaseNone&quot;],
</span><span class="lines">@@ -18,14 +20,17 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;HandleWheelEvent&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformWheelEvent&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;HandleWheelEvent&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformWheelEvent&quot; },
+                    { &quot;name&quot;: &quot;phase&quot;, &quot;type&quot;: &quot;PlatformWheelPhase&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateenumswithsamebasenamejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enums-with-same-base-name.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enums-with-same-base-name.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-enums-with-same-base-name.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx">                 &quot;header&quot;: &quot;replay/PlatformEvent.h&quot;
</span><span class="cx">             }
</span><span class="cx">         ],
</span><del>-        &quot;WebCore&quot;: [
</del><ins>+        &quot;Test&quot;: [
</ins><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;Type&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint64_t&quot;,
</span><span class="cx">                 &quot;enclosing_class&quot;: &quot;FormData1&quot;,
</span><span class="lines">@@ -34,17 +34,19 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;FormCombo&quot;,
-            &quot;description&quot;: &quot;Combines an event type and form data type.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;eventType1&quot;, &quot;type&quot;: &quot;PlatformEvent1::Type&quot; },
-                { &quot;name&quot;: &quot;eventType2&quot;, &quot;type&quot;: &quot;PlatformEvent2::Type&quot; },
-                { &quot;name&quot;: &quot;formType1&quot;, &quot;type&quot;: &quot;FormData1::Type&quot; },
-                { &quot;name&quot;: &quot;formType2&quot;, &quot;type&quot;: &quot;FormData2::Type&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;FormCombo&quot;,
+                &quot;description&quot;: &quot;Combines an event type and form data type.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;eventType1&quot;, &quot;type&quot;: &quot;PlatformEvent1::Type&quot; },
+                    { &quot;name&quot;: &quot;eventType2&quot;, &quot;type&quot;: &quot;PlatformEvent2::Type&quot; },
+                    { &quot;name&quot;: &quot;formType1&quot;, &quot;type&quot;: &quot;FormData1::Type&quot; },
+                    { &quot;name&quot;: &quot;formType2&quot;, &quot;type&quot;: &quot;FormData2::Type&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateeventloopshapetypesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-event-loop-shape-types.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-event-loop-shape-types.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-event-loop-shape-types.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -7,30 +7,32 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;ScalarInput&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;MapInput&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;MapType&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;SharedMapInput&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;SharedMapType&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;ScalarInput&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;MapInput&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;MapType&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;SharedMapInput&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;SharedMapType&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateinputwithguardjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-guard.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-guard.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-guard.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -6,23 +6,25 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;GetCurrentTime&quot;,
-            &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;guard&quot;: &quot;ENABLE(DUMMY_FEATURE)&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;SetRandomSeed&quot;,
-            &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                {&quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;GetCurrentTime&quot;,
+                &quot;description&quot;: &quot;Supplies the system time to Date.now() and new Date().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;guard&quot;: &quot;ENABLE(DUMMY_FEATURE)&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;currentTime&quot;, &quot;type&quot;: &quot;double&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;SetRandomSeed&quot;,
+                &quot;description&quot;: &quot;Sets the PRNG seed used by Math.random().&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    {&quot;name&quot;: &quot;randomSeed&quot;, &quot;type&quot;: &quot;uint64_t&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateinputwithvectormembersjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-vector-members.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-vector-members.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-input-with-vector-members.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -17,24 +17,26 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;ArrayOfThings&quot;,
-            &quot;description&quot;: &quot;Supplies arrays of things.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;doubles&quot;, &quot;type&quot;: &quot;double&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] },
-                { &quot;name&quot;: &quot;jsthings&quot;, &quot;type&quot;: &quot;JSThing&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] },
-                { &quot;name&quot;: &quot;webthings&quot;, &quot;type&quot;: &quot;WebThing&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;SavedHistory&quot;,
-            &quot;description&quot;: &quot;Save history items.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;entries&quot;, &quot;type&quot;: &quot;HistoryItem&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;ArrayOfThings&quot;,
+                &quot;description&quot;: &quot;Supplies arrays of things.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;doubles&quot;, &quot;type&quot;: &quot;double&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] },
+                    { &quot;name&quot;: &quot;jsthings&quot;, &quot;type&quot;: &quot;JSThing&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] },
+                    { &quot;name&quot;: &quot;webthings&quot;, &quot;type&quot;: &quot;WebThing&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;SavedHistory&quot;,
+                &quot;description&quot;: &quot;Save history items.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;entries&quot;, &quot;type&quot;: &quot;HistoryItem&quot;, &quot;flags&quot;: [&quot;VECTOR&quot;] }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgenerateinputswithflagsjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-inputs-with-flags.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -5,23 +5,25 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;ScalarInput1&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;ScalarInput2&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;flags&quot;: [&quot;CREATE_FROM_PAGE&quot;],
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;ScalarInput1&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;ScalarInput2&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;flags&quot;: [&quot;CREATE_FROM_PAGE&quot;],
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorereplayscriptstestsgeneratememoizedtypemodesjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/replay/scripts/tests/generate-memoized-type-modes.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/replay/scripts/tests/generate-memoized-type-modes.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/JavaScriptCore/replay/scripts/tests/generate-memoized-type-modes.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -6,22 +6,24 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;ScalarInput&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;MapInput&quot;,
-            &quot;description&quot;: &quot;&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;MapType&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;Test&quot;: [
+            {
+                &quot;name&quot;: &quot;ScalarInput&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;ScalarType&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;MapInput&quot;,
+                &quot;description&quot;: &quot;&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;data&quot;, &quot;type&quot;: &quot;MapType&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/WebCore/ChangeLog        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2015-01-19  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
+        Web Replay: code generator should take supplemental specifications and allow cross-framework references
+        https://bugs.webkit.org/show_bug.cgi?id=136312
+
+        Reviewed by Joseph Pecoraro.
+
+        Changes covered by existing input generator tests.
+
+        * DerivedSources.make: Add JSInputs.json as supplemental specification.
+        * replay/WebInputs.json: Moved common types to JSInputs.json.
+
</ins><span class="cx"> 2015-01-20  Csaba Osztrogonác  &lt;ossy@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix unused-const-variable warning in RenderLayerCompositor.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/WebCore/DerivedSources.make        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1162,6 +1162,7 @@
</span><span class="cx"> 
</span><span class="cx"> INPUT_GENERATOR_SPECIFICATIONS = \
</span><span class="cx">         $(WebCore)/replay/WebInputs.json \
</span><ins>+        $(WebReplayScripts)/JSInputs.json \
</ins><span class="cx"> #
</span><span class="cx"> 
</span><span class="cx"> all : WebReplayInputs.h
</span></span></pre></div>
<a id="trunkSourceWebCorereplayWebInputsjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/replay/WebInputs.json (178713 => 178714)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/replay/WebInputs.json        2015-01-20 16:49:33 UTC (rev 178713)
+++ trunk/Source/WebCore/replay/WebInputs.json        2015-01-20 16:52:18 UTC (rev 178714)
</span><span class="lines">@@ -1,30 +1,5 @@
</span><span class="cx"> {
</span><span class="cx">     &quot;types&quot;: {
</span><del>-        &quot;Global&quot;: [
-            { &quot;name&quot;: &quot;bool&quot;, &quot;mode&quot;: &quot;SCALAR&quot; },
-            { &quot;name&quot;: &quot;double&quot;, &quot;mode&quot;: &quot;SCALAR&quot; },
-            { &quot;name&quot;: &quot;uint32_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Unsigned 32-bit integer.&quot; },
-            { &quot;name&quot;: &quot;uint64_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Unsigned 64-bit integer.&quot; },
-            { &quot;name&quot;: &quot;int32_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Signed 32-bit integer.&quot; },
-            { &quot;name&quot;: &quot;int64_t&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;description&quot;: &quot;Signed 64-bit integer.&quot; }
-        ],
-
-        &quot;WTF&quot;: [
-            {
-                &quot;name&quot;: &quot;String&quot;, &quot;mode&quot;: &quot;HEAVY_SCALAR&quot;,
-                &quot;header&quot;: &quot;wtf/text/WTFString.h&quot;
-            }
-        ],
-
-        &quot;JavaScriptCore&quot;: [
-            {
-                &quot;name&quot;: &quot;InputQueue&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint8_t&quot;,
-                &quot;flags&quot;: [&quot;ENUM_CLASS&quot;],
-                &quot;values&quot;: [&quot;EventLoopInput&quot;, &quot;LoaderMemoizedData&quot;, &quot;ScriptMemoizedData&quot;, &quot;Count&quot;],
-                &quot;header&quot;: &quot;replay/NondeterministicInput.h&quot;
-            }
-        ],
-
</del><span class="cx">         &quot;WebCore&quot;: [
</span><span class="cx">             {
</span><span class="cx">                 &quot;name&quot;: &quot;EncodedCType&quot;, &quot;mode&quot;: &quot;SCALAR&quot;, &quot;storage&quot;: &quot;uint8_t&quot;,
</span><span class="lines">@@ -157,104 +132,106 @@
</span><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    &quot;inputs&quot;: [
-        {
-            &quot;name&quot;: &quot;BeginSegmentSentinel&quot;,
-            &quot;description&quot;: &quot;A sentinel input to signal the start of a segment.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [ ]
-        },
-        {
-            &quot;name&quot;: &quot;DocumentLastModifiedDate&quot;,
-            &quot;description&quot;: &quot;A fallback value used for the document's last modified date if the Last-Modified header can't be found or used.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;fallbackValue&quot;, &quot;type&quot;: &quot;double&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;EndSegmentSentinel&quot;,
-            &quot;description&quot;: &quot;A sentinel input to signal the end of a segment.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [ ]
-        },
-        {
-            &quot;name&quot;: &quot;HandleMouseMove&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a mouse move event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; },
-                { &quot;name&quot;: &quot;scrollbarTargeted&quot;, &quot;type&quot;: &quot;bool&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;HandleMousePress&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a mouse press event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;HandleMouseRelease&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a mouse release event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;HandleKeyPress&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a key press event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformKeyboardEvent&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;HandleWheelEvent&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a mouse wheel event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformWheelEvent&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;InitialNavigation&quot;,
-            &quot;description&quot;: &quot;Initiate the initial main frame navigation.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;flags&quot;: [&quot;HIDDEN&quot;, &quot;CREATE_FROM_PAGE&quot;],
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;securityOrigin&quot;, &quot;type&quot;: &quot;SecurityOrigin&quot; },
-                { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;URL&quot; },
-                { &quot;name&quot;: &quot;referrer&quot;, &quot;type&quot;: &quot;String&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;FetchPluginData&quot;,
-            &quot;description&quot;: &quot;Plugin data was requested through DOMPluginArray or DOMMimeTypeArray.&quot;,
-            &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;pluginData&quot;, &quot;type&quot;: &quot;PluginData&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;LogicalScrollPage&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a logical scroll event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;direction&quot;, &quot;type&quot;: &quot;ScrollLogicalDirection&quot; },
-                { &quot;name&quot;: &quot;granularity&quot;, &quot;type&quot;: &quot;ScrollGranularity&quot; }
-            ]
-        },
-        {
-            &quot;name&quot;: &quot;ScrollPage&quot;,
-            &quot;description&quot;: &quot;The embedder signalled a scroll event.&quot;,
-            &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
-            &quot;members&quot;: [
-                { &quot;name&quot;: &quot;direction&quot;, &quot;type&quot;: &quot;ScrollDirection&quot; },
-                { &quot;name&quot;: &quot;granularity&quot;, &quot;type&quot;: &quot;ScrollGranularity&quot; }
-            ]
-        }
-    ]
</del><ins>+    &quot;inputs&quot;: {
+        &quot;WebCore&quot;: [
+            {
+                &quot;name&quot;: &quot;BeginSegmentSentinel&quot;,
+                &quot;description&quot;: &quot;A sentinel input to signal the start of a segment.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [ ]
+            },
+            {
+                &quot;name&quot;: &quot;DocumentLastModifiedDate&quot;,
+                &quot;description&quot;: &quot;A fallback value used for the document's last modified date if the Last-Modified header can't be found or used.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;fallbackValue&quot;, &quot;type&quot;: &quot;double&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;EndSegmentSentinel&quot;,
+                &quot;description&quot;: &quot;A sentinel input to signal the end of a segment.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [ ]
+            },
+            {
+                &quot;name&quot;: &quot;HandleMouseMove&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a mouse move event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; },
+                    { &quot;name&quot;: &quot;scrollbarTargeted&quot;, &quot;type&quot;: &quot;bool&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;HandleMousePress&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a mouse press event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;HandleMouseRelease&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a mouse release event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformMouseEvent&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;HandleKeyPress&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a key press event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformKeyboardEvent&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;HandleWheelEvent&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a mouse wheel event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;platformEvent&quot;, &quot;type&quot;: &quot;PlatformWheelEvent&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;InitialNavigation&quot;,
+                &quot;description&quot;: &quot;Initiate the initial main frame navigation.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;flags&quot;: [&quot;HIDDEN&quot;, &quot;CREATE_FROM_PAGE&quot;],
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;securityOrigin&quot;, &quot;type&quot;: &quot;SecurityOrigin&quot; },
+                    { &quot;name&quot;: &quot;url&quot;, &quot;type&quot;: &quot;URL&quot; },
+                    { &quot;name&quot;: &quot;referrer&quot;, &quot;type&quot;: &quot;String&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;FetchPluginData&quot;,
+                &quot;description&quot;: &quot;Plugin data was requested through DOMPluginArray or DOMMimeTypeArray.&quot;,
+                &quot;queue&quot;: &quot;SCRIPT_MEMOIZED&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;pluginData&quot;, &quot;type&quot;: &quot;PluginData&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;LogicalScrollPage&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a logical scroll event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;direction&quot;, &quot;type&quot;: &quot;ScrollLogicalDirection&quot; },
+                    { &quot;name&quot;: &quot;granularity&quot;, &quot;type&quot;: &quot;ScrollGranularity&quot; }
+                ]
+            },
+            {
+                &quot;name&quot;: &quot;ScrollPage&quot;,
+                &quot;description&quot;: &quot;The embedder signalled a scroll event.&quot;,
+                &quot;queue&quot;: &quot;EVENT_LOOP&quot;,
+                &quot;members&quot;: [
+                    { &quot;name&quot;: &quot;direction&quot;, &quot;type&quot;: &quot;ScrollDirection&quot; },
+                    { &quot;name&quot;: &quot;granularity&quot;, &quot;type&quot;: &quot;ScrollGranularity&quot; }
+                ]
+            }
+        ]
+    }
</ins><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>