<!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>[180593] trunk/Source/WebInspectorUI</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/180593">180593</a></dd>
<dt>Author</dt> <dd>joepeck@webkit.org</dd>
<dt>Date</dt> <dd>2015-02-24 16:31:38 -0800 (Tue, 24 Feb 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: New Object Tree View UI
https://bugs.webkit.org/show_bug.cgi?id=141932

Reviewed by Timothy Hatcher.

Part 1: Majority of the UI.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Eye.svg: Added.
* UserInterface/Images/TypeBoolean.svg: Added.
* UserInterface/Images/TypeNull.svg: Added.
* UserInterface/Images/TypeNumber.svg: Added.
* UserInterface/Images/TypeObject.svg: Added.
* UserInterface/Images/TypeRegex.svg: Added.
* UserInterface/Images/TypeString.svg: Added.
* UserInterface/Images/TypeSymbol.svg: Added.
* UserInterface/Images/TypeUndefined.svg: Added.
* UserInterface/Main.html:
Miscellaneous.

* UserInterface/Views/FormattedValue.css:
(.formatted-boolean):
Give booleans a light purple color.

* UserInterface/Views/FormattedValue.js:
(WebInspector.FormattedValue.createElementForTypesAndValue):
Previously we were truncating function value logging in the console. E.g.
  js&gt; multiLineFunction
  &lt;-  function multiLineFunction() {
No longer truncate so we display the full string.

* UserInterface/Models/PropertyPath.js: Added.
(WebInspector.PropertyPath):
(WebInspector.PropertyPath.prototype.get object):
(WebInspector.PropertyPath.prototype.get parent):
(WebInspector.PropertyPath.prototype.get isPrototype):
(WebInspector.PropertyPath.prototype.get rootObject):
(WebInspector.PropertyPath.prototype.get lastNonPrototypeObject):
(WebInspector.PropertyPath.prototype.get pathComponent):
(WebInspector.PropertyPath.prototype.get fullPath):
(WebInspector.PropertyPath.prototype.isRoot):
(WebInspector.PropertyPath.prototype.isPathComponentImpossible):
(WebInspector.PropertyPath.prototype.isFullPathImpossible):
(WebInspector.PropertyPath.prototype.appendPropertyName):
(WebInspector.PropertyPath.prototype.appendPropertySymbol):
(WebInspector.PropertyPath.prototype.appendInternalPropertyName):
(WebInspector.PropertyPath.prototype.appendArrayIndex):
(WebInspector.PropertyPath.prototype.appendCollectionIndex):
(WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
(WebInspector.PropertyPath.prototype._canPropertyNameBeDotAccess):
PropertyPaths are a linked list of remote object / patch component pairs.
For a property like &quot;foo['property 1'].__proto__.baz&quot; we will have a PropertyPath
chain with the RemoteObject for each component. This allows us to accurately
select the RemoteObject on which we should invoke a getter. It also allows
us to display the property path string from the root object, if possible.

* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.callFunction):
(WebInspector.RemoteObject.prototype.backendInvokeGetter):
(WebInspector.RemoteObject.prototype.invokeGetter):
Provide a way to invoke a getter function on a remote object if we
have a reference to the getter function. At the same time, improve
the mostly unused callFunction API to automatically convert
RemoteObjects / values to their Runtime.CallArgument format.

* UserInterface/Views/ObjectTreePropertyTreeElement.css: Added.
(.object-tree-property):
(.object-tree-property &gt; .disclosure-button):
(.object-tree-property.parent &gt; .disclosure-button):
(.object-tree-property.parent.expanded &gt; .disclosure-button):
(.object-tree-property &gt; .titles):
Focused styles for the ObjectTree property GeneralTreeElements.
Reuse navigation sidebar disclosure-triangles.

(.object-tree-property &gt; .icon):
(.object-tree-property.boolean &gt; .icon):
(.object-tree-property.function &gt; .icon):
(.object-tree-property.number &gt; .icon):
(.object-tree-property.object &gt; .icon):
(.object-tree-property.object.null &gt; .icon):
(.object-tree-property.object.node &gt; .icon):
(.object-tree-property.regex &gt; .icon):
(.object-tree-property.string &gt; .icon):
(.object-tree-property.symbol &gt; .icon):
(.object-tree-property.undefined &gt; .icon):
Use different icons for different object types. Special case
&quot;accessor&quot; to be undefined.

(.object-tree-property .prototype-name):
(.object-tree-property .property-name.not-enumerable):
Style property names in sans-serif font.
Give non-enumerable properties a slightly transparent look.

(.object-tree-property.prototype-property):
(.object-tree-property.prototype-property &gt; .icon):
(.object-tree-property.prototype-property + ol):
Special styles for prototype properties and their children.

(.object-tree-property .getter):
(.object-tree-property .getter:hover):
(.object-tree-property .read-only):
Styles for clickable getter button and non-interactive read-only indicator.

(.object-tree-property :matches(.formatted-string, .formatted-regexp)):
Do not allow wrapping for values that previously allowed wrapping.

(.object-tree-property .value.error):
If getting a value resulted in an error, display that error in red.

* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement):
Extend from GeneralTreeElement and set up class names on the root &lt;li&gt; object.

(WebInspector.ObjectTreePropertyTreeElement.prototype.onattach): Deleted.
No longer needed by using GeneralTreeElement.

(WebInspector.ObjectTreePropertyTreeElement.prototype.onexpand):
(WebInspector.ObjectTreePropertyTreeElement.prototype.oncollapse):
Expand / collapse an associated ObjectPreview if we have one.

(WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValue):
(WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath):
This PropertyTreeElement may be displaying for a value, or a getter that has
gotten a value. Refer to this as the &quot;resolvedValue&quot;.

(WebInspector.ObjectTreePropertyTreeElement.prototype._thisPropertyPath):
A PropertyPath leaf used for tooltips.

(WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTooltips):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
Helpers for updating small parts of the UI. When a getter is invoked,
we need to update the entire UI of this TreeElement.

(WebInspector.ObjectTreePropertyTreeElement.prototype._titleFragment):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitle): Deleted.
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitlePropertyStyle): Deleted.
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAPIStyle): Deleted.
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
Create the UI for the mainTitle of this PropertyTreeElement.

(WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createReadOnlyIconElement):
Helpers for creating the small components of the title UI.

(WebInspector.ObjectTreePropertyTreeElement.prototype._alwaysDisplayAsProperty):
Establish when a property should still be displayed as a &quot;property&quot; even when in API mode.
For example a value property on a prototype, should still display as an expandable property.

* UserInterface/Views/ObjectTreeView.css:
(.object-tree &gt; :matches(.title, .object-preview)::before):
(.object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)):
(.object-tree.expanded &gt; :matches(.title, .object-preview)::before):
(.object-tree .object-tree-outline):
(.object-tree-outline ol):
(.object-tree-outline li .empty-message):
(:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline):
(.object-tree &gt; .title): Deleted.
(.object-tree-outline): Deleted.
(.object-tree-outline li): Deleted.
(.object-tree-outline li.parent): Deleted.
(.object-tree-outline li.parent::before): Deleted.
(.object-tree-outline li.parent.expanded::before): Deleted.
(.object-tree-property .name): Deleted.
(.object-tree-property .name.not-enumerable): Deleted.
(.object-tree-property .value.error): Deleted.
(.console-group-messages .object-tree:not(.lossless-preview)): Deleted.
(.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)): Deleted.
(.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)::before): Deleted.
(.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree): Deleted.
(.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline): Deleted.
Move most PropertyTreeElement specific styles into ObjectPropertyTreeElement.css.
Plenty of console specific files were eliminated.

* UserInterface/Views/ObjectTreeView.js:
(WebInspector.ObjectTreeView.prototype.update):
(WebInspector.ObjectTreeView.prototype._updateProperties):

Part 2: Provide better parameter lists for native functions.

When expanding an object's prototype chain, with authored code
you will accurately see parameter lists for user authored functions
because we can get this by parsing Function.prototype.toString.
For native code, we don't get any parameter information. In such cases
we can detect we are a native function, and provide our own strings.

This fills in most of the JavaScript built-ins and some DOM
functions, however we should autogenerate the rest of the DOM.

* UserInterface/Base/Utilities.js:
(isFunctionStringNativeCode):
Helper to check if a function is native or not based on its string.

* UserInterface/Main.html:
* UserInterface/Models/NativeFunctionParameters.js: Added.
Dictionary of parameter lists for native constructor functions
and prototype functions.

* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement):
(WebInspector.ObjectTreePropertyTreeElement.prototype._functionPropertyString):
(WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
(WebInspector.ObjectTreePropertyTreeElement.prototype):
When we have a native function, try to provide a better parameter string.

Part 3: Better handle errors when invoking getters.

* UserInterface/Protocol/RemoteObject.js:
(WebInspector.RemoteObject.prototype.callFunction):
(WebInspector.RemoteObject.prototype.invokeGetter):
Pass the error, wasThrown, and result through to the caller so they can
act on all the information possible. Provide encapsulation though
and auto-convert the result to a RemoteObject for the callback.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
(WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady):
* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._createTooltipForNode.setTooltip):
(WebInspector.DOMTreeElement.prototype._createTooltipForNode.resolvedNode):
(WebInspector.DOMTreeElement.prototype._createTooltipForNode):
Update current users of callFunctionOn for the new callback parameters.

