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;