1/*
2 * Copyright (C) 2010-2018 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
17 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25#pragma once
26
27#include "ArgumentCoders.h"
28#include "Connection.h"
29#include <wtf/Forward.h>
30#include <wtf/ThreadSafeRefCounted.h>
31
32namespace WebKit {
33class WebGestureEvent;
34class WebTouchEvent;
35class WebWheelEvent;
36}
37
38namespace Messages {
39namespace EventDispatcher {
40
41static inline IPC::StringReference messageReceiverName()
42{
43 return IPC::StringReference("EventDispatcher");
44}
45
46class WheelEvent {
47public:
48 typedef std::tuple<uint64_t, const WebKit::WebWheelEvent&, bool, bool, bool, bool> Arguments;
49
50 static IPC::StringReference receiverName() { return messageReceiverName(); }
51 static IPC::StringReference name() { return IPC::StringReference("WheelEvent"); }
52 static const bool isSync = false;
53
54 WheelEvent(uint64_t pageID, const WebKit::WebWheelEvent& event, bool canRubberBandAtLeft, bool canRubberBandAtRight, bool canRubberBandAtTop, bool canRubberBandAtBottom)
55 : m_arguments(pageID, event, canRubberBandAtLeft, canRubberBandAtRight, canRubberBandAtTop, canRubberBandAtBottom)
56 {
57 }
58
59 const Arguments& arguments() const
60 {
61 return m_arguments;
62 }
63
64private:
65 Arguments m_arguments;
66};
67
68#if ENABLE(IOS_TOUCH_EVENTS)
69class TouchEvent {
70public:
71 typedef std::tuple<uint64_t, const WebKit::WebTouchEvent&> Arguments;
72
73 static IPC::StringReference receiverName() { return messageReceiverName(); }
74 static IPC::StringReference name() { return IPC::StringReference("TouchEvent"); }
75 static const bool isSync = false;
76
77 TouchEvent(uint64_t pageID, const WebKit::WebTouchEvent& event)
78 : m_arguments(pageID, event)
79 {
80 }
81
82 const Arguments& arguments() const
83 {
84 return m_arguments;
85 }
86
87private:
88 Arguments m_arguments;
89};
90#endif
91
92#if ENABLE(MAC_GESTURE_EVENTS)
93class GestureEvent {
94public:
95 typedef std::tuple<uint64_t, const WebKit::WebGestureEvent&> Arguments;
96
97 static IPC::StringReference receiverName() { return messageReceiverName(); }
98 static IPC::StringReference name() { return IPC::StringReference("GestureEvent"); }
99 static const bool isSync = false;
100
101 GestureEvent(uint64_t pageID, const WebKit::WebGestureEvent& event)
102 : m_arguments(pageID, event)
103 {
104 }
105
106 const Arguments& arguments() const
107 {
108 return m_arguments;
109 }
110
111private:
112 Arguments m_arguments;
113};
114#endif
115
116} // namespace EventDispatcher
117} // namespace Messages
118