Title: [107929] trunk
Revision
107929
Author
loi...@chromium.org
Date
2012-02-16 06:23:51 -0800 (Thu, 16 Feb 2012)

Log Message

Web Inspector: [heap snapshot] It could be useful to have access to the selected heap object from the console.
https://bugs.webkit.org/show_bug.cgi?id=78496

Reviewed by Yury Semikhatsky.

Source/WebCore:

       * bindings/js/JSInjectedScriptHostCustom.cpp:
(WebCore::JSInjectedScriptHost::inspectedObject):
* bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
(WebCore::V8InjectedScriptHost::inspectedObjectCallback):
* inspector/InjectedScriptHost.cpp:
(WebCore::InjectedScriptHost::InjectedScriptHost):
(WebCore::InjectedScriptHost::InspectableObject::get):
(WebCore):
(WebCore::InjectedScriptHost::addInspectedObject):
(WebCore::InjectedScriptHost::clearInspectedObjects):
(WebCore::InjectedScriptHost::inspectedObject):
* inspector/InjectedScriptHost.h:
(InspectableObject):
(WebCore::InjectedScriptHost::InspectableObject::~InspectableObject):
(InjectedScriptHost):
* inspector/InjectedScriptHost.idl:
* inspector/InjectedScriptSource.js:
(.):
* inspector/Inspector.json:
* inspector/InspectorAgent.cpp:
(WebCore::InspectorAgent::domContentLoadedEventFired):
* inspector/InspectorConsoleAgent.cpp:
(InspectableHeapObject):
(WebCore::InspectableHeapObject::InspectableHeapObject):
(WebCore::InspectableHeapObject::get):
(WebCore):
(WebCore::InspectorConsoleAgent::addInspectedHeapObject):
* inspector/InspectorConsoleAgent.h:
(InspectorConsoleAgent):
* inspector/InspectorProfilerAgent.cpp:
(WebCore::InspectorProfilerAgent::resetState):
* inspector/PageConsoleAgent.cpp:
(InspectableNode):
(WebCore::InspectableNode::InspectableNode):
(WebCore::InspectableNode::get):
(WebCore):
(WebCore::PageConsoleAgent::addInspectedNode):
* inspector/front-end/DetailedHeapshotView.js:
(WebInspector.DetailedHeapshotView.prototype._selectionChanged):
(WebInspector.DetailedHeapshotView.prototype._inspectedObjectChanged):

LayoutTests:

* inspector/protocol/console-agent-expected.txt:
* inspector/protocol/console-agent.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (107928 => 107929)


--- trunk/LayoutTests/ChangeLog	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/LayoutTests/ChangeLog	2012-02-16 14:23:51 UTC (rev 107929)
@@ -1,5 +1,15 @@
 2012-02-16  Ilya Tikhonovsky  <loi...@chromium.org>
 
+        Web Inspector: [heap snapshot] It could be useful to have access to the selected heap object from the console.
+        https://bugs.webkit.org/show_bug.cgi?id=78496
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/protocol/console-agent-expected.txt:
+        * inspector/protocol/console-agent.html:
+
+2012-02-16  Ilya Tikhonovsky  <loi...@chromium.org>
+
         [chromium] Rebaseline after r107881
 
         * platform/chromium-mac-snowleopard/fast/css/getComputedStyle/computed-style-expected.txt: Added.

Modified: trunk/LayoutTests/inspector/protocol/console-agent-expected.txt (107928 => 107929)


--- trunk/LayoutTests/inspector/protocol/console-agent-expected.txt	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/LayoutTests/inspector/protocol/console-agent-expected.txt	2012-02-16 14:23:51 UTC (rev 107929)
@@ -167,6 +167,25 @@
     id : <number>
 }
 
+-----------------------------------------------------------
+ConsoleAgent.addInspectedHeapObject(<number>)
+
+request:
+{
+    method : "Console.addInspectedHeapObject"
+    params : {
+        heapObjectId : 1
+    }
+    id : <number>
+}
+
+response:
+{
+    result : {
+    }
+    id : <number>
+}
+
 ===========================================================
 Coverage for ConsoleAgent
 {
@@ -175,6 +194,7 @@
     clearMessages : "checked"
     setMonitoringXHREnabled : "checked"
     addInspectedNode : "checked"
+    addInspectedHeapObject : "checked"
     messageAdded : "checked"
     messageRepeatCountUpdated : "checked"
     messagesCleared : "checked"

Modified: trunk/LayoutTests/inspector/protocol/console-agent.html (107928 => 107929)


--- trunk/LayoutTests/inspector/protocol/console-agent.html	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/LayoutTests/inspector/protocol/console-agent.html	2012-02-16 14:23:51 UTC (rev 107929)
@@ -13,7 +13,8 @@
         ["ConsoleAgent", "clearMessages"],
         ["ConsoleAgent", "setMonitoringXHREnabled", true],
         ["ConsoleAgent", "setMonitoringXHREnabled", false],
-        ["ConsoleAgent", "addInspectedNode", 1]
+        ["ConsoleAgent", "addInspectedNode", 1],
+        ["ConsoleAgent", "addInspectedHeapObject", 1]
     ];
 
     InspectorTest.runProtocolTestSuite("ConsoleAgent", testSuite, ['id', 'requestId', 'injectedScriptId', 'stackTrace']);

