Title: [111574] trunk/Source/WebCore
Revision
111574
Author
[email protected]
Date
2012-03-21 10:49:51 -0700 (Wed, 21 Mar 2012)

Log Message

Web Inspector: only show JS event listeners in Event Listeners tab of Elements panel
https://bugs.webkit.org/show_bug.cgi?id=81798

Reviewed by Pavel Feldman.

* bindings/js/JSInjectedScriptHostCustom.cpp:
(WebCore::getJSListenerFunctions):
* bindings/js/ScriptEventListener.cpp:
(WebCore::eventListenerHandlerBody):
(WebCore::eventListenerHandlerLocation):
* bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
(WebCore::getJSListenerFunctions):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getEventListeners):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (111573 => 111574)


--- trunk/Source/WebCore/ChangeLog	2012-03-21 17:47:08 UTC (rev 111573)
+++ trunk/Source/WebCore/ChangeLog	2012-03-21 17:49:51 UTC (rev 111574)
@@ -1,5 +1,22 @@
 2012-03-21  Andrey Kosyakov  <[email protected]>
 
+        Web Inspector: only show JS event listeners in Event Listeners tab of Elements panel
+        https://bugs.webkit.org/show_bug.cgi?id=81798
+
+        Reviewed by Pavel Feldman.
+
+        * bindings/js/JSInjectedScriptHostCustom.cpp:
+        (WebCore::getJSListenerFunctions):
+        * bindings/js/ScriptEventListener.cpp:
+        (WebCore::eventListenerHandlerBody):
+        (WebCore::eventListenerHandlerLocation):
+        * bindings/v8/custom/V8InjectedScriptHostCustom.cpp:
+        (WebCore::getJSListenerFunctions):
+        * inspector/InspectorDOMAgent.cpp:
+        (WebCore::InspectorDOMAgent::getEventListeners):
+
+2012-03-21  Andrey Kosyakov  <[email protected]>
+
         EventListener::Type enum has unused member InspectorDOMAgentType
         https://bugs.webkit.org/show_bug.cgi?id=81794
 

Modified: trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp (111573 => 111574)


--- trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp	2012-03-21 17:47:08 UTC (rev 111573)
+++ trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp	2012-03-21 17:49:51 UTC (rev 111574)
@@ -193,8 +193,10 @@
     size_t handlersCount = listenerInfo.eventListenerVector.size();
     for (size_t i = 0, outputIndex = 0; i < handlersCount; ++i) {
         const JSEventListener* jsListener = JSEventListener::cast(listenerInfo.eventListenerVector[i].listener.get());
-        if (!jsListener)
+        if (!jsListener) {
+            ASSERT_NOT_REACHED();
             continue;
+        }
         // Hide listeners from other contexts.
         if (jsListener->isolatedWorld() != currentWorld(exec))
             continue;

Modified: trunk/Source/WebCore/bindings/js/ScriptEventListener.cpp (111573 => 111574)


--- trunk/Source/WebCore/bindings/js/ScriptEventListener.cpp	2012-03-21 17:47:08 UTC (rev 111573)
+++ trunk/Source/WebCore/bindings/js/ScriptEventListener.cpp	2012-03-21 17:49:51 UTC (rev 111574)
@@ -97,6 +97,7 @@
 String eventListenerHandlerBody(Document* document, EventListener* eventListener)
 {
     const JSEventListener* jsListener = JSEventListener::cast(eventListener);
+    ASSERT(jsListener);
     if (!jsListener)
         return "";
     JSLock lock(SilenceAssertionsOnly);
@@ -110,6 +111,7 @@
 bool eventListenerHandlerLocation(Document* document, EventListener* eventListener, String& sourceName, int& lineNumber)
 {
     const JSEventListener* jsListener = JSEventListener::cast(eventListener);
+    ASSERT(jsListener);
     if (!jsListener)
         return false;
     JSC::JSObject* jsObject = jsListener->jsFunction(document);

Modified: trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp (111573 => 111574)


--- trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp	2012-03-21 17:47:08 UTC (rev 111573)
+++ trunk/Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp	2012-03-21 17:49:51 UTC (rev 111574)
@@ -189,8 +189,10 @@
     size_t handlersCount = listenerInfo.eventListenerVector.size();
     for (size_t i = 0, outputIndex = 0; i < handlersCount; ++i) {
         RefPtr<EventListener> listener = listenerInfo.eventListenerVector[i].listener;
-        if (listener->type() != EventListener::JSEventListenerType)
+        if (listener->type() != EventListener::JSEventListenerType) {
+            ASSERT_NOT_REACHED();
             continue;
+        }
         V8AbstractEventListener* v8Listener = static_cast<V8AbstractEventListener*>(listener.get());
         v8::Local<v8::Context> context = toV8Context(document, v8Listener->worldContext());
         // Hide listeners from other contexts.

Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (111573 => 111574)


--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2012-03-21 17:47:08 UTC (rev 111573)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp	2012-03-21 17:49:51 UTC (rev 111574)
@@ -776,7 +776,15 @@
         Vector<AtomicString> eventTypes = d->eventListenerMap.eventTypes();
         for (size_t j = 0; j < eventTypes.size(); ++j) {
             AtomicString& type = eventTypes[j];
-            eventInformation.append(EventListenerInfo(ancestor, type, ancestor->getEventListeners(type)));
+            const EventListenerVector& listeners = ancestor->getEventListeners(type);
+            EventListenerVector filteredListeners;
+            filteredListeners.reserveCapacity(listeners.size());
+            for (size_t k = 0; k < listeners.size(); ++k) {
+                if (listeners[k].listener->type() == EventListener::JSEventListenerType)
+                    filteredListeners.append(listeners[k]);
+            }
+            if (!filteredListeners.isEmpty())
+                eventInformation.append(EventListenerInfo(ancestor, type, filteredListeners));
         }
     }
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to