Title: [102495] trunk/Source/WebKit/chromium
Revision
102495
Author
[email protected]
Date
2011-12-09 17:09:09 -0800 (Fri, 09 Dec 2011)

Log Message

[chromium] add event methods to WebFrame
https://bugs.webkit.org/show_bug.cgi?id=73259

Patch by Karl Koscher <[email protected]> on 2011-12-09
Reviewed by Darin Fisher.

* public/WebDOMEventListener.h: Use EventTarget instead of Node
* public/WebFrame.h: Add event methods
* src/WebDOMEventListener.cpp: Use EventTarget instead of Node
(WebKit::WebDOMEventListener::createEventListenerWrapper):
(WebKit::WebDOMEventListener::getEventListenerWrapper):
* src/WebDOMEventListenerPrivate.cpp: Use EventTarget instead of Node
(WebKit::WebDOMEventListenerPrivate::createEventListenerWrapper):
(WebKit::WebDOMEventListenerPrivate::getEventListenerWrapper):
* src/WebDOMEventListenerPrivate.h: Use EventTarget instead of Node
(WebKit::WebDOMEventListenerPrivate::ListenerInfo::ListenerInfo):
* src/WebFrameImpl.cpp:
(WebKit::WebFrameImpl::addEventListener): register a listener on a WebFrame
(WebKit::WebFrameImpl::removeEventListener): remove a listener on a WebFrame
(WebKit::WebFrameImpl::dispatchEvent): dispatch an event to a WebFrame
* src/WebFrameImpl.h: Add event methods

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (102494 => 102495)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-12-10 01:09:09 UTC (rev 102495)
@@ -1,3 +1,26 @@
+2011-12-09  Karl Koscher  <[email protected]>
+
+        [chromium] add event methods to WebFrame
+        https://bugs.webkit.org/show_bug.cgi?id=73259
+
+        Reviewed by Darin Fisher.
+
+        * public/WebDOMEventListener.h: Use EventTarget instead of Node
+        * public/WebFrame.h: Add event methods
+        * src/WebDOMEventListener.cpp: Use EventTarget instead of Node
+        (WebKit::WebDOMEventListener::createEventListenerWrapper):
+        (WebKit::WebDOMEventListener::getEventListenerWrapper):
+        * src/WebDOMEventListenerPrivate.cpp: Use EventTarget instead of Node
+        (WebKit::WebDOMEventListenerPrivate::createEventListenerWrapper):
+        (WebKit::WebDOMEventListenerPrivate::getEventListenerWrapper):
+        * src/WebDOMEventListenerPrivate.h: Use EventTarget instead of Node
+        (WebKit::WebDOMEventListenerPrivate::ListenerInfo::ListenerInfo):
+        * src/WebFrameImpl.cpp:
+        (WebKit::WebFrameImpl::addEventListener): register a listener on a WebFrame
+        (WebKit::WebFrameImpl::removeEventListener): remove a listener on a WebFrame
+        (WebKit::WebFrameImpl::dispatchEvent): dispatch an event to a WebFrame
+        * src/WebFrameImpl.h: Add event methods
+
 2011-12-09  Dirk Pranke  <[email protected]>
 
         chromium win build: revert build_webkit_exes_from_webkit_gyp change

Modified: trunk/Source/WebKit/chromium/public/WebDOMEventListener.h (102494 => 102495)


--- trunk/Source/WebKit/chromium/public/WebDOMEventListener.h	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/public/WebDOMEventListener.h	2011-12-10 01:09:09 UTC (rev 102495)
@@ -34,7 +34,7 @@
 #include "platform/WebCommon.h"
 
 #if WEBKIT_IMPLEMENTATION
-namespace WebCore { class Node; }
+namespace WebCore { class EventTarget; }
 #endif
 
 namespace WebKit {
@@ -55,8 +55,8 @@
 
 #if WEBKIT_IMPLEMENTATION
     void notifyEventListenerDeleted(EventListenerWrapper*);
-    EventListenerWrapper* createEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::Node* node);
-    EventListenerWrapper* getEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::Node* node);
+    EventListenerWrapper* createEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::EventTarget*);
+    EventListenerWrapper* getEventListenerWrapper(const WebString& eventType, bool useCapture, WebCore::EventTarget*);
 #endif
 
 private:

Modified: trunk/Source/WebKit/chromium/public/WebFrame.h (102494 => 102495)


