Commit c6e45715 authored by timothy@apple.com's avatar timothy@apple.com

Breaks out ObjectPropertiesSection from PropertiesSidebarPane

so it can be used by the Scripts panel's Scope Chain pane.

Rubber-stamped by Adam Roben.

* page/inspector/ObjectPropertiesSection.js: Added.
* page/inspector/PropertiesSidebarPane.js: Moved ObjectPropertiesSection
to ObjectPropertiesSection.js.
* WebCore.vcproj/WebCore.vcproj: Add the new file.
* page/inspector/WebKit.qrc: Ditto.
* page/inspector/inspector.html: Ditto.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@33399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 0b65c0b6
2008-05-13 Timothy Hatcher <timothy@apple.com>
Breaks out ObjectPropertiesSection from PropertiesSidebarPane
so it can be used by the Scripts panel's Scope Chain pane.
Rubber-stamped by Adam Roben.
* page/inspector/ObjectPropertiesSection.js: Added.
* page/inspector/PropertiesSidebarPane.js: Moved ObjectPropertiesSection
to ObjectPropertiesSection.js.
* WebCore.vcproj/WebCore.vcproj: Add the new file.
* page/inspector/WebKit.qrc: Ditto.
* page/inspector/inspector.html: Ditto.
2008-05-13 Timothy Hatcher <timothy@apple.com>
Add a helper function to the Inspector's Array prototype
......@@ -3654,6 +3654,10 @@
RelativePath="..\page\inspector\PropertiesSection.js"
>
</File>
<File
RelativePath="..\page\inspector\ObjectPropertiesSection.js"
>
</File>
<File
RelativePath="..\page\inspector\PropertiesSidebarPane.js"
>
......
/*
* Copyright (C) 2008 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. ``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
* 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.ObjectPropertiesSection = function(object, title, subtitle)
{
if (!title) {
title = Object.describe(object);
if (title.match(/Prototype$/)) {
title = title.replace(/Prototype$/, "");
if (!subtitle)
subtitle = WebInspector.UIString("Prototype");
}
}
this.object = object;
WebInspector.PropertiesSection.call(this, title, subtitle);
}
WebInspector.ObjectPropertiesSection.prototype = {
onpopulate: function()
{
var properties = Object.sortedProperties(this.object);
for (var i = 0; i < properties.length; ++i) {
var propertyName = properties[i];
if (("hasOwnProperty" in this.object && !this.object.hasOwnProperty(propertyName)) || propertyName === "__treeElementIdentifier")
continue;
this.propertiesTreeOutline.appendChild(new WebInspector.ObjectPropertyTreeElement(this.object, propertyName));
}
}
}
WebInspector.ObjectPropertiesSection.prototype.__proto__ = WebInspector.PropertiesSection.prototype;
WebInspector.ObjectPropertyTreeElement = function(parentObject, propertyName)
{
this.parentObject = parentObject;
this.propertyName = propertyName;
var childObject = this.safePropertyValue(parentObject, propertyName);
var isGetter = ("__lookupGetter__" in parentObject && parentObject.__lookupGetter__(propertyName));
var title = "<span class=\"name\">" + propertyName.escapeHTML() + "</span>: ";
if (!isGetter)
title += "<span class=\"value\">" + Object.describe(childObject, true).escapeHTML() + "</span>";
else
// FIXME: this should show something like "getter" once we can change localization (bug 16734).
title += "<span class=\"value dimmed\">&mdash;</span>";
var hasSubProperties = false;
var type = typeof childObject;
if (childObject && (type === "object" || type === "function")) {
for (subPropertyName in childObject) {
if (subPropertyName === "__treeElementIdentifier")
continue;
hasSubProperties = true;
break;
}
}
TreeElement.call(this, title, null, hasSubProperties);
}
WebInspector.ObjectPropertyTreeElement.prototype = {
safePropertyValue: function(object, propertyName)
{
if ("__lookupGetter__" in object && object.__lookupGetter__(propertyName))
return;
return object[propertyName];
},
onpopulate: function()
{
if (this.children.length)
return;
var childObject = this.safePropertyValue(this.parentObject, this.propertyName);
var properties = Object.sortedProperties(childObject);
for (var i = 0; i < properties.length; ++i) {
var propertyName = properties[i];
if (propertyName === "__treeElementIdentifier")
continue;
this.appendChild(new WebInspector.ObjectPropertyTreeElement(childObject, propertyName));
}
}
}
WebInspector.ObjectPropertyTreeElement.prototype.__proto__ = TreeElement.prototype;
......@@ -52,88 +52,3 @@ WebInspector.PropertiesSidebarPane.prototype = {
}
WebInspector.PropertiesSidebarPane.prototype.__proto__ = WebInspector.SidebarPane.prototype;
WebInspector.ObjectPropertiesSection = function(object)
{
var title = Object.describe(object);
var subtitle;
if (title.match(/Prototype$/)) {
title = title.replace(/Prototype$/, "");
subtitle = WebInspector.UIString("Prototype");
}
this.object = object;
WebInspector.PropertiesSection.call(this, title, subtitle);
}
WebInspector.ObjectPropertiesSection.prototype = {
onpopulate: function()
{
var properties = Object.sortedProperties(this.object);
for (var i = 0; i < properties.length; ++i) {
var propertyName = properties[i];
if (!this.object.hasOwnProperty(propertyName) || propertyName === "__treeElementIdentifier")
continue;
this.propertiesTreeOutline.appendChild(new WebInspector.ObjectPropertyTreeElement(this.object, propertyName));
}
}
}
WebInspector.ObjectPropertiesSection.prototype.__proto__ = WebInspector.PropertiesSection.prototype;
WebInspector.ObjectPropertyTreeElement = function(parentObject, propertyName)
{
this.parentObject = parentObject;
this.propertyName = propertyName;
var childObject = this.safePropertyValue(parentObject, propertyName);
var isGetter = parentObject.__lookupGetter__(propertyName);
var title = "<span class=\"name\">" + propertyName.escapeHTML() + "</span>: ";
if (!isGetter)
title += "<span class=\"value\">" + Object.describe(childObject, true).escapeHTML() + "</span>";
else
// FIXME: this should show something like "getter" once we can change localization (bug 16734).
title += "<span class=\"value dimmed\">&mdash;</span>";
var hasSubProperties = false;
var type = typeof childObject;
if (childObject && (type === "object" || type === "function")) {
for (subPropertyName in childObject) {
if (subPropertyName === "__treeElementIdentifier")
continue;
hasSubProperties = true;
break;
}
}
TreeElement.call(this, title, null, hasSubProperties);
}
WebInspector.ObjectPropertyTreeElement.prototype = {
safePropertyValue: function(object, propertyName)
{
var getter = object.__lookupGetter__(propertyName);
if (getter)
return;
return object[propertyName];
},
onpopulate: function()
{
if (this.children.length)
return;
var childObject = this.safePropertyValue(this.parentObject, this.propertyName);
var properties = Object.sortedProperties(childObject);
for (var i = 0; i < properties.length; ++i) {
var propertyName = properties[i];
if (propertyName === "__treeElementIdentifier")
continue;
this.appendChild(new WebInspector.ObjectPropertyTreeElement(childObject, propertyName));
}
}
}
WebInspector.ObjectPropertyTreeElement.prototype.__proto__ = TreeElement.prototype;
......@@ -15,6 +15,7 @@
<file>inspector.js</file>
<file>MetricsSidebarPane.js</file>
<file>Object.js</file>
<file>ObjectPropertiesSection.js</file>
<file>Panel.js</file>
<file>PropertiesSection.js</file>
<file>PropertiesSidebarPane.js</file>
......
......@@ -43,6 +43,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<script type="text/javascript" src="SidebarPane.js"></script>
<script type="text/javascript" src="SidebarTreeElement.js"></script>
<script type="text/javascript" src="PropertiesSection.js"></script>
<script type="text/javascript" src="ObjectPropertiesSection.js"></script>
<script type="text/javascript" src="BreakpointsSidebarPane.js"></script>
<script type="text/javascript" src="CallStackSidebarPane.js"></script>
<script type="text/javascript" src="MetricsSidebarPane.js"></script>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment