<!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>[178606] trunk/Source/JavaScriptCore</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/178606">178606</a></dd>
<dt>Author</dt> <dd>burg@cs.washington.edu</dd>
<dt>Date</dt> <dd>2015-01-16 15:17:45 -0800 (Fri, 16 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: code generator should introduce typedefs for protocol types that are arrays
https://bugs.webkit.org/show_bug.cgi?id=140557

Reviewed by Joseph Pecoraro.

Currently, there is no generated type name for &quot;array&quot; type declarations such as Console.CallStack.
This makes it longwinded and confusing to use the type in C++ code.

This patch adds a typedef for array type declarations, so types such as Console::CallStack
can be referred to directly, rather than using Inspector::Protocol::Array&lt;Console::CallFrame&gt;.

Some tests were updated to cover array type declarations used as parameters and type members.

* inspector/ScriptCallStack.cpp: Use the new typedef.
(Inspector::ScriptCallStack::buildInspectorArray):
* inspector/ScriptCallStack.h:
* inspector/scripts/codegen/cpp_generator.py:
(CppGenerator.cpp_protocol_type_for_type): If an ArrayType is nominal, use the typedef'd name instead.
* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(_generate_typedefs_for_domain): Also generate typedefs for array type declarations.
(_generate_typedefs_for_domain.Inspector):
* inspector/scripts/codegen/models.py: Save the name of an ArrayType when it is a type declaration.
(ArrayType.__init__):
(Protocol.resolve_types):
(Protocol.lookup_type_reference):
* inspector/scripts/tests/commands-with-async-attribute.json:
* inspector/scripts/tests/commands-with-optional-call-return-parameters.json:
* inspector/scripts/tests/events-with-optional-parameters.json:
* inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
* inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
* inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
* inspector/scripts/tests/expected/type-declaration-array-type.json-result:
* inspector/scripts/tests/expected/type-declaration-object-type.json-result:
* inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
* inspector/scripts/tests/type-declaration-object-type.json:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorScriptCallStackcpp">trunk/Source/JavaScriptCore/inspector/ScriptCallStack.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorScriptCallStackh">trunk/Source/JavaScriptCore/inspector/ScriptCallStack.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generatorpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_protocol_types_headerpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegenmodelspy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestscommandswithasyncattributejson">trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-async-attribute.json</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestscommandswithoptionalcallreturnparametersjson">trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-optional-call-return-parameters.json</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestseventswithoptionalparametersjson">trunk/Source/JavaScriptCore/inspector/scripts/tests/events-with-optional-parameters.json</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithasyncattributejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithoptionalcallreturnparametersjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedeventswithoptionalparametersjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationarraytypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationobjecttypejsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtyperequiringruntimecastsjsonresult">trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptsteststypedeclarationobjecttypejson">trunk/Source/JavaScriptCore/inspector/scripts/tests/type-declaration-object-type.json</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -1,5 +1,43 @@
</span><span class="cx"> 2015-01-16  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
</span><span class="cx"> 
</span><ins>+        Web Inspector: code generator should introduce typedefs for protocol types that are arrays
+        https://bugs.webkit.org/show_bug.cgi?id=140557
+
+        Reviewed by Joseph Pecoraro.
+
+        Currently, there is no generated type name for &quot;array&quot; type declarations such as Console.CallStack.
+        This makes it longwinded and confusing to use the type in C++ code.
+
+        This patch adds a typedef for array type declarations, so types such as Console::CallStack
+        can be referred to directly, rather than using Inspector::Protocol::Array&lt;Console::CallFrame&gt;.
+
+        Some tests were updated to cover array type declarations used as parameters and type members.
+
+        * inspector/ScriptCallStack.cpp: Use the new typedef.
+        (Inspector::ScriptCallStack::buildInspectorArray):
+        * inspector/ScriptCallStack.h:
+        * inspector/scripts/codegen/cpp_generator.py:
+        (CppGenerator.cpp_protocol_type_for_type): If an ArrayType is nominal, use the typedef'd name instead.
+        * inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
+        (_generate_typedefs_for_domain): Also generate typedefs for array type declarations.
+        (_generate_typedefs_for_domain.Inspector):
+        * inspector/scripts/codegen/models.py: Save the name of an ArrayType when it is a type declaration.
+        (ArrayType.__init__):
+        (Protocol.resolve_types):
+        (Protocol.lookup_type_reference):
+        * inspector/scripts/tests/commands-with-async-attribute.json:
+        * inspector/scripts/tests/commands-with-optional-call-return-parameters.json:
+        * inspector/scripts/tests/events-with-optional-parameters.json:
+        * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
+        * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
+        * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
+        * inspector/scripts/tests/expected/type-declaration-array-type.json-result:
+        * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
+        * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
+        * inspector/scripts/tests/type-declaration-object-type.json:
+
+2015-01-16  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
</ins><span class="cx">         Web Replay: purge remaining PassRefPtr uses and minor cleanup
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=140456
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorScriptCallStackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/ScriptCallStack.cpp (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/ScriptCallStack.cpp        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/ScriptCallStack.cpp        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -107,9 +107,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Console::CallFrame&gt;&gt; ScriptCallStack::buildInspectorArray() const
</del><ins>+Ref&lt;Inspector::Protocol::Console::StackTrace&gt; ScriptCallStack::buildInspectorArray() const
</ins><span class="cx"> {
</span><del>-    auto frames = Inspector::Protocol::Array&lt;Inspector::Protocol::Console::CallFrame&gt;::create();
</del><ins>+    auto frames = Inspector::Protocol::Console::StackTrace::create();
</ins><span class="cx">     for (size_t i = 0; i &lt; m_frames.size(); i++)
</span><span class="cx">         frames-&gt;addItem(m_frames.at(i).buildInspectorObject());
</span><span class="cx">     return WTF::move(frames);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorScriptCallStackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/ScriptCallStack.h (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/ScriptCallStack.h        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/ScriptCallStack.h        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx">     bool isEqual(ScriptCallStack*) const;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><del>-    Ref&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Console::CallFrame&gt;&gt; buildInspectorArray() const;
</del><ins>+    Ref&lt;Inspector::Protocol::Console::StackTrace&gt; buildInspectorArray() const;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generatorpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -93,10 +93,11 @@
</span><span class="cx">     def cpp_protocol_type_for_type(_type):
</span><span class="cx">         if isinstance(_type, ObjectType) and len(_type.members) == 0:
</span><span class="cx">             return 'Inspector::InspectorObject'
</span><del>-        if isinstance(_type, (ObjectType, AliasedType, EnumType)):
</del><ins>+        if isinstance(_type, ArrayType):
+            if _type.raw_name() is None:  # Otherwise, fall through and use typedef'd name.
+                return 'Inspector::Protocol::Array&lt;%s&gt;' % CppGenerator.cpp_protocol_type_for_type(_type.element_type)
+        if isinstance(_type, (ObjectType, AliasedType, EnumType, ArrayType)):
</ins><span class="cx">             return 'Inspector::Protocol::%s::%s' % (_type.type_domain().domain_name, _type.raw_name())
</span><del>-        if isinstance(_type, ArrayType):
-            return 'Inspector::Protocol::Array&lt;%s&gt;' % CppGenerator.cpp_protocol_type_for_type(_type.element_type)
</del><span class="cx">         if isinstance(_type, PrimitiveType):
</span><span class="cx">             return CppGenerator.cpp_name_for_primitive_type(_type)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_protocol_types_headerpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_protocol_types_header.py        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -134,7 +134,8 @@
</span><span class="cx"> 
</span><span class="cx">     def _generate_typedefs_for_domain(self, domain):
</span><span class="cx">         primitive_declarations = filter(lambda decl: isinstance(decl.type, AliasedType), domain.type_declarations)
</span><del>-        if len(primitive_declarations) == 0:
</del><ins>+        array_declarations = filter(lambda decl: isinstance(decl.type, ArrayType), domain.type_declarations)
+        if len(primitive_declarations) == 0 and len(array_declarations) == 0:
</ins><span class="cx">             return ''
</span><span class="cx"> 
</span><span class="cx">         sections = []
</span><span class="lines">@@ -146,9 +147,17 @@
</span><span class="cx">             typedef_lines.append('typedef %s %s;' % (primitive_name, declaration.type_name))
</span><span class="cx">             sections.append('\n'.join(typedef_lines))
</span><span class="cx"> 
</span><ins>+        for declaration in array_declarations:
+            element_type = CppGenerator.cpp_protocol_type_for_type(declaration.type.element_type)
+            typedef_lines = []
+            if len(declaration.description) &gt; 0:
+                typedef_lines.append('/* %s */' % declaration.description)
+            typedef_lines.append('typedef Inspector::Protocol::Array&lt;%s&gt; %s;' % (element_type, declaration.type_name))
+            sections.append('\n'.join(typedef_lines))
+
</ins><span class="cx">         lines = []
</span><span class="cx">         lines.append('namespace %s {' % domain.domain_name)
</span><del>-        lines.append('\n\n'.join(sections))
</del><ins>+        lines.append('\n'.join(sections))
</ins><span class="cx">         lines.append('} // %s' % domain.domain_name)
</span><span class="cx">         return self.wrap_with_guard_for_domain(domain, '\n'.join(lines))
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegenmodelspy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/models.py        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -224,7 +224,8 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class ArrayType(Type):
</span><del>-    def __init__(self, element_type_ref, domain):
</del><ins>+    def __init__(self, name, element_type_ref, domain):
+        self._name = name
</ins><span class="cx">         self._domain = domain
</span><span class="cx">         self._element_type_ref = element_type_ref
</span><span class="cx">         self.element_type = None
</span><span class="lines">@@ -426,7 +427,7 @@
</span><span class="cx">                     primitive_type_ref = TypeReference(declaration.type_ref.type_kind, None, None, None)
</span><span class="cx">                     type_instance = EnumType(declaration.type_name, domain, declaration.type_ref.enum_values, primitive_type_ref)
</span><span class="cx">                 elif kind == &quot;array&quot;:
</span><del>-                    type_instance = ArrayType(declaration.type_ref.array_type_ref, domain)
</del><ins>+                    type_instance = ArrayType(declaration.type_name, declaration.type_ref.array_type_ref, domain)
</ins><span class="cx">                 elif kind == &quot;object&quot;:
</span><span class="cx">                     type_instance = ObjectType(declaration.type_name, domain, declaration.type_members)
</span><span class="cx">                 else:
</span><span class="lines">@@ -452,7 +453,7 @@
</span><span class="cx">     def lookup_type_reference(self, type_ref, domain):
</span><span class="cx">         # If reference is to an anonymous array type, create a fresh instance.
</span><span class="cx">         if type_ref.type_kind == &quot;array&quot;:
</span><del>-            type_instance = ArrayType(type_ref.array_type_ref, domain)
</del><ins>+            type_instance = ArrayType(None, type_ref.array_type_ref, domain)
</ins><span class="cx">             type_instance.resolve_type_references(self)
</span><span class="cx">             log.debug(&quot;&lt; Created fresh type instance for anonymous array type: %s&quot; % type_instance.qualified_name())
</span><span class="cx">             return type_instance
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestscommandswithasyncattributejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-async-attribute.json (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-async-attribute.json        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-async-attribute.json        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -12,6 +12,11 @@
</span><span class="cx">             &quot;enum&quot;: [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;ColorList&quot;,
+            &quot;type&quot;: &quot;array&quot;,
+            &quot;items&quot;: { &quot;$ref&quot;: &quot;PrimaryColors&quot; }
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;Error&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Database error.&quot;,
</span><span class="lines">@@ -37,6 +42,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot;, &quot;optional&quot;: true },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot;, &quot;optional&quot;: true },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;], &quot;optional&quot;: true }
</span><span class="cx">             ]
</span><span class="cx">         },
</span><span class="lines">@@ -56,6 +62,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot;, &quot;optional&quot;: true },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot;, &quot;optional&quot;: true },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;], &quot;optional&quot;: true }
</span><span class="cx">             ]
</span><span class="cx">         },
</span><span class="lines">@@ -73,6 +80,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;any&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot; },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;] }
</span><span class="cx">             ]
</span><span class="lines">@@ -93,6 +101,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot; },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;] }
</span><span class="cx">             ]
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestscommandswithoptionalcallreturnparametersjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-optional-call-return-parameters.json (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-optional-call-return-parameters.json        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/commands-with-optional-call-return-parameters.json        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -12,6 +12,11 @@
</span><span class="cx">             &quot;enum&quot;: [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;ColorList&quot;,
+            &quot;type&quot;: &quot;array&quot;,
+            &quot;items&quot;: { &quot;$ref&quot;: &quot;PrimaryColors&quot; }
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;Error&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Database error.&quot;,
</span><span class="lines">@@ -33,6 +38,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot;, &quot;optional&quot;: true },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot;, &quot;optional&quot;: true },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;], &quot;optional&quot;: true }
</span><span class="cx">             ],
</span><span class="cx">             &quot;returns&quot;: [
</span><span class="lines">@@ -44,6 +50,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot;, &quot;optional&quot;: true },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot;, &quot;optional&quot;: true },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;], &quot;optional&quot;: true }
</span><span class="cx">             ]
</span><span class="cx">         },
</span><span class="lines">@@ -58,6 +65,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot; },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;] }
</span><span class="cx">             ],
</span><span class="cx">             &quot;returns&quot;: [
</span><span class="lines">@@ -69,6 +77,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;databaseId&quot;, &quot;$ref&quot;: &quot;DatabaseId&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot; },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;] }
</span><span class="cx">             ]
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestseventswithoptionalparametersjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/events-with-optional-parameters.json (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/events-with-optional-parameters.json        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/events-with-optional-parameters.json        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -12,6 +12,11 @@
</span><span class="cx">             &quot;values&quot;: [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;ColorList&quot;,
+            &quot;type&quot;: &quot;array&quot;,
+            &quot;items&quot;: { &quot;$ref&quot;: &quot;PrimaryColors&quot; }
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;Error&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;description&quot;: &quot;Database error.&quot;,
</span><span class="lines">@@ -32,6 +37,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;any&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot;, &quot;optional&quot;: true },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot;, &quot;optional&quot;: true },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;values&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;], &quot;optional&quot;: true }
</span><span class="cx">             ]
</span><span class="cx">         },
</span><span class="lines">@@ -45,6 +51,7 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;any&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;sqlError&quot;, &quot;$ref&quot;: &quot;Error&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;screenColor&quot;, &quot;$ref&quot;: &quot;PrimaryColors&quot; },
</span><ins>+                { &quot;name&quot;: &quot;alternateColors&quot;, &quot;$ref&quot;: &quot;ColorList&quot; },
</ins><span class="cx">                 { &quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;values&quot;: [&quot;cyan&quot;, &quot;magenta&quot;, &quot;yellow&quot;, &quot;black&quot;] }
</span><span class="cx">             ]
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithasyncattributejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-async-attribute.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -98,10 +98,10 @@
</span><span class="cx"> // Database.
</span><span class="cx"> InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, &quot;Database&quot;);
</span><span class="cx"> InspectorBackend.registerEnum(&quot;Database.PrimaryColors&quot;, {Red: &quot;red&quot;, Green: &quot;green&quot;, Blue: &quot;blue&quot;});
</span><del>-InspectorBackend.registerCommand(&quot;Database.executeSQLSyncOptionalReturnValues&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
-InspectorBackend.registerCommand(&quot;Database.executeSQLAsyncOptionalReturnValues&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
-InspectorBackend.registerCommand(&quot;Database.executeSQLSync&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
-InspectorBackend.registerCommand(&quot;Database.executeSQLAsync&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
</del><ins>+InspectorBackend.registerCommand(&quot;Database.executeSQLSyncOptionalReturnValues&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
+InspectorBackend.registerCommand(&quot;Database.executeSQLAsyncOptionalReturnValues&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
+InspectorBackend.registerCommand(&quot;Database.executeSQLSync&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;alternateColors&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
+InspectorBackend.registerCommand(&quot;Database.executeSQLAsync&quot;, [{&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;query&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
</ins><span class="cx"> InspectorBackend.activateDomain(&quot;Database&quot;);
</span><span class="cx"> ### End File: InspectorBackendCommands.js
</span><span class="cx"> 
</span><span class="lines">@@ -168,18 +168,18 @@
</span><span class="cx">         Yellow = 5,
</span><span class="cx">         Black = 6,
</span><span class="cx">     }; // enum class PrintColor
</span><del>-    virtual void executeSQLSyncOptionalReturnValues(ErrorString&amp;, int in_databaseId, const String&amp; in_query, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; opt_out_columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* opt_out_notes, Inspector::Protocol::OptOutput&lt;double&gt;* opt_out_timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* opt_out_values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* opt_out_payload, Inspector::Protocol::OptOutput&lt;int&gt;* opt_out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, InspectorDatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
</del><ins>+    virtual void executeSQLSyncOptionalReturnValues(ErrorString&amp;, int in_databaseId, const String&amp; in_query, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; opt_out_columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* opt_out_notes, Inspector::Protocol::OptOutput&lt;double&gt;* opt_out_timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* opt_out_values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* opt_out_payload, Inspector::Protocol::OptOutput&lt;int&gt;* opt_out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp; opt_out_alternateColors, InspectorDatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
</ins><span class="cx">     class ExecuteSQLAsyncOptionalReturnValuesCallback : public Inspector::InspectorBackendDispatcher::CallbackBase {
</span><span class="cx">     public:
</span><span class="cx">         ExecuteSQLAsyncOptionalReturnValuesCallback(Ref&lt;Inspector::InspectorBackendDispatcher&gt;&amp;&amp;, int id);
</span><del>-        void sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* notes, Inspector::Protocol::OptOutput&lt;double&gt;* timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* payload, Inspector::Protocol::OptOutput&lt;int&gt;* databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, Inspector::Protocol::OptOutput&lt;String&gt;* screenColor, Inspector::Protocol::OptOutput&lt;String&gt;* printColor);
</del><ins>+        void sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* notes, Inspector::Protocol::OptOutput&lt;double&gt;* timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* payload, Inspector::Protocol::OptOutput&lt;int&gt;* databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, Inspector::Protocol::OptOutput&lt;String&gt;* screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp;&amp; alternateColors, Inspector::Protocol::OptOutput&lt;String&gt;* printColor);
</ins><span class="cx">     };
</span><span class="cx">     virtual void executeSQLAsyncOptionalReturnValues(ErrorString&amp;, int in_databaseId, const String&amp; in_query, Ref&lt;ExecuteSQLAsyncOptionalReturnValuesCallback&gt;&amp;&amp; callback) = 0;
</span><del>-    virtual void executeSQLSync(ErrorString&amp;, int in_databaseId, const String&amp; in_query, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, InspectorDatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
</del><ins>+    virtual void executeSQLSync(ErrorString&amp;, int in_databaseId, const String&amp; in_query, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; out_sqlError, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp; out_alternateColors, Inspector::Protocol::Database::PrimaryColors* out_screenColor, InspectorDatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
</ins><span class="cx">     class ExecuteSQLAsyncCallback : public Inspector::InspectorBackendDispatcher::CallbackBase {
</span><span class="cx">     public:
</span><span class="cx">         ExecuteSQLAsyncCallback(Ref&lt;Inspector::InspectorBackendDispatcher&gt;&amp;&amp;, int id);
</span><del>-        void sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, const String&amp; notes, double timestamp, Inspector::InspectorObject values, Inspector::InspectorValue payload, int databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, const String&amp; screenColor, const String&amp; printColor);
</del><ins>+        void sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, const String&amp; notes, double timestamp, Inspector::InspectorObject values, Inspector::InspectorValue payload, int databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, const String&amp; screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp;&amp; alternateColors, const String&amp; printColor);
</ins><span class="cx">     };
</span><span class="cx">     virtual void executeSQLAsync(ErrorString&amp;, int in_databaseId, const String&amp; in_query, Ref&lt;ExecuteSQLAsyncCallback&gt;&amp;&amp; callback) = 0;
</span><span class="cx"> protected:
</span><span class="lines">@@ -322,8 +322,9 @@
</span><span class="cx">     Inspector::Protocol::OptOutput&lt;Inspector::Protocol::Database::DatabaseId&gt; out_databaseId;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::Error&gt; out_sqlError;
</span><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><ins>+    RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</ins><span class="cx">     InspectorDatabaseBackendDispatcherHandler::PrintColor out_printColor;
</span><del>-    m_agent-&gt;executeSQLSyncOptionalReturnValues(error, in_databaseId, in_query, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, &amp;out_printColor);
</del><ins>+    m_agent-&gt;executeSQLSyncOptionalReturnValues(error, in_databaseId, in_query, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, out_alternateColors, &amp;out_printColor);
</ins><span class="cx"> 
</span><span class="cx">     if (!error.length()) {
</span><span class="cx">         if (out_columnNames)
</span><span class="lines">@@ -342,6 +343,8 @@
</span><span class="cx">             result-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), out_sqlError);
</span><span class="cx">         if (out_screenColor.isAssigned())
</span><span class="cx">             result-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), out_screenColor.getValue());
</span><ins>+        if (out_alternateColors)
+            result-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), out_alternateColors);
</ins><span class="cx">         if (out_printColor.isAssigned())
</span><span class="cx">             result-&gt;setString(ASCIILiteral(&quot;printColor&quot;), out_printColor.getValue());
</span><span class="cx">     }
</span><span class="lines">@@ -350,7 +353,7 @@
</span><span class="cx"> 
</span><span class="cx"> InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncOptionalReturnValuesCallback::ExecuteSQLAsyncOptionalReturnValuesCallback(Ref&lt;InspectorBackendDispatcher&gt;&amp;&amp; backendDispatcher, int id) : Inspector::InspectorBackendDispatcher::CallbackBase(WTF::move(backendDispatcher), id) { }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncOptionalReturnValuesCallback::sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* notes, Inspector::Protocol::OptOutput&lt;double&gt;* timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* payload, Inspector::Protocol::OptOutput&lt;int&gt;* databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, Inspector::Protocol::OptOutput&lt;String&gt;* screenColor, Inspector::Protocol::OptOutput&lt;String&gt;* printColor)
</del><ins>+void InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncOptionalReturnValuesCallback::sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* notes, Inspector::Protocol::OptOutput&lt;double&gt;* timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* payload, Inspector::Protocol::OptOutput&lt;int&gt;* databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, Inspector::Protocol::OptOutput&lt;String&gt;* screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp;&amp; alternateColors, Inspector::Protocol::OptOutput&lt;String&gt;* printColor)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="cx">     if (columnNames)
</span><span class="lines">@@ -369,6 +372,8 @@
</span><span class="cx">         jsonMessage-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), sqlError);
</span><span class="cx">     if (screenColor.isAssigned())
</span><span class="cx">         jsonMessage-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), screenColor.getValue());
</span><ins>+    if (alternateColors)
+        jsonMessage-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), alternateColors);
</ins><span class="cx">     if (printColor.isAssigned())
</span><span class="cx">         jsonMessage-&gt;setString(ASCIILiteral(&quot;printColor&quot;), printColor.getValue());
</span><span class="cx">     sendIfActive(WTF::move(jsonMessage), ErrorString());
</span><span class="lines">@@ -435,9 +440,10 @@
</span><span class="cx">     Inspector::InspectorValue out_payload;
</span><span class="cx">     Inspector::Protocol::Database::DatabaseId out_databaseId;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::Error&gt; out_sqlError;
</span><ins>+    RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</ins><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><span class="cx">     InspectorDatabaseBackendDispatcherHandler::PrintColor out_printColor;
</span><del>-    m_agent-&gt;executeSQLSync(error, in_databaseId, in_query, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, &amp;out_printColor);
</del><ins>+    m_agent-&gt;executeSQLSync(error, in_databaseId, in_query, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, out_alternateColors, &amp;out_screenColor, &amp;out_printColor);
</ins><span class="cx"> 
</span><span class="cx">     if (!error.length()) {
</span><span class="cx">         result-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), out_columnNames);
</span><span class="lines">@@ -447,6 +453,7 @@
</span><span class="cx">         result-&gt;setValue(ASCIILiteral(&quot;payload&quot;), out_payload);
</span><span class="cx">         result-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), out_databaseId);
</span><span class="cx">         result-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), out_sqlError);
</span><ins>+        result-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), out_alternateColors);
</ins><span class="cx">         result-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), Inspector::Protocol::getEnumConstantValue(out_screenColor));
</span><span class="cx">         result-&gt;setString(ASCIILiteral(&quot;printColor&quot;), Inspector::Protocol::getEnumConstantValue(out_printColor));
</span><span class="cx">     }
</span><span class="lines">@@ -455,7 +462,7 @@
</span><span class="cx"> 
</span><span class="cx"> InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncCallback::ExecuteSQLAsyncCallback(Ref&lt;InspectorBackendDispatcher&gt;&amp;&amp; backendDispatcher, int id) : Inspector::InspectorBackendDispatcher::CallbackBase(WTF::move(backendDispatcher), id) { }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncCallback::sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, const String&amp; notes, double timestamp, Inspector::InspectorObject values, Inspector::InspectorValue payload, int databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, const String&amp; screenColor, const String&amp; printColor)
</del><ins>+void InspectorDatabaseBackendDispatcherHandler::ExecuteSQLAsyncCallback::sendSuccess(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp;&amp; columnNames, const String&amp; notes, double timestamp, Inspector::InspectorObject values, Inspector::InspectorValue payload, int databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp;&amp; sqlError, const String&amp; screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp;&amp; alternateColors, const String&amp; printColor)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="cx">     jsonMessage-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), columnNames);
</span><span class="lines">@@ -466,6 +473,7 @@
</span><span class="cx">     jsonMessage-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), databaseId);
</span><span class="cx">     jsonMessage-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), sqlError);
</span><span class="cx">     jsonMessage-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), Inspector::Protocol::getEnumConstantValue(screenColor));
</span><ins>+    jsonMessage-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), alternateColors);
</ins><span class="cx">     jsonMessage-&gt;setString(ASCIILiteral(&quot;printColor&quot;), Inspector::Protocol::getEnumConstantValue(printColor));
</span><span class="cx">     sendIfActive(WTF::move(jsonMessage), ErrorString());
</span><span class="cx"> }
</span><span class="lines">@@ -663,6 +671,7 @@
</span><span class="cx"> namespace Database {
</span><span class="cx"> /* Unique identifier of Database object. */
</span><span class="cx"> typedef int DatabaseId;
</span><ins>+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Database::PrimaryColors&gt; ColorList;
</ins><span class="cx"> } // Database
</span><span class="cx"> // End of typedefs.
</span><span class="cx"> 
</span><span class="lines">@@ -1054,13 +1063,14 @@
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteSQLSyncOptionalReturnValuesPrintColor *printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteSQLSyncOptionalReturnValuesPrintColor *printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         if (columnNames)
</span><span class="cx">             resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(*columnNames));
</span><span class="cx">         if (notes)
</span><span class="lines">@@ -1077,6 +1087,8 @@
</span><span class="cx">             resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [*sqlError toInspectorObject]);
</span><span class="cx">         if (screenColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(*screenColor));
</span><ins>+        if (alternateColors)
+            resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(*alternateColors));
</ins><span class="cx">         if (printColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(*printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="lines">@@ -1094,13 +1106,14 @@
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteSQLAsyncOptionalReturnValuesPrintColor *printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteSQLAsyncOptionalReturnValuesPrintColor *printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         if (columnNames)
</span><span class="cx">             resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(*columnNames));
</span><span class="cx">         if (notes)
</span><span class="lines">@@ -1117,6 +1130,8 @@
</span><span class="cx">             resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [*sqlError toInspectorObject]);
</span><span class="cx">         if (screenColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(*screenColor));
</span><ins>+        if (alternateColors)
+            resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(*alternateColors));
</ins><span class="cx">         if (printColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(*printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="lines">@@ -1134,13 +1149,14 @@
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLSyncPrintColor printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLSyncPrintColor printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(columnNames));
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;notes&quot;), notes);
</span><span class="cx">         resultObject-&gt;setDouble(ASCIILiteral(&quot;timestamp&quot;), timestamp);
</span><span class="lines">@@ -1148,6 +1164,7 @@
</span><span class="cx">         resultObject-&gt;setValue(ASCIILiteral(&quot;payload&quot;), [payload toInspectorObject]);
</span><span class="cx">         resultObject-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), databaseId);
</span><span class="cx">         resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [sqlError toInspectorObject]);
</span><ins>+        resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(alternateColors));
</ins><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(screenColor));
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="lines">@@ -1165,13 +1182,14 @@
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLAsyncPrintColor printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabaseExecuteSQLAsyncPrintColor printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(columnNames));
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;notes&quot;), notes);
</span><span class="cx">         resultObject-&gt;setDouble(ASCIILiteral(&quot;timestamp&quot;), timestamp);
</span><span class="lines">@@ -1180,6 +1198,7 @@
</span><span class="cx">         resultObject-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), databaseId);
</span><span class="cx">         resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [sqlError toInspectorObject]);
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(screenColor));
</span><ins>+        resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(alternateColors));
</ins><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="cx">     };
</span><span class="lines">@@ -1507,10 +1526,10 @@
</span><span class="cx"> 
</span><span class="cx"> @protocol RWIProtocolDatabaseDomainHandler &lt;NSObject&gt;
</span><span class="cx"> @required
</span><del>-- (void)executeSQLSyncOptionalReturnValuesWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteSQLSyncOptionalReturnValuesPrintColor *printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
-- (void)executeSQLAsyncOptionalReturnValuesWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteSQLAsyncOptionalReturnValuesPrintColor *printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
-- (void)executeSQLSyncWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLSyncPrintColor printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
-- (void)executeSQLAsyncWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLAsyncPrintColor printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
</del><ins>+- (void)executeSQLSyncOptionalReturnValuesWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteSQLSyncOptionalReturnValuesPrintColor *printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
+- (void)executeSQLAsyncOptionalReturnValuesWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteSQLAsyncOptionalReturnValuesPrintColor *printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
+- (void)executeSQLSyncWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteSQLSyncPrintColor printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
+- (void)executeSQLAsyncWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabaseExecuteSQLAsyncPrintColor printColor))successCallback databaseId:(int)databaseId query:(NSString *)query;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedcommandswithoptionalcallreturnparametersjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> class AlternateInspectorDatabaseBackendDispatcher : public AlternateInspectorBackendDispatcher {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~AlternateInspectorDatabaseBackendDispatcher() { }
</span><del>-    virtual void executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const String* in_printColor) = 0;
-    virtual void executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const String&amp; in_printColor) = 0;
</del><ins>+    virtual void executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String* in_printColor) = 0;
+    virtual void executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String&amp; in_printColor) = 0;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace Inspector
</span><span class="lines">@@ -95,8 +95,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Database.
</span><span class="cx"> InspectorBackend.registerEnum(&quot;Database.PrimaryColors&quot;, {Red: &quot;red&quot;, Green: &quot;green&quot;, Blue: &quot;blue&quot;});
</span><del>-InspectorBackend.registerCommand(&quot;Database.executeAllOptionalParameters&quot;, [{&quot;name&quot;: &quot;columnNames&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;notes&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;sqlError&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;screenColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;
 printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
-InspectorBackend.registerCommand(&quot;Database.executeNoOptionalParameters&quot;, [{&quot;name&quot;: &quot;columnNames&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;notes&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;sqlError&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;screenColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;print
 Color&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
</del><ins>+InspectorBackend.registerCommand(&quot;Database.executeAllOptionalParameters&quot;, [{&quot;name&quot;: &quot;columnNames&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;notes&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;sqlError&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;screenColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;a
 lternateColors&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true}, {&quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
+InspectorBackend.registerCommand(&quot;Database.executeNoOptionalParameters&quot;, [{&quot;name&quot;: &quot;columnNames&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;notes&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;databaseId&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;sqlError&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;screenColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;alter
 nateColors&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: false}, {&quot;name&quot;: &quot;printColor&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: false}], [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;databaseId&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
</ins><span class="cx"> InspectorBackend.activateDomain(&quot;Database&quot;);
</span><span class="cx"> ### End File: InspectorBackendCommands.js
</span><span class="cx"> 
</span><span class="lines">@@ -163,8 +163,8 @@
</span><span class="cx">         Yellow = 5,
</span><span class="cx">         Black = 6,
</span><span class="cx">     }; // enum class PrintColor
</span><del>-    virtual void executeAllOptionalParameters(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const String* in_printColor, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; opt_out_columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* opt_out_notes, Inspector::Protocol::OptOutput&lt;double&gt;* opt_out_timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* opt_out_values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* opt_out_payload, Inspector::Protocol::OptOutput&lt;int&gt;* opt_out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; opt_out_sqlError, Inspector::Pr
 otocol::Database::PrimaryColors* opt_out_screenColor, InspectorDatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
-    virtual void executeNoOptionalParameters(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const String&amp; in_printColor, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, InspectorDatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
</del><ins>+    virtual void executeAllOptionalParameters(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String* in_printColor, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; opt_out_columnNames, Inspector::Protocol::OptOutput&lt;String&gt;* opt_out_notes, Inspector::Protocol::OptOutput&lt;double&gt;* opt_out_timestamp, Inspector::Protocol::OptOutput&lt;Inspector::InspectorObject&gt;* opt_out_values, Inspector::Protocol::OptOutput&lt;Inspector::InspectorValue&gt;* opt_out_payload, Inspector::Protocol::OptOutput&lt;int&gt;* opt_out_databaseId, RefPtr&lt;In
 spector::Protocol::Database::Error&gt;&amp; opt_out_sqlError, Inspector::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp; opt_out_alternateColors, InspectorDatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
+    virtual void executeNoOptionalParameters(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String&amp; in_printColor, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; out_columnNames, String* out_notes, double* out_timestamp, Inspector::InspectorObject* out_values, Inspector::InspectorValue* out_payload, int* out_databaseId, RefPtr&lt;Inspector::Protocol::Database::Error&gt;&amp; out_sqlError, Inspector::Protocol::Database::PrimaryColors* out_screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp; out_alternateColors, InspectorDatabaseBackendDispatche
 rHandler::PrintColor* out_printColor) = 0;
</ins><span class="cx"> protected:
</span><span class="cx">     virtual ~InspectorDatabaseBackendDispatcherHandler();
</span><span class="cx"> };
</span><span class="lines">@@ -290,6 +290,8 @@
</span><span class="cx">     RefPtr&lt;Inspector::InspectorObject&gt; in_sqlError = InspectorBackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;sqlError&quot;), &amp;sqlError_valueFound, protocolErrors.get());
</span><span class="cx">     bool screenColor_valueFound = false;
</span><span class="cx">     String in_screenColor = InspectorBackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;screenColor&quot;), &amp;screenColor_valueFound, protocolErrors.get());
</span><ins>+    bool alternateColors_valueFound = false;
+    RefPtr&lt;Inspector::InspectorArray&gt; in_alternateColors = InspectorBackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;alternateColors&quot;), &amp;alternateColors_valueFound, protocolErrors.get());
</ins><span class="cx">     bool printColor_valueFound = false;
</span><span class="cx">     String in_printColor = InspectorBackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;printColor&quot;), &amp;printColor_valueFound, protocolErrors.get());
</span><span class="cx">     if (protocolErrors-&gt;length()) {
</span><span class="lines">@@ -300,7 +302,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx">     if (m_alternateDispatcher) {
</span><del>-        m_alternateDispatcher-&gt;executeAllOptionalParameters(callId, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &amp;in_notes : nullptr, timestamp_valueFound ? &amp;in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &amp;in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &amp;in_screenColor : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr);
</del><ins>+        m_alternateDispatcher-&gt;executeAllOptionalParameters(callId, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &amp;in_notes : nullptr, timestamp_valueFound ? &amp;in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &amp;in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &amp;in_screenColor : nullptr, alternateColors_valueFound ? in_alternateColors.copyRef() : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -315,8 +317,9 @@
</span><span class="cx">     Inspector::Protocol::OptOutput&lt;Inspector::Protocol::Database::DatabaseId&gt; out_databaseId;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::Error&gt; out_sqlError;
</span><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><ins>+    RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</ins><span class="cx">     InspectorDatabaseBackendDispatcherHandler::PrintColor out_printColor;
</span><del>-    m_agent-&gt;executeAllOptionalParameters(error, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &amp;in_notes : nullptr, timestamp_valueFound ? &amp;in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &amp;in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &amp;in_screenColor : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, &amp;out_printColor);
</del><ins>+    m_agent-&gt;executeAllOptionalParameters(error, columnNames_valueFound ? in_columnNames.copyRef() : nullptr, notes_valueFound ? &amp;in_notes : nullptr, timestamp_valueFound ? &amp;in_timestamp : nullptr, values_valueFound ? in_values.copyRef() : nullptr, payload_valueFound ? in_payload.copyRef() : nullptr, databaseId_valueFound ? &amp;in_databaseId : nullptr, sqlError_valueFound ? in_sqlError.copyRef() : nullptr, screenColor_valueFound ? &amp;in_screenColor : nullptr, alternateColors_valueFound ? in_alternateColors.copyRef() : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, out_alternateColors, &amp;out_printColor);
</ins><span class="cx"> 
</span><span class="cx">     if (!error.length()) {
</span><span class="cx">         if (out_columnNames)
</span><span class="lines">@@ -335,6 +338,8 @@
</span><span class="cx">             result-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), out_sqlError);
</span><span class="cx">         if (out_screenColor.isAssigned())
</span><span class="cx">             result-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), out_screenColor.getValue());
</span><ins>+        if (out_alternateColors)
+            result-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), out_alternateColors);
</ins><span class="cx">         if (out_printColor.isAssigned())
</span><span class="cx">             result-&gt;setString(ASCIILiteral(&quot;printColor&quot;), out_printColor.getValue());
</span><span class="cx">     }
</span><span class="lines">@@ -354,6 +359,7 @@
</span><span class="cx">     int in_databaseId = InspectorBackendDispatcher::getInteger(paramsContainer.get(), ASCIILiteral(&quot;databaseId&quot;), nullptr, protocolErrors.get());
</span><span class="cx">     RefPtr&lt;Inspector::InspectorObject&gt; in_sqlError = InspectorBackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;sqlError&quot;), nullptr, protocolErrors.get());
</span><span class="cx">     String in_screenColor = InspectorBackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;screenColor&quot;), nullptr, protocolErrors.get());
</span><ins>+    RefPtr&lt;Inspector::InspectorArray&gt; in_alternateColors = InspectorBackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;alternateColors&quot;), nullptr, protocolErrors.get());
</ins><span class="cx">     String in_printColor = InspectorBackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;printColor&quot;), nullptr, protocolErrors.get());
</span><span class="cx">     if (protocolErrors-&gt;length()) {
</span><span class="cx">         String errorMessage = String::format(&quot;Some arguments of method '%s' can't be processed&quot;, &quot;Database.executeNoOptionalParameters&quot;);
</span><span class="lines">@@ -363,7 +369,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
</span><span class="cx">     if (m_alternateDispatcher) {
</span><del>-        m_alternateDispatcher-&gt;executeNoOptionalParameters(callId, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_printColor);
</del><ins>+        m_alternateDispatcher-&gt;executeNoOptionalParameters(callId, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_alternateColors.copyRef(), in_printColor);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -378,8 +384,9 @@
</span><span class="cx">     Inspector::Protocol::Database::DatabaseId out_databaseId;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::Error&gt; out_sqlError;
</span><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><ins>+    RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</ins><span class="cx">     InspectorDatabaseBackendDispatcherHandler::PrintColor out_printColor;
</span><del>-    m_agent-&gt;executeNoOptionalParameters(error, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_printColor, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, &amp;out_printColor);
</del><ins>+    m_agent-&gt;executeNoOptionalParameters(error, in_columnNames.copyRef(), in_notes, in_timestamp, in_values.copyRef(), in_payload.copyRef(), in_databaseId, in_sqlError.copyRef(), in_screenColor, in_alternateColors.copyRef(), in_printColor, out_columnNames, &amp;out_notes, &amp;out_timestamp, out_values, &amp;out_payload, &amp;out_databaseId, out_sqlError, &amp;out_screenColor, out_alternateColors, &amp;out_printColor);
</ins><span class="cx"> 
</span><span class="cx">     if (!error.length()) {
</span><span class="cx">         result-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), out_columnNames);
</span><span class="lines">@@ -390,6 +397,7 @@
</span><span class="cx">         result-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), out_databaseId);
</span><span class="cx">         result-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), out_sqlError);
</span><span class="cx">         result-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), Inspector::Protocol::getEnumConstantValue(out_screenColor));
</span><ins>+        result-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), out_alternateColors);
</ins><span class="cx">         result-&gt;setString(ASCIILiteral(&quot;printColor&quot;), Inspector::Protocol::getEnumConstantValue(out_printColor));
</span><span class="cx">     }
</span><span class="cx">     m_backendDispatcher-&gt;sendResponse(callId, WTF::move(result), error);
</span><span class="lines">@@ -556,6 +564,7 @@
</span><span class="cx"> namespace Database {
</span><span class="cx"> /* Unique identifier of Database object. */
</span><span class="cx"> typedef int DatabaseId;
</span><ins>+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Database::PrimaryColors&gt; ColorList;
</ins><span class="cx"> } // Database
</span><span class="cx"> // End of typedefs.
</span><span class="cx"> 
</span><span class="lines">@@ -759,8 +768,8 @@
</span><span class="cx"> class ObjCInspectorDatabaseBackendDispatcher final : public AlternateInspectorDatabaseBackendDispatcher {
</span><span class="cx"> public:
</span><span class="cx">     ObjCInspectorDatabaseBackendDispatcher(id&lt;RWIProtocolDatabaseDomainHandler&gt; handler) { m_delegate = handler; }
</span><del>-    virtual void executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const String* in_printColor) override;
-    virtual void executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const String&amp; in_printColor) override;
</del><ins>+    virtual void executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String* in_printColor) override;
+    virtual void executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String&amp; in_printColor) override;
</ins><span class="cx"> private:
</span><span class="cx">     RetainPtr&lt;id&lt;RWIProtocolDatabaseDomainHandler&gt;&gt; m_delegate;
</span><span class="cx"> };
</span><span class="lines">@@ -939,19 +948,20 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const String* in_printColor)
</del><ins>+void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String* in_notes, const double* in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String* in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String* in_printColor)
</ins><span class="cx"> {
</span><span class="cx">     id errorCallback = ^(NSString *error) {
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         if (columnNames)
</span><span class="cx">             resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(*columnNames));
</span><span class="cx">         if (notes)
</span><span class="lines">@@ -968,6 +978,8 @@
</span><span class="cx">             resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [*sqlError toInspectorObject]);
</span><span class="cx">         if (screenColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(*screenColor));
</span><ins>+        if (alternateColors)
+            resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(*alternateColors));
</ins><span class="cx">         if (printColor)
</span><span class="cx">             resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(*printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="lines">@@ -997,26 +1009,30 @@
</span><span class="cx">     RWIProtocolDatabasePrimaryColors o_in_screenColor;
</span><span class="cx">     if (in_screenColor)
</span><span class="cx">         o_in_screenColor = fromProtocolString&lt;RWIProtocolDatabasePrimaryColors&gt;(*in_screenColor);
</span><ins>+    NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors;
+    if (in_alternateColors)
+        o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
</ins><span class="cx">     RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor o_in_printColor;
</span><span class="cx">     if (in_printColor)
</span><span class="cx">         o_in_printColor = fromProtocolString&lt;RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor&gt;(*in_printColor);
</span><span class="cx"> 
</span><del>-    [m_delegate executeAllOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:(in_columnNames ? &amp;o_in_columnNames : nil) notes:(in_notes ? &amp;o_in_notes : nil) timestamp:(in_timestamp ? &amp;o_in_timestamp : nil) values:(in_values ? &amp;o_in_values : nil) payload:(in_payload ? &amp;o_in_payload : nil) databaseId:(in_databaseId ? &amp;o_in_databaseId : nil) sqlError:(in_sqlError ? &amp;o_in_sqlError : nil) screenColor:(in_screenColor ? &amp;o_in_screenColor : nil) printColor:(in_printColor ? &amp;o_in_printColor : nil)];
</del><ins>+    [m_delegate executeAllOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:(in_columnNames ? &amp;o_in_columnNames : nil) notes:(in_notes ? &amp;o_in_notes : nil) timestamp:(in_timestamp ? &amp;o_in_timestamp : nil) values:(in_values ? &amp;o_in_values : nil) payload:(in_payload ? &amp;o_in_payload : nil) databaseId:(in_databaseId ? &amp;o_in_databaseId : nil) sqlError:(in_sqlError ? &amp;o_in_sqlError : nil) screenColor:(in_screenColor ? &amp;o_in_screenColor : nil) alternateColors:(in_alternateColors ? &amp;o_in_alternateColors : nil) printColor:(in_printColor ? &amp;o_in_printColor : nil)];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const String&amp; in_printColor)
</del><ins>+void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long callId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; in_sqlError, const String&amp; in_screenColor, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String&amp; in_printColor)
</ins><span class="cx"> {
</span><span class="cx">     id errorCallback = ^(NSString *error) {
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, InspectorObject::create(), error);
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor) {
</del><ins>+    id successCallback = ^(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor) {
</ins><span class="cx">         Ref&lt;InspectorObject&gt; resultObject = InspectorObject::create();
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(columnNames, @&quot;columnNames&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(notes, @&quot;notes&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(values, @&quot;values&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">         THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><ins>+        THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">         resultObject-&gt;setArray(ASCIILiteral(&quot;columnNames&quot;), inspectorStringArray(columnNames));
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;notes&quot;), notes);
</span><span class="cx">         resultObject-&gt;setDouble(ASCIILiteral(&quot;timestamp&quot;), timestamp);
</span><span class="lines">@@ -1025,6 +1041,7 @@
</span><span class="cx">         resultObject-&gt;setInteger(ASCIILiteral(&quot;databaseId&quot;), databaseId);
</span><span class="cx">         resultObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [sqlError toInspectorObject]);
</span><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), toProtocolString(screenColor));
</span><ins>+        resultObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(alternateColors));
</ins><span class="cx">         resultObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), toProtocolString(printColor));
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="cx">     };
</span><span class="lines">@@ -1037,9 +1054,10 @@
</span><span class="cx">     int o_in_databaseId = in_databaseId;
</span><span class="cx">     RWIProtocolDatabaseError *o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError.copyRef()] autorelease];
</span><span class="cx">     RWIProtocolDatabasePrimaryColors o_in_screenColor = fromProtocolString&lt;RWIProtocolDatabasePrimaryColors&gt;(in_screenColor);
</span><ins>+    NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
</ins><span class="cx">     RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString&lt;RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
</span><span class="cx"> 
</span><del>-    [m_delegate executeNoOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:o_in_columnNames notes:o_in_notes timestamp:o_in_timestamp values:o_in_values payload:o_in_payload databaseId:o_in_databaseId sqlError:o_in_sqlError screenColor:o_in_screenColor printColor:o_in_printColor];
</del><ins>+    [m_delegate executeNoOptionalParametersWithErrorCallback:errorCallback successCallback:successCallback columnNames:o_in_columnNames notes:o_in_notes timestamp:o_in_timestamp values:o_in_values payload:o_in_payload databaseId:o_in_databaseId sqlError:o_in_sqlError screenColor:o_in_screenColor alternateColors:o_in_alternateColors printColor:o_in_printColor];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1359,8 +1377,8 @@
</span><span class="cx"> 
</span><span class="cx"> @protocol RWIProtocolDatabaseDomainHandler &lt;NSObject&gt;
</span><span class="cx"> @required
</span><del>-- (void)executeAllOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor))successCallback columnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload databaseId:(int *)databaseId sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(RWIProtocolDatabasePrimaryColors *)screenColor printColor:(RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *)printColor;
-- (void)executeNoOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor))successCallback columnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload databaseId:(int)databaseId sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(RWIProtocolDatabasePrimaryColors)screenColor printColor:(RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor)printColor;
</del><ins>+- (void)executeAllOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ **columnNames, NSString **notes, double *timestamp, RWIProtocolJSONObject **values, RWIProtocolJSONObject **payload, int *databaseId, RWIProtocolDatabaseError **sqlError, RWIProtocolDatabasePrimaryColors *screenColor, NSArray/*&lt;NSString&gt;*/ **alternateColors, RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *printColor))successCallback columnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload databaseId:(int *)databaseId sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(RWIProtocolDatabasePrimaryColors *)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ **)alternateColors printColor:(RWIProtocolDatabaseExecuteAllOptionalParametersPrintColor *)printColor;
+- (void)executeNoOptionalParametersWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;NSString&gt;*/ *columnNames, NSString *notes, double timestamp, RWIProtocolJSONObject *values, RWIProtocolJSONObject *payload, int databaseId, RWIProtocolDatabaseError *sqlError, RWIProtocolDatabasePrimaryColors screenColor, NSArray/*&lt;NSString&gt;*/ *alternateColors, RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor printColor))successCallback columnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload databaseId:(int)databaseId sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(RWIProtocolDatabasePrimaryColors)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ *)alternateColors printColor:(RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor)printColor;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedeventswithoptionalparametersjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/events-with-optional-parameters.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -90,8 +90,8 @@
</span><span class="cx"> 
</span><span class="cx"> // Database.
</span><span class="cx"> InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, &quot;Database&quot;);
</span><del>-InspectorBackend.registerEvent(&quot;Database.didExecuteOptionalParameters&quot;, [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
-InspectorBackend.registerEvent(&quot;Database.didExecuteNoOptionalParameters&quot;, [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;printColor&quot;]);
</del><ins>+InspectorBackend.registerEvent(&quot;Database.didExecuteOptionalParameters&quot;, [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
+InspectorBackend.registerEvent(&quot;Database.didExecuteNoOptionalParameters&quot;, [&quot;columnNames&quot;, &quot;notes&quot;, &quot;timestamp&quot;, &quot;values&quot;, &quot;payload&quot;, &quot;sqlError&quot;, &quot;screenColor&quot;, &quot;alternateColors&quot;, &quot;printColor&quot;]);
</ins><span class="cx"> InspectorBackend.activateDomain(&quot;Database&quot;);
</span><span class="cx"> ### End File: InspectorBackendCommands.js
</span><span class="cx"> 
</span><span class="lines">@@ -250,8 +250,8 @@
</span><span class="cx"> class InspectorDatabaseFrontendDispatcher {
</span><span class="cx"> public:
</span><span class="cx">     InspectorDatabaseFrontendDispatcher(InspectorFrontendChannel* inspectorFrontendChannel) : m_inspectorFrontendChannel(inspectorFrontendChannel) { }
</span><del>-    void didExecuteOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String* const notes, const double* const timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors* const screenColor, const String* const printColor);
-    void didExecuteNoOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String&amp; notes, double timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors&amp; screenColor, const String&amp; printColor);
</del><ins>+    void didExecuteOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String* const notes, const double* const timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors* const screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; alternateColors, const String* const printColor);
+    void didExecuteNoOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String&amp; notes, double timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors&amp; screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; alternateColors, const String&amp; printColor);
</ins><span class="cx"> private:
</span><span class="cx">     InspectorFrontendChannel* m_inspectorFrontendChannel;
</span><span class="cx"> };
</span><span class="lines">@@ -303,7 +303,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Inspector {
</span><span class="cx"> 
</span><del>-void InspectorDatabaseFrontendDispatcher::didExecuteOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String* const notes, const double* const timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors* const screenColor, const String* const printColor)
</del><ins>+void InspectorDatabaseFrontendDispatcher::didExecuteOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String* const notes, const double* const timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors* const screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; alternateColors, const String* const printColor)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="cx">     jsonMessage-&gt;setString(ASCIILiteral(&quot;method&quot;), ASCIILiteral(&quot;Database.didExecuteOptionalParameters&quot;));
</span><span class="lines">@@ -322,6 +322,8 @@
</span><span class="cx">         paramsObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), sqlError);
</span><span class="cx">     if (screenColor)
</span><span class="cx">         paramsObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), *screenColor);
</span><ins>+    if (alternateColors)
+        paramsObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), alternateColors);
</ins><span class="cx">     if (printColor)
</span><span class="cx">         paramsObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), *printColor);
</span><span class="cx">     jsonMessage-&gt;setObject(ASCIILiteral(&quot;params&quot;), WTF::move(paramsObject));
</span><span class="lines">@@ -329,7 +331,7 @@
</span><span class="cx">     m_inspectorFrontendChannel-&gt;sendMessageToFrontend(jsonMessage-&gt;toJSONString());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDatabaseFrontendDispatcher::didExecuteNoOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String&amp; notes, double timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors&amp; screenColor, const String&amp; printColor)
</del><ins>+void InspectorDatabaseFrontendDispatcher::didExecuteNoOptionalParameters(RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt; columnNames, const String&amp; notes, double timestamp, RefPtr&lt;Inspector::InspectorObject&gt; values, RefPtr&lt;Inspector::InspectorValue&gt; payload, RefPtr&lt;Inspector::Protocol::Database::Error&gt; sqlError, const Inspector::Protocol::Database::PrimaryColors&amp; screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; alternateColors, const String&amp; printColor)
</ins><span class="cx"> {
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="cx">     jsonMessage-&gt;setString(ASCIILiteral(&quot;method&quot;), ASCIILiteral(&quot;Database.didExecuteNoOptionalParameters&quot;));
</span><span class="lines">@@ -341,6 +343,7 @@
</span><span class="cx">     paramsObject-&gt;setValue(ASCIILiteral(&quot;payload&quot;), payload);
</span><span class="cx">     paramsObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), sqlError);
</span><span class="cx">     paramsObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), screenColor);
</span><ins>+    paramsObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), alternateColors);
</ins><span class="cx">     paramsObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), printColor);
</span><span class="cx">     jsonMessage-&gt;setObject(ASCIILiteral(&quot;params&quot;), WTF::move(paramsObject));
</span><span class="cx"> 
</span><span class="lines">@@ -409,8 +412,8 @@
</span><span class="cx"> namespace Database {
</span><span class="cx"> /* Unique identifier of Database object. */
</span><span class="cx"> typedef String DatabaseId;
</span><del>-
</del><span class="cx"> typedef String PrimaryColors;
</span><ins>+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Database::PrimaryColors&gt; ColorList;
</ins><span class="cx"> } // Database
</span><span class="cx"> // End of typedefs.
</span><span class="cx"> 
</span><span class="lines">@@ -868,7 +871,7 @@
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)didExecuteOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(NSString **)screenColor printColor:(NSString **)printColor
</del><ins>+- (void)didExecuteOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(NSString **)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ **)alternateColors printColor:(NSString **)printColor
</ins><span class="cx"> {
</span><span class="cx">     InspectorFrontendChannel* frontendChannel = _controller-&gt;frontendChannel();
</span><span class="cx">     if (!frontendChannel)
</span><span class="lines">@@ -880,6 +883,7 @@
</span><span class="cx">     THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(screenColor, @&quot;screenColor&quot;);
</span><ins>+    THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">     THROW_EXCEPTION_FOR_BAD_OPTIONAL_PARAMETER(printColor, @&quot;printColor&quot;);
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="lines">@@ -899,13 +903,15 @@
</span><span class="cx">         paramsObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [(*sqlError) toInspectorObject]);
</span><span class="cx">     if (screenColor)
</span><span class="cx">         paramsObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), (*screenColor));
</span><ins>+    if (alternateColors)
+        paramsObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray((*alternateColors)));
</ins><span class="cx">     if (printColor)
</span><span class="cx">         paramsObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), (*printColor));
</span><span class="cx">     jsonMessage-&gt;setObject(ASCIILiteral(&quot;params&quot;), WTF::move(paramsObject));
</span><span class="cx">     frontendChannel-&gt;sendMessageToFrontend(jsonMessage-&gt;toJSONString());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)didExecuteNoOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(NSString *)screenColor printColor:(NSString *)printColor
</del><ins>+- (void)didExecuteNoOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(NSString *)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ *)alternateColors printColor:(NSString *)printColor
</ins><span class="cx"> {
</span><span class="cx">     InspectorFrontendChannel* frontendChannel = _controller-&gt;frontendChannel();
</span><span class="cx">     if (!frontendChannel)
</span><span class="lines">@@ -917,6 +923,7 @@
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(payload, @&quot;payload&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(sqlError, @&quot;sqlError&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(screenColor, @&quot;screenColor&quot;);
</span><ins>+    THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(alternateColors, @&quot;alternateColors&quot;);
</ins><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PARAMETER(printColor, @&quot;printColor&quot;);
</span><span class="cx"> 
</span><span class="cx">     Ref&lt;InspectorObject&gt; jsonMessage = InspectorObject::create();
</span><span class="lines">@@ -929,6 +936,7 @@
</span><span class="cx">     paramsObject-&gt;setValue(ASCIILiteral(&quot;payload&quot;), [payload toInspectorObject]);
</span><span class="cx">     paramsObject-&gt;setObject(ASCIILiteral(&quot;sqlError&quot;), [sqlError toInspectorObject]);
</span><span class="cx">     paramsObject-&gt;setString(ASCIILiteral(&quot;screenColor&quot;), screenColor);
</span><ins>+    paramsObject-&gt;setArray(ASCIILiteral(&quot;alternateColors&quot;), inspectorStringArray(alternateColors));
</ins><span class="cx">     paramsObject-&gt;setString(ASCIILiteral(&quot;printColor&quot;), printColor);
</span><span class="cx">     jsonMessage-&gt;setObject(ASCIILiteral(&quot;params&quot;), WTF::move(paramsObject));
</span><span class="cx">     frontendChannel-&gt;sendMessageToFrontend(jsonMessage-&gt;toJSONString());
</span><span class="lines">@@ -991,8 +999,8 @@
</span><span class="cx"> 
</span><span class="cx"> __attribute__((visibility (&quot;default&quot;)))
</span><span class="cx"> @interface RWIProtocolDatabaseDomainEventDispatcher : NSObject
</span><del>-- (void)didExecuteOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(NSString **)screenColor printColor:(NSString **)printColor;
-- (void)didExecuteNoOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(NSString *)screenColor printColor:(NSString *)printColor;
</del><ins>+- (void)didExecuteOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ **)columnNames notes:(NSString **)notes timestamp:(double *)timestamp values:(RWIProtocolJSONObject **)values payload:(RWIProtocolJSONObject **)payload sqlError:(RWIProtocolDatabaseError **)sqlError screenColor:(NSString **)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ **)alternateColors printColor:(NSString **)printColor;
+- (void)didExecuteNoOptionalParametersWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload sqlError:(RWIProtocolDatabaseError *)sqlError screenColor:(NSString *)screenColor alternateColors:(NSArray/*&lt;NSString&gt;*/ *)alternateColors printColor:(NSString *)printColor;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationarraytypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-array-type.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -356,6 +356,11 @@
</span><span class="cx"> 
</span><span class="cx"> namespace Runtime {
</span><span class="cx"> typedef int ObjectId;
</span><ins>+typedef Inspector::Protocol::Array&lt;int&gt; LuckyNumbers;
+typedef Inspector::Protocol::Array&lt;String&gt; BabyNames;
+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::ObjectId&gt; NewObjects;
+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::BreakpointId&gt; OldObjects;
+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Reason&gt; StopReasons;
</ins><span class="cx"> } // Runtime
</span><span class="cx"> // End of typedefs.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtypedeclarationobjecttypejsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-declaration-object-type.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -354,8 +354,12 @@
</span><span class="cx"> // End of forward declarations.
</span><span class="cx"> 
</span><span class="cx"> 
</span><ins>+// Typedefs.
+namespace Database {
+typedef Inspector::Protocol::Array&lt;Inspector::Protocol::Database::Error&gt; ErrorList;
+} // Database
+// End of typedefs.
</ins><span class="cx"> 
</span><del>-
</del><span class="cx"> String getEnumConstantValue(int code);
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; String getEnumConstantValue(T enumValue)
</span><span class="lines">@@ -503,6 +507,11 @@
</span><span class="cx">     {
</span><span class="cx">         InspectorObjectBase::setObject(ASCIILiteral(&quot;error&quot;), WTF::move(value));
</span><span class="cx">     }
</span><ins>+
+    void setErrorList(RefPtr&lt;Inspector::Protocol::Database::ErrorList&gt; value)
+    {
+        InspectorObjectBase::setArray(ASCIILiteral(&quot;errorList&quot;), WTF::move(value));
+    }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> class ParameterBundle : public Inspector::InspectorObjectBase {
</span><span class="lines">@@ -515,7 +524,8 @@
</span><span class="cx">         ValuesSet = 1 &lt;&lt; 3,
</span><span class="cx">         PayloadSet = 1 &lt;&lt; 4,
</span><span class="cx">         ErrorSet = 1 &lt;&lt; 5,
</span><del>-        AllFieldsSet = (ColumnNamesSet | NotesSet | TimestampSet | ValuesSet | PayloadSet | ErrorSet)
</del><ins>+        ErrorListSet = 1 &lt;&lt; 6,
+        AllFieldsSet = (ColumnNamesSet | NotesSet | TimestampSet | ValuesSet | PayloadSet | ErrorSet | ErrorListSet)
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     template&lt;int STATE&gt;
</span><span class="lines">@@ -578,6 +588,13 @@
</span><span class="cx">             return castState&lt;ErrorSet&gt;();
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        Builder&lt;STATE | ErrorListSet&gt;&amp; setErrorList(RefPtr&lt;Inspector::Protocol::Database::ErrorList&gt; value)
+        {
+            COMPILE_ASSERT(!(STATE &amp; ErrorListSet), property_errorList_already_set);
+            m_result-&gt;setArray(ASCIILiteral(&quot;errorList&quot;), value);
+            return castState&lt;ErrorListSet&gt;();
+        }
+
</ins><span class="cx">         Ref&lt;ParameterBundle&gt; release()
</span><span class="cx">         {
</span><span class="cx">             COMPILE_ASSERT(STATE == AllFieldsSet, result_is_not_ready);
</span><span class="lines">@@ -597,6 +614,7 @@
</span><span class="cx">      *     .setValues(...)
</span><span class="cx">      *     .setPayload(...)
</span><span class="cx">      *     .setError(...)
</span><ins>+     *     .setErrorList(...)
</ins><span class="cx">      *     .release();
</span><span class="cx">      */
</span><span class="cx">     static Builder&lt;NoFieldsSet&gt; create()
</span><span class="lines">@@ -1230,17 +1248,19 @@
</span><span class="cx"> /* optional */ @property (nonatomic, retain) RWIProtocolJSONObject *values;
</span><span class="cx"> /* optional */ @property (nonatomic, retain) RWIProtocolJSONObject *payload;
</span><span class="cx"> /* optional */ @property (nonatomic, retain) RWIProtocolDatabaseError *error;
</span><ins>+/* optional */ @property (nonatomic, copy) NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *errorList;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> __attribute__((visibility (&quot;default&quot;)))
</span><span class="cx"> @interface RWIProtocolDatabaseParameterBundle : RWIProtocolJSONObject
</span><del>-- (instancetype)initWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload error:(RWIProtocolDatabaseError *)error;
</del><ins>+- (instancetype)initWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload error:(RWIProtocolDatabaseError *)error errorList:(NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList;
</ins><span class="cx"> /* required */ @property (nonatomic, copy) NSArray/*&lt;NSString&gt;*/ *columnNames;
</span><span class="cx"> /* required */ @property (nonatomic, copy) NSString *notes;
</span><span class="cx"> /* required */ @property (nonatomic, assign) double timestamp;
</span><span class="cx"> /* required */ @property (nonatomic, retain) RWIProtocolJSONObject *values;
</span><span class="cx"> /* required */ @property (nonatomic, retain) RWIProtocolJSONObject *payload;
</span><span class="cx"> /* required */ @property (nonatomic, retain) RWIProtocolDatabaseError *error;
</span><ins>+/* required */ @property (nonatomic, copy) NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *errorList;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> __attribute__((visibility (&quot;default&quot;)))
</span><span class="lines">@@ -1416,11 +1436,22 @@
</span><span class="cx">     return (RWIProtocolDatabaseError *)[super objectForKey:@&quot;error&quot;];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)setErrorList:(NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList
+{
+    THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(errorList, [RWIProtocolDatabaseError class]);
+    [super setInspectorArray:inspectorObjectArray(errorList) forKey:@&quot;errorList&quot;];
+}
+
+- (NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList
+{
+    return objcArray&lt;RWIProtocolDatabaseError&gt;([super inspectorArrayForKey:@&quot;errorList&quot;]);
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation RWIProtocolDatabaseParameterBundle
</span><span class="cx"> 
</span><del>-- (instancetype)initWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload error:(RWIProtocolDatabaseError *)error;
</del><ins>+- (instancetype)initWithColumnNames:(NSArray/*&lt;NSString&gt;*/ *)columnNames notes:(NSString *)notes timestamp:(double)timestamp values:(RWIProtocolJSONObject *)values payload:(RWIProtocolJSONObject *)payload error:(RWIProtocolDatabaseError *)error errorList:(NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList;
</ins><span class="cx"> {
</span><span class="cx">     self = [super init];
</span><span class="cx">     if (!self)
</span><span class="lines">@@ -1431,6 +1462,8 @@
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(values, @&quot;values&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(payload, @&quot;payload&quot;);
</span><span class="cx">     THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(error, @&quot;error&quot;);
</span><ins>+    THROW_EXCEPTION_FOR_REQUIRED_PROPERTY(errorList, @&quot;errorList&quot;);
+    THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(errorList, [RWIProtocolDatabaseError class]);
</ins><span class="cx"> 
</span><span class="cx">     self.columnNames = columnNames;
</span><span class="cx">     self.notes = notes;
</span><span class="lines">@@ -1438,6 +1471,7 @@
</span><span class="cx">     self.values = values;
</span><span class="cx">     self.payload = payload;
</span><span class="cx">     self.error = error;
</span><ins>+    self.errorList = errorList;
</ins><span class="cx"> 
</span><span class="cx">     return self;
</span><span class="cx"> }
</span><span class="lines">@@ -1502,6 +1536,17 @@
</span><span class="cx">     return (RWIProtocolDatabaseError *)[super objectForKey:@&quot;error&quot;];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)setErrorList:(NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList
+{
+    THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(errorList, [RWIProtocolDatabaseError class]);
+    [super setInspectorArray:inspectorObjectArray(errorList) forKey:@&quot;errorList&quot;];
+}
+
+- (NSArray/*&lt;RWIProtocolDatabaseError&gt;*/ *)errorList
+{
+    return objcArray&lt;RWIProtocolDatabaseError&gt;([super inspectorArrayForKey:@&quot;errorList&quot;]);
+}
+
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> @implementation RWIProtocolDatabaseObjectWithPropertyNameConflicts
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptstestsexpectedtyperequiringruntimecastsjsonresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -357,7 +357,6 @@
</span><span class="cx"> // Typedefs.
</span><span class="cx"> namespace Test {
</span><span class="cx"> typedef int CastedObjectId;
</span><del>-
</del><span class="cx"> typedef int UncastedObjectId;
</span><span class="cx"> } // Test
</span><span class="cx"> // End of typedefs.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptsteststypedeclarationobjecttypejson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/tests/type-declaration-object-type.json (178605 => 178606)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/type-declaration-object-type.json        2015-01-16 22:51:30 UTC (rev 178605)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/type-declaration-object-type.json        2015-01-16 23:17:45 UTC (rev 178606)
</span><span class="lines">@@ -13,6 +13,11 @@
</span><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;id&quot;: &quot;ErrorList&quot;,
+            &quot;type&quot;: &quot;array&quot;,
+            &quot;items&quot;: { &quot;$ref&quot;: &quot;Error&quot; }
+        },
+        {
</ins><span class="cx">             &quot;id&quot;: &quot;OptionalParameterBundle&quot;,
</span><span class="cx">             &quot;type&quot;: &quot;object&quot;,
</span><span class="cx">             &quot;properties&quot;: [
</span><span class="lines">@@ -21,7 +26,8 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot;, &quot;optional&quot;: true },
</span><span class="cx">                 { &quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;any&quot;, &quot;optional&quot;: true },
</span><del>-                { &quot;name&quot;: &quot;error&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true }
</del><ins>+                { &quot;name&quot;: &quot;error&quot;, &quot;$ref&quot;: &quot;Error&quot;, &quot;optional&quot;: true },
+                { &quot;name&quot;: &quot;errorList&quot;, &quot;$ref&quot;: &quot;ErrorList&quot;, &quot;optional&quot;: true }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span><span class="lines">@@ -33,7 +39,8 @@
</span><span class="cx">                 { &quot;name&quot;: &quot;timestamp&quot;, &quot;type&quot;: &quot;number&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;values&quot;, &quot;type&quot;: &quot;object&quot; },
</span><span class="cx">                 { &quot;name&quot;: &quot;payload&quot;, &quot;type&quot;: &quot;any&quot; },
</span><del>-                { &quot;name&quot;: &quot;error&quot;, &quot;$ref&quot;: &quot;Error&quot; }
</del><ins>+                { &quot;name&quot;: &quot;error&quot;, &quot;$ref&quot;: &quot;Error&quot; },
+                { &quot;name&quot;: &quot;errorList&quot;, &quot;$ref&quot;: &quot;ErrorList&quot; }
</ins><span class="cx">             ]
</span><span class="cx">         },
</span><span class="cx">         {
</span></span></pre>
</div>
</div>

</body>
</html>