Modified: trunk/Source/WebCore/ChangeLog (107928 => 107929)


--- trunk/Source/WebCore/ChangeLog	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/ChangeLog	2012-02-16 14:23:51 UTC (rev 107929)
@@ -1,3 +1,51 @@
+2012-02-16  Ilya Tikhonovsky  <loi...@chromium.org>
+
+        Web Inspector: [heap snapshot] It could be useful to have access to the selected heap object from the console.
+        https://bugs.webkit.org/show_bug.cgi?id=78496
+
+        Reviewed by Yury Semikhatsky.
+
+       * bindings/js/JSInjectedScriptHostCustom.cpp:
+        (WebCore::JSInjectedScriptHost::inspectedObject):
+        * bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
+        (WebCore::V8InjectedScriptHost::inspectedObjectCallback):
+        * inspector/InjectedScriptHost.cpp:
+        (WebCore::InjectedScriptHost::InjectedScriptHost):
+        (WebCore::InjectedScriptHost::InspectableObject::get):
+        (WebCore):
+        (WebCore::InjectedScriptHost::addInspectedObject):
+        (WebCore::InjectedScriptHost::clearInspectedObjects):
+        (WebCore::InjectedScriptHost::inspectedObject):
+        * inspector/InjectedScriptHost.h:
+        (InspectableObject):
+        (WebCore::InjectedScriptHost::InspectableObject::~InspectableObject):
+        (InjectedScriptHost):
+        * inspector/InjectedScriptHost.idl:
+        * inspector/InjectedScriptSource.js:
+        (.):
+        * inspector/Inspector.json:
+        * inspector/InspectorAgent.cpp:
+        (WebCore::InspectorAgent::domContentLoadedEventFired):
+        * inspector/InspectorConsoleAgent.cpp:
+        (InspectableHeapObject):
+        (WebCore::InspectableHeapObject::InspectableHeapObject):
+        (WebCore::InspectableHeapObject::get):
+        (WebCore):
+        (WebCore::InspectorConsoleAgent::addInspectedHeapObject):
+        * inspector/InspectorConsoleAgent.h:
+        (InspectorConsoleAgent):
+        * inspector/InspectorProfilerAgent.cpp:
+        (WebCore::InspectorProfilerAgent::resetState):
+        * inspector/PageConsoleAgent.cpp:
+        (InspectableNode):
+        (WebCore::InspectableNode::InspectableNode):
+        (WebCore::InspectableNode::get):
+        (WebCore):
+        (WebCore::PageConsoleAgent::addInspectedNode):
+        * inspector/front-end/DetailedHeapshotView.js:
+        (WebInspector.DetailedHeapshotView.prototype._selectionChanged):
+        (WebInspector.DetailedHeapshotView.prototype._inspectedObjectChanged):
+
 2012-02-16  Kihong Kwon  <kihong.k...@samsung.com>
 
         Add support for unsigned long[] to idl bindings to JSC.

Modified: trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp (107928 => 107929)


--- trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -76,17 +76,17 @@
     return ScriptValue(state->globalData(), toJS(state, deprecatedGlobalObjectForPrototype(state), node));
 }
 
-JSValue JSInjectedScriptHost::inspectedNode(ExecState* exec)
+JSValue JSInjectedScriptHost::inspectedObject(ExecState* exec)
 {
     if (exec->argumentCount() < 1)
         return jsUndefined();
 
-    Node* node = impl()->inspectedNode(exec->argument(0).toInt32(exec));
-    if (!node)
+    InjectedScriptHost::InspectableObject* object = impl()->inspectedObject(exec->argument(0).toInt32(exec));
+    if (!object)
         return jsUndefined();
 
     JSLock lock(SilenceAssertionsOnly);
-    return toJS(exec, globalObject(), node);
+    return object->get(exec).jsValue();
 }
 
 JSValue JSInjectedScriptHost::internalConstructorName(ExecState* exec)

Modified: trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp (107928 => 107929)


--- trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -66,19 +66,20 @@
     return ScriptValue(toV8(node));
 }
 
-v8::Handle<v8::Value> V8InjectedScriptHost::inspectedNodeCallback(const v8::Arguments& args)
+v8::Handle<v8::Value> V8InjectedScriptHost::inspectedObjectCallback(const v8::Arguments& args)
 {
-    INC_STATS("InjectedScriptHost.inspectedNode()");
+    INC_STATS("InjectedScriptHost.inspectedObject()");
     if (args.Length() < 1)
         return v8::Undefined();
 
-    InjectedScriptHost* host = V8InjectedScriptHost::toNative(args.Holder());
-
-    Node* node = host->inspectedNode(args[0]->ToInt32()->Value());
-    if (!node)
+    if (!args[0]->IsInt32()) {
+        throwError("argument has to be an integer");
         return v8::Undefined();
+    }
 
-    return toV8(node);
+    InjectedScriptHost* host = V8InjectedScriptHost::toNative(args.Holder());
+    InjectedScriptHost::InspectableObject* object = host->inspectedObject(args[0]->ToInt32()->Value());
+    return object->get(ScriptState::current()).v8Value();
 }
 
 v8::Handle<v8::Value> V8InjectedScriptHost::internalConstructorNameCallback(const v8::Arguments& args)

Modified: trunk/Source/WebCore/inspector/InjectedScriptHost.cpp (107928 => 107929)


--- trunk/Source/WebCore/inspector/InjectedScriptHost.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InjectedScriptHost.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -75,6 +75,7 @@
     , m_domStorageAgent(0)
     , m_lastWorkerId(1 << 31) // Distinguish ids of fake workers from real ones, to minimize the chances they overlap.
 {
+    m_defaultInspectableObject = adoptPtr(new InspectableObject());
 }
 
 InjectedScriptHost::~InjectedScriptHost()
@@ -91,18 +92,6 @@
     m_domStorageAgent = 0;
 }
 
-void InjectedScriptHost::addInspectedNode(Node* node)
-{
-    m_inspectedNodes.prepend(node);
-    while (m_inspectedNodes.size() > 5)
-        m_inspectedNodes.removeLast();
-}
-
-void InjectedScriptHost::clearInspectedNodes()
-{
-    m_inspectedNodes.clear();
-}
-
 void InjectedScriptHost::inspectImpl(PassRefPtr<InspectorValue> object, PassRefPtr<InspectorValue> hints)
 {
     if (m_inspectorAgent)
@@ -122,13 +111,30 @@
     Pasteboard::generalPasteboard()->writePlainText(text);
 }
 
-Node* InjectedScriptHost::inspectedNode(unsigned int num)
+ScriptValue InjectedScriptHost::InspectableObject::get(ScriptState*)
 {
-    if (num < m_inspectedNodes.size())
-        return m_inspectedNodes[num].get();
-    return 0;
+    return ScriptValue();
+};
+
+void InjectedScriptHost::addInspectedObject(PassOwnPtr<InjectedScriptHost::InspectableObject> object)
+{
+    m_inspectedObjects.prepend(object);
+    while (m_inspectedObjects.size() > 5)
+        m_inspectedObjects.removeLast();
 }
 