--- trunk/Source/WebKit/chromium/public/WebFrame.h	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/public/WebFrame.h	2011-12-10 01:09:09 UTC (rev 102495)
@@ -550,6 +550,19 @@
     virtual void resetMatchCount() = 0;
 
 
+    // Events --------------------------------------------------------------
+
+    // These functions all work on the WebFrame's DOMWindow. Keep in mind
+    // that these events might be generated by web content and not genuine
+    // DOM events.
+
+    virtual void addEventListener(const WebString& eventType,
+                                  WebDOMEventListener*, bool useCapture) = 0;
+    virtual void removeEventListener(const WebString& eventType,
+                                     WebDOMEventListener*, bool useCapture) = 0;
+    virtual bool dispatchEvent(const WebDOMEvent&) = 0;
+
+
     // Web Intents ---------------------------------------------------------
 
     // Forwards a web intents reply from the invoked activity back to the

Modified: trunk/Source/WebKit/chromium/src/WebDOMEventListener.cpp (102494 => 102495)


--- trunk/Source/WebKit/chromium/src/WebDOMEventListener.cpp	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/src/WebDOMEventListener.cpp	2011-12-10 01:09:09 UTC (rev 102495)
@@ -53,14 +53,14 @@
     m_private->eventListenerDeleted(wrapper);
 }
 
-EventListenerWrapper* WebDOMEventListener::createEventListenerWrapper(const WebString& eventType, bool useCapture, Node* node)
+EventListenerWrapper* WebDOMEventListener::createEventListenerWrapper(const WebString& eventType, bool useCapture, EventTarget* target)
 {
-    return m_private->createEventListenerWrapper(eventType, useCapture, node);
+    return m_private->createEventListenerWrapper(eventType, useCapture, target);
 }
 
-EventListenerWrapper* WebDOMEventListener::getEventListenerWrapper(const WebString& eventType, bool useCapture, Node* node)
+EventListenerWrapper* WebDOMEventListener::getEventListenerWrapper(const WebString& eventType, bool useCapture, EventTarget* target)
 {
-    return m_private->getEventListenerWrapper(eventType, useCapture, node);
+    return m_private->getEventListenerWrapper(eventType, useCapture, target);
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.cpp (102494 => 102495)


--- trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.cpp	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.cpp	2011-12-10 01:09:09 UTC (rev 102495)
@@ -47,19 +47,19 @@
 {
 }
 
-EventListenerWrapper* WebDOMEventListenerPrivate::createEventListenerWrapper(const WebString& eventType, bool useCapture, Node* node)
+EventListenerWrapper* WebDOMEventListenerPrivate::createEventListenerWrapper(const WebString& eventType, bool useCapture, EventTarget* target)
 {
     EventListenerWrapper* listenerWrapper = new EventListenerWrapper(m_webDOMEventListener);
-    WebDOMEventListenerPrivate::ListenerInfo listenerInfo(eventType, useCapture, listenerWrapper, node);
+    WebDOMEventListenerPrivate::ListenerInfo listenerInfo(eventType, useCapture, listenerWrapper, target);
     m_listenerWrappers.append(listenerInfo);
     return listenerWrapper;
 }
 
-EventListenerWrapper* WebDOMEventListenerPrivate::getEventListenerWrapper(const WebString& eventType, bool useCapture, Node* node)
+EventListenerWrapper* WebDOMEventListenerPrivate::getEventListenerWrapper(const WebString& eventType, bool useCapture, EventTarget* target)
 {
     Vector<WebDOMEventListenerPrivate::ListenerInfo>::const_iterator iter;
     for (iter = m_listenerWrappers.begin(); iter != m_listenerWrappers.end(); ++iter) {
-        if (iter->node == node)
+        if (iter->target == target)
           return iter->eventListenerWrapper;
     }
     ASSERT_NOT_REACHED();

Modified: trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.h (102494 => 102495)


--- trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.h	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/src/WebDOMEventListenerPrivate.h	2011-12-10 01:09:09 UTC (rev 102495)
@@ -36,7 +36,7 @@
 #include <wtf/Vector.h>
 
 namespace WebCore {
-class Node;
+class EventTarget;
 }
 
 namespace WebKit {
@@ -50,12 +50,12 @@
     ~WebDOMEventListenerPrivate();
 
     EventListenerWrapper* createEventListenerWrapper(
-        const WebString& eventType, bool useCapture, WebCore::Node*);
+        const WebString& eventType, bool useCapture, WebCore::EventTarget*);
 
     // Gets the ListenerEventWrapper for a specific node.
     // Used by WebNode::removeDOMEventListener().
     EventListenerWrapper* getEventListenerWrapper(
-        const WebString& eventType, bool useCapture, WebCore::Node*);
+        const WebString& eventType, bool useCapture, WebCore::EventTarget*);
 
     // Called by the WebDOMEventListener when it is about to be deleted.
     void webDOMEventListenerDeleted();
@@ -66,18 +66,18 @@
     struct ListenerInfo {
         ListenerInfo(const WebString& eventType, bool useCapture,
                      EventListenerWrapper* eventListenerWrapper,
-                     WebCore::Node* node)
+                     WebCore::EventTarget* target)
             : eventType(eventType)
             , useCapture(useCapture)
             , eventListenerWrapper(eventListenerWrapper)
-            , node(node)
+            , target(target)
         {
         }
 
         WebString eventType;
         bool useCapture;
         EventListenerWrapper* eventListenerWrapper;
-        WebCore::Node* node;
+        WebCore::EventTarget* target;
     };
 
 private:

