Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: ui/events/blink/web_input_event_traits.cc

Issue 2573073003: Collapse the API surface on WebInputEvent via accessor functions. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/blink/web_input_event_traits.h" 5 #include "ui/events/blink/web_input_event_traits.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 9
10 using base::StringAppendF; 10 using base::StringAppendF;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 event.movedBeyondSlopRegion, event.uniqueTouchEventId); 101 event.movedBeyondSlopRegion, event.uniqueTouchEventId);
102 for (unsigned i = 0; i < event.touchesLength; ++i) 102 for (unsigned i = 0; i < event.touchesLength; ++i)
103 ApppendTouchPointDetails(event.touches[i], result); 103 ApppendTouchPointDetails(event.touches[i], result);
104 result->append(" ]\n}"); 104 result->append(" ]\n}");
105 } 105 }
106 106
107 struct WebInputEventToString { 107 struct WebInputEventToString {
108 template <class EventType> 108 template <class EventType>
109 bool Execute(const WebInputEvent& event, std::string* result) const { 109 bool Execute(const WebInputEvent& event, std::string* result) const {
110 SStringPrintf(result, "%s (Time: %lf, Modifiers: %d)\n", 110 SStringPrintf(result, "%s (Time: %lf, Modifiers: %d)\n",
111 WebInputEvent::GetName(event.type), event.timeStampSeconds, 111 WebInputEvent::GetName(event.type()),
112 event.modifiers); 112 event.timeStampSeconds(), event.modifiers());
113 const EventType& typed_event = static_cast<const EventType&>(event); 113 const EventType& typed_event = static_cast<const EventType&>(event);
114 ApppendEventDetails(typed_event, result); 114 ApppendEventDetails(typed_event, result);
115 return true; 115 return true;
116 } 116 }
117 }; 117 };
118 118
119 struct WebInputEventSize { 119 struct WebInputEventSize {
120 template <class EventType> 120 template <class EventType>
121 bool Execute(WebInputEvent::Type /* type */, size_t* type_size) const { 121 bool Execute(WebInputEvent::Type /* type */, size_t* type_size) const {
122 *type_size = sizeof(EventType); 122 *type_size = sizeof(EventType);
123 return true; 123 return true;
124 } 124 }
125 }; 125 };
126 126
127 struct WebInputEventClone { 127 struct WebInputEventClone {
128 template <class EventType> 128 template <class EventType>
129 bool Execute(const WebInputEvent& event, 129 bool Execute(const WebInputEvent& event,
130 ScopedWebInputEvent* scoped_event) const { 130 ScopedWebInputEvent* scoped_event) const {
131 DCHECK_EQ(sizeof(EventType), event.size); 131 DCHECK_EQ(sizeof(EventType), event.size());
132 *scoped_event = ScopedWebInputEvent( 132 *scoped_event = ScopedWebInputEvent(
133 new EventType(static_cast<const EventType&>(event))); 133 new EventType(static_cast<const EventType&>(event)));
134 return true; 134 return true;
135 } 135 }
136 }; 136 };
137 137
138 struct WebInputEventDelete { 138 struct WebInputEventDelete {
139 template <class EventType> 139 template <class EventType>
140 bool Execute(WebInputEvent* event, bool* /* dummy_var */) const { 140 bool Execute(WebInputEvent* event, bool* /* dummy_var */) const {
141 if (!event) 141 if (!event)
142 return false; 142 return false;
143 DCHECK_EQ(sizeof(EventType), event->size); 143 DCHECK_EQ(sizeof(EventType), event->size());
144 delete static_cast<EventType*>(event); 144 delete static_cast<EventType*>(event);
145 return true; 145 return true;
146 } 146 }
147 }; 147 };
148 148
149 template <typename Operator, typename ArgIn, typename ArgOut> 149 template <typename Operator, typename ArgIn, typename ArgOut>
150 bool Apply(Operator op, 150 bool Apply(Operator op,
151 WebInputEvent::Type type, 151 WebInputEvent::Type type,
152 const ArgIn& arg_in, 152 const ArgIn& arg_in,
153 ArgOut* arg_out) { 153 ArgOut* arg_out) {
154 if (WebInputEvent::isMouseEventType(type)) 154 if (WebInputEvent::isMouseEventType(type))
155 return op.template Execute<WebMouseEvent>(arg_in, arg_out); 155 return op.template Execute<WebMouseEvent>(arg_in, arg_out);
156 else if (type == WebInputEvent::MouseWheel) 156 else if (type == WebInputEvent::MouseWheel)
157 return op.template Execute<WebMouseWheelEvent>(arg_in, arg_out); 157 return op.template Execute<WebMouseWheelEvent>(arg_in, arg_out);
158 else if (WebInputEvent::isKeyboardEventType(type)) 158 else if (WebInputEvent::isKeyboardEventType(type))
159 return op.template Execute<WebKeyboardEvent>(arg_in, arg_out); 159 return op.template Execute<WebKeyboardEvent>(arg_in, arg_out);
160 else if (WebInputEvent::isTouchEventType(type)) 160 else if (WebInputEvent::isTouchEventType(type))
161 return op.template Execute<WebTouchEvent>(arg_in, arg_out); 161 return op.template Execute<WebTouchEvent>(arg_in, arg_out);
162 else if (WebInputEvent::isGestureEventType(type)) 162 else if (WebInputEvent::isGestureEventType(type))
163 return op.template Execute<WebGestureEvent>(arg_in, arg_out); 163 return op.template Execute<WebGestureEvent>(arg_in, arg_out);
164 164
165 NOTREACHED() << "Unknown webkit event type " << type; 165 NOTREACHED() << "Unknown webkit event type " << type;
166 return false; 166 return false;
167 } 167 }
168 168
169 } // namespace 169 } // namespace
170 170
171 std::string WebInputEventTraits::ToString(const WebInputEvent& event) { 171 std::string WebInputEventTraits::ToString(const WebInputEvent& event) {
172 std::string result; 172 std::string result;
173 Apply(WebInputEventToString(), event.type, event, &result); 173 Apply(WebInputEventToString(), event.type(), event, &result);
174 return result; 174 return result;
175 } 175 }
176 176
177 size_t WebInputEventTraits::GetSize(WebInputEvent::Type type) { 177 size_t WebInputEventTraits::GetSize(WebInputEvent::Type type) {
178 size_t size = 0; 178 size_t size = 0;
179 Apply(WebInputEventSize(), type, type, &size); 179 Apply(WebInputEventSize(), type, type, &size);
180 return size; 180 return size;
181 } 181 }
182 182
183 ScopedWebInputEvent WebInputEventTraits::Clone(const WebInputEvent& event) { 183 ScopedWebInputEvent WebInputEventTraits::Clone(const WebInputEvent& event) {
184 ScopedWebInputEvent scoped_event; 184 ScopedWebInputEvent scoped_event;
185 Apply(WebInputEventClone(), event.type, event, &scoped_event); 185 Apply(WebInputEventClone(), event.type(), event, &scoped_event);
186 return scoped_event; 186 return scoped_event;
187 } 187 }
188 188
189 void WebInputEventTraits::Delete(WebInputEvent* event) { 189 void WebInputEventTraits::Delete(WebInputEvent* event) {
190 if (!event) 190 if (!event)
191 return; 191 return;
192 bool dummy_var = false; 192 bool dummy_var = false;
193 Apply(WebInputEventDelete(), event->type, event, &dummy_var); 193 Apply(WebInputEventDelete(), event->type(), event, &dummy_var);
194 } 194 }
195 195
196 bool WebInputEventTraits::ShouldBlockEventStream(const WebInputEvent& event) { 196 bool WebInputEventTraits::ShouldBlockEventStream(const WebInputEvent& event) {
197 switch (event.type) { 197 switch (event.type()) {
198 case WebInputEvent::MouseDown: 198 case WebInputEvent::MouseDown:
199 case WebInputEvent::MouseUp: 199 case WebInputEvent::MouseUp:
200 case WebInputEvent::MouseEnter: 200 case WebInputEvent::MouseEnter:
201 case WebInputEvent::MouseLeave: 201 case WebInputEvent::MouseLeave:
202 case WebInputEvent::ContextMenu: 202 case WebInputEvent::ContextMenu:
203 case WebInputEvent::GestureScrollBegin: 203 case WebInputEvent::GestureScrollBegin:
204 case WebInputEvent::GestureScrollEnd: 204 case WebInputEvent::GestureScrollEnd:
205 case WebInputEvent::GestureShowPress: 205 case WebInputEvent::GestureShowPress:
206 case WebInputEvent::GestureTapUnconfirmed: 206 case WebInputEvent::GestureTapUnconfirmed:
207 case WebInputEvent::GestureTapDown: 207 case WebInputEvent::GestureTapDown:
(...skipping 23 matching lines...) Expand all
231 return true; 231 return true;
232 } 232 }
233 } 233 }
234 234
235 bool WebInputEventTraits::CanCauseScroll( 235 bool WebInputEventTraits::CanCauseScroll(
236 const blink::WebMouseWheelEvent& event) { 236 const blink::WebMouseWheelEvent& event) {
237 #if defined(USE_AURA) 237 #if defined(USE_AURA)
238 // Scroll events generated from the mouse wheel when the control key is held 238 // Scroll events generated from the mouse wheel when the control key is held
239 // don't trigger scrolling. Instead, they may cause zooming. 239 // don't trigger scrolling. Instead, they may cause zooming.
240 return event.hasPreciseScrollingDeltas || 240 return event.hasPreciseScrollingDeltas ||
241 (event.modifiers & blink::WebInputEvent::ControlKey) == 0; 241 (event.modifiers() & blink::WebInputEvent::ControlKey) == 0;
242 #else 242 #else
243 return true; 243 return true;
244 #endif 244 #endif
245 } 245 }
246 246
247 uint32_t WebInputEventTraits::GetUniqueTouchEventId( 247 uint32_t WebInputEventTraits::GetUniqueTouchEventId(
248 const WebInputEvent& event) { 248 const WebInputEvent& event) {
249 if (WebInputEvent::isTouchEventType(event.type)) { 249 if (WebInputEvent::isTouchEventType(event.type())) {
250 return static_cast<const WebTouchEvent&>(event).uniqueTouchEventId; 250 return static_cast<const WebTouchEvent&>(event).uniqueTouchEventId;
251 } 251 }
252 return 0U; 252 return 0U;
253 } 253 }
254 254
255 // static 255 // static
256 LatencyInfo WebInputEventTraits::CreateLatencyInfoForWebGestureEvent( 256 LatencyInfo WebInputEventTraits::CreateLatencyInfoForWebGestureEvent(
257 WebGestureEvent event) { 257 WebGestureEvent event) {
258 SourceEventType source_event_type = SourceEventType::UNKNOWN; 258 SourceEventType source_event_type = SourceEventType::UNKNOWN;
259 if (event.sourceDevice == blink::WebGestureDevice::WebGestureDeviceTouchpad) { 259 if (event.sourceDevice == blink::WebGestureDevice::WebGestureDeviceTouchpad) {
260 source_event_type = SourceEventType::WHEEL; 260 source_event_type = SourceEventType::WHEEL;
261 } else if (event.sourceDevice == 261 } else if (event.sourceDevice ==
262 blink::WebGestureDevice::WebGestureDeviceTouchscreen) { 262 blink::WebGestureDevice::WebGestureDeviceTouchscreen) {
263 source_event_type = SourceEventType::TOUCH; 263 source_event_type = SourceEventType::TOUCH;
264 } 264 }
265 LatencyInfo latency_info(source_event_type); 265 LatencyInfo latency_info(source_event_type);
266 return latency_info; 266 return latency_info;
267 } 267 }
268 268
269 } // namespace ui 269 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698