summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/EventDispatcher.h')
-rw-r--r--Source/WebKit2/WebProcess/WebPage/EventDispatcher.h44
1 files changed, 39 insertions, 5 deletions
diff --git a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h
index b9998f17e..1d477877e 100644
--- a/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h
+++ b/Source/WebKit2/WebProcess/WebPage/EventDispatcher.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,11 +27,20 @@
#define EventDispatcher_h
#include "Connection.h"
+
+#include "WebEvent.h"
+#include <WebCore/WheelEventDeltaFilter.h>
+#include <memory>
#include <wtf/HashMap.h>
+#include <wtf/Lock.h>
#include <wtf/Noncopyable.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadingPrimitives.h>
+#if ENABLE(MAC_GESTURE_EVENTS)
+#include "WebGestureEvent.h"
+#endif
+
namespace WebCore {
class ThreadedScrollingTree;
}
@@ -44,7 +53,7 @@ class WebWheelEvent;
class EventDispatcher : public IPC::Connection::WorkQueueMessageReceiver {
public:
- static PassRefPtr<EventDispatcher> create();
+ static Ref<EventDispatcher> create();
~EventDispatcher();
#if ENABLE(ASYNC_SCROLLING)
@@ -52,30 +61,55 @@ public:
void removeScrollingTreeForPage(WebPage*);
#endif
+#if ENABLE(IOS_TOUCH_EVENTS)
+ typedef Vector<WebTouchEvent, 1> TouchEventQueue;
+
+ void clearQueuedTouchEventsForPage(const WebPage&);
+ void getQueuedTouchEventsForPage(const WebPage&, TouchEventQueue&);
+#endif
+
void initializeConnection(IPC::Connection*);
private:
EventDispatcher();
// IPC::Connection::WorkQueueMessageReceiver.
- virtual void didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&) override;
+ void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
// Message handlers
void wheelEvent(uint64_t pageID, const WebWheelEvent&, bool canRubberBandAtLeft, bool canRubberBandAtRight, bool canRubberBandAtTop, bool canRubberBandAtBottom);
+#if ENABLE(IOS_TOUCH_EVENTS)
+ void touchEvent(uint64_t pageID, const WebTouchEvent&);
+#endif
+#if ENABLE(MAC_GESTURE_EVENTS)
+ void gestureEvent(uint64_t pageID, const WebGestureEvent&);
+#endif
+
// This is called on the main thread.
void dispatchWheelEvent(uint64_t pageID, const WebWheelEvent&);
+#if ENABLE(IOS_TOUCH_EVENTS)
+ void dispatchTouchEvents();
+#endif
+#if ENABLE(MAC_GESTURE_EVENTS)
+ void dispatchGestureEvent(uint64_t pageID, const WebGestureEvent&);
+#endif
#if ENABLE(ASYNC_SCROLLING)
void sendDidReceiveEvent(uint64_t pageID, const WebEvent&, bool didHandleEvent);
#endif
- RefPtr<WorkQueue> m_queue;
+ Ref<WorkQueue> m_queue;
#if ENABLE(ASYNC_SCROLLING)
- Mutex m_scrollingTreesMutex;
+ Lock m_scrollingTreesMutex;
HashMap<uint64_t, RefPtr<WebCore::ThreadedScrollingTree>> m_scrollingTrees;
#endif
+ std::unique_ptr<WebCore::WheelEventDeltaFilter> m_recentWheelEventDeltaFilter;
+#if ENABLE(IOS_TOUCH_EVENTS)
+ Lock m_touchEventsLock;
+ HashMap<uint64_t, TouchEventQueue> m_touchEvents;
+#endif
};
} // namespace WebKit