diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/WebPage/EventDispatcher.h')
-rw-r--r-- | Source/WebKit2/WebProcess/WebPage/EventDispatcher.h | 44 |
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 |