| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 explicit InspectorRevalidateDOMTask(InspectorDOMAgent*); | 187 explicit InspectorRevalidateDOMTask(InspectorDOMAgent*); |
| 188 void scheduleStyleAttrRevalidationFor(Element*); | 188 void scheduleStyleAttrRevalidationFor(Element*); |
| 189 void scheduleContentDistributionRevalidationFor(Element*); | 189 void scheduleContentDistributionRevalidationFor(Element*); |
| 190 void reset() { m_timer.stop(); } | 190 void reset() { m_timer.stop(); } |
| 191 void onTimer(Timer<InspectorRevalidateDOMTask>*); | 191 void onTimer(Timer<InspectorRevalidateDOMTask>*); |
| 192 void trace(Visitor*); | 192 void trace(Visitor*); |
| 193 | 193 |
| 194 private: | 194 private: |
| 195 RawPtrWillBeMember<InspectorDOMAgent> m_domAgent; | 195 RawPtrWillBeMember<InspectorDOMAgent> m_domAgent; |
| 196 Timer<InspectorRevalidateDOMTask> m_timer; | 196 Timer<InspectorRevalidateDOMTask> m_timer; |
| 197 WillBeHeapHashSet<RefPtrWillBeMember<Element> > m_styleAttrInvalidatedElemen
ts; | 197 WillBeHeapHashSet<RefPtrWillBeMember<Element>> m_styleAttrInvalidatedElement
s; |
| 198 WillBeHeapHashSet<RefPtrWillBeMember<Element> > m_contentDistributionInvalid
atedElements; | 198 WillBeHeapHashSet<RefPtrWillBeMember<Element>> m_contentDistributionInvalida
tedElements; |
| 199 }; | 199 }; |
| 200 | 200 |
| 201 InspectorRevalidateDOMTask::InspectorRevalidateDOMTask(InspectorDOMAgent* domAge
nt) | 201 InspectorRevalidateDOMTask::InspectorRevalidateDOMTask(InspectorDOMAgent* domAge
nt) |
| 202 : m_domAgent(domAgent) | 202 : m_domAgent(domAgent) |
| 203 , m_timer(this, &InspectorRevalidateDOMTask::onTimer) | 203 , m_timer(this, &InspectorRevalidateDOMTask::onTimer) |
| 204 { | 204 { |
| 205 } | 205 } |
| 206 | 206 |
| 207 void InspectorRevalidateDOMTask::scheduleStyleAttrRevalidationFor(Element* eleme
nt) | 207 void InspectorRevalidateDOMTask::scheduleStyleAttrRevalidationFor(Element* eleme
nt) |
| 208 { | 208 { |
| 209 m_styleAttrInvalidatedElements.add(element); | 209 m_styleAttrInvalidatedElements.add(element); |
| 210 if (!m_timer.isActive()) | 210 if (!m_timer.isActive()) |
| 211 m_timer.startOneShot(0, FROM_HERE); | 211 m_timer.startOneShot(0, FROM_HERE); |
| 212 } | 212 } |
| 213 | 213 |
| 214 void InspectorRevalidateDOMTask::scheduleContentDistributionRevalidationFor(Elem
ent* element) | 214 void InspectorRevalidateDOMTask::scheduleContentDistributionRevalidationFor(Elem
ent* element) |
| 215 { | 215 { |
| 216 m_contentDistributionInvalidatedElements.add(element); | 216 m_contentDistributionInvalidatedElements.add(element); |
| 217 if (!m_timer.isActive()) | 217 if (!m_timer.isActive()) |
| 218 m_timer.startOneShot(0, FROM_HERE); | 218 m_timer.startOneShot(0, FROM_HERE); |
| 219 } | 219 } |
| 220 | 220 |
| 221 void InspectorRevalidateDOMTask::onTimer(Timer<InspectorRevalidateDOMTask>*) | 221 void InspectorRevalidateDOMTask::onTimer(Timer<InspectorRevalidateDOMTask>*) |
| 222 { | 222 { |
| 223 // The timer is stopped on m_domAgent destruction, so this method will never
be called after m_domAgent has been destroyed. | 223 // The timer is stopped on m_domAgent destruction, so this method will never
be called after m_domAgent has been destroyed. |
| 224 WillBeHeapVector<RawPtrWillBeMember<Element> > elements; | 224 WillBeHeapVector<RawPtrWillBeMember<Element>> elements; |
| 225 for (auto& attribute : m_styleAttrInvalidatedElements) | 225 for (auto& attribute : m_styleAttrInvalidatedElements) |
| 226 elements.append(attribute.get()); | 226 elements.append(attribute.get()); |
| 227 m_domAgent->styleAttributeInvalidated(elements); | 227 m_domAgent->styleAttributeInvalidated(elements); |
| 228 | 228 |
| 229 m_styleAttrInvalidatedElements.clear(); | 229 m_styleAttrInvalidatedElements.clear(); |
| 230 | 230 |
| 231 elements.clear(); | 231 elements.clear(); |
| 232 for (const RefPtrWillBeMember<Element>& it : m_contentDistributionInvalidate
dElements) | 232 for (const RefPtrWillBeMember<Element>& it : m_contentDistributionInvalidate
dElements) |
| 233 elements.append(it.get()); | 233 elements.append(it.get()); |
| 234 m_domAgent->contentDistributionInvalidated(elements); | 234 m_domAgent->contentDistributionInvalidated(elements); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 reset(); | 303 reset(); |
| 304 } | 304 } |
| 305 | 305 |
| 306 void InspectorDOMAgent::restore() | 306 void InspectorDOMAgent::restore() |
| 307 { | 307 { |
| 308 if (!enabled()) | 308 if (!enabled()) |
| 309 return; | 309 return; |
| 310 innerEnable(); | 310 innerEnable(); |
| 311 } | 311 } |
| 312 | 312 |
| 313 WillBeHeapVector<RawPtrWillBeMember<Document> > InspectorDOMAgent::documents() | 313 WillBeHeapVector<RawPtrWillBeMember<Document>> InspectorDOMAgent::documents() |
| 314 { | 314 { |
| 315 WillBeHeapVector<RawPtrWillBeMember<Document> > result; | 315 WillBeHeapVector<RawPtrWillBeMember<Document>> result; |
| 316 for (Frame* frame = m_document->frame(); frame; frame = frame->tree().traver
seNext()) { | 316 for (Frame* frame = m_document->frame(); frame; frame = frame->tree().traver
seNext()) { |
| 317 if (!frame->isLocalFrame()) | 317 if (!frame->isLocalFrame()) |
| 318 continue; | 318 continue; |
| 319 Document* document = toLocalFrame(frame)->document(); | 319 Document* document = toLocalFrame(frame)->document(); |
| 320 if (!document) | 320 if (!document) |
| 321 continue; | 321 continue; |
| 322 result.append(document); | 322 result.append(document); |
| 323 } | 323 } |
| 324 return result; | 324 return result; |
| 325 } | 325 } |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 | 594 |
| 595 for (node = innerFirstChild(node); node; node = innerNextSibling(node))
{ | 595 for (node = innerFirstChild(node); node; node = innerNextSibling(node))
{ |
| 596 int childNodeId = nodeMap->get(node); | 596 int childNodeId = nodeMap->get(node); |
| 597 ASSERT(childNodeId); | 597 ASSERT(childNodeId); |
| 598 pushChildNodesToFrontend(childNodeId, depth); | 598 pushChildNodesToFrontend(childNodeId, depth); |
| 599 } | 599 } |
| 600 | 600 |
| 601 return; | 601 return; |
| 602 } | 602 } |
| 603 | 603 |
| 604 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = buildArrayFor
ContainerChildren(node, depth, nodeMap); | 604 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> children = buildArrayForC
ontainerChildren(node, depth, nodeMap); |
| 605 m_frontend->setChildNodes(nodeId, children.release()); | 605 m_frontend->setChildNodes(nodeId, children.release()); |
| 606 } | 606 } |
| 607 | 607 |
| 608 void InspectorDOMAgent::discardFrontendBindings() | 608 void InspectorDOMAgent::discardFrontendBindings() |
| 609 { | 609 { |
| 610 if (m_history) | 610 if (m_history) |
| 611 m_history->reset(); | 611 m_history->reset(); |
| 612 m_searchResults.clear(); | 612 m_searchResults.clear(); |
| 613 m_documentNodeToIdMap->clear(); | 613 m_documentNodeToIdMap->clear(); |
| 614 m_idToNode.clear(); | 614 m_idToNode.clear(); |
| 615 m_idToNodesMap.clear(); | 615 m_idToNodesMap.clear(); |
| 616 releaseDanglingNodes(); | 616 releaseDanglingNodes(); |
| 617 m_childrenRequested.clear(); | 617 m_childrenRequested.clear(); |
| 618 m_distributedNodesRequested.clear(); | 618 m_distributedNodesRequested.clear(); |
| 619 m_cachedChildCount.clear(); | 619 m_cachedChildCount.clear(); |
| 620 if (m_revalidateTask) | 620 if (m_revalidateTask) |
| 621 m_revalidateTask->reset(); | 621 m_revalidateTask->reset(); |
| 622 } | 622 } |
| 623 | 623 |
| 624 Node* InspectorDOMAgent::nodeForId(int id) | 624 Node* InspectorDOMAgent::nodeForId(int id) |
| 625 { | 625 { |
| 626 if (!id) | 626 if (!id) |
| 627 return nullptr; | 627 return nullptr; |
| 628 | 628 |
| 629 WillBeHeapHashMap<int, RawPtrWillBeMember<Node> >::iterator it = m_idToNode.
find(id); | 629 WillBeHeapHashMap<int, RawPtrWillBeMember<Node>>::iterator it = m_idToNode.f
ind(id); |
| 630 if (it != m_idToNode.end()) | 630 if (it != m_idToNode.end()) |
| 631 return it->value; | 631 return it->value; |
| 632 return nullptr; | 632 return nullptr; |
| 633 } | 633 } |
| 634 | 634 |
| 635 void InspectorDOMAgent::requestChildNodes(ErrorString* errorString, int nodeId,
const int* depth) | 635 void InspectorDOMAgent::requestChildNodes(ErrorString* errorString, int nodeId,
const int* depth) |
| 636 { | 636 { |
| 637 int sanitizedDepth; | 637 int sanitizedDepth; |
| 638 | 638 |
| 639 if (!depth) | 639 if (!depth) |
| 640 sanitizedDepth = 1; | 640 sanitizedDepth = 1; |
| 641 else if (*depth == -1) | 641 else if (*depth == -1) |
| 642 sanitizedDepth = INT_MAX; | 642 sanitizedDepth = INT_MAX; |
| 643 else if (*depth > 0) | 643 else if (*depth > 0) |
| 644 sanitizedDepth = *depth; | 644 sanitizedDepth = *depth; |
| 645 else { | 645 else { |
| 646 *errorString = "Please provide a positive integer as a depth or -1 for e
ntire subtree"; | 646 *errorString = "Please provide a positive integer as a depth or -1 for e
ntire subtree"; |
| 647 return; | 647 return; |
| 648 } | 648 } |
| 649 | 649 |
| 650 pushChildNodesToFrontend(nodeId, sanitizedDepth); | 650 pushChildNodesToFrontend(nodeId, sanitizedDepth); |
| 651 } | 651 } |
| 652 | 652 |
| 653 void InspectorDOMAgent::requestShadowHostDistributedNodes(ErrorString* errorStri
ng, int nodeId, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::InsertionPointDistri
bution> >& insertionPointDistributions) | 653 void InspectorDOMAgent::requestShadowHostDistributedNodes(ErrorString* errorStri
ng, int nodeId, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::InsertionPointDistri
bution>>& insertionPointDistributions) |
| 654 { | 654 { |
| 655 Node* shadowHost = assertNode(errorString, nodeId); | 655 Node* shadowHost = assertNode(errorString, nodeId); |
| 656 if (!shadowHost) | 656 if (!shadowHost) |
| 657 return; | 657 return; |
| 658 | 658 |
| 659 ASSERT(!shadowHost->document().childNeedsDistributionRecalc()); | 659 ASSERT(!shadowHost->document().childNeedsDistributionRecalc()); |
| 660 | 660 |
| 661 NodeToIdMap* nodeMap = m_idToNodesMap.get(nodeId); | 661 NodeToIdMap* nodeMap = m_idToNodesMap.get(nodeId); |
| 662 ASSERT(nodeMap); | 662 ASSERT(nodeMap); |
| 663 | 663 |
| 664 m_distributedNodesRequested.add(nodeId); | 664 m_distributedNodesRequested.add(nodeId); |
| 665 | 665 |
| 666 insertionPointDistributions = TypeBuilder::Array<TypeBuilder::DOM::Insertion
PointDistribution>::create(); | 666 insertionPointDistributions = TypeBuilder::Array<TypeBuilder::DOM::Insertion
PointDistribution>::create(); |
| 667 for (ShadowRoot* root = shadowHost->youngestShadowRoot(); root; root = root-
>olderShadowRoot()) { | 667 for (ShadowRoot* root = shadowHost->youngestShadowRoot(); root; root = root-
>olderShadowRoot()) { |
| 668 const WillBeHeapVector<RefPtrWillBeMember<InsertionPoint> >& insertionPo
ints = root->descendantInsertionPoints(); | 668 const WillBeHeapVector<RefPtrWillBeMember<InsertionPoint>>& insertionPoi
nts = root->descendantInsertionPoints(); |
| 669 for (const auto& it : insertionPoints) { | 669 for (const auto& it : insertionPoints) { |
| 670 InsertionPoint* insertionPoint = it.get(); | 670 InsertionPoint* insertionPoint = it.get(); |
| 671 int insertionPointId = pushNodePathToFrontend(insertionPoint, nodeMa
p); | 671 int insertionPointId = pushNodePathToFrontend(insertionPoint, nodeMa
p); |
| 672 ASSERT(insertionPointId); | 672 ASSERT(insertionPointId); |
| 673 | 673 |
| 674 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::DistributedNode> > distr
ibutedNodes = TypeBuilder::Array<TypeBuilder::DOM::DistributedNode>::create(); | 674 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::DistributedNode>> distri
butedNodes = TypeBuilder::Array<TypeBuilder::DOM::DistributedNode>::create(); |
| 675 for (size_t i = 0; i < insertionPoint->size(); ++i) { | 675 for (size_t i = 0; i < insertionPoint->size(); ++i) { |
| 676 Node* distributedNode = insertionPoint->at(i); | 676 Node* distributedNode = insertionPoint->at(i); |
| 677 if (isWhitespace(distributedNode)) | 677 if (isWhitespace(distributedNode)) |
| 678 continue; | 678 continue; |
| 679 | 679 |
| 680 int distributedNodeId = pushNodePathToFrontend(distributedNode,
nodeMap); | 680 int distributedNodeId = pushNodePathToFrontend(distributedNode,
nodeMap); |
| 681 ASSERT(distributedNodeId); | 681 ASSERT(distributedNodeId); |
| 682 | 682 |
| 683 RefPtr<TypeBuilder::DOM::DistributedNode> distributedNodeObject
= TypeBuilder::DOM::DistributedNode::create() | 683 RefPtr<TypeBuilder::DOM::DistributedNode> distributedNodeObject
= TypeBuilder::DOM::DistributedNode::create() |
| 684 .setNodeId(distributedNodeId); | 684 .setNodeId(distributedNodeId); |
| 685 | 685 |
| 686 RefPtr<TypeBuilder::Array<int> > destinationInsertionPointIds =
TypeBuilder::Array<int>::create(); | 686 RefPtr<TypeBuilder::Array<int>> destinationInsertionPointIds = T
ypeBuilder::Array<int>::create(); |
| 687 WillBeHeapVector<RawPtrWillBeMember<InsertionPoint>, 8> destinat
ionInsertionPoints; | 687 WillBeHeapVector<RawPtrWillBeMember<InsertionPoint>, 8> destinat
ionInsertionPoints; |
| 688 collectDestinationInsertionPoints(*distributedNode, destinationI
nsertionPoints); | 688 collectDestinationInsertionPoints(*distributedNode, destinationI
nsertionPoints); |
| 689 // If this node has only one destination insertion point (often)
, then we already know it and don't need any additional information. | 689 // If this node has only one destination insertion point (often)
, then we already know it and don't need any additional information. |
| 690 if (destinationInsertionPoints.size() != 1) { | 690 if (destinationInsertionPoints.size() != 1) { |
| 691 for (size_t j = 0; j < destinationInsertionPoints.size(); ++
j) { | 691 for (size_t j = 0; j < destinationInsertionPoints.size(); ++
j) { |
| 692 int destinationInsertionPointId = pushNodePathToFrontend
(destinationInsertionPoints.at(j), nodeMap); | 692 int destinationInsertionPointId = pushNodePathToFrontend
(destinationInsertionPoints.at(j), nodeMap); |
| 693 ASSERT(destinationInsertionPointId); | 693 ASSERT(destinationInsertionPointId); |
| 694 destinationInsertionPointIds->addItem(destinationInserti
onPointId); | 694 destinationInsertionPointIds->addItem(destinationInserti
onPointId); |
| 695 } | 695 } |
| 696 distributedNodeObject->setDestinationInsertionPointIds(desti
nationInsertionPointIds); | 696 distributedNodeObject->setDestinationInsertionPointIds(desti
nationInsertionPointIds); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 719 RefPtrWillBeRawPtr<Element> element = toContainerNode(node)->querySelector(A
tomicString(selectors), exceptionState); | 719 RefPtrWillBeRawPtr<Element> element = toContainerNode(node)->querySelector(A
tomicString(selectors), exceptionState); |
| 720 if (exceptionState.hadException()) { | 720 if (exceptionState.hadException()) { |
| 721 *errorString = "DOM Error while querying"; | 721 *errorString = "DOM Error while querying"; |
| 722 return; | 722 return; |
| 723 } | 723 } |
| 724 | 724 |
| 725 if (element) | 725 if (element) |
| 726 *elementId = pushNodePathToFrontend(element.get()); | 726 *elementId = pushNodePathToFrontend(element.get()); |
| 727 } | 727 } |
| 728 | 728 |
| 729 void InspectorDOMAgent::querySelectorAll(ErrorString* errorString, int nodeId, c
onst String& selectors, RefPtr<TypeBuilder::Array<int> >& result) | 729 void InspectorDOMAgent::querySelectorAll(ErrorString* errorString, int nodeId, c
onst String& selectors, RefPtr<TypeBuilder::Array<int>>& result) |
| 730 { | 730 { |
| 731 Node* node = assertNode(errorString, nodeId); | 731 Node* node = assertNode(errorString, nodeId); |
| 732 if (!node || !node->isContainerNode()) | 732 if (!node || !node->isContainerNode()) |
| 733 return; | 733 return; |
| 734 | 734 |
| 735 TrackExceptionState exceptionState; | 735 TrackExceptionState exceptionState; |
| 736 RefPtrWillBeRawPtr<StaticElementList> elements = toContainerNode(node)->quer
ySelectorAll(AtomicString(selectors), exceptionState); | 736 RefPtrWillBeRawPtr<StaticElementList> elements = toContainerNode(node)->quer
ySelectorAll(AtomicString(selectors), exceptionState); |
| 737 if (exceptionState.hadException()) { | 737 if (exceptionState.hadException()) { |
| 738 *errorString = "DOM Error while querying"; | 738 *errorString = "DOM Error while querying"; |
| 739 return; | 739 return; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 753 return 0; | 753 return 0; |
| 754 if (!m_documentNodeToIdMap->contains(m_document)) | 754 if (!m_documentNodeToIdMap->contains(m_document)) |
| 755 return 0; | 755 return 0; |
| 756 | 756 |
| 757 // Return id in case the node is known. | 757 // Return id in case the node is known. |
| 758 int result = nodeMap->get(nodeToPush); | 758 int result = nodeMap->get(nodeToPush); |
| 759 if (result) | 759 if (result) |
| 760 return result; | 760 return result; |
| 761 | 761 |
| 762 Node* node = nodeToPush; | 762 Node* node = nodeToPush; |
| 763 WillBeHeapVector<RawPtrWillBeMember<Node> > path; | 763 WillBeHeapVector<RawPtrWillBeMember<Node>> path; |
| 764 | 764 |
| 765 while (true) { | 765 while (true) { |
| 766 Node* parent = innerParentNode(node); | 766 Node* parent = innerParentNode(node); |
| 767 if (!parent) | 767 if (!parent) |
| 768 return 0; | 768 return 0; |
| 769 path.append(parent); | 769 path.append(parent); |
| 770 if (nodeMap->get(parent)) | 770 if (nodeMap->get(parent)) |
| 771 break; | 771 break; |
| 772 node = parent; | 772 node = parent; |
| 773 } | 773 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 790 return nodeId; | 790 return nodeId; |
| 791 | 791 |
| 792 Node* node = nodeToPush; | 792 Node* node = nodeToPush; |
| 793 while (Node* parent = innerParentNode(node)) | 793 while (Node* parent = innerParentNode(node)) |
| 794 node = parent; | 794 node = parent; |
| 795 | 795 |
| 796 // Node being pushed is detached -> push subtree root. | 796 // Node being pushed is detached -> push subtree root. |
| 797 OwnPtrWillBeRawPtr<NodeToIdMap> newMap = adoptPtrWillBeNoop(new NodeToIdMap)
; | 797 OwnPtrWillBeRawPtr<NodeToIdMap> newMap = adoptPtrWillBeNoop(new NodeToIdMap)
; |
| 798 NodeToIdMap* danglingMap = newMap.get(); | 798 NodeToIdMap* danglingMap = newMap.get(); |
| 799 m_danglingNodeToIdMaps.append(newMap.release()); | 799 m_danglingNodeToIdMaps.append(newMap.release()); |
| 800 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = TypeBuilder::
Array<TypeBuilder::DOM::Node>::create(); | 800 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> children = TypeBuilder::A
rray<TypeBuilder::DOM::Node>::create(); |
| 801 children->addItem(buildObjectForNode(node, 0, danglingMap)); | 801 children->addItem(buildObjectForNode(node, 0, danglingMap)); |
| 802 m_frontend->setChildNodes(0, children); | 802 m_frontend->setChildNodes(0, children); |
| 803 | 803 |
| 804 return pushNodePathToFrontend(nodeToPush, danglingMap); | 804 return pushNodePathToFrontend(nodeToPush, danglingMap); |
| 805 } | 805 } |
| 806 | 806 |
| 807 int InspectorDOMAgent::boundNodeId(Node* node) | 807 int InspectorDOMAgent::boundNodeId(Node* node) |
| 808 { | 808 { |
| 809 return m_documentNodeToIdMap->get(node); | 809 return m_documentNodeToIdMap->get(node); |
| 810 } | 810 } |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 972 return; | 972 return; |
| 973 | 973 |
| 974 if (node->nodeType() != Node::TEXT_NODE) { | 974 if (node->nodeType() != Node::TEXT_NODE) { |
| 975 *errorString = "Can only set value of text nodes"; | 975 *errorString = "Can only set value of text nodes"; |
| 976 return; | 976 return; |
| 977 } | 977 } |
| 978 | 978 |
| 979 m_domEditor->replaceWholeText(toText(node), value, errorString); | 979 m_domEditor->replaceWholeText(toText(node), value, errorString); |
| 980 } | 980 } |
| 981 | 981 |
| 982 void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int n
odeId, const String* objectGroup, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Ev
entListener> >& listenersArray) | 982 void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int n
odeId, const String* objectGroup, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Ev
entListener>>& listenersArray) |
| 983 { | 983 { |
| 984 listenersArray = TypeBuilder::Array<TypeBuilder::DOM::EventListener>::create
(); | 984 listenersArray = TypeBuilder::Array<TypeBuilder::DOM::EventListener>::create
(); |
| 985 Node* node = assertNode(errorString, nodeId); | 985 Node* node = assertNode(errorString, nodeId); |
| 986 if (!node) | 986 if (!node) |
| 987 return; | 987 return; |
| 988 Vector<EventListenerInfo> eventInformation; | 988 Vector<EventListenerInfo> eventInformation; |
| 989 getEventListeners(node, eventInformation, true); | 989 getEventListeners(node, eventInformation, true); |
| 990 | 990 |
| 991 // Get Capturing Listeners (in this order) | 991 // Get Capturing Listeners (in this order) |
| 992 size_t eventInformationLength = eventInformation.size(); | 992 size_t eventInformationLength = eventInformation.size(); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 String attributeQuery = whitespaceTrimmedQuery; | 1106 String attributeQuery = whitespaceTrimmedQuery; |
| 1107 if (startTagFound) | 1107 if (startTagFound) |
| 1108 tagNameQuery = tagNameQuery.right(tagNameQuery.length() - 1); | 1108 tagNameQuery = tagNameQuery.right(tagNameQuery.length() - 1); |
| 1109 if (endTagFound) | 1109 if (endTagFound) |
| 1110 tagNameQuery = tagNameQuery.left(tagNameQuery.length() - 1); | 1110 tagNameQuery = tagNameQuery.left(tagNameQuery.length() - 1); |
| 1111 if (startQuoteFound) | 1111 if (startQuoteFound) |
| 1112 attributeQuery = attributeQuery.right(attributeQuery.length() - 1); | 1112 attributeQuery = attributeQuery.right(attributeQuery.length() - 1); |
| 1113 if (endQuoteFound) | 1113 if (endQuoteFound) |
| 1114 attributeQuery = attributeQuery.left(attributeQuery.length() - 1); | 1114 attributeQuery = attributeQuery.left(attributeQuery.length() - 1); |
| 1115 | 1115 |
| 1116 WillBeHeapVector<RawPtrWillBeMember<Document> > docs = documents(); | 1116 WillBeHeapVector<RawPtrWillBeMember<Document>> docs = documents(); |
| 1117 WillBeHeapListHashSet<RawPtrWillBeMember<Node> > resultCollector; | 1117 WillBeHeapListHashSet<RawPtrWillBeMember<Node>> resultCollector; |
| 1118 | 1118 |
| 1119 for (Document* document : docs) { | 1119 for (Document* document : docs) { |
| 1120 Node* documentElement = document->documentElement(); | 1120 Node* documentElement = document->documentElement(); |
| 1121 Node* node = documentElement; | 1121 Node* node = documentElement; |
| 1122 if (!node) | 1122 if (!node) |
| 1123 continue; | 1123 continue; |
| 1124 | 1124 |
| 1125 // Manual plain text search. | 1125 // Manual plain text search. |
| 1126 for (; node; node = nextNodeWithShadowDOMInMind(*node, documentElement,
includeUserAgentShadowDOM)) { | 1126 for (; node; node = nextNodeWithShadowDOMInMind(*node, documentElement,
includeUserAgentShadowDOM)) { |
| 1127 switch (node->nodeType()) { | 1127 switch (node->nodeType()) { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1192 if (exceptionState.hadException() || !elementList) | 1192 if (exceptionState.hadException() || !elementList) |
| 1193 continue; | 1193 continue; |
| 1194 | 1194 |
| 1195 unsigned size = elementList->length(); | 1195 unsigned size = elementList->length(); |
| 1196 for (unsigned i = 0; i < size; ++i) | 1196 for (unsigned i = 0; i < size; ++i) |
| 1197 resultCollector.add(elementList->item(i)); | 1197 resultCollector.add(elementList->item(i)); |
| 1198 } | 1198 } |
| 1199 } | 1199 } |
| 1200 | 1200 |
| 1201 *searchId = IdentifiersFactory::createIdentifier(); | 1201 *searchId = IdentifiersFactory::createIdentifier(); |
| 1202 WillBeHeapVector<RefPtrWillBeMember<Node> >* resultsIt = &m_searchResults.ad
d(*searchId, WillBeHeapVector<RefPtrWillBeMember<Node> >()).storedValue->value; | 1202 WillBeHeapVector<RefPtrWillBeMember<Node>>* resultsIt = &m_searchResults.add
(*searchId, WillBeHeapVector<RefPtrWillBeMember<Node>>()).storedValue->value; |
| 1203 | 1203 |
| 1204 for (auto& result : resultCollector) | 1204 for (auto& result : resultCollector) |
| 1205 resultsIt->append(result); | 1205 resultsIt->append(result); |
| 1206 | 1206 |
| 1207 *resultCount = resultsIt->size(); | 1207 *resultCount = resultsIt->size(); |
| 1208 } | 1208 } |
| 1209 | 1209 |
| 1210 void InspectorDOMAgent::getSearchResults(ErrorString* errorString, const String&
searchId, int fromIndex, int toIndex, RefPtr<TypeBuilder::Array<int> >& nodeIds
) | 1210 void InspectorDOMAgent::getSearchResults(ErrorString* errorString, const String&
searchId, int fromIndex, int toIndex, RefPtr<TypeBuilder::Array<int>>& nodeIds) |
| 1211 { | 1211 { |
| 1212 SearchResults::iterator it = m_searchResults.find(searchId); | 1212 SearchResults::iterator it = m_searchResults.find(searchId); |
| 1213 if (it == m_searchResults.end()) { | 1213 if (it == m_searchResults.end()) { |
| 1214 *errorString = "No search session with given id found"; | 1214 *errorString = "No search session with given id found"; |
| 1215 return; | 1215 return; |
| 1216 } | 1216 } |
| 1217 | 1217 |
| 1218 int size = it->value.size(); | 1218 int size = it->value.size(); |
| 1219 if (fromIndex < 0 || toIndex > size || fromIndex >= toIndex) { | 1219 if (fromIndex < 0 || toIndex > size || fromIndex >= toIndex) { |
| 1220 *errorString = "Invalid search result range"; | 1220 *errorString = "Invalid search result range"; |
| (...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1593 return; | 1593 return; |
| 1594 } | 1594 } |
| 1595 RefPtr<TypeBuilder::Runtime::RemoteObject> object = resolveNode(node, object
GroupName); | 1595 RefPtr<TypeBuilder::Runtime::RemoteObject> object = resolveNode(node, object
GroupName); |
| 1596 if (!object) { | 1596 if (!object) { |
| 1597 *errorString = "Node with given id does not belong to the document"; | 1597 *errorString = "Node with given id does not belong to the document"; |
| 1598 return; | 1598 return; |
| 1599 } | 1599 } |
| 1600 result = object; | 1600 result = object; |
| 1601 } | 1601 } |
| 1602 | 1602 |
| 1603 void InspectorDOMAgent::getAttributes(ErrorString* errorString, int nodeId, RefP
tr<TypeBuilder::Array<String> >& result) | 1603 void InspectorDOMAgent::getAttributes(ErrorString* errorString, int nodeId, RefP
tr<TypeBuilder::Array<String>>& result) |
| 1604 { | 1604 { |
| 1605 Element* element = assertElement(errorString, nodeId); | 1605 Element* element = assertElement(errorString, nodeId); |
| 1606 if (!element) | 1606 if (!element) |
| 1607 return; | 1607 return; |
| 1608 | 1608 |
| 1609 result = buildArrayForElementAttributes(element); | 1609 result = buildArrayForElementAttributes(element); |
| 1610 } | 1610 } |
| 1611 | 1611 |
| 1612 void InspectorDOMAgent::requestNode(ErrorString*, const String& objectId, int* n
odeId) | 1612 void InspectorDOMAgent::requestNode(ErrorString*, const String& objectId, int* n
odeId) |
| 1613 { | 1613 { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1683 HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node); | 1683 HTMLFrameOwnerElement* frameOwner = toHTMLFrameOwnerElement(node); |
| 1684 LocalFrame* frame = (frameOwner->contentFrame() && frameOwner->conte
ntFrame()->isLocalFrame()) ? toLocalFrame(frameOwner->contentFrame()) : nullptr; | 1684 LocalFrame* frame = (frameOwner->contentFrame() && frameOwner->conte
ntFrame()->isLocalFrame()) ? toLocalFrame(frameOwner->contentFrame()) : nullptr; |
| 1685 if (frame) | 1685 if (frame) |
| 1686 value->setFrameId(m_pageAgent->frameId(frame)); | 1686 value->setFrameId(m_pageAgent->frameId(frame)); |
| 1687 if (Document* doc = frameOwner->contentDocument()) | 1687 if (Document* doc = frameOwner->contentDocument()) |
| 1688 value->setContentDocument(buildObjectForNode(doc, 0, nodesMap)); | 1688 value->setContentDocument(buildObjectForNode(doc, 0, nodesMap)); |
| 1689 } | 1689 } |
| 1690 | 1690 |
| 1691 ElementShadow* shadow = element->shadow(); | 1691 ElementShadow* shadow = element->shadow(); |
| 1692 if (shadow) { | 1692 if (shadow) { |
| 1693 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > shadowRoots = Ty
peBuilder::Array<TypeBuilder::DOM::Node>::create(); | 1693 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> shadowRoots = Typ
eBuilder::Array<TypeBuilder::DOM::Node>::create(); |
| 1694 for (ShadowRoot* root = shadow->youngestShadowRoot(); root; root = r
oot->olderShadowRoot()) | 1694 for (ShadowRoot* root = shadow->youngestShadowRoot(); root; root = r
oot->olderShadowRoot()) |
| 1695 shadowRoots->addItem(buildObjectForNode(root, 0, nodesMap)); | 1695 shadowRoots->addItem(buildObjectForNode(root, 0, nodesMap)); |
| 1696 value->setShadowRoots(shadowRoots); | 1696 value->setShadowRoots(shadowRoots); |
| 1697 forcePushChildren = true; | 1697 forcePushChildren = true; |
| 1698 } | 1698 } |
| 1699 | 1699 |
| 1700 if (isHTMLLinkElement(*element)) { | 1700 if (isHTMLLinkElement(*element)) { |
| 1701 HTMLLinkElement& linkElement = toHTMLLinkElement(*element); | 1701 HTMLLinkElement& linkElement = toHTMLLinkElement(*element); |
| 1702 if (linkElement.isImport() && linkElement.import() && innerParentNod
e(linkElement.import()) == linkElement) | 1702 if (linkElement.isImport() && linkElement.import() && innerParentNod
e(linkElement.import()) == linkElement) |
| 1703 value->setImportedDocument(buildObjectForNode(linkElement.import
(), 0, nodesMap)); | 1703 value->setImportedDocument(buildObjectForNode(linkElement.import
(), 0, nodesMap)); |
| 1704 forcePushChildren = true; | 1704 forcePushChildren = true; |
| 1705 } | 1705 } |
| 1706 | 1706 |
| 1707 if (isHTMLTemplateElement(*element)) { | 1707 if (isHTMLTemplateElement(*element)) { |
| 1708 value->setTemplateContent(buildObjectForNode(toHTMLTemplateElement(*
element).content(), 0, nodesMap)); | 1708 value->setTemplateContent(buildObjectForNode(toHTMLTemplateElement(*
element).content(), 0, nodesMap)); |
| 1709 forcePushChildren = true; | 1709 forcePushChildren = true; |
| 1710 } | 1710 } |
| 1711 | 1711 |
| 1712 switch (element->pseudoId()) { | 1712 switch (element->pseudoId()) { |
| 1713 case BEFORE: | 1713 case BEFORE: |
| 1714 value->setPseudoType(TypeBuilder::DOM::PseudoType::Before); | 1714 value->setPseudoType(TypeBuilder::DOM::PseudoType::Before); |
| 1715 break; | 1715 break; |
| 1716 case AFTER: | 1716 case AFTER: |
| 1717 value->setPseudoType(TypeBuilder::DOM::PseudoType::After); | 1717 value->setPseudoType(TypeBuilder::DOM::PseudoType::After); |
| 1718 break; | 1718 break; |
| 1719 default: { | 1719 default: { |
| 1720 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > pseudoElements =
buildArrayForPseudoElements(element, nodesMap); | 1720 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> pseudoElements =
buildArrayForPseudoElements(element, nodesMap); |
| 1721 if (pseudoElements) { | 1721 if (pseudoElements) { |
| 1722 value->setPseudoElements(pseudoElements.release()); | 1722 value->setPseudoElements(pseudoElements.release()); |
| 1723 forcePushChildren = true; | 1723 forcePushChildren = true; |
| 1724 } | 1724 } |
| 1725 break; | 1725 break; |
| 1726 } | 1726 } |
| 1727 } | 1727 } |
| 1728 } else if (node->isDocumentNode()) { | 1728 } else if (node->isDocumentNode()) { |
| 1729 Document* document = toDocument(node); | 1729 Document* document = toDocument(node); |
| 1730 value->setDocumentURL(documentURLString(document)); | 1730 value->setDocumentURL(documentURLString(document)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1742 value->setShadowRootType(shadowRootType(toShadowRoot(node))); | 1742 value->setShadowRootType(shadowRootType(toShadowRoot(node))); |
| 1743 } | 1743 } |
| 1744 | 1744 |
| 1745 if (node->isContainerNode()) { | 1745 if (node->isContainerNode()) { |
| 1746 int nodeCount = innerChildNodeCount(node); | 1746 int nodeCount = innerChildNodeCount(node); |
| 1747 value->setChildNodeCount(nodeCount); | 1747 value->setChildNodeCount(nodeCount); |
| 1748 if (nodesMap == m_documentNodeToIdMap) | 1748 if (nodesMap == m_documentNodeToIdMap) |
| 1749 m_cachedChildCount.set(id, nodeCount); | 1749 m_cachedChildCount.set(id, nodeCount); |
| 1750 if (forcePushChildren && !depth) | 1750 if (forcePushChildren && !depth) |
| 1751 depth = 1; | 1751 depth = 1; |
| 1752 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = buildArra
yForContainerChildren(node, depth, nodesMap); | 1752 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> children = buildArray
ForContainerChildren(node, depth, nodesMap); |
| 1753 if (children->length() > 0 || depth) // Push children along with shadow
in any case. | 1753 if (children->length() > 0 || depth) // Push children along with shadow
in any case. |
| 1754 value->setChildren(children.release()); | 1754 value->setChildren(children.release()); |
| 1755 } | 1755 } |
| 1756 | 1756 |
| 1757 return value.release(); | 1757 return value.release(); |
| 1758 } | 1758 } |
| 1759 | 1759 |
| 1760 PassRefPtr<TypeBuilder::Array<String> > InspectorDOMAgent::buildArrayForElementA
ttributes(Element* element) | 1760 PassRefPtr<TypeBuilder::Array<String>> InspectorDOMAgent::buildArrayForElementAt
tributes(Element* element) |
| 1761 { | 1761 { |
| 1762 RefPtr<TypeBuilder::Array<String> > attributesValue = TypeBuilder::Array<Str
ing>::create(); | 1762 RefPtr<TypeBuilder::Array<String>> attributesValue = TypeBuilder::Array<Stri
ng>::create(); |
| 1763 // Go through all attributes and serialize them. | 1763 // Go through all attributes and serialize them. |
| 1764 AttributeCollection attributes = element->attributes(); | 1764 AttributeCollection attributes = element->attributes(); |
| 1765 for (auto& attribute : attributes) { | 1765 for (auto& attribute : attributes) { |
| 1766 // Add attribute pair | 1766 // Add attribute pair |
| 1767 attributesValue->addItem(attribute.name().toString()); | 1767 attributesValue->addItem(attribute.name().toString()); |
| 1768 attributesValue->addItem(attribute.value()); | 1768 attributesValue->addItem(attribute.value()); |
| 1769 } | 1769 } |
| 1770 return attributesValue.release(); | 1770 return attributesValue.release(); |
| 1771 } | 1771 } |
| 1772 | 1772 |
| 1773 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > InspectorDOMAgent::build
ArrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap) | 1773 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> InspectorDOMAgent::buildA
rrayForContainerChildren(Node* container, int depth, NodeToIdMap* nodesMap) |
| 1774 { | 1774 { |
| 1775 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > children = TypeBuilder::
Array<TypeBuilder::DOM::Node>::create(); | 1775 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> children = TypeBuilder::A
rray<TypeBuilder::DOM::Node>::create(); |
| 1776 if (depth == 0) { | 1776 if (depth == 0) { |
| 1777 // Special-case the only text child - pretend that container's children
have been requested. | 1777 // Special-case the only text child - pretend that container's children
have been requested. |
| 1778 Node* firstChild = container->firstChild(); | 1778 Node* firstChild = container->firstChild(); |
| 1779 if (firstChild && firstChild->nodeType() == Node::TEXT_NODE && !firstChi
ld->nextSibling()) { | 1779 if (firstChild && firstChild->nodeType() == Node::TEXT_NODE && !firstChi
ld->nextSibling()) { |
| 1780 children->addItem(buildObjectForNode(firstChild, 0, nodesMap)); | 1780 children->addItem(buildObjectForNode(firstChild, 0, nodesMap)); |
| 1781 m_childrenRequested.add(bind(container, nodesMap)); | 1781 m_childrenRequested.add(bind(container, nodesMap)); |
| 1782 } | 1782 } |
| 1783 return children.release(); | 1783 return children.release(); |
| 1784 } | 1784 } |
| 1785 | 1785 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1830 } | 1830 } |
| 1831 } | 1831 } |
| 1832 } | 1832 } |
| 1833 } | 1833 } |
| 1834 } | 1834 } |
| 1835 if (!sourceName.isEmpty()) | 1835 if (!sourceName.isEmpty()) |
| 1836 value->setSourceName(sourceName); | 1836 value->setSourceName(sourceName); |
| 1837 return value.release(); | 1837 return value.release(); |
| 1838 } | 1838 } |
| 1839 | 1839 |
| 1840 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > InspectorDOMAgent::build
ArrayForPseudoElements(Element* element, NodeToIdMap* nodesMap) | 1840 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> InspectorDOMAgent::buildA
rrayForPseudoElements(Element* element, NodeToIdMap* nodesMap) |
| 1841 { | 1841 { |
| 1842 if (!element->pseudoElement(BEFORE) && !element->pseudoElement(AFTER)) | 1842 if (!element->pseudoElement(BEFORE) && !element->pseudoElement(AFTER)) |
| 1843 return nullptr; | 1843 return nullptr; |
| 1844 | 1844 |
| 1845 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > pseudoElements = TypeBui
lder::Array<TypeBuilder::DOM::Node>::create(); | 1845 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node>> pseudoElements = TypeBuil
der::Array<TypeBuilder::DOM::Node>::create(); |
| 1846 if (element->pseudoElement(BEFORE)) | 1846 if (element->pseudoElement(BEFORE)) |
| 1847 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(BEFORE
), 0, nodesMap)); | 1847 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(BEFORE
), 0, nodesMap)); |
| 1848 if (element->pseudoElement(AFTER)) | 1848 if (element->pseudoElement(AFTER)) |
| 1849 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(AFTER)
, 0, nodesMap)); | 1849 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(AFTER)
, 0, nodesMap)); |
| 1850 return pseudoElements.release(); | 1850 return pseudoElements.release(); |
| 1851 } | 1851 } |
| 1852 | 1852 |
| 1853 Node* InspectorDOMAgent::innerFirstChild(Node* node) | 1853 Node* InspectorDOMAgent::innerFirstChild(Node* node) |
| 1854 { | 1854 { |
| 1855 node = node->firstChild(); | 1855 node = node->firstChild(); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2033 // If node is not mapped yet -> ignore the event. | 2033 // If node is not mapped yet -> ignore the event. |
| 2034 if (!id) | 2034 if (!id) |
| 2035 return; | 2035 return; |
| 2036 | 2036 |
| 2037 if (m_domListener) | 2037 if (m_domListener) |
| 2038 m_domListener->didModifyDOMAttr(element); | 2038 m_domListener->didModifyDOMAttr(element); |
| 2039 | 2039 |
| 2040 m_frontend->attributeRemoved(id, name.toString()); | 2040 m_frontend->attributeRemoved(id, name.toString()); |
| 2041 } | 2041 } |
| 2042 | 2042 |
| 2043 void InspectorDOMAgent::styleAttributeInvalidated(const WillBeHeapVector<RawPtrW
illBeMember<Element> >& elements) | 2043 void InspectorDOMAgent::styleAttributeInvalidated(const WillBeHeapVector<RawPtrW
illBeMember<Element>>& elements) |
| 2044 { | 2044 { |
| 2045 RefPtr<TypeBuilder::Array<int> > nodeIds = TypeBuilder::Array<int>::create()
; | 2045 RefPtr<TypeBuilder::Array<int>> nodeIds = TypeBuilder::Array<int>::create(); |
| 2046 for (unsigned i = 0, size = elements.size(); i < size; ++i) { | 2046 for (unsigned i = 0, size = elements.size(); i < size; ++i) { |
| 2047 Element* element = elements.at(i); | 2047 Element* element = elements.at(i); |
| 2048 int id = boundNodeId(element); | 2048 int id = boundNodeId(element); |
| 2049 // If node is not mapped yet -> ignore the event. | 2049 // If node is not mapped yet -> ignore the event. |
| 2050 if (!id) | 2050 if (!id) |
| 2051 continue; | 2051 continue; |
| 2052 | 2052 |
| 2053 if (m_domListener) | 2053 if (m_domListener) |
| 2054 m_domListener->didModifyDOMAttr(element); | 2054 m_domListener->didModifyDOMAttr(element); |
| 2055 nodeIds->addItem(id); | 2055 nodeIds->addItem(id); |
| 2056 } | 2056 } |
| 2057 m_frontend->inlineStyleInvalidated(nodeIds.release()); | 2057 m_frontend->inlineStyleInvalidated(nodeIds.release()); |
| 2058 } | 2058 } |
| 2059 | 2059 |
| 2060 void InspectorDOMAgent::contentDistributionInvalidated(const WillBeHeapVector<Ra
wPtrWillBeMember<Element> >& elements) | 2060 void InspectorDOMAgent::contentDistributionInvalidated(const WillBeHeapVector<Ra
wPtrWillBeMember<Element>>& elements) |
| 2061 { | 2061 { |
| 2062 RefPtr<TypeBuilder::Array<int> > nodeIds = TypeBuilder::Array<int>::create()
; | 2062 RefPtr<TypeBuilder::Array<int>> nodeIds = TypeBuilder::Array<int>::create(); |
| 2063 for (const auto& it : elements) { | 2063 for (const auto& it : elements) { |
| 2064 Element* element = it.get(); | 2064 Element* element = it.get(); |
| 2065 int id = boundNodeId(element); | 2065 int id = boundNodeId(element); |
| 2066 if (!id) | 2066 if (!id) |
| 2067 continue; | 2067 continue; |
| 2068 nodeIds->addItem(id); | 2068 nodeIds->addItem(id); |
| 2069 } | 2069 } |
| 2070 m_frontend->shadowHostDistributionInvalidated(nodeIds.release()); | 2070 m_frontend->shadowHostDistributionInvalidated(nodeIds.release()); |
| 2071 } | 2071 } |
| 2072 | 2072 |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2227 } | 2227 } |
| 2228 | 2228 |
| 2229 void InspectorDOMAgent::pushNodeByPathToFrontend(ErrorString* errorString, const
String& path, int* nodeId) | 2229 void InspectorDOMAgent::pushNodeByPathToFrontend(ErrorString* errorString, const
String& path, int* nodeId) |
| 2230 { | 2230 { |
| 2231 if (Node* node = nodeForPath(path)) | 2231 if (Node* node = nodeForPath(path)) |
| 2232 *nodeId = pushNodePathToFrontend(node); | 2232 *nodeId = pushNodePathToFrontend(node); |
| 2233 else | 2233 else |
| 2234 *errorString = "No node with given path found"; | 2234 *errorString = "No node with given path found"; |
| 2235 } | 2235 } |
| 2236 | 2236 |
| 2237 void InspectorDOMAgent::pushNodesByBackendIdsToFrontend(ErrorString* errorString
, const RefPtr<JSONArray>& backendNodeIds, RefPtr<TypeBuilder::Array<int> >& res
ult) | 2237 void InspectorDOMAgent::pushNodesByBackendIdsToFrontend(ErrorString* errorString
, const RefPtr<JSONArray>& backendNodeIds, RefPtr<TypeBuilder::Array<int>>& resu
lt) |
| 2238 { | 2238 { |
| 2239 result = TypeBuilder::Array<int>::create(); | 2239 result = TypeBuilder::Array<int>::create(); |
| 2240 for (const auto& backendNode : *backendNodeIds) { | 2240 for (const auto& backendNode : *backendNodeIds) { |
| 2241 int backendNodeId; | 2241 int backendNodeId; |
| 2242 | 2242 |
| 2243 if (!(backendNode)->asNumber(&backendNodeId)) { | 2243 if (!(backendNode)->asNumber(&backendNodeId)) { |
| 2244 *errorString = "Invalid argument type"; | 2244 *errorString = "Invalid argument type"; |
| 2245 return; | 2245 return; |
| 2246 } | 2246 } |
| 2247 | 2247 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2307 visitor->trace(m_revalidateTask); | 2307 visitor->trace(m_revalidateTask); |
| 2308 visitor->trace(m_searchResults); | 2308 visitor->trace(m_searchResults); |
| 2309 #endif | 2309 #endif |
| 2310 visitor->trace(m_history); | 2310 visitor->trace(m_history); |
| 2311 visitor->trace(m_domEditor); | 2311 visitor->trace(m_domEditor); |
| 2312 visitor->trace(m_listener); | 2312 visitor->trace(m_listener); |
| 2313 InspectorBaseAgent::trace(visitor); | 2313 InspectorBaseAgent::trace(visitor); |
| 2314 } | 2314 } |
| 2315 | 2315 |
| 2316 } // namespace blink | 2316 } // namespace blink |
| OLD | NEW |