+void InjectedScriptHost::clearInspectedObjects()
+{
+    m_inspectedObjects.clear();
+}
+
+InjectedScriptHost::InspectableObject* InjectedScriptHost::inspectedObject(unsigned int num)
+{
+    if (num >= m_inspectedObjects.size())
+        return m_defaultInspectableObject.get();
+    return m_inspectedObjects[num].get();
+}
+
 #if ENABLE(SQL_DATABASE)
 int InjectedScriptHost::databaseIdImpl(Database* database)
 {

Modified: trunk/Source/WebCore/inspector/InjectedScriptHost.h (107928 => 107929)


--- trunk/Source/WebCore/inspector/InjectedScriptHost.h	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InjectedScriptHost.h	2012-02-16 14:23:51 UTC (rev 107929)
@@ -78,13 +78,18 @@
 
     void disconnect();
 
-    void addInspectedNode(Node*);
-    void clearInspectedNodes();
+    class InspectableObject {
+    public:
+        virtual ScriptValue get(ScriptState*);
+        virtual ~InspectableObject() { }
+    };
+    void addInspectedObject(PassOwnPtr<InspectableObject>);
+    void clearInspectedObjects();
+    InspectableObject* inspectedObject(unsigned int num);
 
     void inspectImpl(PassRefPtr<InspectorValue> objectToInspect, PassRefPtr<InspectorValue> hints);
     void clearConsoleMessages();
     void copyText(const String& text);
-    Node* inspectedNode(unsigned int num);
 #if ENABLE(SQL_DATABASE)
     int databaseIdImpl(Database*);
 #endif
@@ -105,7 +110,8 @@
 #endif
     InspectorDOMStorageAgent* m_domStorageAgent;
     long m_lastWorkerId;
-    Vector<RefPtr<Node> > m_inspectedNodes;
+    Vector<OwnPtr<InspectableObject> > m_inspectedObjects;
+    OwnPtr<InspectableObject> m_defaultInspectableObject;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/inspector/InjectedScriptHost.idl (107928 => 107929)


--- trunk/Source/WebCore/inspector/InjectedScriptHost.idl	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InjectedScriptHost.idl	2012-02-16 14:23:51 UTC (rev 107929)
@@ -38,7 +38,7 @@
 
         void copyText(in DOMString text);
         [Custom] void inspect(in DOMObject objectId, in DOMObject hints);
-        [Custom] DOMObject inspectedNode(in int num);
+        [Custom] DOMObject inspectedObject(in int num);
         [Custom] DOMObject internalConstructorName(in DOMObject object);
         [Custom] boolean isHTMLAllCollection(in DOMObject object);
         [Custom] DOMString type(in DOMObject object);

Modified: trunk/Source/WebCore/inspector/InjectedScriptSource.js (107928 => 107929)


--- trunk/Source/WebCore/inspector/InjectedScriptSource.js	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InjectedScriptSource.js	2012-02-16 14:23:51 UTC (rev 107929)
@@ -571,7 +571,7 @@
         if (member in inspectedWindow || inScopeVariables(member))
             continue;
 
-        this.__defineGetter__("$" + i, bind(commandLineAPIImpl, commandLineAPIImpl._inspectedNode, i));
+        this.__defineGetter__("$" + i, bind(commandLineAPIImpl, commandLineAPIImpl._inspectedObject, i));
     }
 }
 
@@ -685,9 +685,9 @@
         InjectedScriptHost.clearConsoleMessages();
     },
 
-    _inspectedNode: function(num)
+    _inspectedObject: function(num)
     {
-        return InjectedScriptHost.inspectedNode(num);
+        return InjectedScriptHost.inspectedObject(num);
     },
 
     _normalizeEventTypes: function(types)

Modified: trunk/Source/WebCore/inspector/Inspector.json (107928 => 107929)


--- trunk/Source/WebCore/inspector/Inspector.json	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/Inspector.json	2012-02-16 14:23:51 UTC (rev 107929)
@@ -527,6 +527,12 @@
                 ],
                 "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
                 "hidden": true
+            },
+            {
+                "name": "addInspectedHeapObject",
+                "parameters": [
+                    { "name": "heapObjectId", "type": "integer" }
+		]
             }
         ],
         "events": [

Modified: trunk/Source/WebCore/inspector/InspectorAgent.cpp (107928 => 107929)


--- trunk/Source/WebCore/inspector/InspectorAgent.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InspectorAgent.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -150,7 +150,7 @@
 
 void InspectorAgent::domContentLoadedEventFired()
 {
-    m_injectedScriptManager->injectedScriptHost()->clearInspectedNodes();
+    m_injectedScriptManager->injectedScriptHost()->clearInspectedObjects();
 }
 
 bool InspectorAgent::isMainResourceLoader(DocumentLoader* loader, const KURL& requestUrl)

Modified: trunk/Source/WebCore/inspector/InspectorConsoleAgent.cpp (107928 => 107929)


--- trunk/Source/WebCore/inspector/InspectorConsoleAgent.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InspectorConsoleAgent.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -41,6 +41,8 @@
 #include "ScriptArguments.h"
 #include "ScriptCallFrame.h"
 #include "ScriptCallStack.h"
+#include "ScriptObject.h"
+#include "ScriptProfiler.h"
 #include <wtf/CurrentTime.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
@@ -279,6 +281,22 @@
     }
 }
 
+class InspectableHeapObject : public InjectedScriptHost::InspectableObject {
+public:
+    explicit InspectableHeapObject(int heapObjectId) : m_heapObjectId(heapObjectId) { }
+    virtual ScriptValue get(ScriptState*)
+    {
+        return ScriptProfiler::objectByHeapObjectId(m_heapObjectId);
+    }
+private:
+    int m_heapObjectId;
+};
+
+void InspectorConsoleAgent::addInspectedHeapObject(ErrorString*, int inspectedHeapObjectId)
+{
+    m_injectedScriptManager->injectedScriptHost()->addInspectedObject(adoptPtr(new InspectableHeapObject(inspectedHeapObjectId)));
+}
+
 } // namespace WebCore
 
 #endif // ENABLE(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/InspectorConsoleAgent.h (107928 => 107929)


