| 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 930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 getEventListeners(node, eventInformation, true); | 941 getEventListeners(node, eventInformation, true); |
| 942 | 942 |
| 943 // Get Capturing Listeners (in this order) | 943 // Get Capturing Listeners (in this order) |
| 944 size_t eventInformationLength = eventInformation.size(); | 944 size_t eventInformationLength = eventInformation.size(); |
| 945 for (size_t i = 0; i < eventInformationLength; ++i) { | 945 for (size_t i = 0; i < eventInformationLength; ++i) { |
| 946 const EventListenerInfo& info = eventInformation[i]; | 946 const EventListenerInfo& info = eventInformation[i]; |
| 947 const EventListenerVector& vector = info.eventListenerVector; | 947 const EventListenerVector& vector = info.eventListenerVector; |
| 948 for (size_t j = 0; j < vector.size(); ++j) { | 948 for (size_t j = 0; j < vector.size(); ++j) { |
| 949 const RegisteredEventListener& listener = vector[j]; | 949 const RegisteredEventListener& listener = vector[j]; |
| 950 if (listener.useCapture) { | 950 if (listener.useCapture) { |
| 951 RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildOb
jectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objec
tGroup); | 951 RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildOb
jectForEventListener(listener, info.eventType, info.eventTarget, objectGroup); |
| 952 if (listenerObject) | 952 if (listenerObject) |
| 953 listenersArray->addItem(listenerObject); | 953 listenersArray->addItem(listenerObject); |
| 954 } | 954 } |
| 955 } | 955 } |
| 956 } | 956 } |
| 957 | 957 |
| 958 // Get Bubbling Listeners (reverse order) | 958 // Get Bubbling Listeners (reverse order) |
| 959 for (size_t i = eventInformationLength; i; --i) { | 959 for (size_t i = eventInformationLength; i; --i) { |
| 960 const EventListenerInfo& info = eventInformation[i - 1]; | 960 const EventListenerInfo& info = eventInformation[i - 1]; |
| 961 const EventListenerVector& vector = info.eventListenerVector; | 961 const EventListenerVector& vector = info.eventListenerVector; |
| 962 for (size_t j = 0; j < vector.size(); ++j) { | 962 for (size_t j = 0; j < vector.size(); ++j) { |
| 963 const RegisteredEventListener& listener = vector[j]; | 963 const RegisteredEventListener& listener = vector[j]; |
| 964 if (!listener.useCapture) { | 964 if (!listener.useCapture) { |
| 965 RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildOb
jectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objec
tGroup); | 965 RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildOb
jectForEventListener(listener, info.eventType, info.eventTarget, objectGroup); |
| 966 if (listenerObject) | 966 if (listenerObject) |
| 967 listenersArray->addItem(listenerObject); | 967 listenersArray->addItem(listenerObject); |
| 968 } | 968 } |
| 969 } | 969 } |
| 970 } | 970 } |
| 971 } | 971 } |
| 972 | 972 |
| 973 void InspectorDOMAgent::getEventListeners(EventTarget* target, Vector<EventListe
nerInfo>& eventInformation, bool includeAncestors) | 973 void InspectorDOMAgent::getEventListeners(EventTarget* target, Vector<EventListe
nerInfo>& eventInformation, bool includeAncestors) |
| 974 { | 974 { |
| 975 // The Node's Ancestors including self. | 975 // The Node's Ancestors including self. |
| 976 Vector<EventTarget*> ancestors; | 976 Vector<EventTarget*> ancestors; |
| 977 ancestors.append(target); | 977 ancestors.append(target); |
| 978 if (includeAncestors) { | 978 if (includeAncestors) { |
| 979 Node* node = target->toNode(); | 979 Node* node = target->toNode(); |
| 980 for (ContainerNode* ancestor = node ? node->parentOrShadowHostNode() : n
ullptr; ancestor; ancestor = ancestor->parentOrShadowHostNode()) | 980 for (ContainerNode* ancestor = node ? node->parentOrShadowHostNode() : n
ullptr; ancestor; ancestor = ancestor->parentOrShadowHostNode()) |
| 981 ancestors.append(ancestor); | 981 ancestors.append(ancestor); |
| 982 if (ExecutionContext* context = target->executionContext()) { |
| 983 if (LocalDOMWindow* window = context->executingWindow()) |
| 984 ancestors.append(window); |
| 985 } |
| 982 } | 986 } |
| 983 | 987 |
| 984 // Nodes and their Listeners for the concerned event types (order is top to
bottom) | 988 // Nodes and their Listeners for the concerned event types (order is top to
bottom) |
| 985 for (size_t i = ancestors.size(); i; --i) { | 989 for (size_t i = ancestors.size(); i; --i) { |
| 986 EventTarget* ancestor = ancestors[i - 1]; | 990 EventTarget* ancestor = ancestors[i - 1]; |
| 987 Vector<AtomicString> eventTypes = ancestor->eventTypes(); | 991 Vector<AtomicString> eventTypes = ancestor->eventTypes(); |
| 988 for (size_t j = 0; j < eventTypes.size(); ++j) { | 992 for (size_t j = 0; j < eventTypes.size(); ++j) { |
| 989 AtomicString& type = eventTypes[j]; | 993 AtomicString& type = eventTypes[j]; |
| 990 const EventListenerVector& listeners = ancestor->getEventListeners(t
ype); | 994 const EventListenerVector& listeners = ancestor->getEventListeners(t
ype); |
| 991 EventListenerVector filteredListeners; | 995 EventListenerVector filteredListeners; |
| (...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1749 depth--; | 1753 depth--; |
| 1750 m_childrenRequested.add(bind(container, nodesMap)); | 1754 m_childrenRequested.add(bind(container, nodesMap)); |
| 1751 | 1755 |
| 1752 while (child) { | 1756 while (child) { |
| 1753 children->addItem(buildObjectForNode(child, depth, nodesMap)); | 1757 children->addItem(buildObjectForNode(child, depth, nodesMap)); |
| 1754 child = innerNextSibling(child); | 1758 child = innerNextSibling(child); |
| 1755 } | 1759 } |
| 1756 return children.release(); | 1760 return children.release(); |
| 1757 } | 1761 } |
| 1758 | 1762 |
| 1759 PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEve
ntListener(const RegisteredEventListener& registeredEventListener, const AtomicS
tring& eventType, Node* node, const String* objectGroupId) | 1763 PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEve
ntListener(const RegisteredEventListener& registeredEventListener, const AtomicS
tring& eventType, EventTarget* target, const String* objectGroupId) |
| 1760 { | 1764 { |
| 1761 RefPtr<EventListener> eventListener = registeredEventListener.listener; | 1765 RefPtr<EventListener> eventListener = registeredEventListener.listener; |
| 1762 String scriptId; | 1766 String scriptId; |
| 1763 int lineNumber; | 1767 int lineNumber; |
| 1764 int columnNumber; | 1768 int columnNumber; |
| 1765 if (!eventListenerHandlerLocation(&node->document(), eventListener.get(), sc
riptId, lineNumber, columnNumber)) | 1769 Document* document = nullptr; |
| 1770 if (Node* node = target->toNode()) |
| 1771 document = &node->document(); |
| 1772 else if (DOMWindow* window = target->toDOMWindow()) |
| 1773 document = window->document(); |
| 1774 |
| 1775 if (!document) |
| 1776 return nullptr; |
| 1777 if (!eventListenerHandlerLocation(document, eventListener.get(), scriptId, l
ineNumber, columnNumber)) |
| 1766 return nullptr; | 1778 return nullptr; |
| 1767 | 1779 |
| 1768 Document& document = node->document(); | |
| 1769 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() | 1780 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() |
| 1770 .setScriptId(scriptId) | 1781 .setScriptId(scriptId) |
| 1771 .setLineNumber(lineNumber); | 1782 .setLineNumber(lineNumber); |
| 1772 location->setColumnNumber(columnNumber); | 1783 location->setColumnNumber(columnNumber); |
| 1773 RefPtr<TypeBuilder::DOM::EventListener> value = TypeBuilder::DOM::EventListe
ner::create() | 1784 RefPtr<TypeBuilder::DOM::EventListener> value = TypeBuilder::DOM::EventListe
ner::create() |
| 1774 .setType(eventType) | 1785 .setType(eventType) |
| 1775 .setUseCapture(registeredEventListener.useCapture) | 1786 .setUseCapture(registeredEventListener.useCapture) |
| 1776 .setIsAttribute(eventListener->isAttribute()) | 1787 .setIsAttribute(eventListener->isAttribute()) |
| 1777 .setNodeId(pushNodePathToFrontend(node)) | |
| 1778 .setLocation(location); | 1788 .setLocation(location); |
| 1789 |
| 1790 if (Node* node = target->toNode()) |
| 1791 value->setNodeId(pushNodePathToFrontend(node)); |
| 1792 |
| 1779 if (objectGroupId) { | 1793 if (objectGroupId) { |
| 1780 ScriptValue functionValue = eventListenerHandler(&document, eventListene
r.get()); | 1794 ScriptValue functionValue = eventListenerHandler(document, eventListener
.get()); |
| 1781 if (!functionValue.isEmpty()) { | 1795 if (!functionValue.isEmpty()) { |
| 1782 LocalFrame* frame = document.frame(); | 1796 LocalFrame* frame = document->frame(); |
| 1783 if (frame) { | 1797 if (frame) { |
| 1784 ScriptState* scriptState = eventListenerHandlerScriptState(frame
, eventListener.get()); | 1798 ScriptState* scriptState = eventListenerHandlerScriptState(frame
, eventListener.get()); |
| 1785 if (scriptState) { | 1799 if (scriptState) { |
| 1786 InjectedScript injectedScript = m_injectedScriptManager->inj
ectedScriptFor(scriptState); | 1800 InjectedScript injectedScript = m_injectedScriptManager->inj
ectedScriptFor(scriptState); |
| 1787 if (!injectedScript.isEmpty()) { | 1801 if (!injectedScript.isEmpty()) { |
| 1788 RefPtr<TypeBuilder::Runtime::RemoteObject> valueJson = i
njectedScript.wrapObject(functionValue, *objectGroupId); | 1802 RefPtr<TypeBuilder::Runtime::RemoteObject> valueJson = i
njectedScript.wrapObject(functionValue, *objectGroupId); |
| 1789 value->setHandler(valueJson); | 1803 value->setHandler(valueJson); |
| 1790 } | 1804 } |
| 1791 } | 1805 } |
| 1792 } | 1806 } |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2299 visitor->trace(m_searchResults); | 2313 visitor->trace(m_searchResults); |
| 2300 #endif | 2314 #endif |
| 2301 visitor->trace(m_hoveredNodeForInspectMode); | 2315 visitor->trace(m_hoveredNodeForInspectMode); |
| 2302 visitor->trace(m_history); | 2316 visitor->trace(m_history); |
| 2303 visitor->trace(m_domEditor); | 2317 visitor->trace(m_domEditor); |
| 2304 visitor->trace(m_listener); | 2318 visitor->trace(m_listener); |
| 2305 InspectorBaseAgent::trace(visitor); | 2319 InspectorBaseAgent::trace(visitor); |
| 2306 } | 2320 } |
| 2307 | 2321 |
| 2308 } // namespace blink | 2322 } // namespace blink |
| OLD | NEW |