Changeset 66732 in webkit


Ignore:
Timestamp:
Sep 3, 2010 8:17:17 AM (14 years ago)
Author:
loislo@chromium.org
Message:

2010-09-03 Ilya Tikhonovsky <loislo@chromium.org>

Reviewed by Yury Semikhatsky.

Web Inspector: cleanup inspector api. getChildNodes should return array of child nodes as an output value.

The current implementation of the inspector api has some unnecessary complexity.
As example WebInspector is requesting child nodes of a node by getChildNodes
but DOM agent is actually pushing the child nodes via setChildNodes event call and
send back an empty response message.

https://bugs.webkit.org/show_bug.cgi?id=45172

  • inspector/CodeGeneratorInspector.pm:
  • inspector/Inspector.idl:
  • inspector/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::getChildNodesArray): (WebCore::InspectorDOMAgent::pushChildNodesToFrontend): (WebCore::InspectorDOMAgent::getChildNodes):
  • inspector/InspectorDOMAgent.h:
  • inspector/front-end/DOMAgent.js: (WebInspector.DOMAgent.prototype.getChildNodesAsync.mycallback): (WebInspector.DOMAgent.prototype.getChildNodesAsync):
  • inspector/front-end/WorkersSidebarPane.js: (WebInspector.WorkersSidebarPane.prototype.reset):
Location:
trunk/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r66731 r66732  
     12010-09-03  Ilya Tikhonovsky  <loislo@chromium.org>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: cleanup inspector api. getChildNodes should return array of child nodes as an output value.
     6
     7        The current implementation of the inspector api has some unnecessary complexity.
     8        As example WebInspector is requesting child nodes of a node by getChildNodes
     9        but DOM agent is actually pushing the child nodes via setChildNodes event call and
     10        send back an empty response message.
     11
     12        https://bugs.webkit.org/show_bug.cgi?id=45172
     13
     14        * inspector/CodeGeneratorInspector.pm:
     15        * inspector/Inspector.idl:
     16        * inspector/InspectorDOMAgent.cpp:
     17        (WebCore::InspectorDOMAgent::getChildNodesArray):
     18        (WebCore::InspectorDOMAgent::pushChildNodesToFrontend):
     19        (WebCore::InspectorDOMAgent::getChildNodes):
     20        * inspector/InspectorDOMAgent.h:
     21        * inspector/front-end/DOMAgent.js:
     22        (WebInspector.DOMAgent.prototype.getChildNodesAsync.mycallback):
     23        (WebInspector.DOMAgent.prototype.getChildNodesAsync):
     24        * inspector/front-end/WorkersSidebarPane.js:
     25        (WebInspector.WorkersSidebarPane.prototype.reset):
     26
    1272010-09-03  Nikolas Zimmermann  <nzimmermann@rim.com>
    228
  • trunk/WebCore/inspector/CodeGeneratorInspector.pm

    r66523 r66732  
    538538                return;
    539539            }
    540             request.seq = WebInspector.Callback.wrap(args[0]);
    541540        }
     541        request.seq = WebInspector.Callback.wrap(args[0] ? args[0] : function() { });
    542542
    543543        var message = JSON.stringify(request);
  • trunk/WebCore/inspector/Inspector.idl

    r66730 r66732  
    162162        [handler=Controller] void removeAllScriptsToEvaluateOnLoad();
    163163
    164         [handler=DOM] void getChildNodes(in long nodeId);
     164        [handler=DOM] void getChildNodes(in long nodeId, out Array nodes);
    165165        [handler=DOM] void setAttribute(in long elementId, in String name, in String value, out boolean success);
    166166        [handler=DOM] void removeAttribute(in long elementId, in String name, out boolean success);
  • trunk/WebCore/inspector/InspectorDOMAgent.cpp

    r66730 r66732  
    355355}
    356356
    357 void InspectorDOMAgent::pushChildNodesToFrontend(long nodeId)
     357PassRefPtr<InspectorArray> InspectorDOMAgent::getChildNodesArray(long nodeId)
    358358{
    359359    Node* node = nodeForId(nodeId);
    360360    if (!node || (node->nodeType() != Node::ELEMENT_NODE && node->nodeType() != Node::DOCUMENT_NODE && node->nodeType() != Node::DOCUMENT_FRAGMENT_NODE))
    361         return;
     361        return 0;
     362
     363    NodeToIdMap* nodeMap = m_idToNodesMap.get(nodeId);
     364    return buildArrayForContainerChildren(node, 1, nodeMap);
     365}
     366
     367void InspectorDOMAgent::pushChildNodesToFrontend(long nodeId)
     368{
    362369    if (m_childrenRequested.contains(nodeId))
    363370        return;
    364371
    365     NodeToIdMap* nodeMap = m_idToNodesMap.get(nodeId);
    366     RefPtr<InspectorArray> children = buildArrayForContainerChildren(node, 1, nodeMap);
    367     m_childrenRequested.add(nodeId);
    368     m_frontend->setChildNodes(nodeId, children.release());
     372    PassRefPtr<InspectorArray> nodes = getChildNodesArray(nodeId);
     373    if (nodes) {
     374        m_frontend->setChildNodes(nodeId, nodes);
     375        m_childrenRequested.add(nodeId);
     376    }
    369377}
    370378
     
    397405}
    398406
    399 void InspectorDOMAgent::getChildNodes(long nodeId)
    400 {
    401     pushChildNodesToFrontend(nodeId);
     407void InspectorDOMAgent::getChildNodes(long nodeId, RefPtr<InspectorArray>* nodes)
     408{
     409    PassRefPtr<InspectorArray> childNodes = getChildNodesArray(nodeId);
     410    if (childNodes)
     411        *nodes = childNodes;
     412    m_childrenRequested.add(nodeId);
    402413}
    403414
  • trunk/WebCore/inspector/InspectorDOMAgent.h

    r66730 r66732  
    100100
    101101        // Methods called from the frontend for DOM nodes inspection.
    102         void getChildNodes(long nodeId);
     102        void getChildNodes(long nodeId, RefPtr<InspectorArray>* nodes);
    103103        void setAttribute(long elementId, const String& name, const String& value, bool* success);
    104104        void removeAttribute(long elementId, const String& name, bool* success);
     
    149149
    150150    private:
     151        PassRefPtr<InspectorArray> getChildNodesArray(long nodeId);
    151152        static CSSStyleSheet* getParentStyleSheet(CSSStyleDeclaration*);
    152153        void startListening(Document* document);
  • trunk/WebCore/inspector/front-end/DOMAgent.js

    r66712 r66732  
    342342            return;
    343343        }
    344         function mycallback() {
     344        function mycallback(nodes) {
     345            parent._setChildrenPayload(nodes);
     346            WebInspector.domAgent._bindNodes(parent.children);
    345347            callback(parent.children);
    346348        }
  • trunk/WebCore/inspector/front-end/WorkersSidebarPane.js

    r59150 r66732  
    8181    reset: function()
    8282    {
    83         InspectorBackend.removeAllScriptsToEvaluateOnLoad();
    8483        this.setInstrumentation(this._enableWorkersCheckbox.checked);
    8584        this._treeOutline.removeChildren();
Note: See TracChangeset for help on using the changeset viewer.