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 14 matching lines...) Expand all Loading... |
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "config.h" | 31 #include "config.h" |
32 #include "core/inspector/InspectorDOMAgent.h" | 32 #include "core/inspector/InspectorDOMAgent.h" |
33 | 33 |
34 #include "bindings/core/v8/ExceptionState.h" | 34 #include "bindings/core/v8/ExceptionState.h" |
35 #include "bindings/core/v8/ScriptEventListener.h" | |
36 #include "core/InputTypeNames.h" | 35 #include "core/InputTypeNames.h" |
37 #include "core/dom/Attr.h" | 36 #include "core/dom/Attr.h" |
38 #include "core/dom/CharacterData.h" | 37 #include "core/dom/CharacterData.h" |
39 #include "core/dom/ContainerNode.h" | 38 #include "core/dom/ContainerNode.h" |
40 #include "core/dom/DOMException.h" | 39 #include "core/dom/DOMException.h" |
41 #include "core/dom/DOMNodeIds.h" | 40 #include "core/dom/DOMNodeIds.h" |
42 #include "core/dom/Document.h" | 41 #include "core/dom/Document.h" |
43 #include "core/dom/DocumentFragment.h" | 42 #include "core/dom/DocumentFragment.h" |
44 #include "core/dom/DocumentType.h" | 43 #include "core/dom/DocumentType.h" |
45 #include "core/dom/Element.h" | 44 #include "core/dom/Element.h" |
(...skipping 11 matching lines...) Expand all Loading... |
57 #include "core/fileapi/FileList.h" | 56 #include "core/fileapi/FileList.h" |
58 #include "core/frame/LocalFrame.h" | 57 #include "core/frame/LocalFrame.h" |
59 #include "core/html/HTMLFrameOwnerElement.h" | 58 #include "core/html/HTMLFrameOwnerElement.h" |
60 #include "core/html/HTMLInputElement.h" | 59 #include "core/html/HTMLInputElement.h" |
61 #include "core/html/HTMLLinkElement.h" | 60 #include "core/html/HTMLLinkElement.h" |
62 #include "core/html/HTMLTemplateElement.h" | 61 #include "core/html/HTMLTemplateElement.h" |
63 #include "core/html/imports/HTMLImportChild.h" | 62 #include "core/html/imports/HTMLImportChild.h" |
64 #include "core/html/imports/HTMLImportLoader.h" | 63 #include "core/html/imports/HTMLImportLoader.h" |
65 #include "core/inspector/DOMEditor.h" | 64 #include "core/inspector/DOMEditor.h" |
66 #include "core/inspector/DOMPatchSupport.h" | 65 #include "core/inspector/DOMPatchSupport.h" |
67 #include "core/inspector/EventListenerInfo.h" | |
68 #include "core/inspector/IdentifiersFactory.h" | 66 #include "core/inspector/IdentifiersFactory.h" |
69 #include "core/inspector/InjectedScriptHost.h" | 67 #include "core/inspector/InjectedScriptHost.h" |
70 #include "core/inspector/InjectedScriptManager.h" | 68 #include "core/inspector/InjectedScriptManager.h" |
71 #include "core/inspector/InspectorHighlight.h" | 69 #include "core/inspector/InspectorHighlight.h" |
72 #include "core/inspector/InspectorHistory.h" | 70 #include "core/inspector/InspectorHistory.h" |
73 #include "core/inspector/InspectorIdentifiers.h" | 71 #include "core/inspector/InspectorIdentifiers.h" |
74 #include "core/inspector/InspectorOverlay.h" | 72 #include "core/inspector/InspectorOverlay.h" |
75 #include "core/inspector/InspectorPageAgent.h" | 73 #include "core/inspector/InspectorPageAgent.h" |
76 #include "core/inspector/InspectorState.h" | 74 #include "core/inspector/InspectorState.h" |
77 #include "core/inspector/InstrumentingAgents.h" | 75 #include "core/inspector/InstrumentingAgents.h" |
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 return; | 924 return; |
927 | 925 |
928 if (node->nodeType() != Node::TEXT_NODE) { | 926 if (node->nodeType() != Node::TEXT_NODE) { |
929 *errorString = "Can only set value of text nodes"; | 927 *errorString = "Can only set value of text nodes"; |
930 return; | 928 return; |
931 } | 929 } |
932 | 930 |
933 m_domEditor->replaceWholeText(toText(node), value, errorString); | 931 m_domEditor->replaceWholeText(toText(node), value, errorString); |
934 } | 932 } |
935 | 933 |
936 void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int n
odeId, const String* objectGroup, RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Ev
entListener> >& listenersArray) | |
937 { | |
938 listenersArray = TypeBuilder::Array<TypeBuilder::DOM::EventListener>::create
(); | |
939 Node* node = assertNode(errorString, nodeId); | |
940 if (!node) | |
941 return; | |
942 Vector<EventListenerInfo> eventInformation; | |
943 EventListenerInfo::getEventListeners(node, eventInformation, true); | |
944 if (!eventInformation.size()) | |
945 return; | |
946 RegisteredEventListenerIterator iterator(eventInformation); | |
947 while (const RegisteredEventListener* listener = iterator.nextRegisteredEven
tListener()) { | |
948 const EventListenerInfo& info = iterator.currentEventListenerInfo(); | |
949 RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForE
ventListener(*listener, info.eventType, info.eventTarget->toNode(), objectGroup)
; | |
950 if (listenerObject) | |
951 listenersArray->addItem(listenerObject); | |
952 } | |
953 } | |
954 | |
955 static Node* nextNodeWithShadowDOMInMind(const Node& current, const Node* stayWi
thin, bool includeUserAgentShadowDOM) | 934 static Node* nextNodeWithShadowDOMInMind(const Node& current, const Node* stayWi
thin, bool includeUserAgentShadowDOM) |
956 { | 935 { |
957 // At first traverse the subtree. | 936 // At first traverse the subtree. |
958 if (current.isElementNode()) { | 937 if (current.isElementNode()) { |
959 const Element& element = toElement(current); | 938 const Element& element = toElement(current); |
960 ElementShadow* elementShadow = element.shadow(); | 939 ElementShadow* elementShadow = element.shadow(); |
961 if (elementShadow) { | 940 if (elementShadow) { |
962 ShadowRoot* shadowRoot = elementShadow->youngestShadowRoot(); | 941 ShadowRoot* shadowRoot = elementShadow->youngestShadowRoot(); |
963 if (shadowRoot) { | 942 if (shadowRoot) { |
964 if (shadowRoot->type() == ShadowRoot::OpenShadowRoot || includeU
serAgentShadowDOM) | 943 if (shadowRoot->type() == ShadowRoot::OpenShadowRoot || includeU
serAgentShadowDOM) |
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1700 depth--; | 1679 depth--; |
1701 m_childrenRequested.add(bind(container, nodesMap)); | 1680 m_childrenRequested.add(bind(container, nodesMap)); |
1702 | 1681 |
1703 while (child) { | 1682 while (child) { |
1704 children->addItem(buildObjectForNode(child, depth, nodesMap)); | 1683 children->addItem(buildObjectForNode(child, depth, nodesMap)); |
1705 child = innerNextSibling(child); | 1684 child = innerNextSibling(child); |
1706 } | 1685 } |
1707 return children.release(); | 1686 return children.release(); |
1708 } | 1687 } |
1709 | 1688 |
1710 PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEve
ntListener(const RegisteredEventListener& registeredEventListener, const AtomicS
tring& eventType, Node* node, const String* objectGroupId) | |
1711 { | |
1712 RefPtr<EventListener> eventListener = registeredEventListener.listener; | |
1713 String scriptId; | |
1714 int lineNumber; | |
1715 int columnNumber; | |
1716 if (!eventListenerHandlerLocation(&node->document(), eventListener.get(), sc
riptId, lineNumber, columnNumber)) | |
1717 return nullptr; | |
1718 | |
1719 Document& document = node->document(); | |
1720 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() | |
1721 .setScriptId(scriptId) | |
1722 .setLineNumber(lineNumber); | |
1723 location->setColumnNumber(columnNumber); | |
1724 RefPtr<TypeBuilder::DOM::EventListener> value = TypeBuilder::DOM::EventListe
ner::create() | |
1725 .setType(eventType) | |
1726 .setUseCapture(registeredEventListener.useCapture) | |
1727 .setIsAttribute(eventListener->isAttribute()) | |
1728 .setNodeId(pushNodePathToFrontend(node)) | |
1729 .setLocation(location); | |
1730 if (objectGroupId) | |
1731 value->setHandler(eventHandlerObject(&document, eventListener.get(), m_i
njectedScriptManager, objectGroupId)); | |
1732 return value.release(); | |
1733 } | |
1734 | |
1735 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > InspectorDOMAgent::build
ArrayForPseudoElements(Element* element, NodeToIdMap* nodesMap) | 1689 PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > InspectorDOMAgent::build
ArrayForPseudoElements(Element* element, NodeToIdMap* nodesMap) |
1736 { | 1690 { |
1737 if (!element->pseudoElement(BEFORE) && !element->pseudoElement(AFTER)) | 1691 if (!element->pseudoElement(BEFORE) && !element->pseudoElement(AFTER)) |
1738 return nullptr; | 1692 return nullptr; |
1739 | 1693 |
1740 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > pseudoElements = TypeBui
lder::Array<TypeBuilder::DOM::Node>::create(); | 1694 RefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > pseudoElements = TypeBui
lder::Array<TypeBuilder::DOM::Node>::create(); |
1741 if (element->pseudoElement(BEFORE)) | 1695 if (element->pseudoElement(BEFORE)) |
1742 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(BEFORE
), 0, nodesMap)); | 1696 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(BEFORE
), 0, nodesMap)); |
1743 if (element->pseudoElement(AFTER)) | 1697 if (element->pseudoElement(AFTER)) |
1744 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(AFTER)
, 0, nodesMap)); | 1698 pseudoElements->addItem(buildObjectForNode(element->pseudoElement(AFTER)
, 0, nodesMap)); |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2236 visitor->trace(m_searchResults); | 2190 visitor->trace(m_searchResults); |
2237 #endif | 2191 #endif |
2238 visitor->trace(m_hoveredNodeForInspectMode); | 2192 visitor->trace(m_hoveredNodeForInspectMode); |
2239 visitor->trace(m_history); | 2193 visitor->trace(m_history); |
2240 visitor->trace(m_domEditor); | 2194 visitor->trace(m_domEditor); |
2241 visitor->trace(m_listener); | 2195 visitor->trace(m_listener); |
2242 InspectorBaseAgent::trace(visitor); | 2196 InspectorBaseAgent::trace(visitor); |
2243 } | 2197 } |
2244 | 2198 |
2245 } // namespace blink | 2199 } // namespace blink |
OLD | NEW |