* UserInterface/Views/ObjectTreePropertyTreeElement.css:
(.object-tree-property.had-error &gt; .icon):
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WebInspector.ObjectTreePropertyTreeElement):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
(WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement.):
Better style getters with errors.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIChangeLog">trunk/Source/WebInspectorUI/ChangeLog</a></li>
<li><a href="#trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs">trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceBaseUtilitiesjs">trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceMainhtml">trunk/Source/WebInspectorUI/UserInterface/Main.html</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceProtocolRemoteObjectjs">trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMNodeDetailsSidebarPaneljs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsFormattedValuecss">trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsFormattedValuejs">trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreePropertyTreeElementjs">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeViewcss">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.css</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeViewjs">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesEyesvg">trunk/Source/WebInspectorUI/UserInterface/Images/Eye.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeBooleansvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeBoolean.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeNullsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeNull.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeNumbersvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeNumber.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeObjectsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeObject.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeRegexsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeRegex.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeStringsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeString.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeSymbolsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeSymbol.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceImagesTypeUndefinedsvg">trunk/Source/WebInspectorUI/UserInterface/Images/TypeUndefined.svg</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsNativeFunctionParametersjs">trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceModelsPropertyPathjs">trunk/Source/WebInspectorUI/UserInterface/Models/PropertyPath.js</a></li>
<li><a href="#trunkSourceWebInspectorUIUserInterfaceViewsObjectTreePropertyTreeElementcss">trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.css</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebInspectorUIChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/ChangeLog (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/ChangeLog        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/ChangeLog        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -1,5 +1,244 @@
</span><span class="cx"> 2015-02-24  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        Web Inspector: New Object Tree View UI
+        https://bugs.webkit.org/show_bug.cgi?id=141932
+
+        Reviewed by Timothy Hatcher.
+
+        Part 1: Majority of the UI.
+
+        * Localizations/en.lproj/localizedStrings.js:
+        * UserInterface/Images/Eye.svg: Added.
+        * UserInterface/Images/TypeBoolean.svg: Added.
+        * UserInterface/Images/TypeNull.svg: Added.
+        * UserInterface/Images/TypeNumber.svg: Added.
+        * UserInterface/Images/TypeObject.svg: Added.
+        * UserInterface/Images/TypeRegex.svg: Added.
+        * UserInterface/Images/TypeString.svg: Added.
+        * UserInterface/Images/TypeSymbol.svg: Added.
+        * UserInterface/Images/TypeUndefined.svg: Added.
+        * UserInterface/Main.html:
+        Miscellaneous.
+
+        * UserInterface/Views/FormattedValue.css:
+        (.formatted-boolean):
+        Give booleans a light purple color.
+
+        * UserInterface/Views/FormattedValue.js:
+        (WebInspector.FormattedValue.createElementForTypesAndValue):
+        Previously we were truncating function value logging in the console. E.g.
+          js&gt; multiLineFunction
+          &lt;-  function multiLineFunction() {
+        No longer truncate so we display the full string.
+
+        * UserInterface/Models/PropertyPath.js: Added.
+        (WebInspector.PropertyPath):
+        (WebInspector.PropertyPath.prototype.get object):
+        (WebInspector.PropertyPath.prototype.get parent):
+        (WebInspector.PropertyPath.prototype.get isPrototype):
+        (WebInspector.PropertyPath.prototype.get rootObject):
+        (WebInspector.PropertyPath.prototype.get lastNonPrototypeObject):
+        (WebInspector.PropertyPath.prototype.get pathComponent):
+        (WebInspector.PropertyPath.prototype.get fullPath):
+        (WebInspector.PropertyPath.prototype.isRoot):
+        (WebInspector.PropertyPath.prototype.isPathComponentImpossible):
+        (WebInspector.PropertyPath.prototype.isFullPathImpossible):
+        (WebInspector.PropertyPath.prototype.appendPropertyName):
+        (WebInspector.PropertyPath.prototype.appendPropertySymbol):
+        (WebInspector.PropertyPath.prototype.appendInternalPropertyName):
+        (WebInspector.PropertyPath.prototype.appendArrayIndex):
+        (WebInspector.PropertyPath.prototype.appendCollectionIndex):
+        (WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
+        (WebInspector.PropertyPath.prototype._canPropertyNameBeDotAccess):
+        PropertyPaths are a linked list of remote object / patch component pairs.
+        For a property like &quot;foo['property 1'].__proto__.baz&quot; we will have a PropertyPath
+        chain with the RemoteObject for each component. This allows us to accurately
+        select the RemoteObject on which we should invoke a getter. It also allows
+        us to display the property path string from the root object, if possible.
+
+        * UserInterface/Protocol/RemoteObject.js:
+        (WebInspector.RemoteObject.prototype.callFunction):
+        (WebInspector.RemoteObject.prototype.backendInvokeGetter):
+        (WebInspector.RemoteObject.prototype.invokeGetter):
+        Provide a way to invoke a getter function on a remote object if we
+        have a reference to the getter function. At the same time, improve
+        the mostly unused callFunction API to automatically convert
+        RemoteObjects / values to their Runtime.CallArgument format.
+
+        * UserInterface/Views/ObjectTreePropertyTreeElement.css: Added.
+        (.object-tree-property):
+        (.object-tree-property &gt; .disclosure-button):
+        (.object-tree-property.parent &gt; .disclosure-button):
+        (.object-tree-property.parent.expanded &gt; .disclosure-button):
+        (.object-tree-property &gt; .titles):
+        Focused styles for the ObjectTree property GeneralTreeElements.
+        Reuse navigation sidebar disclosure-triangles.
+
+        (.object-tree-property &gt; .icon):
+        (.object-tree-property.boolean &gt; .icon):
+        (.object-tree-property.function &gt; .icon):
+        (.object-tree-property.number &gt; .icon):
+        (.object-tree-property.object &gt; .icon):
+        (.object-tree-property.object.null &gt; .icon):
+        (.object-tree-property.object.node &gt; .icon):
+        (.object-tree-property.regex &gt; .icon):
+        (.object-tree-property.string &gt; .icon):
+        (.object-tree-property.symbol &gt; .icon):
+        (.object-tree-property.undefined &gt; .icon):
+        Use different icons for different object types. Special case
+        &quot;accessor&quot; to be undefined.
+
+        (.object-tree-property .prototype-name):
+        (.object-tree-property .property-name.not-enumerable):
+        Style property names in sans-serif font.
+        Give non-enumerable properties a slightly transparent look.
+
+        (.object-tree-property.prototype-property):
+        (.object-tree-property.prototype-property &gt; .icon):
+        (.object-tree-property.prototype-property + ol):
+        Special styles for prototype properties and their children.
+
+        (.object-tree-property .getter):
+        (.object-tree-property .getter:hover):
+        (.object-tree-property .read-only):
+        Styles for clickable getter button and non-interactive read-only indicator.
+
+        (.object-tree-property :matches(.formatted-string, .formatted-regexp)):
+        Do not allow wrapping for values that previously allowed wrapping.
+
+        (.object-tree-property .value.error):
+        If getting a value resulted in an error, display that error in red.
+
+        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
+        (WebInspector.ObjectTreePropertyTreeElement):
+        Extend from GeneralTreeElement and set up class names on the root &lt;li&gt; object.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype.onattach): Deleted.
+        No longer needed by using GeneralTreeElement.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype.onexpand):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype.oncollapse):
+        Expand / collapse an associated ObjectPreview if we have one.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValue):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._resolvedValuePropertyPath):
+        This PropertyTreeElement may be displaying for a value, or a getter that has
+        gotten a value. Refer to this as the &quot;resolvedValue&quot;.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._thisPropertyPath):
+        A PropertyPath leaf used for tooltips.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTooltips):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
+        Helpers for updating small parts of the UI. When a getter is invoked,
+        we need to update the entire UI of this TreeElement.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._titleFragment):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitle): Deleted.
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitlePropertyStyle): Deleted.
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAPIStyle): Deleted.
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePrototype):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
+        Create the UI for the mainTitle of this PropertyTreeElement.
+        
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createReadOnlyIconElement):
+        Helpers for creating the small components of the title UI.
+
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._alwaysDisplayAsProperty):
+        Establish when a property should still be displayed as a &quot;property&quot; even when in API mode.
+        For example a value property on a prototype, should still display as an expandable property.
+
+        * UserInterface/Views/ObjectTreeView.css:
+        (.object-tree &gt; :matches(.title, .object-preview)::before):
+        (.object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)):
+        (.object-tree.expanded &gt; :matches(.title, .object-preview)::before):
+        (.object-tree .object-tree-outline):
+        (.object-tree-outline ol):
+        (.object-tree-outline li .empty-message):
+        (:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline):
+        (.object-tree &gt; .title): Deleted.
+        (.object-tree-outline): Deleted.
+        (.object-tree-outline li): Deleted.
+        (.object-tree-outline li.parent): Deleted.
+        (.object-tree-outline li.parent::before): Deleted.
+        (.object-tree-outline li.parent.expanded::before): Deleted.
+        (.object-tree-property .name): Deleted.
+        (.object-tree-property .name.not-enumerable): Deleted.
+        (.object-tree-property .value.error): Deleted.
+        (.console-group-messages .object-tree:not(.lossless-preview)): Deleted.
+        (.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)): Deleted.
+        (.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)::before): Deleted.
+        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree): Deleted.
+        (.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline): Deleted.
+        Move most PropertyTreeElement specific styles into ObjectPropertyTreeElement.css.
+        Plenty of console specific files were eliminated.
+
+        * UserInterface/Views/ObjectTreeView.js:
+        (WebInspector.ObjectTreeView.prototype.update):
+        (WebInspector.ObjectTreeView.prototype._updateProperties):
+
+
+        Part 2: Provide better parameter lists for native functions.
+
+        When expanding an object's prototype chain, with authored code
+        you will accurately see parameter lists for user authored functions
+        because we can get this by parsing Function.prototype.toString.
+        For native code, we don't get any parameter information. In such cases
+        we can detect we are a native function, and provide our own strings.
+
+        This fills in most of the JavaScript built-ins and some DOM
+        functions, however we should autogenerate the rest of the DOM.
+
+        * UserInterface/Base/Utilities.js:
+        (isFunctionStringNativeCode):
+        Helper to check if a function is native or not based on its string.
+
+        * UserInterface/Main.html:
+        * UserInterface/Models/NativeFunctionParameters.js: Added.
+        Dictionary of parameter lists for native constructor functions
+        and prototype functions.
+
+        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
+        (WebInspector.ObjectTreePropertyTreeElement):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionPropertyString):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._functionParameterString):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype):
+        When we have a native function, try to provide a better parameter string.
+
+
+        Part 3: Better handle errors when invoking getters.
+
+        * UserInterface/Protocol/RemoteObject.js:
+        (WebInspector.RemoteObject.prototype.callFunction):
+        (WebInspector.RemoteObject.prototype.invokeGetter):
+        Pass the error, wasThrown, and result through to the caller so they can
+        act on all the information possible. Provide encapsulation though
+        and auto-convert the result to a RemoteObject for the callback.
+
+        * UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
+        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodeResolved):
+        (WebInspector.DOMNodeDetailsSidebarPanel.prototype._refreshProperties.nodePrototypesReady):
+        * UserInterface/Views/DOMTreeElement.js:
+        (WebInspector.DOMTreeElement.prototype._createTooltipForNode.setTooltip):
+        (WebInspector.DOMTreeElement.prototype._createTooltipForNode.resolvedNode):
+        (WebInspector.DOMTreeElement.prototype._createTooltipForNode):
+        Update current users of callFunctionOn for the new callback parameters.
+
+        * UserInterface/Views/ObjectTreePropertyTreeElement.css:
+        (.object-tree-property.had-error &gt; .icon):
+        * UserInterface/Views/ObjectTreePropertyTreeElement.js:
+        (WebInspector.ObjectTreePropertyTreeElement):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateHasChildren):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._updateTitleAndIcon):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
+        (WebInspector.ObjectTreePropertyTreeElement.prototype._createInteractiveGetterElement.):
+        Better style getters with errors.
+
+2015-02-24  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
</ins><span class="cx">         Web Inspector: Do not show &quot;{}&quot; after Date description in Object Previews
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=141898
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUILocalizationsenlprojlocalizedStringsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -25,6 +25,7 @@
</span><span class="cx"> localizedStrings[&quot;%s (default)&quot;] = &quot;%s (default)&quot;;
</span><span class="cx"> localizedStrings[&quot;%s (hidden)&quot;] = &quot;%s (hidden)&quot;;
</span><span class="cx"> localizedStrings[&quot;%s Event Dispatched&quot;] = &quot;%s Event Dispatched&quot;;
</span><ins>+localizedStrings[&quot;%s Prototype&quot;] = &quot;%s Prototype&quot;;
</ins><span class="cx"> localizedStrings[&quot;(Index)&quot;] = &quot;(Index)&quot;;
</span><span class="cx"> localizedStrings[&quot;(anonymous function)&quot;] = &quot;(anonymous function)&quot;;
</span><span class="cx"> localizedStrings[&quot;(many)&quot;] = &quot;(many)&quot;;
</span><span class="lines">@@ -119,6 +120,7 @@
</span><span class="cx"> localizedStrings[&quot;Cookies&quot;] = &quot;Cookies&quot;;
</span><span class="cx"> localizedStrings[&quot;Copy Row&quot;] = &quot;Copy Row&quot;;
</span><span class="cx"> localizedStrings[&quot;Copy as HTML&quot;] = &quot;Copy as HTML&quot;;
</span><ins>+localizedStrings[&quot;Could not fetch properties. Object may no longer exist.&quot;] = &quot;Could not fetch properties. Object may no longer exist.&quot;;
</ins><span class="cx"> localizedStrings[&quot;DOM Tree&quot;] = &quot;DOM Tree&quot;;
</span><span class="cx"> localizedStrings[&quot;Data&quot;] = &quot;Data&quot;;
</span><span class="cx"> localizedStrings[&quot;Data returned from the database is too large.&quot;] = &quot;Data returned from the database is too large.&quot;;
</span><span class="lines">@@ -258,6 +260,7 @@
</span><span class="cx"> localizedStrings[&quot;Input: &quot;] = &quot;Input: &quot;;
</span><span class="cx"> localizedStrings[&quot;Inspect&quot;] = &quot;Inspect&quot;;
</span><span class="cx"> localizedStrings[&quot;Invalid&quot;] = &quot;Invalid&quot;;
</span><ins>+localizedStrings[&quot;Invoke getter&quot;] = &quot;Invoke getter&quot;;
</ins><span class="cx"> localizedStrings[&quot;JavaScript &amp; Events&quot;] = &quot;JavaScript &amp; Events&quot;;
</span><span class="cx"> localizedStrings[&quot;Keep Log on Reload&quot;] = &quot;Keep Log on Reload&quot;;
</span><span class="cx"> localizedStrings[&quot;Key&quot;] = &quot;Key&quot;;
</span><span class="lines">@@ -351,6 +354,7 @@
</span><span class="cx"> localizedStrings[&quot;Query String&quot;] = &quot;Query String&quot;;
</span><span class="cx"> localizedStrings[&quot;Radial Gradient&quot;] = &quot;Radial Gradient&quot;;
</span><span class="cx"> localizedStrings[&quot;Range Issue&quot;] = &quot;Range Issue&quot;;
</span><ins>+localizedStrings[&quot;Read only&quot;] = &quot;Read only&quot;;
</ins><span class="cx"> localizedStrings[&quot;Readonly&quot;] = &quot;Readonly&quot;;
</span><span class="cx"> localizedStrings[&quot;Reasons for compositing:&quot;] = &quot;Reasons for compositing:&quot;;
</span><span class="cx"> localizedStrings[&quot;Recording&quot;] = &quot;Recording&quot;;
</span><span class="lines">@@ -462,6 +466,7 @@
</span><span class="cx"> localizedStrings[&quot;Type&quot;] = &quot;Type&quot;;
</span><span class="cx"> localizedStrings[&quot;Type Issue&quot;] = &quot;Type Issue&quot;;
</span><span class="cx"> localizedStrings[&quot;Type information for variable: %s&quot;] = &quot;Type information for variable: %s&quot;;
</span><ins>+localizedStrings[&quot;Unable to determine path to property from root&quot;] = &quot;Unable to determine path to property from root&quot;;
</ins><span class="cx"> localizedStrings[&quot;Unknown node&quot;] = &quot;Unknown node&quot;;
</span><span class="cx"> localizedStrings[&quot;Untitled&quot;] = &quot;Untitled&quot;;
</span><span class="cx"> localizedStrings[&quot;User Agent Stylesheet&quot;] = &quot;User Agent Stylesheet&quot;;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceBaseUtilitiesjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Utilities.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -1026,6 +1026,11 @@
</span><span class="cx">     }
</span><span class="cx"> });
</span><span class="cx"> 
</span><ins>+function isFunctionStringNativeCode(str)
+{
+    return str.endsWith(&quot;{\n    [native code]\n}&quot;);
+}
+
</ins><span class="cx"> function clamp(min, value, max)
</span><span class="cx"> {
</span><span class="cx">     return Math.min(Math.max(min, value), max);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesEyesvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/Eye.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/Eye.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/Eye.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 11&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path d=&quot;M 7.942 8.124 C 6.53 8.124 5.385 6.95 5.385 5.499 C 5.385 4.05 6.53 2.875 7.942 2.875 C 9.355 2.875 10.5 4.05 10.5 5.499 C 10.5 6.95 9.355 8.124 7.942 8.124 M 7.942 1.0 C 3.923 1.0 1.001 5.499 1.001 5.499 C 1.001 5.499 3.923 9.999 7.942 9.999 C 11.962 9.999 14.884 5.499 14.884 5.499 C 14.884 5.499 11.962 1.0 7.942 1.0&quot; fill=&quot;none&quot; stroke=&quot;black&quot;/&gt;
+    &lt;path d=&quot;M 7.942 4.375 C 7.337 4.375 6.846 4.878 6.846 5.5 C 6.846 6.121 7.337 6.625 7.942 6.625 C 8.548 6.625 9.038 6.121 9.038 5.5 C 9.038 4.878 8.548 4.375 7.942 4.375&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeBooleansvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeBoolean.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeBoolean.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeBoolean.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 L 13 1 Z&quot; fill=&quot;rgb(190, 165, 202)&quot;/&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 M 13 2 C 13.552 2 14 2.449 14 3 L 14 13 C 14 13.552 13.552 14 13 14 L 3 14 C 2.449 14 2 13.552 2 13 L 2 3 C 2 2.449 2.449 2 3 2 L 13 2&quot; fill=&quot;rgb(141, 118, 153)&quot;/&gt;
+    &lt;path d=&quot;M 6.7266 10.872101 L 7.1006 10.872101 C 7.8306 10.872101 8.3356 10.7971 8.6116 10.6471 C 8.8896 10.5001 9.027599 10.2281 9.027599 9.8351 C 9.027599 9.4291 8.841599 9.0931 8.4716 8.8241 C 8.0996 8.555099 7.6316 8.421101 7.0656 8.421101 L 6.7266 8.421101 L 6.7266 10.872101 Z M 6.7266 7.3571 L 7.1396 7.3571 C 7.6286 7.3571 8.0186 7.2421 8.3056 7.013101 C 8.5956 6.7831 8.7386 6.4721 8.7386 6.0781 C 8.7386 5.7121 8.6226 5.4641 8.3926 5.3331 C 8.1586 5.2031 7.7216 5.1371 7.0776 5.1371 L 6.7266 5.1371 L 6.7266 7.3571 Z M 5.0876 12.0001 L 5.0876 4.0461 L 7.9306 4.0461 C 8.770599 4.0461 9.4116 4.1961 9.850599 4.4971 C 10.2896 4.7981 10.5086 5.2371 10.5086 5.8141 C 10.5086 6.770101 9.8386 7.4481 8.501599 7.8461 C 10.0656 8.2071 10.8476 8.9361 10.8476 10.0331 C 10.8476 10.6681 10.6186 11.1521 10.1616 11.4931 C 9.7036 11.8301 9.0456 12.0001 8.190599 12.0001 L 5.0876 12.0001 Z&quot; fill=&quot;white&quot;/&gt;
+    &lt;path d=&quot;M 7.7266 9.8457 L 7.7266 9.5417 C 7.7836 9.568701 7.8366 9.5987 7.8856 9.6337 C 7.9926 9.7117 8.0186 9.7607 8.025599 9.7997 C 7.9596 9.8147 7.8636 9.8317 7.7266 9.8457 M 7.9306 3.0457 L 5.0876 3.0457 L 4.0876 3.0457 L 4.0876 4.0457 L 4.0876 11.999701 L 4.0876 12.999701 L 5.0876 12.999701 L 8.190599 12.999701 C 9.2586 12.999701 10.1216 12.7637 10.7536 12.2987 C 11.4706 11.7637 11.8476 10.9817 11.8476 10.0337 C 11.8476 9.419701 11.6646 8.485701 10.7176 7.7477 C 11.3386 7.1267 11.5086 6.4107 11.5086 5.8137 C 11.5086 4.9037 11.1306 4.1627 10.4156 3.6727 C 9.8006 3.2507 8.987599 3.0457 7.9306 3.0457 M 6.7266 10.8717 L 7.1006 10.8717 C 7.8306 10.8717 8.3356 10.7967 8.6116 10.6477 C 8.8896 10.499701 9.027599 10.228701 9.027599 9.8347 C 9.027599 9.428699 8.841599 9.0927 8.4716 8.8237 C 8.0996 8.554701 7.6316 8.4207 7.0656 8.4207 L 6.7266 8.4207 L 6.7266 10.8717 M 6.7266 7.3567 L 7.1396 7.3567 C 7.6286 7.3567 8.0186 7.2417 8.3056 7.0127 C 8.5956 6.782701 8.7386 6
 .471701 8.7386 6.077701 C 8.7386 5.7117 8.6226 5.4637 8.3926 5.3337 C 8.1586 5.2027 7.7216 5.1377 7.0776 5.1377 L 6.7266 5.1377 L 6.7266 7.3567 M 7.9306 4.0457 C 8.770599 4.0457 9.4116 4.1967 9.850599 4.4977 C 10.2896 4.7987 10.5086 5.2377 10.5086 5.8137 C 10.5086 6.7707 9.8386 7.447701 8.501599 7.8457 C 10.0656 8.207701 10.8476 8.936701 10.8476 10.0337 C 10.8476 10.6677 10.6186 11.1527 10.1616 11.492701 C 9.7036 11.8297 9.0456 11.999701 8.190599 11.999701 L 5.0876 11.999701 L 5.0876 4.0457 L 7.9306 4.0457&quot; fill=&quot;rgb(153, 127, 166)&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeNullsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeNull.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeNull.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeNull.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 16 16&quot;&gt;
+    &lt;path fill=&quot;rgb(203, 203, 203)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z&quot;/&gt;
+    &lt;path fill=&quot;rgb(153, 153, 153)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(166, 166, 166)&quot; d=&quot;M 9.5625 12.742188 C 9.230469 12.742188 8.917969 12.574219 8.734375 12.300781 C 8.734375 12.300781 7.816406 10.941406 6.90625 9.585938 C 6.90625 10.617188 6.90625 11.742188 6.90625 11.742188 C 6.90625 12.292969 6.457031 12.742188 5.90625 12.742188 L 4.578125 12.742188 C 4.027344 12.742188 3.578125 12.292969 3.578125 11.742188 L 3.578125 3.792969 C 3.578125 3.242188 4.027344 2.792969 4.578125 2.792969 L 6.035156 2.792969 C 6.367188 2.792969 6.675781 2.957031 6.863281 3.230469 C 6.863281 3.230469 7.789062 4.601562 8.71875 5.96875 C 8.71875 4.925781 8.71875 3.792969 8.71875 3.792969 C 8.71875 3.242188 9.164062 2.792969 9.71875 2.792969 L 11.046875 2.792969 C 11.597656 2.792969 12.046875 3.242188 12.046875 3.792969 L 12.046875 11.742188 C 12.046875 12.292969 11.597656 12.742188 11.046875 12.742188 L 9.5625 12.742188&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 4.578125 11.742188 L 4.578125 3.792969 L 6.035156 3.792969 L 9.71875 9.222656 L 9.71875 3.792969 L 11.046875 3.792969 L 11.046875 11.742188 L 9.5625 11.742188 L 5.90625 6.3125 L 5.90625 11.742188 Z&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeNumbersvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeNumber.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeNumber.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeNumber.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 16 16&quot;&gt;
+    &lt;path fill=&quot;rgb(148, 183, 219)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z&quot;/&gt;
+    &lt;path fill=&quot;rgb(106, 136, 170)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(113, 146, 184)&quot; d=&quot;M 9.5625 12.742188 C 9.230469 12.742188 8.917969 12.574219 8.734375 12.300781 C 8.734375 12.300781 7.816406 10.941406 6.90625 9.585938 C 6.90625 10.617188 6.90625 11.742188 6.90625 11.742188 C 6.90625 12.292969 6.457031 12.742188 5.90625 12.742188 L 4.578125 12.742188 C 4.027344 12.742188 3.578125 12.292969 3.578125 11.742188 L 3.578125 3.792969 C 3.578125 3.242188 4.027344 2.792969 4.578125 2.792969 L 6.035156 2.792969 C 6.367188 2.792969 6.675781 2.957031 6.863281 3.230469 C 6.863281 3.230469 7.789062 4.601562 8.71875 5.96875 C 8.71875 4.925781 8.71875 3.792969 8.71875 3.792969 C 8.71875 3.242188 9.164062 2.792969 9.71875 2.792969 L 11.046875 2.792969 C 11.597656 2.792969 12.046875 3.242188 12.046875 3.792969 L 12.046875 11.742188 C 12.046875 12.292969 11.597656 12.742188 11.046875 12.742188 L 9.5625 12.742188&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 4.578125 11.742188 L 4.578125 3.792969 L 6.035156 3.792969 L 9.71875 9.222656 L 9.71875 3.792969 L 11.046875 3.792969 L 11.046875 11.742188 L 9.5625 11.742188 L 5.90625 6.3125 L 5.90625 11.742188 Z&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeObjectsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeObject.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeObject.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeObject.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 L 13 1 Z&quot; fill=&quot;rgb(246, 222, 146)&quot;/&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 M 13 2 C 13.552 2 14 2.449 14 3 L 14 13 C 14 13.552 13.552 14 13 14 L 3 14 C 2.449 14 2 13.552 2 13 L 2 3 C 2 2.449 2.449 2 3 2 L 13 2&quot; fill=&quot;rgb(204, 181, 108)&quot;/&gt;
+    &lt;path d=&quot;M 7.9736 11.041 C 8.6766 11.041 9.2346 10.757999 9.6436 10.193 C 10.0536 9.629 10.2586 8.864 10.2586 7.898 C 10.2586 6.962 10.0526 6.210999 9.6406 5.645 C 9.2286 5.079 8.683599 4.795 8.0056 4.795 C 7.3206 4.795 6.7726 5.079 6.3626 5.645 C 5.9526 6.210999 5.7476 6.967999 5.7476 7.915 C 5.7476 8.855 5.9516 9.611 6.3596 10.183 C 6.7676 10.754999 7.3066 11.041 7.9736 11.041 M 7.9526 12.15 C 6.7556 12.15 5.7986 11.766 5.0816 10.997 C 4.3646 10.226999 4.0056 9.202 4.0056 7.92 C 4.0056 6.624 4.3666 5.596 5.0866 4.833 C 5.8076 4.071 6.7806 3.69 8.0056 3.69 C 9.223599 3.69 10.1936 4.071 10.9156 4.833 C 11.6386 5.596 11.9996 6.62 11.9996 7.903999 C 11.9996 9.217999 11.6386 10.254999 10.9156 11.013 C 10.1936 11.771 9.2056 12.15 7.9526 12.15&quot; fill=&quot;white&quot;/&gt;
+    &lt;path d=&quot;M 7.9736 10.041 C 7.6326 10.041 7.3936 9.91 7.1736 9.601999 C 6.8906 9.205999 6.7476 8.638 6.7476 7.915 C 6.7476 7.186999 6.8906 6.620999 7.1726 6.23 C 7.3936 5.926 7.6426 5.795 8.0056 5.795 C 8.3616 5.795 8.6086 5.926 8.8316 6.233 C 9.1156 6.622 9.2586 7.183 9.2586 7.898 C 9.2586 8.643999 9.1166 9.217999 8.834599 9.605 C 8.6136 9.910999 8.355599 10.041 7.9736 10.041 M 8.0056 2.69 C 6.5006 2.69 5.2736 3.18 4.3606 4.146 C 3.4616 5.097 3.0056 6.367 3.0056 7.92 C 3.0056 9.455999 3.4576 10.721 4.3496 11.679 C 5.2616 12.655 6.4736 13.15 7.9526 13.15 C 9.4846 13.15 10.7246 12.663 11.6406 11.702 C 12.5416 10.756 12.9996 9.478 12.9996 7.903999 C 12.9996 6.360999 12.5426 5.096 11.6416 4.145 C 10.7256 3.18 9.5026 2.69 8.0056 2.69 M 7.9736 11.041 C 8.6766 11.041 9.2346 10.757999 9.6436 10.193 C 10.0536 9.629 10.2586 8.864 10.2586 7.898 C 10.2586 6.962 10.0526 6.210999 9.6406 5.645 C 9.2286 5.079 8.683599 4.795 8.0056 4.795 C 7.3206 4.795 6.7726 5.079 6.3626 5.645 C
  5.9526 6.210999 5.7476 6.967999 5.7476 7.915 C 5.7476 8.855 5.9516 9.611 6.3596 10.183 C 6.7676 10.754999 7.3066 11.041 7.9736 11.041 M 8.0056 3.69 C 9.223599 3.69 10.1936 4.071 10.9156 4.833 C 11.6386 5.596 11.9996 6.62 11.9996 7.903999 C 11.9996 9.217999 11.6386 10.254999 10.9156 11.013 C 10.1936 11.771 9.2056 12.15 7.9526 12.15 C 6.7556 12.15 5.7986 11.766 5.0816 10.997 C 4.3646 10.226999 4.0056 9.202 4.0056 7.92 C 4.0056 6.624 4.3666 5.596 5.0866 4.833 C 5.8076 4.071 6.7806 3.69 8.0056 3.69&quot; fill=&quot;rgb(216, 193, 115)&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeRegexsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeRegex.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeRegex.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeRegex.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 L 13 1 Z&quot; fill=&quot;rgb(236, 151, 153)&quot;/&gt;
+    &lt;path d=&quot;M 13 1 L 3 1 C 1.9 1 1 1.9 1 3 L 1 13 C 1 14.1 1.9 15 3 15 L 13 15 C 14.1 15 15 14.1 15 13 L 15 3 C 15 1.9 14.1 1 13 1 M 13 2 C 13.552 2 14 2.449 14 3 L 14 13 C 14 13.552 13.552 14 13 14 L 3 14 C 2.449 14 2 13.552 2 13 L 2 3 C 2 2.449 2.449 2 3 2 L 13 2&quot; fill=&quot;rgb(191, 109, 113)&quot;/&gt;
+    &lt;path d=&quot;M 8.1104 3 L 5.0004 3 L 4.0004 3 L 4.0004 4 L 4.0004 12 L 4.0004 13 L 5.0004 13 L 7.0004 13 L 8.0004 13 L 8.0004 12 L 8.0004 11.646 L 8.5584 12.533 L 8.8524 13 L 9.4044 13 L 11.7494 13 L 13.7134 13 L 12.5574 11.412 L 10.5494 8.650999 C 10.8754 8.459 11.1754 8.226 11.3874 7.924999 C 11.7944 7.351999 12.0004 6.702999 12.0004 6 C 12.0004 4.178 10.4734 3 8.1104 3 M 7.0004 7.632 L 7.0274 7.632 C 8.280399 7.632 9.0624 7.144 9.0624 6.167 C 9.0624 5.454 8.3484 5.097 7.2294 5.097 L 7.0004 5.097 L 7.0004 7.632 M 8.1104 4 C 9.7984 4 11.0004 4.678 11.0004 6 C 11.0004 6.493999 10.8574 6.943 10.5704 7.349 C 10.2854 7.754 9.5334 8.049 9.0314 8.264999 L 11.7494 12 L 9.4044 12 L 7.3434 8.729 L 7.0004 8.729 L 7.0004 12 L 5.0004 12 L 5.0004 4 L 8.1104 4&quot; fill=&quot;rgb(204, 116, 121)&quot;/&gt;
+    &lt;path d=&quot;M 7 7.6323 L 7.027 7.6323 C 8.281 7.6323 9.063001 7.1443 9.063001 6.1673 C 9.063001 5.4543 8.348001 5.0973 7.229001 5.0973 L 7 5.0973 L 7 7.6323 Z M 5 12.0003 L 5 4.0003 L 8.11 4.0003 C 9.799001 4.0003 11 4.6773 11 6.0003 C 11 6.4943 10.857 6.9433 10.57 7.3493 C 10.285 7.7543 9.533 8.0493 9.031 8.2643 L 11.749 12.0003 L 9.404 12.0003 L 7.344 8.7293 L 7 8.7293 L 7 12.0003 L 5 12.0003 Z&quot; fill=&quot;white&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeStringsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeString.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeString.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeString.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path fill=&quot;rgb(236, 151, 153)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z&quot;/&gt;
+    &lt;path fill=&quot;rgb(191, 109, 113)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(204, 116, 121)&quot; d=&quot;M 5.19849793 12.6584609 C 5.2831472 12.676395 6.98277851 12.9487305 7.62939453 12.9487305 C 8.79640591 12.9487305 9.76331344 12.6806542 10.5034462 12.1146703 C 11.3037555 11.5026691 11.7177734 10.6286312 11.7177734 9.58544922 C 11.7177734 8.84534902 11.4998181 8.18341061 11.0628295 7.63852362 C 10.6767371 7.15709971 10.0557113 6.69185669 9.18734192 6.20492057 L 8.61524891 5.88648574 C 8.27558142 5.69523066 8.15431716 5.69238281 8.23632812 5.69238281 C 8.56703836 5.69238281 9.10333246 5.81936052 9.8138795 6.08542439 L 11.1645508 6.59118236 L 11.1645508 5.14892578 L 11.1645508 3.87597656 L 11.1645508 3.07965768 L 10.3884483 2.90136387 C 9.52406853 2.70279014 8.73593121 2.60205078 8.02148438 2.60205078 C 7.01081351 2.60205078 6.14909735 2.87110984 5.47554965 3.42697448 C 4.76046595 4.01711791 4.38964844 4.82767811 4.38964844 5.77734375 C 4.38964844 6.49239045 4.61205052 7.14196725 5.04920932 7.68841575 C 5.43639142 8.1723
 9338 6.03437082 8.62885808 6.84888633 9.08727887 L 7.38545082 9.38538774 C 7.71699471 9.57330366 7.92926232 9.72631865 7.99164827 9.79813503 C 7.94460492 9.81851991 7.82252674 9.85302734 7.60253906 9.85302734 C 7.14294036 9.85302734 6.53493744 9.70437137 5.79174704 9.39341305 L 4.40576172 8.81350287 L 4.40576172 10.315918 L 4.40576172 11.6801758 L 4.40576172 12.4905083 L 5.19849793 12.6584609 C 5.52713094 12.7280865 5.52713094 12.7280865 5.57407851 12.738033 L 5.19849793 12.6584609 Z M 5.19849793 12.6584609&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 5.40576172 11.6801758 L 5.40576172 10.315918 C 6.26156027 10.6739927 6.99381206 10.8530273 7.60253906 10.8530273 C 8.02864796 10.8530273 8.36433797 10.758139 8.60961914 10.5683594 C 8.85490031 10.3785798 8.97753906 10.1207699 8.97753906 9.79492188 C 8.97753906 9.53710809 8.90055416 9.31958096 8.74658203 9.14233398 C 8.59260991 8.965087 8.3007834 8.75472127 7.87109375 8.51123047 L 7.33935547 8.21582031 C 6.6267868 7.81477664 6.12369938 7.43074728 5.83007812 7.0637207 C 5.53645687 6.69669413 5.38964844 6.2679061 5.38964844 5.77734375 C 5.38964844 5.12206704 5.63045007 4.59570511 6.11206055 4.19824219 C 6.59367103 3.80077926 7.23013927 3.60205078 8.02148438 3.60205078 C 8.65527661 3.60205078 9.36962493 3.69335846 10.1645508 3.87597656 L 10.1645508 5.14892578 C 9.3517212 4.84456228 8.70898674 4.69238281 8.23632812 4.69238281 C 7.87109192 4.69238281 7.57837024 4.77384359 7.3581543 4.93676758 C 7.13793835 5.09969157 7.02783203 5.313638
  7.02783203 5.57861328 C 7.02783203 5.79703885 7.10481694 5.98860595 7.25878906 6.15332031 C 7.41276119 6.31803468 7.70279735 6.52034385 8.12890625 6.76025391 L 8.69824219 7.07714844 C 9.46452206 7.50683809 9.99267433 7.9025047 10.2827148 8.26416016 C 10.5727554 8.62581561 10.7177734 9.06624089 10.7177734 9.58544922 C 10.7177734 10.3230831 10.4438504 10.9013651 9.89599609 11.3203125 C 9.34814179 11.7392599 8.59261549 11.9487305 7.62939453 11.9487305 C 6.99202155 11.9487305 6.25081803 11.8592131 5.40576172 11.6801758 C 5.40576172 11.6801758 6.25081803 11.8592131 5.40576172 11.6801758 L 5.40576172 11.6801758 L 5.40576172 11.6801758 Z M 5.40576172 11.6801758&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeSymbolsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeSymbol.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeSymbol.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeSymbol.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg viewBox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
+    &lt;path fill=&quot;rgb(159, 221, 214)&quot; d=&quot;M 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 L 3 1 Z M 3 1&quot;/&gt;
+    &lt;path fill=&quot;rgb(63, 169, 156)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(90, 168, 159)&quot; d=&quot;M 5.19849793 12.6584609 C 5.2831472 12.676395 6.98277851 12.9487305 7.62939453 12.9487305 C 8.79640591 12.9487305 9.76331344 12.6806542 10.5034462 12.1146703 C 11.3037555 11.5026691 11.7177734 10.6286312 11.7177734 9.58544922 C 11.7177734 8.84534902 11.4998181 8.18341061 11.0628295 7.63852362 C 10.6767371 7.15709971 10.0557113 6.69185669 9.18734192 6.20492057 L 8.61524891 5.88648574 C 8.27558142 5.69523066 8.15431716 5.69238281 8.23632812 5.69238281 C 8.56703836 5.69238281 9.10333246 5.81936052 9.8138795 6.08542439 L 11.1645508 6.59118236 L 11.1645508 5.14892578 L 11.1645508 3.87597656 L 11.1645508 3.07965768 L 10.3884483 2.90136387 C 9.52406853 2.70279014 8.73593121 2.60205078 8.02148438 2.60205078 C 7.01081351 2.60205078 6.14909735 2.87110984 5.47554965 3.42697448 C 4.76046595 4.01711791 4.38964844 4.82767811 4.38964844 5.77734375 C 4.38964844 6.49239045 4.61205052 7.14196725 5.04920932 7.68841575 C 5.43639142 8.17239
 338 6.03437082 8.62885808 6.84888633 9.08727887 L 7.38545082 9.38538774 C 7.71699471 9.57330366 7.92926232 9.72631865 7.99164827 9.79813503 C 7.94460492 9.81851991 7.82252674 9.85302734 7.60253906 9.85302734 C 7.14294036 9.85302734 6.53493744 9.70437137 5.79174704 9.39341305 L 4.40576172 8.81350287 L 4.40576172 10.315918 L 4.40576172 11.6801758 L 4.40576172 12.4905083 L 5.19849793 12.6584609 C 5.52713094 12.7280865 5.52713094 12.7280865 5.57407851 12.738033 L 5.19849793 12.6584609 Z M 5.19849793 12.6584609&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 5.40576172 11.6801758 L 5.40576172 10.315918 C 6.26156027 10.6739927 6.99381206 10.8530273 7.60253906 10.8530273 C 8.02864796 10.8530273 8.36433797 10.758139 8.60961914 10.5683594 C 8.85490031 10.3785798 8.97753906 10.1207699 8.97753906 9.79492188 C 8.97753906 9.53710809 8.90055416 9.31958096 8.74658203 9.14233398 C 8.59260991 8.965087 8.3007834 8.75472127 7.87109375 8.51123047 L 7.33935547 8.21582031 C 6.6267868 7.81477664 6.12369938 7.43074728 5.83007812 7.0637207 C 5.53645687 6.69669413 5.38964844 6.2679061 5.38964844 5.77734375 C 5.38964844 5.12206704 5.63045007 4.59570511 6.11206055 4.19824219 C 6.59367103 3.80077926 7.23013927 3.60205078 8.02148438 3.60205078 C 8.65527661 3.60205078 9.36962493 3.69335846 10.1645508 3.87597656 L 10.1645508 5.14892578 C 9.3517212 4.84456228 8.70898674 4.69238281 8.23632812 4.69238281 C 7.87109192 4.69238281 7.57837024 4.77384359 7.3581543 4.93676758 C 7.13793835 5.09969157 7.02783203 5.313638
  7.02783203 5.57861328 C 7.02783203 5.79703885 7.10481694 5.98860595 7.25878906 6.15332031 C 7.41276119 6.31803468 7.70279735 6.52034385 8.12890625 6.76025391 L 8.69824219 7.07714844 C 9.46452206 7.50683809 9.99267433 7.9025047 10.2827148 8.26416016 C 10.5727554 8.62581561 10.7177734 9.06624089 10.7177734 9.58544922 C 10.7177734 10.3230831 10.4438504 10.9013651 9.89599609 11.3203125 C 9.34814179 11.7392599 8.59261549 11.9487305 7.62939453 11.9487305 C 6.99202155 11.9487305 6.25081803 11.8592131 5.40576172 11.6801758 C 5.40576172 11.6801758 6.25081803 11.8592131 5.40576172 11.6801758 L 5.40576172 11.6801758 L 5.40576172 11.6801758 Z M 5.40576172 11.6801758&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceImagesTypeUndefinedsvg"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Images/TypeUndefined.svg (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Images/TypeUndefined.svg                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Images/TypeUndefined.svg        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- Copyright © 2015 Apple Inc. All rights reserved. --&gt;
+&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 16 16&quot;&gt;
+    &lt;path fill=&quot;rgb(203, 203, 203)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 Z&quot;/&gt;
+    &lt;path fill=&quot;rgb(153, 153, 153)&quot; d=&quot;M 13 1 L 3 1 C 1.898438 1 1 1.898438 1 3 L 1 13 C 1 14.101562 1.898438 15 3 15 L 13 15 C 14.101562 15 15 14.101562 15 13 L 15 3 C 15 1.898438 14.101562 1 13 1 M 13 2 C 13.550781 2 14 2.449219 14 3 L 14 13 C 14 13.550781 13.550781 14 13 14 L 3 14 C 2.449219 14 2 13.550781 2 13 L 2 3 C 2 2.449219 2.449219 2 3 2 L 13 2&quot;/&gt;
+    &lt;path fill=&quot;rgb(166, 166, 166)&quot; d=&quot;M 6.796875 12.742188 C 6.242188 12.742188 5.796875 12.292969 5.796875 11.742188 L 5.796875 10.417969 C 5.796875 10.25 5.835938 10.09375 5.910156 9.953125 C 5.835938 9.816406 5.796875 9.660156 5.796875 9.492188 L 5.796875 9.339844 C 5.796875 8.511719 6.152344 7.699219 6.847656 6.925781 L 7.234375 6.503906 C 7.671875 6.019531 7.734375 5.757812 7.746094 5.671875 C 7.691406 5.660156 7.609375 5.652344 7.488281 5.652344 C 7.097656 5.652344 6.613281 5.78125 6.046875 6.039062 C 5.914062 6.101562 5.773438 6.128906 5.632812 6.128906 C 5.441406 6.128906 5.253906 6.078125 5.089844 5.972656 C 4.804688 5.785156 4.628906 5.472656 4.628906 5.128906 L 4.628906 3.917969 C 4.628906 3.476562 4.917969 3.089844 5.339844 2.960938 C 6.144531 2.71875 6.941406 2.59375 7.71875 2.59375 C 8.769531 2.59375 9.632812 2.816406 10.285156 3.25 C 11.058594 3.761719 11.46875 4.511719 11.46875 5.414062 C 11.46875 6.214844 11.066406 7 10.269531 7.753906 L 9
 .917969 8.09375 C 9.546875 8.441406 9.460938 8.601562 9.453125 8.621094 C 9.4375 8.652344 9.390625 8.765625 9.390625 9.035156 L 9.390625 9.492188 C 9.390625 9.660156 9.351562 9.816406 9.277344 9.953125 C 9.351562 10.09375 9.390625 10.25 9.390625 10.417969 L 9.390625 11.742188 C 9.390625 12.292969 8.945312 12.742188 8.390625 12.742188 L 6.796875 12.742188&quot;/&gt;
+    &lt;path fill=&quot;white&quot; d=&quot;M 6.796875 11.742188 L 6.796875 10.414062 L 8.390625 10.414062 L 8.390625 11.742188 Z M 8.390625 9.492188 L 6.796875 9.492188 L 6.796875 9.339844 C 6.796875 8.765625 7.0625 8.183594 7.589844 7.597656 L 7.972656 7.175781 C 8.488281 6.609375 8.746094 6.097656 8.746094 5.652344 C 8.746094 4.984375 8.328125 4.652344 7.488281 4.652344 C 6.949219 4.652344 6.328125 4.8125 5.632812 5.128906 L 5.632812 3.917969 C 6.34375 3.703125 7.039062 3.59375 7.71875 3.59375 C 8.570312 3.59375 9.238281 3.757812 9.730469 4.082031 C 10.222656 4.410156 10.46875 4.851562 10.46875 5.414062 C 10.46875 5.929688 10.175781 6.46875 9.585938 7.027344 L 9.222656 7.371094 C 8.886719 7.6875 8.664062 7.957031 8.554688 8.179688 C 8.445312 8.398438 8.390625 8.683594 8.390625 9.035156 Z&quot;/&gt;
+&lt;/svg&gt;
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceMainhtml"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Main.html (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Main.html        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Main.html        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -99,6 +99,7 @@
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/NetworkTimelineView.css&quot;&gt;
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/ObjectPreviewView.css&quot;&gt;
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/ObjectTreeView.css&quot;&gt;
</span><ins>+    &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/ObjectTreePropertyTreeElement.css&quot;&gt;
</ins><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/OverviewTimelineView.css&quot;&gt;
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/PathComponentIcons.css&quot;&gt;
</span><span class="cx">     &lt;link rel=&quot;stylesheet&quot; href=&quot;Views/Popover.css&quot;&gt;
</span><span class="lines">@@ -248,6 +249,7 @@
</span><span class="cx">     &lt;script src=&quot;Models/LayoutTimelineRecord.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/LazySourceCodeLocation.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/LogObject.js&quot;&gt;&lt;/script&gt;
</span><ins>+    &lt;script src=&quot;Models/NativeFunctionParameters.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;Models/NetworkTimeline.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/ObjectPreview.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/Probe.js&quot;&gt;&lt;/script&gt;
</span><span class="lines">@@ -258,6 +260,7 @@
</span><span class="cx">     &lt;script src=&quot;Models/ProfileNode.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/ProfileNodeCall.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/PropertyDescriptor.js&quot;&gt;&lt;/script&gt;
</span><ins>+    &lt;script src=&quot;Models/PropertyPath.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;Models/PropertyPreview.js&quot;&gt;&lt;/script&gt;    
</span><span class="cx">     &lt;script src=&quot;Models/ReplayDashboard.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script src=&quot;Models/ReplaySession.js&quot;&gt;&lt;/script&gt;
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsNativeFunctionParametersjs"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,450 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// FIXME: Provide Parameter lists for the constructors themselves? (new RegExp(...)).
+// FIXME: Provide Parameter lists for global functions (eval, decodeURI, ...).
+
+WebInspector.NativeConstructorFunctionParameters = {
+    Object: {
+        create: &quot;prototype, [propertiesObject]&quot;,
+        defineProperty: &quot;object, propertyName, descriptor&quot;,
+        defineProperties: &quot;object, properties&quot;,
+        freeze: &quot;object&quot;,
+        getOwnPropertyDescriptor: &quot;object, propertyName&quot;,
+        getOwnPropertyNames: &quot;object&quot;,
+        getPrototypeOf: &quot;object&quot;,
+        isExtensible: &quot;object&quot;,
+        isFrozen: &quot;object&quot;,
+        isSealed: &quot;object&quot;,
+        keys: &quot;object&quot;,
+        preventExtensions: &quot;object&quot;,
+        seal: &quot;object&quot;,
+        __proto__: null,
+    },
+
+    Array: {
+        from: &quot;arrayLike, [mapFunction], [thisArg]&quot;,
+        isArray: &quot;object&quot;,
+        of: &quot;[...values]&quot;,
+        __proto__: null,
+    },
+
+    ArrayBuffer: {
+        isView: &quot;object&quot;,
+        transfer: &quot;oldBuffer, [newByteLength=length]&quot;,
+        __proto__: null,
+    },
+
+    Number: {
+        isFinite: &quot;value&quot;,
+        isInteger: &quot;value&quot;,
+        isNaN: &quot;value&quot;,
+        isSafeInteger: &quot;value&quot;,
+        parseFloat: &quot;string&quot;,
+        parseInt: &quot;string, [radix]&quot;,
+        __proto__: null,
+    },
+
+    Math: {
+        abs: &quot;x&quot;,
+        acos: &quot;x&quot;,
+        acosh: &quot;x&quot;,
+        asin: &quot;x&quot;,
+        asinh: &quot;x&quot;,
+        atan: &quot;x&quot;,
+        atan2: &quot;y, x&quot;,
+        atanh: &quot;x&quot;,
+        cbrt: &quot;x&quot;,
+        ceil: &quot;x&quot;,
+        cos: &quot;x&quot;,
+        cosh: &quot;x&quot;,
+        exp: &quot;x&quot;,
+        expm1: &quot;x&quot;,
+        floor: &quot;x&quot;,
+        fround: &quot;x&quot;,
+        hypot: &quot;[...x]&quot;,
+        imul: &quot;x&quot;,
+        log: &quot;x&quot;,
+        log1p: &quot;x&quot;,
+        log2: &quot;x&quot;,
+        log10: &quot;x&quot;,
+        max: &quot;[...x]&quot;,
+        min: &quot;[...x]&quot;,
+        pow: &quot;x, y&quot;,
+        round: &quot;x&quot;,
+        sin: &quot;x&quot;,
+        sinh: &quot;x&quot;,
+        sqrt: &quot;x&quot;,
+        tan: &quot;x&quot;,
+        tanh: &quot;x&quot;,
+        trunc: &quot;x&quot;,
+        __proto__: null,
+    },
+
+    JSON: {
+        parse: &quot;text, [reviver]&quot;,
+        stringify: &quot;value, [replacer], [space]&quot;,
+        __proto__: null,
+    },
+
+    Date: {
+        parse: &quot;dateString&quot;,
+        UTC: &quot;year, [month], [day], [hour], [minute], [second], [ms]&quot;,
+        __proto__: null,
+    },
+
+    Promise: {
+        all: &quot;iterable&quot;,
+        race: &quot;iterable&quot;,
+        reject: &quot;reason&quot;,
+        resolve: &quot;value&quot;,
+        __proto__: null,
+    },
+
+    String: {
+        fromCharCode: &quot;code, [...codes]&quot;,
+        __proto__: null,
+    },
+
+    Symbol: {
+        for: &quot;key&quot;,
+        keyFor: &quot;symbol&quot;,
+        __proto__: null,
+    },
+};
+
+WebInspector.NativePrototypeFunctionParameters = {
+
+    // Built-in JavaScript objects.
+    // FIXME: TypedArrays (Int8Array, etc),
+
+    Object: {
+        __defineGetter__: &quot;propertyName, getterFunction&quot;,
+        __defineSetter__: &quot;propertyName, setterFunction&quot;,
+        __lookupGetter__: &quot;propertyName&quot;,
+        __lookupSetter__: &quot;propertyName&quot;,
+        hasOwnProperty: &quot;propertyName&quot;,
+        isPrototypeOf: &quot;property&quot;,
+        propertyIsEnumerable: &quot;propertyName&quot;,
+        __proto__: null,
+    },
+
+    Array: {
+        concat: &quot;value, ...&quot;,
+        every: &quot;callback, [thisArg]&quot;,
+        fill: &quot;value, [startIndex=0], [endIndex=length]&quot;,
+        filter: &quot;callback, [thisArg]&quot;,
+        find: &quot;callback, [thisArg]&quot;,
+        findIndex: &quot;callback, [thisArg]&quot;,
+        forEach: &quot;callback, [thisArg]&quot;,
+        indexOf: &quot;searchValue, [startIndex=0]&quot;,
+        join: &quot;[separator=\&quot;,\&quot;]&quot;,
+        lastIndexOf: &quot;searchValue, [startIndex=length]&quot;,
+        map: &quot;callback, [thisArg]&quot;,
+        push: &quot;value, ...&quot;,
+        reduce: &quot;callback, [initialValue]&quot;,
+        reduceRight: &quot;callback, [initialValue]&quot;,
+        slice: &quot;[startIndex=0], [endIndex=length]&quot;,
+        some: &quot;callback, [thisArg]&quot;,
+        sort: &quot;[compareFunction]&quot;,
+        splice: &quot;startIndex, [deleteCount=0], ...itemsToAdd&quot;,
+        __proto__: null,
+    },
+
+    ArrayBuffer: {
+        slice: &quot;startIndex, [endIndex=byteLength]&quot;,
+        __proto__: null,
+    },
+
+    DataView: {
+        setInt8: &quot;byteOffset, value&quot;,
+        setInt16: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        setInt23: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        setUint8: &quot;byteOffset, value&quot;,
+        setUint16: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        setUint32: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        setFloat32: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        setFloat64: &quot;byteOffset, value, [littleEndian=false]&quot;,
+        getInt8: &quot;byteOffset&quot;,
+        getInt16: &quot;byteOffset, [littleEndian=false]&quot;,
+        getInt23: &quot;byteOffset, [littleEndian=false]&quot;,
+        getUint8: &quot;byteOffset&quot;,
+        getUint16: &quot;byteOffset, [littleEndian=false]&quot;,
+        getUint32: &quot;byteOffset, [littleEndian=false]&quot;,
+        getFloat32: &quot;byteOffset, [littleEndian=false]&quot;,
+        getFloat64: &quot;byteOffset, [littleEndian=false]&quot;,
+        __proto__: null,
+    },
+
+    Date: {
+        setDate: &quot;day&quot;,
+        setFullYear: &quot;year, [month=getMonth()], [day=getDate()]&quot;,
+        setHours: &quot;hours, [minutes=getMinutes()], [seconds=getSeconds()], [ms=getMilliseconds()]&quot;,
+        setMilliseconds: &quot;ms&quot;,
+        setMinutes: &quot;minutes, [seconds=getSeconds()], [ms=getMilliseconds()]&quot;,
+        setMonth: &quot;month, [day=getDate()]&quot;,
+        setSeconds: &quot;seconds, [ms=getMilliseconds()]&quot;,
+        setTime: &quot;time&quot;,
+        setUTCDate: &quot;day&quot;,
+        setUTCFullYear: &quot;year, [month=getUTCMonth()], [day=getUTCDate()]&quot;,
+        setUTCHours: &quot;hours, [minutes=getUTCMinutes()], [seconds=getUTCSeconds()], [ms=getUTCMilliseconds()]&quot;,
+        setUTCMilliseconds: &quot;ms&quot;,
+        setUTCMinutes: &quot;minutes, [seconds=getUTCSeconds()], [ms=getUTCMilliseconds()]&quot;,
+        setUTCMonth: &quot;month, [day=getUTCDate()]&quot;,
+        setUTCSeconds: &quot;seconds, [ms=getUTCMilliseconds()]&quot;,
+        setUTCTime: &quot;time&quot;,
+        setYear: &quot;year&quot;,
+        __proto__: null,
+    },
+
+    Function: {
+        apply: &quot;thisObject, [argumentsArray]&quot;,
+        bind: &quot;thisObject, ...arguments&quot;,
+        call: &quot;thisObject, ...arguments&quot;,
+        __proto__: null,
+    },
+
+    Map: {
+        delete: &quot;key&quot;,
+        forEach: &quot;callback, [thisArg]&quot;,
+        get: &quot;key&quot;,
+        has: &quot;key&quot;,
+        set: &quot;key, value&quot;,
+        __proto__: null,
+    },
+
+    Number: {
+        toExponential: &quot;[digits]&quot;,
+        toFixed: &quot;[digits]&quot;,
+        toPrecision: &quot;[significantDigits]&quot;,
+        toString: &quot;[radix=10]&quot;,
+        __proto__: null,
+    },
+
+    RegExp: {
+        compile: &quot;pattern, flags&quot;,
+        exec: &quot;string&quot;,
+        test: &quot;string&quot;,
+        __proto__: null,
+    },
+
+    Set: {
+        delete: &quot;value&quot;,
+        forEach: &quot;callback, [thisArg]&quot;,
+        has: &quot;value&quot;,
+        add: &quot;value&quot;,
+        __proto__: null,
+    },
+
+    String: {
+        charAt: &quot;index&quot;,
+        charCodeAt: &quot;index&quot;,
+        concat: &quot;string, ...&quot;,
+        indexOf: &quot;searchValue, [startIndex=0]&quot;,
+        lastIndexOf: &quot;searchValue, [startIndex=length]&quot;,
+        localeCompare: &quot;string&quot;,
+        match: &quot;regex&quot;,
+        replace: &quot;regex|string, replaceString|replaceHandler, [flags]&quot;,
+        search: &quot;regex&quot;,
+        slice: &quot;startIndex, [endIndex=length]&quot;,
+        split: &quot;[separator], [limit]&quot;,
+        substr: &quot;startIndex, [numberOfCharacters]&quot;,
+        substring: &quot;startIndex, [endIndex=length]&quot;,
+        __proto__: null,
+    },
+
+    Promise: {
+        catch: &quot;rejectionHandler&quot;,
+        then: &quot;resolvedHandler, rejectionHandler&quot;,
+        __proto__: null,
+    },
+
+    // DOM objects.
+    // FIXME: Many idls. Generate?
+
+    HTMLElement: {
+        insertAdjacentElement: &quot;position, [element]&quot;,
+        insertAdjacentHTML: &quot;position, [html]&quot;,
+        insertAdjacentText: &quot;position, [text]&quot;,
+        __proto__: null,
+    },
+    
+    Element: {
+        closest: &quot;selectors&quot;,
+        getAttribute: &quot;attributeName&quot;,
+        getAttributeNS: &quot;namespace, attributeName&quot;,
+        getAttributeNode: &quot;attributeName&quot;,
+        getAttributeNodeNS: &quot;namespace, attributeName&quot;,
+        getElementsByClassName: &quot;names&quot;,
+        getElementsByTagName: &quot;tagName&quot;,
+        getElementsByTagNameNS: &quot;namespace, localName&quot;,
+        hasAttribute: &quot;attributeName&quot;,
+        hasAttributeNS: &quot;namespace, attributeName&quot;,
+        matches: &quot;selector&quot;,
+        removeAttribute: &quot;attributeName&quot;,
+        removeAttributeNS: &quot;namespace, attributeName&quot;,
+        removeAttributeNode: &quot;attributeName&quot;,
+        scrollIntoView: &quot;[alignWithTop]&quot;,
+        scrollIntoViewIfNeeded: &quot;[centerIfNeeded]&quot;,
+        scrollByLines: &quot;[lines]&quot;,
+        scrollByPages: &quot;[pages]&quot;,
+        setAttribute: &quot;name, value&quot;,
+        setAttributeNS: &quot;namespace, name, value&quot;,
+        setAttributeNode: &quot;attributeNode&quot;,
+        setAttributeNodeNS: &quot;namespace, attributeNode&quot;,
+        webkitMatchesSelector: &quot;selectors&quot;,
+        __proto__: null,
+    },
+
+    Node: {
+        appendChild: &quot;child&quot;,
+        cloneNode: &quot;deep&quot;,
+        compareDocumentPosition: &quot;node&quot;,
+        contains: &quot;node&quot;,
+        insertBefore: &quot;insertElement, referenceElement&quot;,
+        isDefaultNamespace: &quot;namespace&quot;,
+        isEqualNode: &quot;node&quot;,
+        lookupNamespaceURI: &quot;prefix&quot;,
+        removeChild: &quot;node&quot;,
+        replaceChild: &quot;newChild, oldChild&quot;,
+        __proto__: null,
+    },
+
+    Window: {
+        alert: &quot;message&quot;,
+        atob: &quot;encodedData&quot;,
+        btoa: &quot;stringToEncode&quot;,
+        clearTimeout: &quot;timeoutId&quot;,
+        confirm: &quot;message&quot;,
+        find: &quot;string, [caseSensitive], [backwards], [wrapAround]&quot;,
+        getComputedStyle: &quot;element, [pseudoElement]&quot;,
+        matchMedia: &quot;mediaQueryString&quot;,
+        moveBy: &quot;deltaX, deltaY&quot;,
+        moveTo: &quot;screenX, screenY&quot;,
+        open: &quot;url, windowName, [featuresString]&quot;,
+        postMessage: &quot;message, targetOrigin, [...transferables]&quot;,
+        prompt: &quot;text, [value]&quot;,
+        resizeBy: &quot;deltaX, deltaY&quot;,
+        resizeTo: &quot;width, height&quot;,
+        scrollBy: &quot;deltaX, deltaY&quot;,
+        scrollTo: &quot;x, y&quot;,
+        setInterval: &quot;func, [delay], [...params]&quot;,
+        setTimeout: &quot;func, [delay], [...params]&quot;,
+        showModalDialog: &quot;url, [arguments], [options]&quot;,
+        __proto__: null,
+    },
+
+    Event: {
+        initEvent: &quot;type, bubbles, cancelable&quot;,
+        __proto__: null,
+    },
+
+    HTMLDocument: {
+        write: &quot;html&quot;,
+        writeln: &quot;html&quot;,
+        __proto__: null,
+    },
+
+    Document: {
+        adoptNode: &quot;node&quot;,
+        caretPositionFromPoint: &quot;x, y&quot;,
+        createAttribute: &quot;attributeName&quot;,
+        createCDATASection: &quot;data&quot;,
+        createComment: &quot;data&quot;,
+        createElement: &quot;tagName&quot;,
+        createElementNS: &quot;namespace, qualifiedName&quot;,
+        createEvent: &quot;type&quot;,
+        createExpression: &quot;xpath, namespaceURLMapper&quot;,
+        createNSResolver: &quot;node&quot;,
+        createNodeIterator: &quot;root, whatToShow, filter&quot;,
+        createProcessingInstruction: &quot;target, data&quot;,
+        createTextNode: &quot;data&quot;,
+        createTreeWalker: &quot;root, whatToShow, filter, entityReferenceExpansion&quot;,
+        elementFromPoint: &quot;x, y&quot;,
+        evaluate: &quot;xpath, contextNode, namespaceResolver, resultType, result&quot;,
+        execCommand: &quot;command, userInterface, value&quot;,
+        getElementById: &quot;id&quot;,
+        getElementsByName: &quot;name&quot;,
+        importNode: &quot;node, deep&quot;,
+        __proto__: null,
+    },
+
+    Geolocation: {
+        clearWatch: &quot;watchId&quot;,
+        getCurrentPosition: &quot;successHandler, [errorHandler], [options]&quot;,
+        watchPosition: &quot;successHandler, [errorHandler], [options]&quot;,
+        __proto__: null,
+    },
+
+    Storage: {
+        getItem: &quot;key&quot;,
+        key: &quot;index&quot;,
+        removeItem: &quot;key&quot;,
+        __proto__: null,
+    },
+
+    Location: {
+        assign: &quot;url&quot;,
+        reload: &quot;[force=false]&quot;,
+        replace: &quot;url&quot;,
+        __proto__: null,
+    },
+
+    History: {
+        go: &quot;distance&quot;,
+        pushState: &quot;data, title, url&quot;,
+        replaceState: &quot;data, title, url&quot;,
+        __proto__: null,
+    },
+};
+
+WebInspector.NativePrototypeFunctionParameters.WeakMap = WebInspector.NativePrototypeFunctionParameters.Map;
+
+(function() {
+    function mixin(o, mixin) {
+        for (var p in mixin)
+            o[p] = mixin[p];
+    }
+
+    var EventTarget = {
+        addEventListener: &quot;type, listener, [useCapture=false]&quot;,
+        removeEventListener: &quot;type, listener, [useCapture=false]&quot;,
+        dispatchEvent: &quot;event&quot;,
+    };
+
+    mixin(WebInspector.NativePrototypeFunctionParameters.Node, EventTarget);
+    mixin(WebInspector.NativePrototypeFunctionParameters.Window, EventTarget);
+
+    var ElementQueries = {
+        getElementsByClassName: &quot;names&quot;,
+        getElementsByTagName: &quot;tagName&quot;,
+        getElementsByTagNameNS: &quot;namespace, localName&quot;,
+        querySelector: &quot;selectors&quot;,
+        querySelectorAll: &quot;selectors&quot;,
+    };
+
+    mixin(WebInspector.NativePrototypeFunctionParameters.Element, ElementQueries);
+    mixin(WebInspector.NativePrototypeFunctionParameters.Document, ElementQueries);
+})();
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceModelsPropertyPathjs"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Models/PropertyPath.js (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Models/PropertyPath.js                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/PropertyPath.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,181 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.PropertyPath = function(object, pathComponent, parent, isPrototype)
+{
+    WebInspector.Object.call(this);
+
+    console.assert(object instanceof WebInspector.RemoteObject || object === null);
+    console.assert(!pathComponent || typeof pathComponent === &quot;string&quot;);
+    console.assert(!parent || parent instanceof WebInspector.PropertyPath);
+    console.assert(!parent || pathComponent.length);
+
+    // We allow property pathes with null objects as end-caps only.
+    // Disallow appending to a PropertyPath with null objects.
+    if (parent &amp;&amp; !parent.object)
+        throw new Error(&quot;Attempted to append to a PropertyPath with null object.&quot;);
+
+    this._object = object;
+    this._pathComponent = pathComponent || null;
+    this._parent = parent || null;
+    this._isPrototype = isPrototype || false;
+};
+
+WebInspector.PropertyPath.SpecialPathComponent = {
+    CollectionIndex: &quot;@collection[?]&quot;,
+    InternalPropertyName: &quot;@internal&quot;,
+    SymbolPropertyName: &quot;@symbol&quot;,
+    GetterPropertyName: &quot;@getter&quot;,
+};
+
+WebInspector.PropertyPath.prototype = {
+    constructor: WebInspector.PropertyPath,
+    __proto__: WebInspector.Object.prototype,
+
+    // Public
+
+    get object()
+    {
+        return this._object;
+    },
+
+    get parent()
+    {
+        return this._parent;
+    },
+
+    get isPrototype()
+    {
+        return this._isPrototype;
+    },
+
+    get rootObject()
+    {
+        return this._parent ? this._parent.rootObject : this._object;
+    },
+
+    get lastNonPrototypeObject()
+    {
+        if (!this._parent)
+            return this._object;
+
+        var p = this._parent;
+        while (p) {
+            if (!p.isPrototype)
+                break;
+            if (!p.parent)
+                break;
+            p = p.parent;
+        }
+
+        return p.object;
+    },
+
+    get pathComponent()
+    {
+        return this._pathComponent;
+    },
+
+    get fullPath()
+    {
+        var components = [];
+        for (var p = this; p &amp;&amp; p.pathComponent; p = p.parent)
+            components.push(p.pathComponent);
+        components.reverse()
+        return components.join(&quot;&quot;);
+    },
+
+    isRoot: function()
+    {
+        return !this._parent;
+    },
+
+    isPathComponentImpossible: function()
+    {
+        return this._pathComponent &amp;&amp; this._pathComponent.startsWith(&quot;@&quot;);
+    },
+
+    isFullPathImpossible: function()
+    {
+        if (this.isPathComponentImpossible())
+            return true;
+
+        if (this._parent)
+            return this._parent.isFullPathImpossible();
+
+        return false;
+    },
+
+    appendPropertyName: function(object, propertyName)
+    {
+        var isPrototype = propertyName === &quot;__proto__&quot;;
+        var component = this._canPropertyNameBeDotAccess(propertyName) ? &quot;.&quot; + propertyName : &quot;[\&quot;&quot; + propertyName.replace(/&quot;/, &quot;\\\&quot;&quot;) + &quot;\&quot;]&quot;;
+        return new WebInspector.PropertyPath(object, component, this, isPrototype);
+    },
+
+    appendPropertySymbol: function(object, symbolName)
+    {
+        var component = WebInspector.PropertyPath.SpecialPathComponent.SymbolPropertyName + (symbolName.length ? &quot;(&quot; + symbolName + &quot;)&quot; : &quot;&quot;);
+        return new WebInspector.PropertyPath(object, component, this);
+    },
+
+    appendInternalPropertyName: function(object, propertyName)
+    {
+        var component = WebInspector.PropertyPath.SpecialPathComponent.InternalPropertyName + &quot;[&quot; + propertyName + &quot;]&quot;;
+        return new WebInspector.PropertyPath(object, component, this);
+    },
+
+    appendArrayIndex: function(object, indexString)
+    {
+        var component = &quot;[&quot; + indexString + &quot;]&quot;;
+        return new WebInspector.PropertyPath(object, component, this);
+    },
+
+    appendCollectionIndex: function(object)
+    {
+        var component = WebInspector.PropertyPath.SpecialPathComponent.CollectionIndex;
+        return new WebInspector.PropertyPath(object, component, this);
+    },
+
+    appendPropertyDescriptor: function(object, descriptor)
+    {
+        if (descriptor.isInternalProperty)
+            return this.appendInternalPropertyName(object, descriptor.name);
+
+        // FIXME: We don't yet have Symbol descriptors.
+
+        if (this._object.subtype === &quot;array&quot; &amp;&amp; !isNaN(parseInt(descriptor.name)))
+            return this.appendArrayIndex(object, descriptor.name);
+
+        return this.appendPropertyName(object, descriptor.name)
+    },
+
+    // Private
+
+    _canPropertyNameBeDotAccess: function(propertyName)
+    {
+        return /^(?![0-9])\w+$/.test(propertyName);
+    }
+};
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceProtocolRemoteObjectjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -384,14 +384,26 @@
</span><span class="cx">             callback(0);
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    callFunction: function(functionDeclaration, args, callback)
</del><ins>+    callFunction: function(functionDeclaration, args, generatePreview, callback)
</ins><span class="cx">     {
</span><span class="cx">         function mycallback(error, result, wasThrown)
</span><span class="cx">         {
</span><del>-            callback((error || wasThrown) ? null : WebInspector.RemoteObject.fromPayload(result));
</del><ins>+            result = result ? WebInspector.RemoteObject.fromPayload(result) : null;
+            callback(error, result, wasThrown);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString(), args, true, undefined, true, mycallback);
</del><ins>+        if (args) {
+            args = args.map(function(arg) {
+                if (arg instanceof WebInspector.RemoteObject) {
+                    if (arg.objectId)
+                        return {objectId: arg.objectId};
+                    return {value: arg.value};
+                }
+                return {value: arg};
+            });
+        }
+
+        RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString(), args, true, undefined, generatePreview, mycallback);
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     callFunctionJSON: function(functionDeclaration, args, callback)
</span><span class="lines">@@ -403,7 +415,19 @@
</span><span class="cx"> 
</span><span class="cx">         RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString(), args, true, true, mycallback);
</span><span class="cx">     },
</span><ins>+    
+    invokeGetter: function(getterRemoteObject, callback)
+    {
+        console.assert(getterRemoteObject instanceof WebInspector.RemoteObject);
</ins><span class="cx"> 
</span><ins>+        function backendInvokeGetter(getter)
+        {
+            return getter ? getter.call(this) : undefined;
+        }
+
+        this.callFunction(backendInvokeGetter, [getterRemoteObject], true, callback);
+    },
+
</ins><span class="cx">     release: function()
</span><span class="cx">     {
</span><span class="cx">         RuntimeAgent.releaseObject(this._objectId);
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMNodeDetailsSidebarPaneljs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMNodeDetailsSidebarPanel.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -162,13 +162,13 @@
</span><span class="cx">                 return result;
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            object.callFunction(collectPrototypes, undefined, nodePrototypesReady.bind(this));
</del><ins>+            object.callFunction(collectPrototypes, undefined, false, nodePrototypesReady.bind(this));
</ins><span class="cx">             object.release();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        function nodePrototypesReady(object)
</del><ins>+        function nodePrototypesReady(error, object, wasThrown)
</ins><span class="cx">         {
</span><del>-            if (!object)
</del><ins>+            if (error || wasThrown || !object)
</ins><span class="cx">                 return;
</span><span class="cx"> 
</span><span class="cx">             // Bail if the DOM node changed while we were waiting for the async response.
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsDOMTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -222,9 +222,9 @@
</span><span class="cx">         if (!node.nodeName() || node.nodeName().toLowerCase() !== &quot;img&quot;)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        function setTooltip(result)
</del><ins>+        function setTooltip(error, result, wasThrown)
</ins><span class="cx">         {
</span><del>-            if (!result || result.type !== &quot;string&quot;)
</del><ins>+            if (error || wasThrown || !result || result.type !== &quot;string&quot;)
</ins><span class="cx">                 return;
</span><span class="cx"> 
</span><span class="cx">             try {
</span><span class="lines">@@ -252,7 +252,7 @@
</span><span class="cx">                 return &quot;[&quot; + this.offsetWidth + &quot;,&quot; + this.offsetHeight + &quot;,&quot; + this.naturalWidth + &quot;,&quot; + this.naturalHeight + &quot;]&quot;;
</span><span class="cx">             }
</span><span class="cx"> 
</span><del>-            object.callFunction(dimensions, undefined, setTooltip.bind(this));
</del><ins>+            object.callFunction(dimensions, undefined, false, setTooltip.bind(this));
</ins><span class="cx">             object.release();
</span><span class="cx">         }
</span><span class="cx">         WebInspector.RemoteObject.resolveNode(node, &quot;&quot;, resolvedNode.bind(this));
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsFormattedValuecss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.css        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx">     color: rgb(28, 0, 207);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+.formatted-boolean {
+    color: rgb(170, 13, 145);
+}
+
</ins><span class="cx"> .formatted-string, .formatted-regexp {
</span><span class="cx">     white-space: pre;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsFormattedValuejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/FormattedValue.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -62,12 +62,9 @@
</span><span class="cx">         return span;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Function: ellided in previews, collapsed whitespace normally.
</del><ins>+    // Function: ellided in previews.
</ins><span class="cx">     if (type === &quot;function&quot;) {
</span><del>-        if (isPreview)
-            span.textContent = &quot;function&quot;;
-        else
-            span.textContent = /.*/.exec(displayString)[0].replace(/ +$/g, &quot;&quot;);
</del><ins>+        span.textContent = isPreview ? &quot;function&quot; : displayString;
</ins><span class="cx">         return span;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreePropertyTreeElementcss"></a>
<div class="addfile"><h4>Added: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.css (0 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.css                                (rev 0)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.css        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -0,0 +1,179 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+.object-tree-property {
+    margin-top: 1px;
+}
+
+.object-tree-property &gt; .disclosure-button {
+    float: left;
+
+    width: 16px;
+    height: 16px;
+
+    border: 0;
+    background: none;
+    -webkit-appearance: none;
+}
+
+.object-tree-property.parent &gt; .disclosure-button {
+    background-color: transparent;
+    background-image: -webkit-canvas(navigation-sidebar-panel-disclosure-triangle-closed-normal);
+    background-repeat: no-repeat;
+    background-position: center;
+    background-size: 13px 13px;
+}
+
+.object-tree-property.parent.expanded &gt; .disclosure-button {
+    background-image: -webkit-canvas(navigation-sidebar-panel-disclosure-triangle-open-normal);
+}
+
+.object-tree-property &gt; .icon {
+    float: left;
+    position: relative;
+
+    width: 16px;
+    height: 16px;
+
+    margin-right: 3px;
+}
+
+.object-tree-property.boolean &gt; .icon {
+    content: url(../Images/TypeBoolean.svg);
+}
+
+.object-tree-property.function &gt; .icon {
+    content: url(../Images/Function.svg);
+}
+
+.object-tree-property.number &gt; .icon {
+    content: url(../Images/TypeNumber.svg);
+}
+
+.object-tree-property.object &gt; .icon {
+    content: url(../Images/TypeObject.svg);
+}
+
+.object-tree-property.object.null &gt; .icon {
+    content: url(../Images/TypeNull.svg);
+}
+
+.object-tree-property.object.node &gt; .icon {
+    content: url(../Images/DOMElement.svg);
+}
+
+.object-tree-property.regex &gt; .icon {
+    content: url(../Images/TypeRegex.svg);
+}
+
+.object-tree-property.string &gt; .icon {
+    content: url(../Images/TypeString.svg);
+}
+
+.object-tree-property.symbol &gt; .icon {
+    content: url(../Images/TypeSymbol.svg);
+}
+
+.object-tree-property.accessor &gt; .icon,
+.object-tree-property.undefined &gt; .icon {
+    content: url(../Images/TypeUndefined.svg);
+}
+
+.object-tree-property.had-error &gt; .icon {
+    content: url(../Images/TypeUndefined.svg) !important;
+}
+
+.object-tree-property .property-name,
+.object-tree-property .function-parameters,
+.object-tree-property .prototype-name {
+    font-family: sans-serif;
+    font-size: 12px;
+}
+
+.object-tree-property .property-name.not-enumerable {
+    opacity: 0.6;
+}
+
+.object-tree-property.prototype-property {
+    display: inline-block;
+
+    border: 1px solid rgb(222, 222, 222);
+    background-color: rgb(242, 242, 242);
+    border-radius: 3px;
+
+    padding: 0 10px 1px 0;
+    margin: 3px 0 2px 0;
+}
+
+.object-tree-property.prototype-property &gt; .icon {
+    display: none;
+}
+
+.object-tree-property.prototype-property + ol {
+    -webkit-padding-start: 0px;
+}
+
+.object-tree-property .getter {
+    position: relative;
+    top: 1px;
+
+    content: url(../Images/Eye.svg);
+    opacity: 0.6;
+
+    width: 16px;
+    height: 11px;
+    margin-left: 3px;
+}
+
+.object-tree-property .getter:hover {
+    opacity: 1;
+}
+
+.object-tree-property .read-only {
+    content: url(../Images/Locked.svg);
+    opacity: 0.5;
+
+    width: 8px;
+    height: 10px;
+    margin-left: 3px;
+}
+
+.object-tree-property :matches(.formatted-string, .formatted-regexp) {
+    white-space: nowrap;
+}
+
+.object-tree-property .value.error {
+    color: red;
+}
+
+.object-tree-property &gt; .titles {
+    position: relative;
+    top: 2px;
+    line-height: normal;
+    padding-bottom: 1px;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    white-space: nowrap;
+}
</ins></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreePropertyTreeElementjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreePropertyTreeElement.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -23,24 +23,44 @@
</span><span class="cx">  * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-WebInspector.ObjectTreePropertyTreeElement = function(property, mode)
</del><ins>+WebInspector.ObjectTreePropertyTreeElement = function(property, propertyPath, mode, prototypeName)
</ins><span class="cx"> {
</span><span class="cx">     console.assert(property instanceof WebInspector.PropertyDescriptor);
</span><ins>+    console.assert(propertyPath instanceof WebInspector.PropertyPath);
</ins><span class="cx"> 
</span><span class="cx">     this._property = property;
</span><span class="cx">     this._mode = mode || WebInspector.ObjectTreeView.Mode.Properties;
</span><ins>+    this._propertyPath = propertyPath;
+    this._prototypeName = prototypeName;
</ins><span class="cx"> 
</span><del>-    // FIXME: API Mode not turned on yet.
-    this._mode = WebInspector.ObjectTreeView.Mode.Properties;
</del><ins>+    var classNames = [&quot;object-tree-property&quot;];
</ins><span class="cx"> 
</span><del>-    TreeElement.call(this, &quot;&quot;, null, false);
</del><ins>+    if (this._property.hasValue()) {
+        classNames.push(this._property.value.type);
+        if (this._property.value.subtype)
+            classNames.push(this._property.value.subtype);
+    } else
+        classNames.push(&quot;accessor&quot;);
+
+    if (this._property.wasThrown)
+        classNames.push(&quot;had-error&quot;);
+
+    if (this._property.name === &quot;__proto__&quot;)
+        classNames.push(&quot;prototype-property&quot;);
+
+    WebInspector.GeneralTreeElement.call(this, classNames, this._titleFragment(), null, this._property, false);
+    this._updateTooltips();
+    this._updateHasChildren();
+
+    this.small = true;
</ins><span class="cx">     this.toggleOnClick = true;
</span><span class="cx">     this.selectable = false;
</span><ins>+    this.tooltipHandledSeparately = true;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> WebInspector.ObjectTreePropertyTreeElement.prototype = {
</span><span class="cx">     constructor: WebInspector.ObjectTreePropertyTreeElement,
</span><del>-    __proto__: TreeElement.prototype,
</del><ins>+    __proto__: WebInspector.GeneralTreeElement.prototype,
</ins><span class="cx"> 
</span><span class="cx">     // Public
</span><span class="cx"> 
</span><span class="lines">@@ -56,34 +76,123 @@
</span><span class="cx">         this._updateChildren();
</span><span class="cx">     },
</span><span class="cx"> 
</span><del>-    onattach: function()
</del><ins>+    onexpand: function()
</ins><span class="cx">     {
</span><del>-        this.listItemElement.classList.add(&quot;object-tree-property&quot;);
</del><ins>+        if (this._previewView)
+            this._previewView.showTitle();
+    },
</ins><span class="cx"> 
</span><del>-        this._updateTitle();
</del><ins>+    oncollapse: function()
+    {
+        if (this._previewView)
+            this._previewView.showPreview();
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     // Private
</span><span class="cx"> 
</span><del>-    _updateTitle: function()
</del><ins>+    _resolvedValue: function()
</ins><span class="cx">     {
</span><del>-        this.listItemElement.removeChildren();
</del><ins>+        if (this._getterValue)
+            return this._getterValue;
</ins><span class="cx"> 
</span><del>-        if (this._mode === WebInspector.ObjectTreeView.Mode.Properties) {
-            this._updateTitlePropertyStyle();
-            this.hasChildren = this._property.hasValue() &amp;&amp; this._property.value.hasChildren &amp;&amp; !this._property.wasThrown;
-        } else {
-            this._updateTitleAPIStyle();
-            this.hasChildren = this._property.hasValue() &amp;&amp; this._property.value.hasChildren &amp;&amp; !this._property.wasThrown &amp;&amp; this._property.name === &quot;__proto__&quot;;
</del><ins>+        if (this._property.hasValue())
+            return this._property.value;
+
+        return null;
+    },
+
+    _resolvedValuePropertyPath: function()
+    {
+        // FIXME: We could make a better path here.
+        // If this getter was not overridden, then &lt;this._propertyPath.lastNonPrototypeObject&gt;[&lt;this._property.name&gt;] is a valid path.
+        // However, we cannot easily determine from here if this getter was overridden or not.
+        if (this._getterValue)
+            return new WebInspector.PropertyPath(this._getterValue, WebInspector.PropertyPath.SpecialPathComponent.GetterPropertyName);
+
+        if (this._property.hasValue())
+            return this._propertyPath.appendPropertyDescriptor(this._property.value, this._property);
+
+        return null;
+    },
+
+    _thisPropertyPath: function()
+    {
+        return this._propertyPath.appendPropertyDescriptor(null, this._property);
+    },
+
+    _updateHasChildren: function()
+    {
+        var resolvedValue = this._resolvedValue();
+        var valueHasChildren = (resolvedValue &amp;&amp; resolvedValue.hasChildren);
+        var wasThrown = this._property.wasThrown || this._getterHadError;
+
+        if (this._mode === WebInspector.ObjectTreeView.Mode.Properties)
+            this.hasChildren = !wasThrown &amp;&amp; valueHasChildren;
+        else
+            this.hasChildren = !wasThrown &amp;&amp; valueHasChildren &amp;&amp; (this._property.name === &quot;__proto__&quot; || this._alwaysDisplayAsProperty());
+    },
+
+    _updateTooltips: function()
+    {
+        var attributes = [];
+
+        if (this._property.configurable)
+            attributes.push(&quot;configurable&quot;);
+        if (this._property.enumerable)
+            attributes.push(&quot;enumerable&quot;);
+        if (this._property.writable)
+            attributes.push(&quot;writable&quot;);
+
+        this.iconElement.title = attributes.join(&quot; &quot;);
+    },
+
+    _updateTitleAndIcon: function()
+    {
+        this.mainTitle = this._titleFragment();
+
+        if (this._getterValue) {
+            this.addClassName(this._getterValue.type);
+            if (this._getterValue.subtype)
+                this.addClassName(this._getterValue.subtype);
+            if (this._getterHadError)
+                this.addClassName(&quot;had-error&quot;);
+            this.removeClassName(&quot;accessor&quot;);
</ins><span class="cx">         }
</span><ins>+
+        this._updateHasChildren();
</ins><span class="cx">     },
</span><span class="cx"> 
</span><del>-    _updateTitlePropertyStyle: function()
</del><ins>+    _titleFragment: function()
</ins><span class="cx">     {
</span><ins>+        if (this._property.name === &quot;__proto__&quot;)
+            return this._createTitlePrototype();
+
+        if (this._mode === WebInspector.ObjectTreeView.Mode.Properties)
+            return this._createTitlePropertyStyle();
+        else
+            return this._createTitleAPIStyle();
+    },
+
+    _createTitlePrototype: function()
+    {
+        console.assert(this._property.hasValue());
+        console.assert(this._property.name === &quot;__proto__&quot;);
+
+        var nameElement = document.createElement(&quot;span&quot;);
+        nameElement.className = &quot;prototype-name&quot;;
+        nameElement.textContent = WebInspector.UIString(&quot;%s Prototype&quot;).format(this._sanitizedPrototypeString(this._property.value));
+        return nameElement;
+    },
+
+    _createTitlePropertyStyle: function()
+    {
+        var container = document.createDocumentFragment();
+
</ins><span class="cx">         // Property name.
</span><span class="cx">         var nameElement = document.createElement(&quot;span&quot;);
</span><del>-        nameElement.className = &quot;name&quot;;
-        nameElement.textContent = this._property.name;
</del><ins>+        nameElement.className = &quot;property-name&quot;;
+        nameElement.textContent = this._property.name + &quot;: &quot;;
+        nameElement.title = this._propertyPathString(this._thisPropertyPath());
</ins><span class="cx"> 
</span><span class="cx">         // Property attributes.
</span><span class="cx">         if (this._mode === WebInspector.ObjectTreeView.Mode.Properties) {
</span><span class="lines">@@ -91,104 +200,223 @@
</span><span class="cx">                 nameElement.classList.add(&quot;not-enumerable&quot;);
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        // Separator.
-        var separatorElement = document.createElement(&quot;span&quot;);
-        separatorElement.className = &quot;separator&quot;;
-        separatorElement.textContent = &quot;: &quot;;
</del><ins>+        // Value / Getter Value / Getter.
+        var valueOrGetterElement;
+        var resolvedValue = this._resolvedValue();
+        if (resolvedValue) {
+            if (resolvedValue.preview) {
+                this._previewView = new WebInspector.ObjectPreviewView(resolvedValue.preview);
+                valueOrGetterElement = this._previewView.element;
+            } else {
+                valueOrGetterElement = WebInspector.FormattedValue.createElementForRemoteObject(resolvedValue, this._property.wasThrown || this._getterHadError);
</ins><span class="cx"> 
</span><del>-        // Value / Getter.
-        var valueOrGetterElement;
-        if (this._property.hasValue()) {
-            valueOrGetterElement = WebInspector.FormattedValue.createElementForRemoteObject(this._property.value, this._property.wasThrown);
</del><ins>+                // Special case a function property string.
+                if (resolvedValue.type === &quot;function&quot;)
+                    valueOrGetterElement.textContent = this._functionPropertyString();
+            }
+
</ins><span class="cx">             // FIXME: Context Menu for Value. (See ObjectPropertiesSection).
</span><span class="cx">             // FIXME: Option+Click for Value.
</span><span class="cx">         } else {
</span><del>-            console.assert(this._property.hasGetter());
</del><span class="cx">             valueOrGetterElement = document.createElement(&quot;span&quot;);
</span><del>-            valueOrGetterElement.textContent = &quot;(...)&quot;;
-            // FIXME: Click to Populate Value.
-            // FIXME: Context Menu to Populate Value.
</del><ins>+            if (this._property.hasGetter())
+                valueOrGetterElement.appendChild(this._createInteractiveGetterElement());
+            if (!this._property.hasSetter())
+                valueOrGetterElement.appendChild(this._createReadOnlyIconElement());
+            // FIXME: What if just a setter?
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         valueOrGetterElement.classList.add(&quot;value&quot;);
</span><del>-        if (this._property.wasThrown)
</del><ins>+        if (this._property.wasThrown || this._getterHadError)
</ins><span class="cx">             valueOrGetterElement.classList.add(&quot;error&quot;);
</span><span class="cx"> 
</span><del>-        this.listItemElement.appendChild(nameElement);
-        this.listItemElement.appendChild(separatorElement);
-        this.listItemElement.appendChild(valueOrGetterElement);
</del><ins>+        container.appendChild(nameElement);
+        container.appendChild(valueOrGetterElement);
+        return container;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><del>-    _updateTitleAPIStyle: function()
</del><ins>+    _createTitleAPIStyle: function()
</ins><span class="cx">     {
</span><del>-        // Fixed value. Display like a property.
-        const propertyNamesToDisplayAsValues = [&quot;__proto__&quot;, &quot;constructor&quot;];
-        if (propertyNamesToDisplayAsValues.contains(this._property.name) || (this._property.hasValue() &amp;&amp; this._property.value.type !== &quot;function&quot;)) {
-            this._updateTitlePropertyStyle();
-            return;
-        }
</del><ins>+        // Fixed values and special properties display like a property.
+        if (this._alwaysDisplayAsProperty())
+            return this._createTitlePropertyStyle();
</ins><span class="cx"> 
</span><ins>+        // Fetched getter values should already have been shown as properties.
+        console.assert(!this._getterValue);
+
</ins><span class="cx">         // No API to display.
</span><span class="cx">         var isFunction = this._property.hasValue() &amp;&amp; this._property.value.type === &quot;function&quot;;
</span><span class="cx">         if (!isFunction &amp;&amp; !this._property.hasGetter() &amp;&amp; !this._property.hasSetter())
</span><del>-            return;
</del><ins>+            return null;
</ins><span class="cx"> 
</span><ins>+        var container = document.createDocumentFragment();
+
</ins><span class="cx">         // Function / Getter / Setter.
</span><span class="cx">         var nameElement = document.createElement(&quot;span&quot;);
</span><del>-        nameElement.className = &quot;name&quot;;
</del><ins>+        nameElement.className = &quot;property-name&quot;;
</ins><span class="cx">         nameElement.textContent = this._property.name;
</span><del>-        this.listItemElement.appendChild(nameElement);
</del><ins>+        nameElement.title = this._propertyPathString(this._thisPropertyPath());
+        container.appendChild(nameElement);
</ins><span class="cx"> 
</span><span class="cx">         if (isFunction) {
</span><span class="cx">             var paramElement = document.createElement(&quot;span&quot;);
</span><ins>+            paramElement.className = &quot;function-parameters&quot;;
</ins><span class="cx">             paramElement.textContent = this._functionParameterString();
</span><del>-            this.listItemElement.appendChild(paramElement);
</del><ins>+            container.appendChild(paramElement);
+        } else {
+            if (this._property.hasGetter())
+                container.appendChild(this._createInteractiveGetterElement());
+            if (!this._property.hasSetter())
+                container.appendChild(this._createReadOnlyIconElement());
+            // FIXME: What if just a setter?
</ins><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (this._property.hasGetter()) {
-            var icon = document.createElement(&quot;span&quot;);
-            icon.textContent += &quot;[G]&quot;;
-            this.listItemElement.appendChild(icon);
-        }
-        if (this._property.hasSetter()) {
-            var icon = document.createElement(&quot;span&quot;);
-            icon.textContent += &quot;[S]&quot;;
-            this.listItemElement.appendChild(icon);
-        }
</del><ins>+        return container;
</ins><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    _createInteractiveGetterElement: function()
+    {
+        var getterElement = document.createElement(&quot;img&quot;);
+        getterElement.className = &quot;getter&quot;;
+        getterElement.title = WebInspector.UIString(&quot;Invoke getter&quot;);
+
+        getterElement.addEventListener(&quot;click&quot;, function(event) {
+            event.stopPropagation();
+            var lastNonPrototypeObject = this._propertyPath.lastNonPrototypeObject;
+            var getterObject = this._property.get;
+            lastNonPrototypeObject.invokeGetter(getterObject, function(error, result, wasThrown) {
+                this._getterHadError = !!(error || wasThrown);
+                this._getterValue = result;
+                this._updateTitleAndIcon();
+            }.bind(this));
+        }.bind(this));
+
+        return getterElement;
+    },
+
+    _createReadOnlyIconElement: function()
+    {
+        var readOnlyElement = document.createElement(&quot;img&quot;);
+        readOnlyElement.className = &quot;read-only&quot;;
+        readOnlyElement.title = WebInspector.UIString(&quot;Read only&quot;);
+        return readOnlyElement;
+    },
+
+    _alwaysDisplayAsProperty: function()
+    {
+        // Constructor, though a function, is often better treated as an expandable object.
+        if (this._property.name === &quot;constructor&quot;)
+            return true;
+
+        // Non-function objects are often better treated as properties.
+        if (this._property.hasValue() &amp;&amp; this._property.value.type !== &quot;function&quot;)
+            return true;
+
+        // Fetched getter value.
+        if (this._getterValue)
+            return true;
+
+        return false;
+    },
+
+    _functionPropertyString: function()
+    {
+        return &quot;function&quot; + this._functionParameterString();
+    },
+
</ins><span class="cx">     _functionParameterString: function()
</span><span class="cx">     {
</span><del>-        console.assert(this._property.value.type === &quot;function&quot;);
</del><ins>+        var resolvedValue = this._resolvedValue();
+        console.assert(resolvedValue.type === &quot;function&quot;);
</ins><span class="cx"> 
</span><del>-        var match = this._property.value.description.match(/^function.*?(\([^)]+?\))/);
</del><ins>+        // For Native methods, the toString is poor. We try to provide good function parameter strings.
+        if (isFunctionStringNativeCode(resolvedValue.description)) {
+            // Native function on a prototype, likely &quot;Foo.prototype.method&quot;.
+            if (this._prototypeName) {
+                if (WebInspector.NativePrototypeFunctionParameters[this._prototypeName]) {
+                    var params = WebInspector.NativePrototypeFunctionParameters[this._prototypeName][this._property.name];
+                    return params ? &quot;(&quot; + params + &quot;)&quot; : &quot;()&quot;;
+                }
+            }
+
+            // Native function property on a native function is likely a &quot;Foo.method&quot;.
+            if (isFunctionStringNativeCode(this._propertyPath.object.description)) {
+                var match = this._propertyPath.object.description.match(/^function\s+([^)]+?)\(/);
+                if (match) {
+                    var name = match[1];
+                    if (WebInspector.NativeConstructorFunctionParameters[name]) {
+                        var params = WebInspector.NativeConstructorFunctionParameters[name][this._property.name];
+                        return params ? &quot;(&quot; + params + &quot;)&quot; : &quot;()&quot;;
+                    }
+                }
+            }
+        }        
+
+        var match = resolvedValue.description.match(/^function.*?(\([^)]+?\))/);
</ins><span class="cx">         return match ? match[1] : &quot;()&quot;;
</span><span class="cx">     },
</span><span class="cx"> 
</span><ins>+    _sanitizedPrototypeString: function(value)
+    {
+        // FIXME: &lt;https://webkit.org/b/141610&gt; For many X, X.prototype is an X when it must be a plain object
+        if (value.type === &quot;function&quot;)
+            return &quot;Function&quot;;
+        if (value.subtype === &quot;date&quot;)
+            return &quot;Date&quot;;
+        if (value.subtype === &quot;regexp&quot;)
+            return &quot;RegExp&quot;;
+
+        return value.description.replace(/\[\d+\]$/, &quot;&quot;).replace(/Prototype$/, &quot;&quot;);
+    },
+
+    _propertyPathString: function(propertyPath)
+    {
+        if (propertyPath.isFullPathImpossible())
+            return WebInspector.UIString(&quot;Unable to determine path to property from root&quot;);
+
+        return propertyPath.fullPath;
+    },
+
</ins><span class="cx">     _updateChildren: function()
</span><span class="cx">     {
</span><span class="cx">         if (this.children.length &amp;&amp; !this.shouldRefreshChildren)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><ins>+        var resolvedValue = this._resolvedValue();
+        var resolvedValuePropertyPath = this._resolvedValuePropertyPath();
+
</ins><span class="cx">         function callback(mode, properties)
</span><span class="cx">         {
</span><span class="cx">             this.removeChildren();
</span><span class="cx"> 
</span><del>-            if (properties) {
-                properties.sort(WebInspector.ObjectTreeView.ComparePropertyDescriptors);
-                for (var propertyDescriptor of properties)
-                    this.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor, mode));
</del><ins>+            if (!properties) {
+                var errorMessageElement = document.createElement(&quot;div&quot;);
+                errorMessageElement.className = &quot;empty-message&quot;;
+                errorMessageElement.textContent = WebInspector.UIString(&quot;Could not fetch properties. Object may no longer exist.&quot;);;
+                this.appendChild(new TreeElement(errorMessageElement, null, false));
+                return;
</ins><span class="cx">             }
</span><span class="cx"> 
</span><del>-            if (mode === WebInspector.ObjectTreeView.Mode.Properties) {
-                if (this._property.value.isCollectionType())
-                    this.appendChild(new WebInspector.ObjectTreeCollectionTreeElement(this._property.value));
</del><ins>+            var prototypeName = undefined;
+            if (this._property.name === &quot;__proto__&quot;) {
+                if (resolvedValue.description)
+                    prototypeName = this._sanitizedPrototypeString(resolvedValue);
</ins><span class="cx">             }
</span><ins>+
+            properties.sort(WebInspector.ObjectTreeView.ComparePropertyDescriptors);
+            for (var propertyDescriptor of properties)
+                this.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor, resolvedValuePropertyPath, mode, prototypeName));
+
+            // FIXME: Re-enable Collection Entries with new UI.
+            // if (mode === WebInspector.ObjectTreeView.Mode.Properties) {
+            //     if (resolvedValue.isCollectionType())
+            //         this.appendChild(new WebInspector.ObjectTreeCollectionTreeElement(resolvedValue));
+            // }
</ins><span class="cx">         };
</span><span class="cx"> 
</span><span class="cx">         if (this._property.name === &quot;__proto__&quot;)
</span><del>-            this._property.value.getOwnPropertyDescriptors(callback.bind(this, WebInspector.ObjectTreeView.Mode.API));
</del><ins>+            resolvedValue.getOwnPropertyDescriptors(callback.bind(this, WebInspector.ObjectTreeView.Mode.API));
</ins><span class="cx">         else
</span><del>-            this._property.value.getOwnAndGetterPropertyDescriptors(callback.bind(this, this._mode));
-    }
</del><ins>+            resolvedValue.getOwnPropertyDescriptors(callback.bind(this, this._mode));
+    },
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeViewcss"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.css (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.css        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.css        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -27,32 +27,29 @@
</span><span class="cx">     position: relative;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-.object-tree &gt; .title {
-    color: black;
-    padding: 0 8px 0 18px;
-    min-height: 18px;
-    white-space: nowrap;
-    background-origin: padding;
-    background-clip: padding;
-}
-
</del><span class="cx"> .object-tree &gt; :matches(.title, .object-preview)::before {
</span><span class="cx">     position: absolute;
</span><del>-    top: 5px;
-    left: 7px;
</del><span class="cx"> 
</span><del>-    width: 8px;
-    height: 8px;
</del><ins>+    top: 0;
+    left: -2px;
</ins><span class="cx"> 
</span><del>-    background-image: -webkit-canvas(disclosure-triangle-tiny-closed-normal);
-    background-size: 8px 8px;
</del><ins>+    width: 13px;
+    height: 13px;
+
+    background-image: -webkit-canvas(navigation-sidebar-panel-disclosure-triangle-closed-normal);
+    background-size: 13px 13px;
</ins><span class="cx">     background-repeat: no-repeat;
</span><ins>+    background-position: center;
</ins><span class="cx"> 
</span><span class="cx">     content: &quot;&quot;;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+.object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview) {
+    margin-left: 13px;
+}
+
</ins><span class="cx"> .object-tree.expanded &gt; :matches(.title, .object-preview)::before {
</span><del>-    background-image: -webkit-canvas(disclosure-triangle-tiny-open-normal);
</del><ins>+    background-image: -webkit-canvas(navigation-sidebar-panel-disclosure-triangle-open-normal);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> .object-tree.expanded .object-preview {
</span><span class="lines">@@ -64,7 +61,7 @@
</span><span class="cx">     width: 0px;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-.object-tree-outline {
</del><ins>+.object-tree .object-tree-outline {
</ins><span class="cx">     display: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -82,7 +79,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> .object-tree-outline li {
</span><del>-    margin-left: 12px;
</del><span class="cx">     white-space: nowrap;
</span><span class="cx">     text-overflow: ellipsis;
</span><span class="cx">     overflow: hidden;
</span><span class="lines">@@ -90,34 +86,10 @@
</span><span class="cx">     cursor: default;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-.object-tree-outline li.parent {
-    margin-left: 1px;
-}
-
-.object-tree-outline li.parent::before {
-    float: left;
-
-    content: &quot;&quot;;
-
-    background-image: -webkit-canvas(disclosure-triangle-tiny-closed-normal);
-    background-size: 8px 8px;
-    background-repeat: no-repeat;
-
-    width: 8px;
-    height: 8px;
-
-    margin-top: 3px;
-    padding-right: 2px;
-}
-
-.object-tree-outline li.parent.expanded::before {
-    background-image: -webkit-canvas(disclosure-triangle-tiny-open-normal);
-}
-
</del><span class="cx"> .object-tree-outline ol {
</span><span class="cx">     display: none;
</span><span class="cx">     margin: 0;
</span><del>-    -webkit-padding-start: 12px;
</del><ins>+    -webkit-padding-start: 16px;
</ins><span class="cx">     list-style: none;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -126,48 +98,15 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> .object-tree-outline li .empty-message {
</span><del>-    padding-top: 0;
-    padding-bottom: 0;
</del><span class="cx">     color: rgb(60%, 60%, 60%);
</span><ins>+    margin-left: 7px;
+    font-family: sans-serif;
+    font-size: 12px;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-/* Property Colors */
-
-.object-tree-property .name {
-    color: rgb(136, 19, 145);
-}
-
-.object-tree-property .name.not-enumerable {
-    opacity: 0.6;
-}
-
-.object-tree-property .value.error {
-    color: red;
-}
-
-
</del><span class="cx"> /* Console Overrides */
</span><span class="cx"> 
</span><del>-.console-group-messages .object-tree:not(.lossless-preview) {
-    margin: 0 0 0 12px !important;
</del><ins>+:matches(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap) .object-tree-outline,
+:matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline {
+    padding-left: 6px !important;
</ins><span class="cx"> }
</span><del>-
-.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview) {
-    padding: 0 8px 0 0;
-}
-
-.console-group-messages .object-tree:not(.lossless-preview) &gt; :matches(.title, .object-preview)::before {
-    top: 2px;
-    left: 1px;
-}
-
-/* FIXME: Transitioning the console over to formatted-object */
-.console-group-messages :matches(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap) .object-tree,
-.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree {
-    position: static;
-}
-
-.console-group-messages :matches(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap) .object-tree-outline,
-.console-group-messages :matches(.console-formatted-object, .console-formatted-node, .console-formatted-error, .console-formatted-map, .console-formatted-set, .console-formatted-weakmap) .object-tree-outline {
-    padding-left: 0 !important;
-}
</del></span></pre></div>
<a id="trunkSourceWebInspectorUIUserInterfaceViewsObjectTreeViewjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js (180592 => 180593)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js        2015-02-25 00:31:34 UTC (rev 180592)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js        2015-02-25 00:31:38 UTC (rev 180593)
</span><span class="lines">@@ -171,24 +171,36 @@
</span><span class="cx"> 
</span><span class="cx">     update: function()
</span><span class="cx">     {
</span><del>-        this._object.getOwnAndGetterPropertyDescriptors(this._updateProperties.bind(this));
</del><ins>+        this._object.getOwnPropertyDescriptors(this._updateProperties.bind(this));
</ins><span class="cx">     },
</span><span class="cx"> 
</span><span class="cx">     // Private
</span><span class="cx"> 
</span><span class="cx">     _updateProperties: function(properties)
</span><span class="cx">     {
</span><ins>+        this._outline.removeChildren();
+
+        if (!properties) {
+            var errorMessageElement = document.createElement(&quot;div&quot;);
+            errorMessageElement.className = &quot;empty-message&quot;;
+            errorMessageElement.textContent = WebInspector.UIString(&quot;Could not fetch properties. Object may no longer exist.&quot;);;
+            this._outline.appendChild(new TreeElement(errorMessageElement, null, false));
+            return;
+        }
+
</ins><span class="cx">         properties.sort(WebInspector.ObjectTreeView.ComparePropertyDescriptors);
</span><span class="cx"> 
</span><del>-        this._outline.removeChildren();
</del><ins>+        // FIXME: Intialize component with &quot;$n&quot; instead of &quot;obj&quot;.
+        var rootPropertyPath = new WebInspector.PropertyPath(this._object, &quot;obj&quot;);
</ins><span class="cx"> 
</span><span class="cx">         for (var propertyDescriptor of properties)
</span><del>-            this._outline.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor, this._mode));
</del><ins>+            this._outline.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor, rootPropertyPath, this._mode));
</ins><span class="cx"> 
</span><del>-        if (this._mode === WebInspector.ObjectTreeView.Mode.Properties) {
-            if (this._object.isCollectionType())
-                this._outline.appendChild(new WebInspector.ObjectTreeCollectionTreeElement(this._object));
-        }
</del><ins>+        // FIXME: Re-enable Collection Entries with new UI.
+        // if (this._mode === WebInspector.ObjectTreeView.Mode.Properties) {
+        //     if (this._object.isCollectionType())
+        //         this._outline.appendChild(new WebInspector.ObjectTreeCollectionTreeElement(this._object));
+        // }
</ins><span class="cx"> 
</span><span class="cx">         if (!this._outline.children.length) {
</span><span class="cx">             var emptyMessageElement = document.createElement(&quot;div&quot;);
</span></span></pre>
</div>
</div>

</body>
</html>