Modified: trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp (102494 => 102495)


--- trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/src/WebFrameImpl.cpp	2011-12-10 01:09:09 UTC (rev 102495)
@@ -85,6 +85,7 @@
 #include "DocumentMarkerController.h"
 #include "Editor.h"
 #include "EventHandler.h"
+#include "EventListenerWrapper.h"
 #include "FocusController.h"
 #include "FontCache.h"
 #include "FormState.h"
@@ -138,6 +139,8 @@
 #include "UserGestureIndicator.h"
 #include "WebAnimationControllerImpl.h"
 #include "WebConsoleMessage.h"
+#include "WebDOMEvent.h"
+#include "WebDOMEventListener.h"
 #include "WebDataSourceImpl.h"
 #include "WebDocument.h"
 #include "WebFindOptions.h"
@@ -1840,6 +1843,31 @@
 {
 }
 
+void WebFrameImpl::addEventListener(const WebString& eventType, WebDOMEventListener* listener, bool useCapture)
+{
+    DOMWindow* window = m_frame->domWindow();
+
+    EventListenerWrapper* listenerWrapper =
+        listener->createEventListenerWrapper(eventType, useCapture, window);
+
+    m_frame->domWindow()->addEventListener(eventType, adoptRef(listenerWrapper), useCapture);
+}
+
+void WebFrameImpl::removeEventListener(const WebString& eventType, WebDOMEventListener* listener, bool useCapture)
+{
+    DOMWindow* window = m_frame->domWindow();
+
+    EventListenerWrapper* listenerWrapper =
+        listener->getEventListenerWrapper(eventType, useCapture, window);
+    window->removeEventListener(eventType, listenerWrapper, useCapture);
+}
+
+bool WebFrameImpl::dispatchEvent(const WebDOMEvent& event)
+{
+    ASSERT(!event.isNull());
+    return m_frame->domWindow()->dispatchEvent(event);
+}
+
 WebString WebFrameImpl::contentAsText(size_t maxChars) const
 {
     if (!m_frame)

Modified: trunk/Source/WebKit/chromium/src/WebFrameImpl.h (102494 => 102495)


--- trunk/Source/WebKit/chromium/src/WebFrameImpl.h	2011-12-10 01:05:18 UTC (rev 102494)
+++ trunk/Source/WebKit/chromium/src/WebFrameImpl.h	2011-12-10 01:09:09 UTC (rev 102495)
@@ -196,6 +196,12 @@
     virtual void handleIntentResult(int, const WebString&);
     virtual void handleIntentFailure(int, const WebString&);
 
+    virtual void addEventListener(const WebString& eventType,
+                                  WebDOMEventListener*, bool useCapture);
+    virtual void removeEventListener(const WebString& eventType,
+                                     WebDOMEventListener*, bool useCapture);
+    virtual bool dispatchEvent(const WebDOMEvent&);
+
     virtual WebString contentAsText(size_t maxChars) const;
     virtual WebString contentAsMarkup() const;
     virtual WebString renderTreeAsText(RenderAsTextControls toShow = RenderAsTextNormal) const;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to