--- trunk/Source/WebCore/inspector/InspectorConsoleAgent.h	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InspectorConsoleAgent.h	2012-02-16 14:23:51 UTC (rev 107929)
@@ -85,6 +85,7 @@
 #endif
     virtual void setMonitoringXHREnabled(ErrorString*, bool enabled);
     virtual void addInspectedNode(ErrorString*, int nodeId) = 0;
+    virtual void addInspectedHeapObject(ErrorString*, int inspectedHeapObjectId);
 
 protected:
     void addConsoleMessage(PassOwnPtr<ConsoleMessage>);

Modified: trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp (107928 => 107929)


--- trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/InspectorProfilerAgent.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -34,6 +34,7 @@
 
 #include "Console.h"
 #include "InjectedScript.h"
+#include "InjectedScriptHost.h"
 #include "InspectorConsoleAgent.h"
 #include "InspectorFrontend.h"
 #include "InspectorState.h"
@@ -264,6 +265,7 @@
     m_nextUserInitiatedProfileNumber = 1;
     m_nextUserInitiatedHeapSnapshotNumber = 1;
     resetFrontendProfiles();
+    m_injectedScriptManager->injectedScriptHost()->clearInspectedObjects();
 }
 
 void InspectorProfilerAgent::resetFrontendProfiles()

Modified: trunk/Source/WebCore/inspector/PageConsoleAgent.cpp (107928 => 107929)


--- trunk/Source/WebCore/inspector/PageConsoleAgent.cpp	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/PageConsoleAgent.cpp	2012-02-16 14:23:51 UTC (rev 107929)
@@ -39,6 +39,8 @@
 #include "InjectedScriptManager.h"
 #include "InspectorAgent.h"
 #include "InspectorDOMAgent.h"
+#include "Node.h"
+#include "ScriptObject.h"
 
 namespace WebCore {
 
@@ -61,12 +63,25 @@
     InspectorConsoleAgent::clearMessages(errorString);
 }
 
-void PageConsoleAgent::addInspectedNode(ErrorString*, int nodeId)
+class InspectableNode : public InjectedScriptHost::InspectableObject {
+public:
+    explicit InspectableNode(Node* node) : m_node(node) { }
+    virtual ScriptValue get(ScriptState* state)
+    {
+        return InjectedScriptHost::nodeAsScriptValue(state, m_node);
+    }
+private:
+    Node* m_node;
+};
+
+void PageConsoleAgent::addInspectedNode(ErrorString* errorString, int nodeId)
 {
     Node* node = m_inspectorDOMAgent->nodeForId(nodeId);
-    if (!node)
+    if (!node) {
+        *errorString = "nodeId is not valid";
         return;
-    m_injectedScriptManager->injectedScriptHost()->addInspectedNode(node);
+    }
+    m_injectedScriptManager->injectedScriptHost()->addInspectedObject(adoptPtr(new InspectableNode(node)));
 }
 
 bool PageConsoleAgent::developerExtrasEnabled()
@@ -74,7 +89,6 @@
     return m_inspectorAgent->developerExtrasEnabled();
 }
 
-
 } // namespace WebCore
 
 #endif // ENABLE(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js (107928 => 107929)


--- trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js	2012-02-16 13:59:58 UTC (rev 107928)
+++ trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js	2012-02-16 14:23:51 UTC (rev 107929)
@@ -501,6 +501,7 @@
     this.retainmentDataGrid = new WebInspector.HeapSnapshotRetainmentDataGrid();
     this.retainmentDataGrid.element.addEventListener("click", this._mouseClickInRetainmentGrid.bind(this), true);
     this.retainmentDataGrid.show(this.retainmentView.element);
+    this.retainmentDataGrid.addEventListener(WebInspector.DataGrid.Events.SelectedNode, this._inspectedObjectChanged, this);
     this.retainmentView.show(this.element);
     this.retainmentDataGrid.reset();
 
@@ -841,8 +842,15 @@
     {
         var selectedNode = event.target.selectedNode;
         this._setRetainmentDataGridSource(selectedNode);
+        this._inspectedObjectChanged(event);
     },
 
+    _inspectedObjectChanged: function(event)
+    {
+        var selectedNode = event.target.selectedNode;
+        ConsoleAgent.addInspectedObject(selectedNode.snapshotNodeId);
+    },
+
     _setRetainmentDataGridSource: function(nodeItem)
     {
         if (nodeItem && nodeItem.snapshotNodeIndex)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to