| Index: Source/core/inspector/InspectorDOMAgent.cpp
|
| diff --git a/Source/core/inspector/InspectorDOMAgent.cpp b/Source/core/inspector/InspectorDOMAgent.cpp
|
| index 968bfa0cd9160df7bbdb8168495eb0073a19b52c..b63d1498ea6539b3725036a08ce5dc9c4268776b 100644
|
| --- a/Source/core/inspector/InspectorDOMAgent.cpp
|
| +++ b/Source/core/inspector/InspectorDOMAgent.cpp
|
| @@ -948,7 +948,7 @@ void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int n
|
| for (size_t j = 0; j < vector.size(); ++j) {
|
| const RegisteredEventListener& listener = vector[j];
|
| if (listener.useCapture) {
|
| - RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup);
|
| + RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget, objectGroup);
|
| if (listenerObject)
|
| listenersArray->addItem(listenerObject);
|
| }
|
| @@ -962,7 +962,7 @@ void InspectorDOMAgent::getEventListenersForNode(ErrorString* errorString, int n
|
| for (size_t j = 0; j < vector.size(); ++j) {
|
| const RegisteredEventListener& listener = vector[j];
|
| if (!listener.useCapture) {
|
| - RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget->toNode(), objectGroup);
|
| + RefPtr<TypeBuilder::DOM::EventListener> listenerObject = buildObjectForEventListener(listener, info.eventType, info.eventTarget, objectGroup);
|
| if (listenerObject)
|
| listenersArray->addItem(listenerObject);
|
| }
|
| @@ -979,6 +979,10 @@ void InspectorDOMAgent::getEventListeners(EventTarget* target, Vector<EventListe
|
| Node* node = target->toNode();
|
| for (ContainerNode* ancestor = node ? node->parentOrShadowHostNode() : nullptr; ancestor; ancestor = ancestor->parentOrShadowHostNode())
|
| ancestors.append(ancestor);
|
| + if (ExecutionContext* context = target->executionContext()) {
|
| + if (LocalDOMWindow* window = context->executingWindow())
|
| + ancestors.append(window);
|
| + }
|
| }
|
|
|
| // Nodes and their Listeners for the concerned event types (order is top to bottom)
|
| @@ -1756,16 +1760,23 @@ PassRefPtr<TypeBuilder::Array<TypeBuilder::DOM::Node> > InspectorDOMAgent::build
|
| return children.release();
|
| }
|
|
|
| -PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, Node* node, const String* objectGroupId)
|
| +PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEventListener(const RegisteredEventListener& registeredEventListener, const AtomicString& eventType, EventTarget* target, const String* objectGroupId)
|
| {
|
| RefPtr<EventListener> eventListener = registeredEventListener.listener;
|
| String scriptId;
|
| int lineNumber;
|
| int columnNumber;
|
| - if (!eventListenerHandlerLocation(&node->document(), eventListener.get(), scriptId, lineNumber, columnNumber))
|
| + Document* document = nullptr;
|
| + if (Node* node = target->toNode())
|
| + document = &node->document();
|
| + else if (DOMWindow* window = target->toDOMWindow())
|
| + document = window->document();
|
| +
|
| + if (!document)
|
| + return nullptr;
|
| + if (!eventListenerHandlerLocation(document, eventListener.get(), scriptId, lineNumber, columnNumber))
|
| return nullptr;
|
|
|
| - Document& document = node->document();
|
| RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Location::create()
|
| .setScriptId(scriptId)
|
| .setLineNumber(lineNumber);
|
| @@ -1774,12 +1785,15 @@ PassRefPtr<TypeBuilder::DOM::EventListener> InspectorDOMAgent::buildObjectForEve
|
| .setType(eventType)
|
| .setUseCapture(registeredEventListener.useCapture)
|
| .setIsAttribute(eventListener->isAttribute())
|
| - .setNodeId(pushNodePathToFrontend(node))
|
| .setLocation(location);
|
| +
|
| + if (Node* node = target->toNode())
|
| + value->setNodeId(pushNodePathToFrontend(node));
|
| +
|
| if (objectGroupId) {
|
| - ScriptValue functionValue = eventListenerHandler(&document, eventListener.get());
|
| + ScriptValue functionValue = eventListenerHandler(document, eventListener.get());
|
| if (!functionValue.isEmpty()) {
|
| - LocalFrame* frame = document.frame();
|
| + LocalFrame* frame = document->frame();
|
| if (frame) {
|
| ScriptState* scriptState = eventListenerHandlerScriptState(frame, eventListener.get());
|
| if (scriptState) {
|
|
|