Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Side by Side Diff: Source/core/inspector/InspectorDOMAgent.cpp

Issue 145133008: DevTools: Make getEventListeners() of Console API work for window. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: addressed Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/inspector/InspectorDOMAgent.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 845 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 getEventListeners(node, eventInformation, true); 856 getEventListeners(node, eventInformation, true);
857 857
858 // Get Capturing Listeners (in this order) 858 // Get Capturing Listeners (in this order)
859 size_t eventInformationLength = eventInformation.size(); 859 size_t eventInformationLength = eventInformation.size();
860 for (size_t i = 0; i < eventInformationLength; ++i) { 860 for (size_t i = 0; i < eventInformationLength; ++i) {
861 const EventListenerInfo& info = eventInformation[i]; 861 const EventListenerInfo& info = eventInformation[i];
862 const EventListenerVector& vector = info.eventListenerVector; 862 const EventListenerVector& vector = info.eventListenerVector;
863 for (size_t j = 0; j < vector.size(); ++j) { 863 for (size_t j = 0; j < vector.size(); ++j) {
864 const RegisteredEventListener& listener = vector[j]; 864 const RegisteredEventListener& listener = vector[j];
865 if (listener.useCapture) 865 if (listener.useCapture)
866 listenersArray->addItem(buildObjectForEventListener(listener, in fo.eventType, info.node, objectGroup)); 866 listenersArray->addItem(buildObjectForEventListener(listener, in fo.eventType, info.eventTarget->toNode(), objectGroup));
867 } 867 }
868 } 868 }
869 869
870 // Get Bubbling Listeners (reverse order) 870 // Get Bubbling Listeners (reverse order)
871 for (size_t i = eventInformationLength; i; --i) { 871 for (size_t i = eventInformationLength; i; --i) {
872 const EventListenerInfo& info = eventInformation[i - 1]; 872 const EventListenerInfo& info = eventInformation[i - 1];
873 const EventListenerVector& vector = info.eventListenerVector; 873 const EventListenerVector& vector = info.eventListenerVector;
874 for (size_t j = 0; j < vector.size(); ++j) { 874 for (size_t j = 0; j < vector.size(); ++j) {
875 const RegisteredEventListener& listener = vector[j]; 875 const RegisteredEventListener& listener = vector[j];
876 if (!listener.useCapture) 876 if (!listener.useCapture)
877 listenersArray->addItem(buildObjectForEventListener(listener, in fo.eventType, info.node, objectGroup)); 877 listenersArray->addItem(buildObjectForEventListener(listener, in fo.eventType, info.eventTarget->toNode(), objectGroup));
878 } 878 }
879 } 879 }
880 } 880 }
881 881
882 void InspectorDOMAgent::getEventListeners(Node* node, Vector<EventListenerInfo>& eventInformation, bool includeAncestors) 882 void InspectorDOMAgent::getEventListeners(EventTarget* target, Vector<EventListe nerInfo>& eventInformation, bool includeAncestors)
883 { 883 {
884 // The Node's Ancestors including self. 884 // The Node's Ancestors including self.
885 Vector<Node*> ancestors; 885 Vector<EventTarget*> ancestors;
886 // Push this node as the firs element. 886 ancestors.append(target);
887 ancestors.append(node);
888 if (includeAncestors) { 887 if (includeAncestors) {
889 for (ContainerNode* ancestor = node->parentOrShadowHostNode(); ancestor; ancestor = ancestor->parentOrShadowHostNode()) 888 Node* node = target->toNode();
889 for (ContainerNode* ancestor = node ? node->parentOrShadowHostNode() : 0 ; ancestor; ancestor = ancestor->parentOrShadowHostNode())
890 ancestors.append(ancestor); 890 ancestors.append(ancestor);
891 } 891 }
892 892
893 // Nodes and their Listeners for the concerned event types (order is top to bottom) 893 // Nodes and their Listeners for the concerned event types (order is top to bottom)
894 for (size_t i = ancestors.size(); i; --i) { 894 for (size_t i = ancestors.size(); i; --i) {
895 Node* ancestor = ancestors[i - 1]; 895 EventTarget* ancestor = ancestors[i - 1];
896 EventTargetData* d = ancestor->eventTargetData(); 896 Vector<AtomicString> eventTypes = ancestor->eventTypes();
897 if (!d)
898 continue;
899 // Get the list of event types this Node is concerned with
900 Vector<AtomicString> eventTypes = d->eventListenerMap.eventTypes();
901 for (size_t j = 0; j < eventTypes.size(); ++j) { 897 for (size_t j = 0; j < eventTypes.size(); ++j) {
902 AtomicString& type = eventTypes[j]; 898 AtomicString& type = eventTypes[j];
903 const EventListenerVector& listeners = ancestor->getEventListeners(t ype); 899 const EventListenerVector& listeners = ancestor->getEventListeners(t ype);
904 EventListenerVector filteredListeners; 900 EventListenerVector filteredListeners;
905 filteredListeners.reserveCapacity(listeners.size()); 901 filteredListeners.reserveCapacity(listeners.size());
906 for (size_t k = 0; k < listeners.size(); ++k) { 902 for (size_t k = 0; k < listeners.size(); ++k) {
907 if (listeners[k].listener->type() == EventListener::JSEventListe nerType) 903 if (listeners[k].listener->type() == EventListener::JSEventListe nerType)
908 filteredListeners.append(listeners[k]); 904 filteredListeners.append(listeners[k]);
909 } 905 }
910 if (!filteredListeners.isEmpty()) 906 if (!filteredListeners.isEmpty())
(...skipping 1117 matching lines...) Expand 10 before | Expand all | Expand 10 after
2028 if (!m_documentNodeToIdMap.contains(m_document)) { 2024 if (!m_documentNodeToIdMap.contains(m_document)) {
2029 RefPtr<TypeBuilder::DOM::Node> root; 2025 RefPtr<TypeBuilder::DOM::Node> root;
2030 getDocument(errorString, root); 2026 getDocument(errorString, root);
2031 return errorString->isEmpty(); 2027 return errorString->isEmpty();
2032 } 2028 }
2033 return true; 2029 return true;
2034 } 2030 }
2035 2031
2036 } // namespace WebCore 2032 } // namespace WebCore
2037 2033
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorDOMAgent.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698