<!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>[185722] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/185722">185722</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2015-06-18 15:07:15 -0700 (Thu, 18 Jun 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: improve generated types for objects passed to backend commands
https://bugs.webkit.org/show_bug.cgi?id=146091

Patch by Brian J. Burg &lt;burg@cs.washington.edu&gt; on 2015-06-18
Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

The main change is that objects passed in will have a type like const T&amp; or const T*,
rather than const RefPtr&lt;T&gt;&amp;&amp;. These protocol objects are owned by the generated dispatcher
methods and only exist to pass data to backend command implementations. So, there is no
reason for callees to add a reference or take ownership of these inputs.

Some small improvements were made in the code generator to standardize how these
expressions are generated for parameters. Optional in parameters are now prefixed with
'opt_in_' to make the generated method signatures and implementations clearer.

* inspector/InspectorValues.cpp:
(Inspector::InspectorArrayBase::get): Add const qualifier.
* inspector/InspectorValues.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
(Inspector::parseLocation):
(Inspector::InspectorDebuggerAgent::setBreakpoint):
(Inspector::InspectorDebuggerAgent::continueToLocation):
* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::saveResult):
(Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
* inspector/agents/InspectorRuntimeAgent.h:

* inspector/scripts/codegen/cpp_generator.py: Always generate PrimitiveType('array').
(CppGenerator.cpp_type_for_unchecked_formal_in_parameter): Alter the type signature
for an unchecked input to use pointers or references.

* inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
(CppBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
(CppBackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
Local variables for optional parameters now have the 'opt_' prefix.

* inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
(CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
Local variables for optional parameters now have the 'opt_' prefix.
Split parameterName and parameterKey into two separate template variables to avoid mixups.

* inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:

Source/WebCore:

Update type signatures for backend command implementations. In a few cases, clean
up relevant helper function signatures and copy data out of parameter objects where
the code previously held onto a reference.

No new tests, no behavior changed.

* inspector/InspectorCSSAgent.cpp:
(WebCore::computePseudoClassMask):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::forcePseudoState):
* inspector/InspectorCSSAgent.h:
* inspector/InspectorDOMAgent.cpp:
(WebCore::parseColor):
(WebCore::parseConfigColor):
(WebCore::parseQuad):
(WebCore::InspectorDOMAgent::performSearch):
(WebCore::InspectorDOMAgent::setSearchingForNode):
(WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
(WebCore::InspectorDOMAgent::setInspectModeEnabled):
(WebCore::InspectorDOMAgent::highlightRect):
(WebCore::InspectorDOMAgent::highlightQuad):
(WebCore::InspectorDOMAgent::innerHighlightQuad):
(WebCore::InspectorDOMAgent::highlightNode):
(WebCore::InspectorDOMAgent::highlightFrame):
* inspector/InspectorDOMAgent.h:
* inspector/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
(WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
(WebCore::InspectorDOMStorageAgent::findStorageArea):
* inspector/InspectorDOMStorageAgent.h:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::requestData):
* inspector/InspectorIndexedDBAgent.h:
* inspector/InspectorReplayAgent.cpp:
(WebCore::InspectorReplayAgent::replayToPosition):
* inspector/InspectorReplayAgent.h:
* inspector/InspectorResourceAgent.cpp:
(WebCore::InspectorResourceAgent::willSendRequest):
(WebCore::InspectorResourceAgent::setExtraHTTPHeaders):
Clean up extraHTTPHeaders to copy header key/values out of the InspectorObject, rather
than retaining the protocol object indefinitely. This matches the ownership scheme used
everywhere else.

* inspector/InspectorResourceAgent.h:
* inspector/InspectorStyleSheet.h:
(WebCore::InspectorCSSId::InspectorCSSId):
* inspector/InspectorWorkerAgent.cpp:
(WebCore::InspectorWorkerAgent::sendMessageToWorker):
* inspector/InspectorWorkerAgent.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorInspectorValuescpp">trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorInspectorValuesh">trunk/Source/JavaScriptCore/inspector/InspectorValues.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth">trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generatorpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_backend_dispatcher_headerpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_backend_dispatcher_implementationpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_objc_backend_dispatcher_implementationpy">trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py</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="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgentcpp">trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorCSSAgenth">trunk/Source/WebCore/inspector/InspectorCSSAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgenth">trunk/Source/WebCore/inspector/InspectorDOMAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMStorageAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMStorageAgenth">trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorIndexedDBAgentcpp">trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorIndexedDBAgenth">trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorReplayAgentcpp">trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorReplayAgenth">trunk/Source/WebCore/inspector/InspectorReplayAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgentcpp">trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorResourceAgenth">trunk/Source/WebCore/inspector/InspectorResourceAgent.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorStyleSheeth">trunk/Source/WebCore/inspector/InspectorStyleSheet.h</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorWorkerAgentcpp">trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorWorkerAgenth">trunk/Source/WebCore/inspector/InspectorWorkerAgent.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -1,3 +1,51 @@
</span><ins>+2015-06-18  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
+        Web Inspector: improve generated types for objects passed to backend commands
+        https://bugs.webkit.org/show_bug.cgi?id=146091
+
+        Reviewed by Joseph Pecoraro.
+
+        The main change is that objects passed in will have a type like const T&amp; or const T*,
+        rather than const RefPtr&lt;T&gt;&amp;&amp;. These protocol objects are owned by the generated dispatcher
+        methods and only exist to pass data to backend command implementations. So, there is no
+        reason for callees to add a reference or take ownership of these inputs.
+
+        Some small improvements were made in the code generator to standardize how these
+        expressions are generated for parameters. Optional in parameters are now prefixed with
+        'opt_in_' to make the generated method signatures and implementations clearer.
+
+        * inspector/InspectorValues.cpp:
+        (Inspector::InspectorArrayBase::get): Add const qualifier.
+        * inspector/InspectorValues.h:
+        * inspector/agents/InspectorDebuggerAgent.cpp:
+        (Inspector::InspectorDebuggerAgent::setBreakpointByUrl):
+        (Inspector::parseLocation):
+        (Inspector::InspectorDebuggerAgent::setBreakpoint):
+        (Inspector::InspectorDebuggerAgent::continueToLocation):
+        * inspector/agents/InspectorDebuggerAgent.h:
+        * inspector/agents/InspectorRuntimeAgent.cpp:
+        (Inspector::InspectorRuntimeAgent::callFunctionOn):
+        (Inspector::InspectorRuntimeAgent::saveResult):
+        (Inspector::InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets):
+        * inspector/agents/InspectorRuntimeAgent.h:
+
+        * inspector/scripts/codegen/cpp_generator.py: Always generate PrimitiveType('array').
+        (CppGenerator.cpp_type_for_unchecked_formal_in_parameter): Alter the type signature
+        for an unchecked input to use pointers or references.
+
+        * inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
+        (CppBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
+        (CppBackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
+        Local variables for optional parameters now have the 'opt_' prefix.
+
+        * inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
+        (CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain):
+        (CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
+        Local variables for optional parameters now have the 'opt_' prefix.
+        Split parameterName and parameterKey into two separate template variables to avoid mixups.
+
+        * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
+
</ins><span class="cx"> 2015-06-18  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed. Rollout r185670 as it caused some tests to be flakey.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorInspectorValuescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/InspectorValues.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -839,7 +839,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;InspectorValue&gt; InspectorArrayBase::get(size_t index)
</del><ins>+RefPtr&lt;InspectorValue&gt; InspectorArrayBase::get(size_t index) const
</ins><span class="cx"> {
</span><span class="cx">     ASSERT_WITH_SECURITY_IMPLICATION(index &lt; m_data.size());
</span><span class="cx">     return m_data[index];
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorInspectorValuesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/InspectorValues.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/InspectorValues.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/InspectorValues.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -279,7 +279,7 @@
</span><span class="cx">     void pushObject(RefPtr&lt;InspectorObjectBase&gt;&amp;&amp;);
</span><span class="cx">     void pushArray(RefPtr&lt;InspectorArrayBase&gt;&amp;&amp;);
</span><span class="cx"> 
</span><del>-    RefPtr&lt;InspectorValue&gt; get(size_t index);
</del><ins>+    RefPtr&lt;InspectorValue&gt; get(size_t index) const;
</ins><span class="cx"> 
</span><span class="cx">     virtual void writeJSON(StringBuilder&amp; output) const override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -275,7 +275,7 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString&amp; errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const RefPtr&lt;InspectorObject&gt;&amp;&amp; options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations)
</del><ins>+void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString&amp; errorString, int lineNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations)
</ins><span class="cx"> {
</span><span class="cx">     locations = Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;::create();
</span><span class="cx">     if (!optionalURL == !optionalURLRegex) {
</span><span class="lines">@@ -321,7 +321,7 @@
</span><span class="cx">     *outBreakpointIdentifier = breakpointIdentifier;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool parseLocation(ErrorString&amp; errorString, InspectorObject&amp; location, JSC::SourceID&amp; sourceID, unsigned&amp; lineNumber, unsigned&amp; columnNumber)
</del><ins>+static bool parseLocation(ErrorString&amp; errorString, const InspectorObject&amp; location, JSC::SourceID&amp; sourceID, unsigned&amp; lineNumber, unsigned&amp; columnNumber)
</ins><span class="cx"> {
</span><span class="cx">     String scriptIDStr;
</span><span class="cx">     if (!location.getString(ASCIILiteral(&quot;scriptId&quot;), scriptIDStr) || !location.getInteger(ASCIILiteral(&quot;lineNumber&quot;), lineNumber)) {
</span><span class="lines">@@ -336,12 +336,12 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::setBreakpoint(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; location, const RefPtr&lt;InspectorObject&gt;&amp;&amp; options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::Protocol::Debugger::Location&gt;&amp; actualLocation)
</del><ins>+void InspectorDebuggerAgent::setBreakpoint(ErrorString&amp; errorString, const InspectorObject&amp; location, const InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId* outBreakpointIdentifier, RefPtr&lt;Inspector::Protocol::Debugger::Location&gt;&amp; actualLocation)
</ins><span class="cx"> {
</span><span class="cx">     JSC::SourceID sourceID;
</span><span class="cx">     unsigned lineNumber;
</span><span class="cx">     unsigned columnNumber;
</span><del>-    if (!parseLocation(errorString, *location, sourceID, lineNumber, columnNumber))
</del><ins>+    if (!parseLocation(errorString, location, sourceID, lineNumber, columnNumber))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     String condition = emptyString();
</span><span class="lines">@@ -388,7 +388,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDebuggerAgent::continueToLocation(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; location)
</del><ins>+void InspectorDebuggerAgent::continueToLocation(ErrorString&amp; errorString, const InspectorObject&amp; location)
</ins><span class="cx"> {
</span><span class="cx">     if (m_continueToLocationBreakpointID != JSC::noBreakpointID) {
</span><span class="cx">         scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointID);
</span><span class="lines">@@ -398,7 +398,7 @@
</span><span class="cx">     JSC::SourceID sourceID;
</span><span class="cx">     unsigned lineNumber;
</span><span class="cx">     unsigned columnNumber;
</span><del>-    if (!parseLocation(errorString, *location, sourceID, lineNumber, columnNumber))
</del><ins>+    if (!parseLocation(errorString, location, sourceID, lineNumber, columnNumber))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     ScriptBreakpoint breakpoint(lineNumber, columnNumber, &quot;&quot;, false);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorDebuggerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -71,10 +71,10 @@
</span><span class="cx">     virtual void enable(ErrorString&amp;) override;
</span><span class="cx">     virtual void disable(ErrorString&amp;) override;
</span><span class="cx">     virtual void setBreakpointsActive(ErrorString&amp;, bool active) override;
</span><del>-    virtual void setBreakpointByUrl(ErrorString&amp;, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations) override;
-    virtual void setBreakpoint(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; location, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Debugger::Location&gt;&amp; actualLocation) override;
</del><ins>+    virtual void setBreakpointByUrl(ErrorString&amp;, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Debugger::Location&gt;&gt;&amp; locations) override;
+    virtual void setBreakpoint(ErrorString&amp;, const Inspector::InspectorObject&amp; location, const Inspector::InspectorObject* options, Inspector::Protocol::Debugger::BreakpointId*, RefPtr&lt;Inspector::Protocol::Debugger::Location&gt;&amp; actualLocation) override;
</ins><span class="cx">     virtual void removeBreakpoint(ErrorString&amp;, const String&amp; breakpointIdentifier) override;
</span><del>-    virtual void continueToLocation(ErrorString&amp;, const RefPtr&lt;InspectorObject&gt;&amp;&amp; location) override;
</del><ins>+    virtual void continueToLocation(ErrorString&amp;, const InspectorObject&amp; location) override;
</ins><span class="cx">     virtual void searchInContent(ErrorString&amp;, const String&amp; scriptID, const String&amp; query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::GenericTypes::SearchMatch&gt;&gt;&amp;) override;
</span><span class="cx">     virtual void getScriptSource(ErrorString&amp;, const String&amp; scriptID, String* scriptSource) override;
</span><span class="cx">     virtual void getFunctionDetails(ErrorString&amp;, const String&amp; functionId, RefPtr&lt;Inspector::Protocol::Debugger::FunctionDetails&gt;&amp;) override;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::callFunctionOn(ErrorString&amp; errorString, const String&amp; objectId, const String&amp; expression, const RefPtr&lt;InspectorArray&gt;&amp;&amp; optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result, Inspector::Protocol::OptOutput&lt;bool&gt;* wasThrown)
</del><ins>+void InspectorRuntimeAgent::callFunctionOn(ErrorString&amp; errorString, const String&amp; objectId, const String&amp; expression, const InspectorArray* optionalArguments, const bool* const doNotPauseOnExceptionsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result, Inspector::Protocol::OptOutput&lt;bool&gt;* wasThrown)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(objectId);
</span><span class="cx">     if (injectedScript.hasNoValue()) {
</span><span class="lines">@@ -210,12 +210,12 @@
</span><span class="cx">     injectedScript.getCollectionEntries(errorString, objectId, objectGroup ? *objectGroup : String(), start, fetch, &amp;entries);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::saveResult(ErrorString&amp; errorString, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; callArgument, const int* executionContextId, Inspector::Protocol::OptOutput&lt;int&gt;* savedResultIndex)
</del><ins>+void InspectorRuntimeAgent::saveResult(ErrorString&amp; errorString, const Inspector::InspectorObject&amp; callArgument, const int* executionContextId, Inspector::Protocol::OptOutput&lt;int&gt;* savedResultIndex)
</ins><span class="cx"> {
</span><span class="cx">     InjectedScript injectedScript;
</span><span class="cx"> 
</span><span class="cx">     String objectId;
</span><del>-    if (callArgument-&gt;getString(ASCIILiteral(&quot;objectId&quot;), objectId)) {
</del><ins>+    if (callArgument.getString(ASCIILiteral(&quot;objectId&quot;), objectId)) {
</ins><span class="cx">         injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(objectId);
</span><span class="cx">         if (injectedScript.hasNoValue()) {
</span><span class="cx">             errorString = ASCIILiteral(&quot;Inspected frame has gone&quot;);
</span><span class="lines">@@ -227,7 +227,7 @@
</span><span class="cx">             return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    injectedScript.saveResult(errorString, callArgument-&gt;toJSONString(), savedResultIndex);
</del><ins>+    injectedScript.saveResult(errorString, callArgument.toJSONString(), savedResultIndex);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorRuntimeAgent::releaseObject(ErrorString&amp;, const String&amp; objectId)
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx">     // FIXME: &lt;https://webkit.org/b/127634&gt; Web Inspector: support debugging web workers
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets(ErrorString&amp; errorString, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; locations, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::TypeDescription&gt;&gt;&amp; typeDescriptions)
</del><ins>+void InspectorRuntimeAgent::getRuntimeTypesForVariablesAtOffsets(ErrorString&amp; errorString, const Inspector::InspectorArray&amp; locations, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::TypeDescription&gt;&gt;&amp; typeDescriptions)
</ins><span class="cx"> {
</span><span class="cx">     static const bool verbose = false;
</span><span class="cx">     VM&amp; vm = globalVM();
</span><span class="lines">@@ -260,8 +260,8 @@
</span><span class="cx">     double start = currentTimeMS();
</span><span class="cx">     vm.typeProfilerLog()-&gt;processLogEntries(ASCIILiteral(&quot;User Query&quot;));
</span><span class="cx"> 
</span><del>-    for (size_t i = 0; i &lt; locations-&gt;length(); i++) {
-        RefPtr&lt;Inspector::InspectorValue&gt; value = locations-&gt;get(i);
</del><ins>+    for (size_t i = 0; i &lt; locations.length(); i++) {
+        RefPtr&lt;Inspector::InspectorValue&gt; value = locations.get(i);
</ins><span class="cx">         RefPtr&lt;InspectorObject&gt; location;
</span><span class="cx">         if (!value-&gt;asObject(location)) {
</span><span class="cx">             errorString = ASCIILiteral(&quot;Array of TypeLocation objects has an object that does not have type of TypeLocation.&quot;);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorRuntimeAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorRuntimeAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -61,15 +61,15 @@
</span><span class="cx">     virtual void disable(ErrorString&amp;) override { m_enabled = false; }
</span><span class="cx">     virtual void parse(ErrorString&amp;, const String&amp; expression, Inspector::Protocol::Runtime::SyntaxErrorType* result, Inspector::Protocol::OptOutput&lt;String&gt;* message, RefPtr&lt;Inspector::Protocol::Runtime::ErrorRange&gt;&amp;) override final;
</span><span class="cx">     virtual void evaluate(ErrorString&amp;, const String&amp; expression, const String* objectGroup, const bool* includeCommandLineAPI, const bool* doNotPauseOnExceptionsAndMuteConsole, const int* executionContextId, const bool* returnByValue, const bool* generatePreview, const bool* saveResult, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result, Inspector::Protocol::OptOutput&lt;bool&gt;* wasThrown, Inspector::Protocol::OptOutput&lt;int&gt;* savedResultIndex) override final;
</span><del>-    virtual void callFunctionOn(ErrorString&amp;, const String&amp; objectId, const String&amp; expression, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; optionalArguments, const bool* doNotPauseOnExceptionsAndMuteConsole, const bool* returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result, Inspector::Protocol::OptOutput&lt;bool&gt;* wasThrown) override final;
</del><ins>+    virtual void callFunctionOn(ErrorString&amp;, const String&amp; objectId, const String&amp; expression, const Inspector::InspectorArray* optionalArguments, const bool* doNotPauseOnExceptionsAndMuteConsole, const bool* returnByValue, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result, Inspector::Protocol::OptOutput&lt;bool&gt;* wasThrown) override final;
</ins><span class="cx">     virtual void releaseObject(ErrorString&amp;, const ErrorString&amp; objectId) override final;
</span><span class="cx">     virtual void getProperties(ErrorString&amp;, const String&amp; objectId, const bool* ownProperties, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties) override final;
</span><span class="cx">     virtual void getDisplayableProperties(ErrorString&amp;, const String&amp; objectId, const bool* generatePreview, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::PropertyDescriptor&gt;&gt;&amp; result, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::InternalPropertyDescriptor&gt;&gt;&amp; internalProperties) override final;
</span><span class="cx">     virtual void getCollectionEntries(ErrorString&amp;, const String&amp; objectId, const String* objectGroup, const int* startIndex, const int* numberToFetch, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::CollectionEntry&gt;&gt;&amp; entries) override final;
</span><del>-    virtual void saveResult(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; callArgument, const int* executionContextId, Inspector::Protocol::OptOutput&lt;int&gt;* savedResultIndex) override final;
</del><ins>+    virtual void saveResult(ErrorString&amp;, const Inspector::InspectorObject&amp; callArgument, const int* executionContextId, Inspector::Protocol::OptOutput&lt;int&gt;* savedResultIndex) override final;
</ins><span class="cx">     virtual void releaseObjectGroup(ErrorString&amp;, const String&amp; objectGroup) override final;
</span><span class="cx">     virtual void run(ErrorString&amp;) override;
</span><del>-    virtual void getRuntimeTypesForVariablesAtOffsets(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; locations, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::TypeDescription&gt;&gt;&amp;) override;
</del><ins>+    virtual void getRuntimeTypesForVariablesAtOffsets(ErrorString&amp;, const Inspector::InspectorArray&amp; locations, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::TypeDescription&gt;&gt;&amp;) override;
</ins><span class="cx">     virtual void enableTypeProfiler(ErrorString&amp;) override;
</span><span class="cx">     virtual void disableTypeProfiler(ErrorString&amp;) override;
</span><span class="cx">     virtual void getBasicBlocks(ErrorString&amp;, const String&amp; in_sourceID, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Runtime::BasicBlock&gt;&gt;&amp; out_basicBlocks) override;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegencpp_generatorpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/cpp_generator.py        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -39,6 +39,7 @@
</span><span class="cx">     'number': 'double',
</span><span class="cx">     'string': 'String',
</span><span class="cx">     'object': 'Inspector::InspectorObject',
</span><ins>+    'array': 'Inspector::InspectorArray',
</ins><span class="cx">     'any': 'Inspector::InspectorValue'
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -119,9 +120,17 @@
</span><span class="cx"> 
</span><span class="cx">         # This handles the 'any' type and objects with defined properties.
</span><span class="cx">         if isinstance(_type, ObjectType) or _type.qualified_name() is 'object':
</span><del>-            return 'const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp;'
</del><ins>+            cpp_name = 'Inspector::InspectorObject'
+            if parameter.is_optional:
+                return 'const %s*' % cpp_name
+            else:
+                return 'const %s&amp;' % cpp_name
</ins><span class="cx">         if isinstance(_type, ArrayType):
</span><del>-            return 'const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp;'
</del><ins>+            cpp_name = 'Inspector::InspectorArray'
+            if parameter.is_optional:
+                return 'const %s*' % cpp_name
+            else:
+                return 'const %s&amp;' % cpp_name
</ins><span class="cx">         if isinstance(_type, PrimitiveType):
</span><span class="cx">             cpp_name = CppGenerator.cpp_name_for_primitive_type(_type)
</span><span class="cx">             if parameter.is_optional:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_backend_dispatcher_headerpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -127,8 +127,12 @@
</span><span class="cx">         lines = []
</span><span class="cx">         parameters = ['ErrorString&amp;']
</span><span class="cx">         for _parameter in command.call_parameters:
</span><del>-            parameters.append(&quot;%s in_%s&quot; % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
</del><ins>+            parameter_name = 'in_' + _parameter.parameter_name
+            if _parameter.is_optional:
+                parameter_name = 'opt_' + parameter_name
</ins><span class="cx"> 
</span><ins>+            parameters.append(&quot;%s %s&quot; % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), parameter_name))
+
</ins><span class="cx">             if isinstance(_parameter.type, EnumType) and _parameter.parameter_name not in used_enum_names:
</span><span class="cx">                 lines.append(self._generate_anonymous_enum_for_parameter(_parameter, command))
</span><span class="cx">                 used_enum_names.add(_parameter.parameter_name)
</span><span class="lines">@@ -155,7 +159,11 @@
</span><span class="cx"> 
</span><span class="cx">         in_parameters = ['ErrorString&amp;']
</span><span class="cx">         for _parameter in command.call_parameters:
</span><del>-            in_parameters.append(&quot;%s in_%s&quot; % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), _parameter.parameter_name))
</del><ins>+            parameter_name = 'in_' + _parameter.parameter_name
+            if _parameter.is_optional:
+                parameter_name = 'opt_' + parameter_name
+
+            in_parameters.append(&quot;%s %s&quot; % (CppGenerator.cpp_type_for_unchecked_formal_in_parameter(_parameter), parameter_name))
</ins><span class="cx">         in_parameters.append(&quot;Ref&lt;%s&gt;&amp;&amp; callback&quot; % callbackName)
</span><span class="cx"> 
</span><span class="cx">         out_parameters = []
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_cpp_backend_dispatcher_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -139,6 +139,7 @@
</span><span class="cx">         for parameter in command.return_parameters:
</span><span class="cx">             param_args = {
</span><span class="cx">                 'keyedSetMethod': CppGenerator.cpp_setter_method_for_type(parameter.type),
</span><ins>+                'parameterKey': parameter.parameter_name,
</ins><span class="cx">                 'parameterName': parameter.parameter_name,
</span><span class="cx">                 'parameterType': CppGenerator.cpp_type_for_stack_in_parameter(parameter),
</span><span class="cx">             }
</span><span class="lines">@@ -148,14 +149,14 @@
</span><span class="cx">             if parameter.is_optional:
</span><span class="cx">                 if CppGenerator.should_use_wrapper_for_return_type(parameter.type):
</span><span class="cx">                     out_parameter_assignments.append('    if (%(parameterName)s.isAssigned())' % param_args)
</span><del>-                    out_parameter_assignments.append('        jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), %(parameterName)s.getValue());' % param_args)
</del><ins>+                    out_parameter_assignments.append('        jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), %(parameterName)s.getValue());' % param_args)
</ins><span class="cx">                 else:
</span><span class="cx">                     out_parameter_assignments.append('    if (%(parameterName)s)' % param_args)
</span><del>-                    out_parameter_assignments.append('        jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), %(parameterName)s);' % param_args)
</del><ins>+                    out_parameter_assignments.append('        jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), %(parameterName)s);' % param_args)
</ins><span class="cx">             elif parameter.type.is_enum():
</span><del>-                out_parameter_assignments.append('    jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), Inspector::Protocol::getEnumConstantValue(%(parameterName)s));' % param_args)
</del><ins>+                out_parameter_assignments.append('    jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), Inspector::Protocol::getEnumConstantValue(%(parameterName)s));' % param_args)
</ins><span class="cx">             else:
</span><del>-                out_parameter_assignments.append('    jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), %(parameterName)s);' % param_args)
</del><ins>+                out_parameter_assignments.append('    jsonMessage-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), %(parameterName)s);' % param_args)
</ins><span class="cx"> 
</span><span class="cx">         async_args = {
</span><span class="cx">             'domainName': domain.domain_name,
</span><span class="lines">@@ -173,26 +174,40 @@
</span><span class="cx">         method_parameters = ['error']
</span><span class="cx"> 
</span><span class="cx">         for parameter in command.call_parameters:
</span><ins>+            parameter_name = 'in_' + parameter.parameter_name
+            if parameter.is_optional:
+                parameter_name = 'opt_' + parameter_name
+
</ins><span class="cx">             out_success_argument = 'nullptr'
</span><span class="cx">             if parameter.is_optional:
</span><del>-                out_success_argument = '&amp;%s_valueFound' % parameter.parameter_name
-                in_parameter_declarations.append('    bool %s_valueFound = false;' % parameter.parameter_name)
</del><ins>+                out_success_argument = '&amp;%s_valueFound' % parameter_name
+                in_parameter_declarations.append('    bool %s_valueFound = false;' % parameter_name)
</ins><span class="cx"> 
</span><del>-            parameter_expression = 'in_' + parameter.parameter_name
</del><ins>+            # Now add appropriate operators.
+            parameter_expression = parameter_name
+
</ins><span class="cx">             if CppGenerator.should_use_references_for_type(parameter.type):
</span><del>-                parameter_expression = '%s.copyRef()' % parameter_expression
</del><ins>+                if parameter.is_optional:
+                    parameter_expression = '%s.get()' % parameter_expression
+                else:
+                    # This assumes that we have already proved the object is non-null.
+                    # If a required property is missing, InspectorBackend::getObject will
+                    # append a protocol error, and the method dispatcher will return without
+                    # invoking the backend method (and dereferencing the object).
+                    parameter_expression = '*%s' % parameter_expression
</ins><span class="cx">             elif parameter.is_optional:
</span><span class="cx">                 parameter_expression = '&amp;%s' % parameter_expression
</span><span class="cx"> 
</span><span class="cx">             param_args = {
</span><span class="cx">                 'parameterType': CppGenerator.cpp_type_for_stack_in_parameter(parameter),
</span><del>-                'parameterName': parameter.parameter_name,
</del><ins>+                'parameterKey': parameter.parameter_name,
+                'parameterName': parameter_name,
</ins><span class="cx">                 'parameterExpression': parameter_expression,
</span><span class="cx">                 'keyedGetMethod': CppGenerator.cpp_getter_method_for_type(parameter.type),
</span><span class="cx">                 'successOutParam': out_success_argument
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            in_parameter_declarations.append('    %(parameterType)s in_%(parameterName)s = BackendDispatcher::%(keyedGetMethod)s(paramsContainer.get(), ASCIILiteral(&quot;%(parameterName)s&quot;), %(successOutParam)s, protocolErrors.get());' % param_args)
</del><ins>+            in_parameter_declarations.append('    %(parameterType)s %(parameterName)s = BackendDispatcher::%(keyedGetMethod)s(paramsContainer.get(), ASCIILiteral(&quot;%(parameterKey)s&quot;), %(successOutParam)s, protocolErrors.get());' % param_args)
</ins><span class="cx"> 
</span><span class="cx">             if parameter.is_optional:
</span><span class="cx">                 optional_in_parameter_string = '%(parameterName)s_valueFound ? %(parameterExpression)s : nullptr' % param_args
</span><span class="lines">@@ -217,6 +232,7 @@
</span><span class="cx">             for parameter in command.return_parameters:
</span><span class="cx">                 param_args = {
</span><span class="cx">                     'parameterType': CppGenerator.cpp_type_for_stack_out_parameter(parameter),
</span><ins>+                    'parameterKey': parameter.parameter_name,
</ins><span class="cx">                     'parameterName': parameter.parameter_name,
</span><span class="cx">                     'keyedSetMethod': CppGenerator.cpp_setter_method_for_type(parameter.type),
</span><span class="cx"> 
</span><span class="lines">@@ -226,14 +242,14 @@
</span><span class="cx">                 if parameter.is_optional:
</span><span class="cx">                     if CppGenerator.should_use_wrapper_for_return_type(parameter.type):
</span><span class="cx">                         out_parameter_assignments.append('        if (out_%(parameterName)s.isAssigned())' % param_args)
</span><del>-                        out_parameter_assignments.append('            result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), out_%(parameterName)s.getValue());' % param_args)
</del><ins>+                        out_parameter_assignments.append('            result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), out_%(parameterName)s.getValue());' % param_args)
</ins><span class="cx">                     else:
</span><span class="cx">                         out_parameter_assignments.append('        if (out_%(parameterName)s)' % param_args)
</span><del>-                        out_parameter_assignments.append('            result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), out_%(parameterName)s);' % param_args)
</del><ins>+                        out_parameter_assignments.append('            result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), out_%(parameterName)s);' % param_args)
</ins><span class="cx">                 elif parameter.type.is_enum():
</span><del>-                    out_parameter_assignments.append('        result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), Inspector::Protocol::getEnumConstantValue(out_%(parameterName)s));' % param_args)
</del><ins>+                    out_parameter_assignments.append('        result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), Inspector::Protocol::getEnumConstantValue(out_%(parameterName)s));' % param_args)
</ins><span class="cx">                 else:
</span><del>-                    out_parameter_assignments.append('        result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterName)s&quot;), out_%(parameterName)s);' % param_args)
</del><ins>+                    out_parameter_assignments.append('        result-&gt;%(keyedSetMethod)s(ASCIILiteral(&quot;%(parameterKey)s&quot;), out_%(parameterName)s);' % param_args)
</ins><span class="cx"> 
</span><span class="cx">                 if CppGenerator.should_pass_by_copy_for_return_type(parameter.type):
</span><span class="cx">                     method_parameters.append('out_' + parameter.parameter_name)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorscriptscodegengenerate_objc_backend_dispatcher_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -158,8 +158,10 @@
</span><span class="cx">             if isinstance(_type, EnumType):
</span><span class="cx">                 _type = _type.primitive_type  # Fall through to primitive.
</span><span class="cx">             if isinstance(_type, PrimitiveType):
</span><ins>+                if _type.raw_name() in ['array', 'any', 'object']:
+                    return '&amp;%s' % param_name if not parameter.is_optional else param_name
</ins><span class="cx">                 return '*%s' % param_name if parameter.is_optional else param_name
</span><del>-            return '%s.copyRef()' % param_name
</del><ins>+            return '&amp;%s' % param_name if not parameter.is_optional else param_name
</ins><span class="cx"> 
</span><span class="cx">         for parameter in command.call_parameters:
</span><span class="cx">             in_param_name = 'in_%s' % parameter.parameter_name
</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 (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -51,8 +51,8 @@
</span><span class="cx"> class AlternateDatabaseBackendDispatcher : public AlternateBackendDispatcher {
</span><span class="cx"> public:
</span><span class="cx">     virtual ~AlternateDatabaseBackendDispatcher() { }
</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 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;
</del><ins>+    virtual void executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) = 0;
+    virtual void executeNoOptionalParameters(long callId, const Inspector::InspectorArray&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const Inspector::InspectorObject&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject&amp; in_sqlError, const String&amp; in_screenColor, const Inspector::InspectorArray&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">@@ -161,8 +161,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 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;I
 nspector::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, DatabaseBackendDispatcherHandler::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, DatabaseBackendDispatcherHandler:
 :PrintColor* out_printColor) = 0;
</del><ins>+    virtual void executeAllOptionalParameters(ErrorString&amp;, const Inspector::InspectorArray* opt_in_columnNames, const String* opt_in_notes, const double* opt_in_timestamp, const Inspector::InspectorObject* opt_in_values, const Inspector::InspectorValue* opt_in_payload, const int* opt_in_databaseId, const Inspector::InspectorObject* opt_in_sqlError, const String* opt_in_screenColor, const Inspector::InspectorArray* opt_in_alternateColors, const String* opt_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::Protocol::Database::PrimaryColors* opt_out_screenColor, RefPtr&lt;Inspector::Protocol::Database::ColorList&gt;&amp; opt_out_alternateColors, DatabaseBackendDispatcherHandler::PrintColor* opt_out_printColor) = 0;
+    virtual void executeNoOptionalParameters(ErrorString&amp;, const Inspector::InspectorArray&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const Inspector::InspectorObject&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject&amp; in_sqlError, const String&amp; in_screenColor, const Inspector::InspectorArray&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, DatabaseBackendDispatcherHandler::PrintColor* out_printColor) = 0;
</ins><span class="cx"> protected:
</span><span class="cx">     virtual ~DatabaseBackendDispatcherHandler();
</span><span class="cx"> };
</span><span class="lines">@@ -268,26 +268,26 @@
</span><span class="cx">     auto protocolErrors = Inspector::Protocol::Array&lt;String&gt;::create();
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; paramsContainer;
</span><span class="cx">     message.getObject(ASCIILiteral(&quot;params&quot;), paramsContainer);
</span><del>-    bool columnNames_valueFound = false;
-    RefPtr&lt;Inspector::InspectorArray&gt; in_columnNames = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;columnNames&quot;), &amp;columnNames_valueFound, protocolErrors.get());
-    bool notes_valueFound = false;
-    String in_notes = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;notes&quot;), &amp;notes_valueFound, protocolErrors.get());
-    bool timestamp_valueFound = false;
-    Inspector::Protocol::OptOutput&lt;double&gt; in_timestamp = BackendDispatcher::getDouble(paramsContainer.get(), ASCIILiteral(&quot;timestamp&quot;), &amp;timestamp_valueFound, protocolErrors.get());
-    bool values_valueFound = false;
-    RefPtr&lt;Inspector::InspectorObject&gt; in_values = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;values&quot;), &amp;values_valueFound, protocolErrors.get());
-    bool payload_valueFound = false;
-    RefPtr&lt;Inspector::InspectorValue&gt; in_payload = BackendDispatcher::getValue(paramsContainer.get(), ASCIILiteral(&quot;payload&quot;), &amp;payload_valueFound, protocolErrors.get());
-    bool databaseId_valueFound = false;
-    int in_databaseId = BackendDispatcher::getInteger(paramsContainer.get(), ASCIILiteral(&quot;databaseId&quot;), &amp;databaseId_valueFound, protocolErrors.get());
-    bool sqlError_valueFound = false;
-    RefPtr&lt;Inspector::InspectorObject&gt; in_sqlError = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;sqlError&quot;), &amp;sqlError_valueFound, protocolErrors.get());
-    bool screenColor_valueFound = false;
-    String in_screenColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;screenColor&quot;), &amp;screenColor_valueFound, protocolErrors.get());
-    bool alternateColors_valueFound = false;
-    RefPtr&lt;Inspector::InspectorArray&gt; in_alternateColors = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;alternateColors&quot;), &amp;alternateColors_valueFound, protocolErrors.get());
-    bool printColor_valueFound = false;
-    String in_printColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;printColor&quot;), &amp;printColor_valueFound, protocolErrors.get());
</del><ins>+    bool opt_in_columnNames_valueFound = false;
+    RefPtr&lt;Inspector::InspectorArray&gt; opt_in_columnNames = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;columnNames&quot;), &amp;opt_in_columnNames_valueFound, protocolErrors.get());
+    bool opt_in_notes_valueFound = false;
+    String opt_in_notes = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;notes&quot;), &amp;opt_in_notes_valueFound, protocolErrors.get());
+    bool opt_in_timestamp_valueFound = false;
+    Inspector::Protocol::OptOutput&lt;double&gt; opt_in_timestamp = BackendDispatcher::getDouble(paramsContainer.get(), ASCIILiteral(&quot;timestamp&quot;), &amp;opt_in_timestamp_valueFound, protocolErrors.get());
+    bool opt_in_values_valueFound = false;
+    RefPtr&lt;Inspector::InspectorObject&gt; opt_in_values = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;values&quot;), &amp;opt_in_values_valueFound, protocolErrors.get());
+    bool opt_in_payload_valueFound = false;
+    RefPtr&lt;Inspector::InspectorValue&gt; opt_in_payload = BackendDispatcher::getValue(paramsContainer.get(), ASCIILiteral(&quot;payload&quot;), &amp;opt_in_payload_valueFound, protocolErrors.get());
+    bool opt_in_databaseId_valueFound = false;
+    int opt_in_databaseId = BackendDispatcher::getInteger(paramsContainer.get(), ASCIILiteral(&quot;databaseId&quot;), &amp;opt_in_databaseId_valueFound, protocolErrors.get());
+    bool opt_in_sqlError_valueFound = false;
+    RefPtr&lt;Inspector::InspectorObject&gt; opt_in_sqlError = BackendDispatcher::getObject(paramsContainer.get(), ASCIILiteral(&quot;sqlError&quot;), &amp;opt_in_sqlError_valueFound, protocolErrors.get());
+    bool opt_in_screenColor_valueFound = false;
+    String opt_in_screenColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;screenColor&quot;), &amp;opt_in_screenColor_valueFound, protocolErrors.get());
+    bool opt_in_alternateColors_valueFound = false;
+    RefPtr&lt;Inspector::InspectorArray&gt; opt_in_alternateColors = BackendDispatcher::getArray(paramsContainer.get(), ASCIILiteral(&quot;alternateColors&quot;), &amp;opt_in_alternateColors_valueFound, protocolErrors.get());
+    bool opt_in_printColor_valueFound = false;
+    String opt_in_printColor = BackendDispatcher::getString(paramsContainer.get(), ASCIILiteral(&quot;printColor&quot;), &amp;opt_in_printColor_valueFound, protocolErrors.get());
</ins><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.executeAllOptionalParameters&quot;);
</span><span class="cx">         m_backendDispatcher-&gt;reportProtocolError(&amp;callId, BackendDispatcher::InvalidParams, errorMessage, WTF::move(protocolErrors));
</span><span class="lines">@@ -296,7 +296,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, alternateColors_valueFound ? in_alternateColors.copyRef() : nullptr, printColor_valueFound ? &amp;in_printColor : nullptr);
</del><ins>+        m_alternateDispatcher-&gt;executeAllOptionalParameters(callId, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &amp;opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &amp;opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &amp;opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &amp;opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &amp;opt_in_printColor : nullptr);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -313,7 +313,7 @@
</span><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</span><span class="cx">     DatabaseBackendDispatcherHandler::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, 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);
</del><ins>+    m_agent-&gt;executeAllOptionalParameters(error, opt_in_columnNames_valueFound ? opt_in_columnNames.get() : nullptr, opt_in_notes_valueFound ? &amp;opt_in_notes : nullptr, opt_in_timestamp_valueFound ? &amp;opt_in_timestamp : nullptr, opt_in_values_valueFound ? opt_in_values.get() : nullptr, opt_in_payload_valueFound ? opt_in_payload.get() : nullptr, opt_in_databaseId_valueFound ? &amp;opt_in_databaseId : nullptr, opt_in_sqlError_valueFound ? opt_in_sqlError.get() : nullptr, opt_in_screenColor_valueFound ? &amp;opt_in_screenColor : nullptr, opt_in_alternateColors_valueFound ? opt_in_alternateColors.get() : nullptr, opt_in_printColor_valueFound ? &amp;opt_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">@@ -363,7 +363,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_alternateColors.copyRef(), in_printColor);
</del><ins>+        m_alternateDispatcher-&gt;executeNoOptionalParameters(callId, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, in_printColor);
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="lines">@@ -380,7 +380,7 @@
</span><span class="cx">     Inspector::Protocol::Database::PrimaryColors out_screenColor;
</span><span class="cx">     RefPtr&lt;Inspector::Protocol::Database::ColorList&gt; out_alternateColors;
</span><span class="cx">     DatabaseBackendDispatcherHandler::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_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);
</del><ins>+    m_agent-&gt;executeNoOptionalParameters(error, *in_columnNames, in_notes, in_timestamp, *in_values, *in_payload, in_databaseId, *in_sqlError, in_screenColor, *in_alternateColors, 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">@@ -744,8 +744,8 @@
</span><span class="cx"> class ObjCInspectorDatabaseBackendDispatcher final : public AlternateDatabaseBackendDispatcher {
</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 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;
</del><ins>+    virtual void executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* in_alternateColors, const String* in_printColor) override;
+    virtual void executeNoOptionalParameters(long callId, const Inspector::InspectorArray&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const Inspector::InspectorObject&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject&amp; in_sqlError, const String&amp; in_screenColor, const Inspector::InspectorArray&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">@@ -924,7 +924,7 @@
</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 RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String* in_printColor)
</del><ins>+void ObjCInspectorDatabaseBackendDispatcher::executeAllOptionalParameters(long callId, const Inspector::InspectorArray* in_columnNames, const String* in_notes, const double* in_timestamp, const Inspector::InspectorObject* in_values, const Inspector::InspectorValue* in_payload, const int* in_databaseId, const Inspector::InspectorObject* in_sqlError, const String* in_screenColor, const Inspector::InspectorArray* 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="lines">@@ -963,7 +963,7 @@
</span><span class="cx"> 
</span><span class="cx">     NSArray/*&lt;NSString&gt;*/ *o_in_columnNames;
</span><span class="cx">     if (in_columnNames)
</span><del>-        o_in_columnNames = objcStringArray(in_columnNames.copyRef());
</del><ins>+        o_in_columnNames = objcStringArray(in_columnNames);
</ins><span class="cx">     NSString *o_in_notes;
</span><span class="cx">     if (in_notes)
</span><span class="cx">         o_in_notes = *in_notes;
</span><span class="lines">@@ -972,22 +972,22 @@
</span><span class="cx">         o_in_timestamp = *in_timestamp;
</span><span class="cx">     RWIProtocolJSONObject *o_in_values;
</span><span class="cx">     if (in_values)
</span><del>-        o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:*in_values] autorelease];
</del><ins>+        o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_values] autorelease];
</ins><span class="cx">     RWIProtocolJSONObject *o_in_payload;
</span><span class="cx">     if (in_payload)
</span><del>-        o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:*in_payload] autorelease];
</del><ins>+        o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_payload] autorelease];
</ins><span class="cx">     int o_in_databaseId;
</span><span class="cx">     if (in_databaseId)
</span><span class="cx">         o_in_databaseId = *in_databaseId;
</span><span class="cx">     RWIProtocolDatabaseError *o_in_sqlError;
</span><span class="cx">     if (in_sqlError)
</span><del>-        o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError.copyRef()] autorelease];
</del><ins>+        o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError] autorelease];
</ins><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><span class="cx">     NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors;
</span><span class="cx">     if (in_alternateColors)
</span><del>-        o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
</del><ins>+        o_in_alternateColors = objcStringArray(in_alternateColors);
</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="lines">@@ -995,7 +995,7 @@
</span><span class="cx">     [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)];
</span><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 RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; in_alternateColors, const String&amp; in_printColor)
</del><ins>+void ObjCInspectorDatabaseBackendDispatcher::executeNoOptionalParameters(long callId, const Inspector::InspectorArray&amp; in_columnNames, const String&amp; in_notes, double in_timestamp, const Inspector::InspectorObject&amp; in_values, Inspector::InspectorValue in_payload, int in_databaseId, const Inspector::InspectorObject&amp; in_sqlError, const String&amp; in_screenColor, const Inspector::InspectorArray&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="lines">@@ -1022,15 +1022,15 @@
</span><span class="cx">         backendDispatcher()-&gt;sendResponse(callId, WTF::move(resultObject), String());
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    NSArray/*&lt;NSString&gt;*/ *o_in_columnNames = objcStringArray(in_columnNames.copyRef());
</del><ins>+    NSArray/*&lt;NSString&gt;*/ *o_in_columnNames = objcStringArray(&amp;in_columnNames);
</ins><span class="cx">     NSString *o_in_notes = in_notes;
</span><span class="cx">     double o_in_timestamp = in_timestamp;
</span><del>-    RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_values] autorelease];
-    RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:in_payload] autorelease];
</del><ins>+    RWIProtocolJSONObject *o_in_values = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&amp;in_values] autorelease];
+    RWIProtocolJSONObject *o_in_payload = [[[RWIProtocolJSONObject alloc] initWithInspectorObject:&amp;in_payload] autorelease];
</ins><span class="cx">     int o_in_databaseId = in_databaseId;
</span><del>-    RWIProtocolDatabaseError *o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:in_sqlError.copyRef()] autorelease];
</del><ins>+    RWIProtocolDatabaseError *o_in_sqlError = [[[RWIProtocolDatabaseError alloc] initWithInspectorObject:&amp;in_sqlError] autorelease];
</ins><span class="cx">     RWIProtocolDatabasePrimaryColors o_in_screenColor = fromProtocolString&lt;RWIProtocolDatabasePrimaryColors&gt;(in_screenColor);
</span><del>-    NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors = objcStringArray(in_alternateColors.copyRef());
</del><ins>+    NSArray/*&lt;NSString&gt;*/ *o_in_alternateColors = objcStringArray(&amp;in_alternateColors);
</ins><span class="cx">     RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor o_in_printColor = fromProtocolString&lt;RWIProtocolDatabaseExecuteNoOptionalParametersPrintColor&gt;(in_printColor);
</span><span class="cx"> 
</span><span class="cx">     [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];
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/ChangeLog        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -1,3 +1,62 @@
</span><ins>+2015-06-18  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
+        Web Inspector: improve generated types for objects passed to backend commands
+        https://bugs.webkit.org/show_bug.cgi?id=146091
+
+        Reviewed by Joseph Pecoraro.
+
+        Update type signatures for backend command implementations. In a few cases, clean
+        up relevant helper function signatures and copy data out of parameter objects where
+        the code previously held onto a reference.
+
+        No new tests, no behavior changed.
+
+        * inspector/InspectorCSSAgent.cpp:
+        (WebCore::computePseudoClassMask):
+        (WebCore::InspectorCSSAgent::setStyleText):
+        (WebCore::InspectorCSSAgent::setRuleSelector):
+        (WebCore::InspectorCSSAgent::forcePseudoState):
+        * inspector/InspectorCSSAgent.h:
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::parseColor):
+        (WebCore::parseConfigColor):
+        (WebCore::parseQuad):
+        (WebCore::InspectorDOMAgent::performSearch):
+        (WebCore::InspectorDOMAgent::setSearchingForNode):
+        (WebCore::InspectorDOMAgent::highlightConfigFromInspectorObject):
+        (WebCore::InspectorDOMAgent::setInspectModeEnabled):
+        (WebCore::InspectorDOMAgent::highlightRect):
+        (WebCore::InspectorDOMAgent::highlightQuad):
+        (WebCore::InspectorDOMAgent::innerHighlightQuad):
+        (WebCore::InspectorDOMAgent::highlightNode):
+        (WebCore::InspectorDOMAgent::highlightFrame):
+        * inspector/InspectorDOMAgent.h:
+        * inspector/InspectorDOMStorageAgent.cpp:
+        (WebCore::InspectorDOMStorageAgent::getDOMStorageItems):
+        (WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
+        (WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
+        (WebCore::InspectorDOMStorageAgent::findStorageArea):
+        * inspector/InspectorDOMStorageAgent.h:
+        * inspector/InspectorIndexedDBAgent.cpp:
+        (WebCore::InspectorIndexedDBAgent::requestData):
+        * inspector/InspectorIndexedDBAgent.h:
+        * inspector/InspectorReplayAgent.cpp:
+        (WebCore::InspectorReplayAgent::replayToPosition):
+        * inspector/InspectorReplayAgent.h:
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore::InspectorResourceAgent::willSendRequest):
+        (WebCore::InspectorResourceAgent::setExtraHTTPHeaders):
+        Clean up extraHTTPHeaders to copy header key/values out of the InspectorObject, rather
+        than retaining the protocol object indefinitely. This matches the ownership scheme used
+        everywhere else.
+
+        * inspector/InspectorResourceAgent.h:
+        * inspector/InspectorStyleSheet.h:
+        (WebCore::InspectorCSSId::InspectorCSSId):
+        * inspector/InspectorWorkerAgent.cpp:
+        (WebCore::InspectorWorkerAgent::sendMessageToWorker):
+        * inspector/InspectorWorkerAgent.h:
+
</ins><span class="cx"> 2015-06-18  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove shouldInterruptJavaScript
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -72,18 +72,18 @@
</span><span class="cx">     PseudoClassVisited = 1 &lt;&lt; 3
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-static unsigned computePseudoClassMask(InspectorArray* pseudoClassArray)
</del><ins>+static unsigned computePseudoClassMask(const InspectorArray&amp; pseudoClassArray)
</ins><span class="cx"> {
</span><span class="cx">     DEPRECATED_DEFINE_STATIC_LOCAL(String, active, (ASCIILiteral(&quot;active&quot;)));
</span><span class="cx">     DEPRECATED_DEFINE_STATIC_LOCAL(String, hover, (ASCIILiteral(&quot;hover&quot;)));
</span><span class="cx">     DEPRECATED_DEFINE_STATIC_LOCAL(String, focus, (ASCIILiteral(&quot;focus&quot;)));
</span><span class="cx">     DEPRECATED_DEFINE_STATIC_LOCAL(String, visited, (ASCIILiteral(&quot;visited&quot;)));
</span><del>-    if (!pseudoClassArray || !pseudoClassArray-&gt;length())
</del><ins>+    if (!pseudoClassArray.length())
</ins><span class="cx">         return PseudoClassNone;
</span><span class="cx"> 
</span><span class="cx">     unsigned result = PseudoClassNone;
</span><del>-    for (size_t i = 0; i &lt; pseudoClassArray-&gt;length(); ++i) {
-        RefPtr&lt;InspectorValue&gt; pseudoClassValue = pseudoClassArray-&gt;get(i);
</del><ins>+    for (size_t i = 0; i &lt; pseudoClassArray.length(); ++i) {
+        RefPtr&lt;InspectorValue&gt; pseudoClassValue = pseudoClassArray.get(i);
</ins><span class="cx">         String pseudoClass;
</span><span class="cx">         bool success = pseudoClassValue-&gt;asString(pseudoClass);
</span><span class="cx">         if (!success)
</span><span class="lines">@@ -624,9 +624,9 @@
</span><span class="cx">     errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::setStyleText(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; fullStyleId, const String&amp; text, RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::setStyleText(ErrorString&amp; errorString, const InspectorObject&amp; fullStyleId, const String&amp; text, RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt;&amp; result)
</ins><span class="cx"> {
</span><del>-    InspectorCSSId compoundId(fullStyleId.copyRef());
</del><ins>+    InspectorCSSId compoundId(fullStyleId);
</ins><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="cx"> 
</span><span class="cx">     InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, compoundId.styleSheetId());
</span><span class="lines">@@ -640,9 +640,9 @@
</span><span class="cx">     errorString = InspectorDOMAgent::toErrorString(ec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::setRuleSelector(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; fullRuleId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result)
</del><ins>+void InspectorCSSAgent::setRuleSelector(ErrorString&amp; errorString, const InspectorObject&amp; fullRuleId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result)
</ins><span class="cx"> {
</span><del>-    InspectorCSSId compoundId(fullRuleId.copyRef());
</del><ins>+    InspectorCSSId compoundId(fullRuleId);
</ins><span class="cx">     ASSERT(!compoundId.isEmpty());
</span><span class="cx"> 
</span><span class="cx">     InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, compoundId.styleSheetId());
</span><span class="lines">@@ -708,13 +708,13 @@
</span><span class="cx">     cssProperties = WTF::move(properties);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorCSSAgent::forcePseudoState(ErrorString&amp; errorString, int nodeId, const RefPtr&lt;InspectorArray&gt;&amp;&amp; forcedPseudoClasses)
</del><ins>+void InspectorCSSAgent::forcePseudoState(ErrorString&amp; errorString, int nodeId, const InspectorArray&amp; forcedPseudoClasses)
</ins><span class="cx"> {
</span><span class="cx">     Element* element = m_domAgent-&gt;assertElement(errorString, nodeId);
</span><span class="cx">     if (!element)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    unsigned forcedPseudoState = computePseudoClassMask(forcedPseudoClasses.get());
</del><ins>+    unsigned forcedPseudoState = computePseudoClassMask(forcedPseudoClasses);
</ins><span class="cx">     NodeIdToForcedPseudoState::iterator it = m_nodeIdToForcedPseudoState.find(nodeId);
</span><span class="cx">     unsigned currentForcedPseudoState = it == m_nodeIdToForcedPseudoState.end() ? 0 : it-&gt;value;
</span><span class="cx">     bool needStyleRecalc = forcedPseudoState != currentForcedPseudoState;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorCSSAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorCSSAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorCSSAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorCSSAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -115,11 +115,11 @@
</span><span class="cx">     virtual void getStyleSheet(ErrorString&amp;, const String&amp; styleSheetId, RefPtr&lt;Inspector::Protocol::CSS::CSSStyleSheetBody&gt;&amp; result) override;
</span><span class="cx">     virtual void getStyleSheetText(ErrorString&amp;, const String&amp; styleSheetId, String* result) override;
</span><span class="cx">     virtual void setStyleSheetText(ErrorString&amp;, const String&amp; styleSheetId, const String&amp; text) override;
</span><del>-    virtual void setStyleText(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; styleId, const String&amp; text, RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt;&amp; result) override;
-    virtual void setRuleSelector(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; ruleId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result) override;
</del><ins>+    virtual void setStyleText(ErrorString&amp;, const Inspector::InspectorObject&amp; styleId, const String&amp; text, RefPtr&lt;Inspector::Protocol::CSS::CSSStyle&gt;&amp; result) override;
+    virtual void setRuleSelector(ErrorString&amp;, const Inspector::InspectorObject&amp; ruleId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result) override;
</ins><span class="cx">     virtual void addRule(ErrorString&amp;, int contextNodeId, const String&amp; selector, RefPtr&lt;Inspector::Protocol::CSS::CSSRule&gt;&amp; result) override;
</span><span class="cx">     virtual void getSupportedCSSProperties(ErrorString&amp;, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::CSS::CSSPropertyInfo&gt;&gt;&amp; result) override;
</span><del>-    virtual void forcePseudoState(ErrorString&amp;, int nodeId, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; forcedPseudoClasses) override;
</del><ins>+    virtual void forcePseudoState(ErrorString&amp;, int nodeId, const Inspector::InspectorArray&amp; forcedPseudoClasses) override;
</ins><span class="cx">     virtual void getNamedFlowCollection(ErrorString&amp;, int documentNodeId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::CSS::NamedFlow&gt;&gt;&amp; result) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> static const size_t maxTextSize = 10000;
</span><span class="cx"> static const UChar ellipsisUChar[] = { 0x2026, 0 };
</span><span class="cx"> 
</span><del>-static Color parseColor(const RefPtr&lt;InspectorObject&gt;&amp;&amp; colorObject)
</del><ins>+static Color parseColor(const InspectorObject* colorObject)
</ins><span class="cx"> {
</span><span class="cx">     if (!colorObject)
</span><span class="cx">         return Color::transparent;
</span><span class="lines">@@ -127,23 +127,22 @@
</span><span class="cx">     return Color(r, g, b, static_cast&lt;int&gt;(a * 255));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static Color parseConfigColor(const String&amp; fieldName, InspectorObject* configObject)
</del><ins>+static Color parseConfigColor(const String&amp; fieldName, const InspectorObject* configObject)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; colorObject;
</span><span class="cx">     configObject-&gt;getObject(fieldName, colorObject);
</span><del>-    return parseColor(WTF::move(colorObject));
</del><ins>+
+    return parseColor(colorObject.get());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-static bool parseQuad(const RefPtr&lt;InspectorArray&gt;&amp; quadArray, FloatQuad* quad)
</del><ins>+static bool parseQuad(const InspectorArray&amp; quadArray, FloatQuad* quad)
</ins><span class="cx"> {
</span><del>-    if (!quadArray)
-        return false;
</del><span class="cx">     const size_t coordinatesInQuad = 8;
</span><span class="cx">     double coordinates[coordinatesInQuad];
</span><del>-    if (quadArray-&gt;length() != coordinatesInQuad)
</del><ins>+    if (quadArray.length() != coordinatesInQuad)
</ins><span class="cx">         return false;
</span><span class="cx">     for (size_t i = 0; i &lt; coordinatesInQuad; ++i) {
</span><del>-        if (!quadArray-&gt;get(i)-&gt;asDouble(*(coordinates + i)))
</del><ins>+        if (!quadArray.get(i)-&gt;asDouble(*(coordinates + i)))
</ins><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx">     quad-&gt;setP1(FloatPoint(coordinates[0], coordinates[1]));
</span><span class="lines">@@ -874,7 +873,7 @@
</span><span class="cx">     axProperties = buildObjectForAccessibilityProperties(node);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::performSearch(ErrorString&amp; errorString, const String&amp; whitespaceTrimmedQuery, const RefPtr&lt;InspectorArray&gt;&amp;&amp; nodeIds, String* searchId, int* resultCount)
</del><ins>+void InspectorDOMAgent::performSearch(ErrorString&amp; errorString, const String&amp; whitespaceTrimmedQuery, const InspectorArray* nodeIds, String* searchId, int* resultCount)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: Search works with node granularity - number of matches within node is not calculated.
</span><span class="cx">     InspectorNodeFinder finder(whitespaceTrimmedQuery);
</span><span class="lines">@@ -1012,7 +1011,7 @@
</span><span class="cx">         m_overlay-&gt;highlightNode(node, *m_inspectModeHighlightConfig);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::setSearchingForNode(ErrorString&amp; errorString, bool enabled, InspectorObject* highlightInspectorObject)
</del><ins>+void InspectorDOMAgent::setSearchingForNode(ErrorString&amp; errorString, bool enabled, const InspectorObject* highlightInspectorObject)
</ins><span class="cx"> {
</span><span class="cx">     if (m_searchingForNode == enabled)
</span><span class="cx">         return;
</span><span class="lines">@@ -1027,7 +1026,7 @@
</span><span class="cx">     m_overlay-&gt;didSetSearchingForNode(m_searchingForNode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;HighlightConfig&gt; InspectorDOMAgent::highlightConfigFromInspectorObject(ErrorString&amp; errorString, InspectorObject* highlightInspectorObject)
</del><ins>+std::unique_ptr&lt;HighlightConfig&gt; InspectorDOMAgent::highlightConfigFromInspectorObject(ErrorString&amp; errorString, const InspectorObject* highlightInspectorObject)
</ins><span class="cx"> {
</span><span class="cx">     if (!highlightInspectorObject) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Internal error: highlight configuration parameter is missing&quot;);
</span><span class="lines">@@ -1046,37 +1045,37 @@
</span><span class="cx">     return highlightConfig;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::setInspectModeEnabled(ErrorString&amp; errorString, bool enabled, const RefPtr&lt;InspectorObject&gt;&amp;&amp; highlightConfig)
</del><ins>+void InspectorDOMAgent::setInspectModeEnabled(ErrorString&amp; errorString, bool enabled, const InspectorObject* highlightConfig)
</ins><span class="cx"> {
</span><del>-    setSearchingForNode(errorString, enabled, highlightConfig ? highlightConfig.get() : nullptr);
</del><ins>+    setSearchingForNode(errorString, enabled, highlightConfig ? highlightConfig : nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::highlightRect(ErrorString&amp;, int x, int y, int width, int height, const RefPtr&lt;InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates)
</del><ins>+void InspectorDOMAgent::highlightRect(ErrorString&amp;, int x, int y, int width, int height, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
</ins><span class="cx"> {
</span><span class="cx">     auto quad = std::make_unique&lt;FloatQuad&gt;(FloatRect(x, y, width, height));
</span><del>-    innerHighlightQuad(WTF::move(quad), color.copyRef(), outlineColor.copyRef(), usePageCoordinates);
</del><ins>+    innerHighlightQuad(WTF::move(quad), color, outlineColor, usePageCoordinates);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::highlightQuad(ErrorString&amp; errorString, const RefPtr&lt;InspectorArray&gt;&amp;&amp; quadArray, const RefPtr&lt;InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates)
</del><ins>+void InspectorDOMAgent::highlightQuad(ErrorString&amp; errorString, const InspectorArray&amp; quadArray, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
</ins><span class="cx"> {
</span><span class="cx">     auto quad = std::make_unique&lt;FloatQuad&gt;();
</span><span class="cx">     if (!parseQuad(quadArray, quad.get())) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Invalid Quad format&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    innerHighlightQuad(WTF::move(quad), color.copyRef(), outlineColor.copyRef(), usePageCoordinates);
</del><ins>+    innerHighlightQuad(WTF::move(quad), color, outlineColor, usePageCoordinates);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::innerHighlightQuad(std::unique_ptr&lt;FloatQuad&gt; quad, const RefPtr&lt;InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates)
</del><ins>+void InspectorDOMAgent::innerHighlightQuad(std::unique_ptr&lt;FloatQuad&gt; quad, const InspectorObject* color, const InspectorObject* outlineColor, const bool* usePageCoordinates)
</ins><span class="cx"> {
</span><span class="cx">     auto highlightConfig = std::make_unique&lt;HighlightConfig&gt;();
</span><del>-    highlightConfig-&gt;content = parseColor(color.copyRef());
-    highlightConfig-&gt;contentOutline = parseColor(outlineColor.copyRef());
</del><ins>+    highlightConfig-&gt;content = parseColor(color);
+    highlightConfig-&gt;contentOutline = parseColor(outlineColor);
</ins><span class="cx">     highlightConfig-&gt;usePageCoordinates = usePageCoordinates ? *usePageCoordinates : false;
</span><span class="cx">     m_overlay-&gt;highlightQuad(WTF::move(quad), *highlightConfig);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::highlightNode(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; highlightInspectorObject, const int* nodeId, const String* objectId)
</del><ins>+void InspectorDOMAgent::highlightNode(ErrorString&amp; errorString, const InspectorObject&amp; highlightInspectorObject, const int* nodeId, const String* objectId)
</ins><span class="cx"> {
</span><span class="cx">     Node* node = 0;
</span><span class="cx">     if (nodeId) {
</span><span class="lines">@@ -1091,21 +1090,21 @@
</span><span class="cx">     if (!node)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;HighlightConfig&gt; highlightConfig = highlightConfigFromInspectorObject(errorString, highlightInspectorObject.get());
</del><ins>+    std::unique_ptr&lt;HighlightConfig&gt; highlightConfig = highlightConfigFromInspectorObject(errorString, &amp;highlightInspectorObject);
</ins><span class="cx">     if (!highlightConfig)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_overlay-&gt;highlightNode(node, *highlightConfig);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMAgent::highlightFrame(ErrorString&amp;, const String&amp; frameId, const RefPtr&lt;InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;InspectorObject&gt;&amp;&amp; outlineColor)
</del><ins>+void InspectorDOMAgent::highlightFrame(ErrorString&amp;, const String&amp; frameId, const InspectorObject* color, const InspectorObject* outlineColor)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame = m_pageAgent-&gt;frameForId(frameId);
</span><span class="cx">     if (frame &amp;&amp; frame-&gt;ownerElement()) {
</span><span class="cx">         auto highlightConfig = std::make_unique&lt;HighlightConfig&gt;();
</span><span class="cx">         highlightConfig-&gt;showInfo = true; // Always show tooltips for frames.
</span><del>-        highlightConfig-&gt;content = parseColor(color.copyRef());
-        highlightConfig-&gt;contentOutline = parseColor(outlineColor.copyRef());
</del><ins>+        highlightConfig-&gt;content = parseColor(color);
+        highlightConfig-&gt;contentOutline = parseColor(outlineColor);
</ins><span class="cx">         m_overlay-&gt;highlightNode(frame-&gt;ownerElement(), *highlightConfig);
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -130,21 +130,21 @@
</span><span class="cx">     virtual void setNodeValue(ErrorString&amp;, int nodeId, const String&amp; value) override;
</span><span class="cx">     virtual void getEventListenersForNode(ErrorString&amp;, int nodeId, const WTF::String* objectGroup, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::DOM::EventListener&gt;&gt;&amp; listenersArray) override;
</span><span class="cx">     virtual void getAccessibilityPropertiesForNode(ErrorString&amp;, int nodeId, RefPtr&lt;Inspector::Protocol::DOM::AccessibilityProperties&gt;&amp; axProperties) override;
</span><del>-    virtual void performSearch(ErrorString&amp;, const String&amp; whitespaceTrimmedQuery, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; nodeIds, String* searchId, int* resultCount) override;
</del><ins>+    virtual void performSearch(ErrorString&amp;, const String&amp; whitespaceTrimmedQuery, const Inspector::InspectorArray* nodeIds, String* searchId, int* resultCount) override;
</ins><span class="cx">     virtual void getSearchResults(ErrorString&amp;, const String&amp; searchId, int fromIndex, int toIndex, RefPtr&lt;Inspector::Protocol::Array&lt;int&gt;&gt;&amp;) override;
</span><span class="cx">     virtual void discardSearchResults(ErrorString&amp;, const String&amp; searchId) override;
</span><span class="cx">     virtual void resolveNode(ErrorString&amp;, int nodeId, const String* objectGroup, RefPtr&lt;Inspector::Protocol::Runtime::RemoteObject&gt;&amp; result) override;
</span><span class="cx">     virtual void getAttributes(ErrorString&amp;, int nodeId, RefPtr&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&amp; result) override;
</span><del>-    virtual void setInspectModeEnabled(ErrorString&amp;, bool enabled, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; highlightConfig) override;
</del><ins>+    virtual void setInspectModeEnabled(ErrorString&amp;, bool enabled, const Inspector::InspectorObject* highlightConfig) override;
</ins><span class="cx">     virtual void requestNode(ErrorString&amp;, const String&amp; objectId, int* nodeId) override;
</span><span class="cx">     virtual void pushNodeByPathToFrontend(ErrorString&amp;, const String&amp; path, int* nodeId) override;
</span><span class="cx">     virtual void pushNodeByBackendIdToFrontend(ErrorString&amp;, BackendNodeId, int* nodeId) override;
</span><span class="cx">     virtual void releaseBackendNodeIds(ErrorString&amp;, const String&amp; nodeGroup) override;
</span><span class="cx">     virtual void hideHighlight(ErrorString&amp;) override;
</span><del>-    virtual void highlightRect(ErrorString&amp;, int x, int y, int width, int height, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates) override;
-    virtual void highlightQuad(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorArray&gt;&amp;&amp; quad, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates) override;
-    virtual void highlightNode(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; highlightConfig, const int* nodeId, const String* objectId) override;
-    virtual void highlightFrame(ErrorString&amp;, const String&amp; frameId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; outlineColor) override;
</del><ins>+    virtual void highlightRect(ErrorString&amp;, int x, int y, int width, int height, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates) override;
+    virtual void highlightQuad(ErrorString&amp;, const Inspector::InspectorArray&amp; quad, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates) override;
+    virtual void highlightNode(ErrorString&amp;, const Inspector::InspectorObject&amp; highlightConfig, const int* nodeId, const String* objectId) override;
+    virtual void highlightFrame(ErrorString&amp;, const String&amp; frameId, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor) override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void moveTo(ErrorString&amp;, int nodeId, int targetNodeId, const int* anchorNodeId, int* newNodeId) override;
</span><span class="cx">     virtual void undo(ErrorString&amp;) override;
</span><span class="lines">@@ -212,8 +212,8 @@
</span><span class="cx">     InspectorPageAgent* pageAgent() { return m_pageAgent; }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void setSearchingForNode(ErrorString&amp;, bool enabled, Inspector::InspectorObject* highlightConfig);
-    std::unique_ptr&lt;HighlightConfig&gt; highlightConfigFromInspectorObject(ErrorString&amp;, Inspector::InspectorObject* highlightInspectorObject);
</del><ins>+    void setSearchingForNode(ErrorString&amp;, bool enabled, const Inspector::InspectorObject* highlightConfig);
+    std::unique_ptr&lt;HighlightConfig&gt; highlightConfigFromInspectorObject(ErrorString&amp;, const Inspector::InspectorObject* highlightInspectorObject);
</ins><span class="cx"> 
</span><span class="cx">     // Node-related methods.
</span><span class="cx">     typedef HashMap&lt;RefPtr&lt;Node&gt;, int&gt; NodeToIdMap;
</span><span class="lines">@@ -241,7 +241,7 @@
</span><span class="cx"> 
</span><span class="cx">     void discardBindings();
</span><span class="cx"> 
</span><del>-    void innerHighlightQuad(std::unique_ptr&lt;FloatQuad&gt;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; color, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; outlineColor, const bool* usePageCoordinates);
</del><ins>+    void innerHighlightQuad(std::unique_ptr&lt;FloatQuad&gt;, const Inspector::InspectorObject* color, const Inspector::InspectorObject* outlineColor, const bool* usePageCoordinates);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     Inspector::InjectedScriptManager* m_injectedScriptManager;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMStorageAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -92,10 +92,10 @@
</span><span class="cx">     m_enabled = false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; storageId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&gt;&amp; items)
</del><ins>+void InspectorDOMStorageAgent::getDOMStorageItems(ErrorString&amp; errorString, const InspectorObject&amp; storageId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&gt;&amp; items)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame;
</span><del>-    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
</del><ins>+    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId, frame);
</ins><span class="cx">     if (!storageArea) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;No StorageArea for given storageId&quot;);
</span><span class="cx">         return;
</span><span class="lines">@@ -116,10 +116,10 @@
</span><span class="cx">     items = WTF::move(storageItems);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::setDOMStorageItem(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; storageId, const String&amp; key, const String&amp; value)
</del><ins>+void InspectorDOMStorageAgent::setDOMStorageItem(ErrorString&amp; errorString, const InspectorObject&amp; storageId, const String&amp; key, const String&amp; value)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame;
</span><del>-    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
</del><ins>+    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId, frame);
</ins><span class="cx">     if (!storageArea) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Storage not found&quot;);
</span><span class="cx">         return;
</span><span class="lines">@@ -131,10 +131,10 @@
</span><span class="cx">         errorString = ExceptionCodeDescription(QUOTA_EXCEEDED_ERR).name;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorDOMStorageAgent::removeDOMStorageItem(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; storageId, const String&amp; key)
</del><ins>+void InspectorDOMStorageAgent::removeDOMStorageItem(ErrorString&amp; errorString, const InspectorObject&amp; storageId, const String&amp; key)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame;
</span><del>-    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId.copyRef(), frame);
</del><ins>+    RefPtr&lt;StorageArea&gt; storageArea = findStorageArea(errorString, storageId, frame);
</ins><span class="cx">     if (!storageArea) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Storage not found&quot;);
</span><span class="cx">         return;
</span><span class="lines">@@ -180,13 +180,13 @@
</span><span class="cx">         m_frontendDispatcher-&gt;domStorageItemUpdated(id, key, oldValue, newValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;StorageArea&gt; InspectorDOMStorageAgent::findStorageArea(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; storageId, Frame*&amp; targetFrame)
</del><ins>+RefPtr&lt;StorageArea&gt; InspectorDOMStorageAgent::findStorageArea(ErrorString&amp; errorString, const InspectorObject&amp; storageId, Frame*&amp; targetFrame)
</ins><span class="cx"> {
</span><span class="cx">     String securityOrigin;
</span><span class="cx">     bool isLocalStorage = false;
</span><del>-    bool success = storageId-&gt;getString(ASCIILiteral(&quot;securityOrigin&quot;), securityOrigin);
</del><ins>+    bool success = storageId.getString(ASCIILiteral(&quot;securityOrigin&quot;), securityOrigin);
</ins><span class="cx">     if (success)
</span><del>-        success = storageId-&gt;getBoolean(ASCIILiteral(&quot;isLocalStorage&quot;), isLocalStorage);
</del><ins>+        success = storageId.getBoolean(ASCIILiteral(&quot;isLocalStorage&quot;), isLocalStorage);
</ins><span class="cx">     if (!success) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Invalid storageId format&quot;);
</span><span class="cx">         targetFrame = nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMStorageAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorDOMStorageAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -63,9 +63,9 @@
</span><span class="cx">     // Called from the front-end.
</span><span class="cx">     virtual void enable(ErrorString&amp;) override;
</span><span class="cx">     virtual void disable(ErrorString&amp;) override;
</span><del>-    virtual void getDOMStorageItems(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; storageId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&gt;&amp; items) override;
-    virtual void setDOMStorageItem(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; storageId, const String&amp; key, const String&amp; value) override;
-    virtual void removeDOMStorageItem(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; storageId, const String&amp; key) override;
</del><ins>+    virtual void getDOMStorageItems(ErrorString&amp;, const Inspector::InspectorObject&amp; storageId, RefPtr&lt;Inspector::Protocol::Array&lt;Inspector::Protocol::Array&lt;String&gt;&gt;&gt;&amp; items) override;
+    virtual void setDOMStorageItem(ErrorString&amp;, const Inspector::InspectorObject&amp; storageId, const String&amp; key, const String&amp; value) override;
+    virtual void removeDOMStorageItem(ErrorString&amp;, const Inspector::InspectorObject&amp; storageId, const String&amp; key) override;
</ins><span class="cx"> 
</span><span class="cx">     // Called from the injected script.
</span><span class="cx">     String storageId(Storage*);
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     void didDispatchDOMStorageEvent(const String&amp; key, const String&amp; oldValue, const String&amp; newValue, StorageType, SecurityOrigin*, Page*);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    RefPtr&lt;StorageArea&gt; findStorageArea(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp;, Frame*&amp;);
</del><ins>+    RefPtr&lt;StorageArea&gt; findStorageArea(ErrorString&amp;, const Inspector::InspectorObject&amp;, Frame*&amp;);
</ins><span class="cx"> 
</span><span class="cx">     InspectorPageAgent* m_pageAgent;
</span><span class="cx">     std::unique_ptr&lt;Inspector::DOMStorageFrontendDispatcher&gt; m_frontendDispatcher;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorIndexedDBAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx">     return idbKey.release();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static RefPtr&lt;IDBKeyRange&gt; idbKeyRangeFromKeyRange(InspectorObject* keyRange)
</del><ins>+static RefPtr&lt;IDBKeyRange&gt; idbKeyRangeFromKeyRange(const InspectorObject* keyRange)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;InspectorObject&gt; lower;
</span><span class="cx">     if (!keyRange-&gt;getObject(&quot;lower&quot;, lower))
</span><span class="lines">@@ -655,7 +655,7 @@
</span><span class="cx">     databaseLoader-&gt;start(idbFactory, document-&gt;securityOrigin(), databaseName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorIndexedDBAgent::requestData(ErrorString&amp; errorString, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const RefPtr&lt;InspectorObject&gt;&amp;&amp; keyRange, Ref&lt;RequestDataCallback&gt;&amp;&amp; requestCallback)
</del><ins>+void InspectorIndexedDBAgent::requestData(ErrorString&amp; errorString, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const InspectorObject* keyRange, Ref&lt;RequestDataCallback&gt;&amp;&amp; requestCallback)
</ins><span class="cx"> {
</span><span class="cx">     Frame* frame = m_pageAgent-&gt;findFrameWithSecurityOrigin(securityOrigin);
</span><span class="cx">     Document* document = assertDocument(errorString, frame);
</span><span class="lines">@@ -668,7 +668,7 @@
</span><span class="cx"> 
</span><span class="cx">     InjectedScript injectedScript = m_injectedScriptManager-&gt;injectedScriptFor(mainWorldExecState(frame));
</span><span class="cx"> 
</span><del>-    RefPtr&lt;IDBKeyRange&gt; idbKeyRange = keyRange ? idbKeyRangeFromKeyRange(keyRange.get()) : nullptr;
</del><ins>+    RefPtr&lt;IDBKeyRange&gt; idbKeyRange = keyRange ? idbKeyRangeFromKeyRange(keyRange) : nullptr;
</ins><span class="cx">     if (keyRange &amp;&amp; !idbKeyRange) {
</span><span class="cx">         errorString = ASCIILiteral(&quot;Can not parse key range.&quot;);
</span><span class="cx">         return;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorIndexedDBAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     virtual void disable(ErrorString&amp;) override;
</span><span class="cx">     virtual void requestDatabaseNames(ErrorString&amp;, const String&amp; securityOrigin, Ref&lt;RequestDatabaseNamesCallback&gt;&amp;&amp;) override;
</span><span class="cx">     virtual void requestDatabase(ErrorString&amp;, const String&amp; securityOrigin, const String&amp; databaseName, Ref&lt;RequestDatabaseCallback&gt;&amp;&amp;) override;
</span><del>-    virtual void requestData(ErrorString&amp;, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; keyRange, Ref&lt;RequestDataCallback&gt;&amp;&amp;) override;
</del><ins>+    virtual void requestData(ErrorString&amp;, const String&amp; securityOrigin, const String&amp; databaseName, const String&amp; objectStoreName, const String&amp; indexName, int skipCount, int pageSize, const Inspector::InspectorObject* keyRange, Ref&lt;RequestDataCallback&gt;&amp;&amp;) override;
</ins><span class="cx">     virtual void clearObjectStore(ErrorString&amp;, const String&amp; in_securityOrigin, const String&amp; in_databaseName, const String&amp; in_objectStoreName, Ref&lt;ClearObjectStoreCallback&gt;&amp;&amp;) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorReplayAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorReplayAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -329,15 +329,15 @@
</span><span class="cx">     m_page.replayController().stopCapturing();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorReplayAgent::replayToPosition(ErrorString&amp; errorString, const RefPtr&lt;InspectorObject&gt;&amp;&amp; positionObject, bool fastReplay)
</del><ins>+void InspectorReplayAgent::replayToPosition(ErrorString&amp; errorString, const InspectorObject&amp; positionObject, bool fastReplay)
</ins><span class="cx"> {
</span><span class="cx">     ReplayPosition position;
</span><del>-    if (!positionObject-&gt;getInteger(ASCIILiteral(&quot;segmentOffset&quot;), position.segmentOffset)) {
</del><ins>+    if (!positionObject.getInteger(ASCIILiteral(&quot;segmentOffset&quot;), position.segmentOffset)) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;Couldn't decode ReplayPosition segment offset provided to ReplayAgent.replayToPosition.&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (!positionObject-&gt;getInteger(ASCIILiteral(&quot;inputOffset&quot;), position.inputOffset)) {
</del><ins>+    if (!positionObject.getInteger(ASCIILiteral(&quot;inputOffset&quot;), position.inputOffset)) {
</ins><span class="cx">         errorString = ASCIILiteral(&quot;Couldn't decode ReplayPosition input offset provided to ReplayAgent.replayToPosition.&quot;);
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorReplayAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorReplayAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorReplayAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorReplayAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx">     virtual void startCapturing(ErrorString&amp;) override;
</span><span class="cx">     virtual void stopCapturing(ErrorString&amp;) override;
</span><span class="cx"> 
</span><del>-    virtual void replayToPosition(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp;, bool shouldFastForward) override;
</del><ins>+    virtual void replayToPosition(ErrorString&amp;, const Inspector::InspectorObject&amp; position, bool shouldFastForward) override;
</ins><span class="cx">     virtual void replayToCompletion(ErrorString&amp;, bool shouldFastForward) override;
</span><span class="cx">     virtual void pausePlayback(ErrorString&amp;) override;
</span><span class="cx">     virtual void cancelPlayback(ErrorString&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -299,14 +299,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_resourcesData-&gt;setResourceType(requestId, type);
</span><span class="cx"> 
</span><del>-    if (m_extraRequestHeaders) {
-        InspectorObject::const_iterator end = m_extraRequestHeaders-&gt;end();
-        for (InspectorObject::const_iterator it = m_extraRequestHeaders-&gt;begin(); it != end; ++it) {
-            String value;
-            if (it-&gt;value-&gt;asString(value))
-                request.setHTTPHeaderField(it-&gt;key, value);
-        }
-    }
</del><ins>+    for (auto&amp; entry : m_extraRequestHeaders)
+        request.setHTTPHeaderField(entry.key, entry.value);
</ins><span class="cx"> 
</span><span class="cx">     request.setReportLoadTiming(true);
</span><span class="cx">     request.setReportRawHeaders(true);
</span><span class="lines">@@ -624,9 +618,13 @@
</span><span class="cx">     m_extraRequestHeaders.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorResourceAgent::setExtraHTTPHeaders(ErrorString&amp;, const RefPtr&lt;InspectorObject&gt;&amp;&amp; headers)
</del><ins>+void InspectorResourceAgent::setExtraHTTPHeaders(ErrorString&amp;, const InspectorObject&amp; headers)
</ins><span class="cx"> {
</span><del>-    m_extraRequestHeaders = headers.copyRef();
</del><ins>+    for (auto&amp; entry : headers) {
+        String stringValue;
+        if (entry.value-&gt;asString(stringValue))
+            m_extraRequestHeaders.set(entry.key, stringValue);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void InspectorResourceAgent::getResponseBody(ErrorString&amp; errorString, const String&amp; requestId, String* content, bool* base64Encoded)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorResourceAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">     // Called from frontend.
</span><span class="cx">     virtual void enable(ErrorString&amp;) override;
</span><span class="cx">     virtual void disable(ErrorString&amp;) override;
</span><del>-    virtual void setExtraHTTPHeaders(ErrorString&amp;, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp;) override;
</del><ins>+    virtual void setExtraHTTPHeaders(ErrorString&amp;, const Inspector::InspectorObject&amp; headers) override;
</ins><span class="cx">     virtual void getResponseBody(ErrorString&amp;, const String&amp; requestId, String* content, bool* base64Encoded) override;
</span><span class="cx">     virtual void canClearBrowserCache(ErrorString&amp;, bool*) override;
</span><span class="cx">     virtual void clearBrowserCache(ErrorString&amp;) override;
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     bool m_enabled;
</span><span class="cx">     bool m_cacheDisabled;
</span><span class="cx">     bool m_loadingXHRSynchronously;
</span><del>-    RefPtr&lt;Inspector::InspectorObject&gt; m_extraRequestHeaders;
</del><ins>+    HashMap&lt;String, String&gt; m_extraRequestHeaders;
</ins><span class="cx"> 
</span><span class="cx">     HashSet&lt;unsigned long&gt; m_hiddenRequestIdentifiers;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorStyleSheeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorStyleSheet.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorStyleSheet.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorStyleSheet.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -56,12 +56,12 @@
</span><span class="cx"> public:
</span><span class="cx">     InspectorCSSId() { }
</span><span class="cx"> 
</span><del>-    explicit InspectorCSSId(const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; value)
</del><ins>+    explicit InspectorCSSId(const Inspector::InspectorObject&amp; value)
</ins><span class="cx">     {
</span><del>-        if (!value-&gt;getString(ASCIILiteral(&quot;styleSheetId&quot;), m_styleSheetId))
</del><ins>+        if (!value.getString(ASCIILiteral(&quot;styleSheetId&quot;), m_styleSheetId))
</ins><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        if (!value-&gt;getInteger(ASCIILiteral(&quot;ordinal&quot;), m_ordinal))
</del><ins>+        if (!value.getInteger(ASCIILiteral(&quot;ordinal&quot;), m_ordinal))
</ins><span class="cx">             m_styleSheetId = String();
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorWorkerAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.cpp        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -171,11 +171,11 @@
</span><span class="cx">         error = ASCIILiteral(&quot;Worker is gone&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void InspectorWorkerAgent::sendMessageToWorker(ErrorString&amp; error, int workerId, const RefPtr&lt;InspectorObject&gt;&amp;&amp; message)
</del><ins>+void InspectorWorkerAgent::sendMessageToWorker(ErrorString&amp; error, int workerId, const InspectorObject&amp; message)
</ins><span class="cx"> {
</span><span class="cx">     WorkerFrontendChannel* channel = m_idToChannel.get(workerId);
</span><span class="cx">     if (channel)
</span><del>-        channel-&gt;proxy()-&gt;sendMessageToInspector(message-&gt;toJSONString());
</del><ins>+        channel-&gt;proxy()-&gt;sendMessageToInspector(message.toJSONString());
</ins><span class="cx">     else
</span><span class="cx">         error = ASCIILiteral(&quot;Worker is gone&quot;);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorWorkerAgenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorWorkerAgent.h (185721 => 185722)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorWorkerAgent.h        2015-06-18 20:59:12 UTC (rev 185721)
+++ trunk/Source/WebCore/inspector/InspectorWorkerAgent.h        2015-06-18 22:07:15 UTC (rev 185722)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">     virtual void canInspectWorkers(ErrorString&amp;, bool*) override;
</span><span class="cx">     virtual void connectToWorker(ErrorString&amp;, int workerId) override;
</span><span class="cx">     virtual void disconnectFromWorker(ErrorString&amp;, int workerId) override;
</span><del>-    virtual void sendMessageToWorker(ErrorString&amp;, int workerId, const RefPtr&lt;Inspector::InspectorObject&gt;&amp;&amp; message) override;
</del><ins>+    virtual void sendMessageToWorker(ErrorString&amp;, int workerId, const Inspector::InspectorObject&amp; message) override;
</ins><span class="cx">     virtual void setAutoconnectToWorkers(ErrorString&amp;, bool value) override;
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre>
</div>
</div>

</body>
</html>