OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 | 187 |
188 ScrollLockOn = 1 << 18, | 188 ScrollLockOn = 1 << 18, |
189 | 189 |
190 // The set of non-stateful modifiers that specifically change the | 190 // The set of non-stateful modifiers that specifically change the |
191 // interpretation of the key being pressed. For example; IsLeft, | 191 // interpretation of the key being pressed. For example; IsLeft, |
192 // IsRight, IsComposing don't change the meaning of the key | 192 // IsRight, IsComposing don't change the meaning of the key |
193 // being pressed. NumLockOn, ScrollLockOn, CapsLockOn are stateful | 193 // being pressed. NumLockOn, ScrollLockOn, CapsLockOn are stateful |
194 // and don't indicate explicit depressed state. | 194 // and don't indicate explicit depressed state. |
195 KeyModifiers = | 195 KeyModifiers = |
196 SymbolKey | FnKey | AltGrKey | MetaKey | AltKey | ControlKey | ShiftKey, | 196 SymbolKey | FnKey | AltGrKey | MetaKey | AltKey | ControlKey | ShiftKey, |
| 197 NoModifiers = 0, |
197 }; | 198 }; |
198 | 199 |
199 // Indicates whether the browser needs to block on the ACK result for | 200 // Indicates whether the browser needs to block on the ACK result for |
200 // this event, and if not, why (for metrics/diagnostics purposes). | 201 // this event, and if not, why (for metrics/diagnostics purposes). |
201 // These values are direct mappings of the values in PlatformEvent | 202 // These values are direct mappings of the values in PlatformEvent |
202 // so the values can be cast between the enumerations. static_asserts | 203 // so the values can be cast between the enumerations. static_asserts |
203 // checking this are in web/WebInputEventConversion.cpp. | 204 // checking this are in web/WebInputEventConversion.cpp. |
204 enum DispatchType { | 205 enum DispatchType { |
205 // Event can be canceled. | 206 // Event can be canceled. |
206 Blocking, | 207 Blocking, |
(...skipping 14 matching lines...) Expand all Loading... |
221 // expected to stick. If this axis is set to Free, then scrolling is not | 222 // expected to stick. If this axis is set to Free, then scrolling is not |
222 // stuck to any axis. | 223 // stuck to any axis. |
223 enum RailsMode { | 224 enum RailsMode { |
224 RailsModeFree = 0, | 225 RailsModeFree = 0, |
225 RailsModeHorizontal = 1, | 226 RailsModeHorizontal = 1, |
226 RailsModeVertical = 2, | 227 RailsModeVertical = 2, |
227 }; | 228 }; |
228 | 229 |
229 static const int InputModifiers = ShiftKey | ControlKey | AltKey | MetaKey; | 230 static const int InputModifiers = ShiftKey | ControlKey | AltKey | MetaKey; |
230 | 231 |
| 232 static constexpr double TimeStampForTesting = 123.0; |
| 233 |
231 double timeStampSeconds; // Seconds since platform start with microsecond | 234 double timeStampSeconds; // Seconds since platform start with microsecond |
232 // resolution. | 235 // resolution. |
233 unsigned size; // The size of this structure, for serialization. | 236 unsigned size; // The size of this structure, for serialization. |
234 Type type; | 237 Type type; |
235 int modifiers; | 238 int modifiers; |
236 | 239 |
237 // Returns true if the WebInputEvent |type| is a mouse event. | 240 // Returns true if the WebInputEvent |type| is a mouse event. |
238 static bool isMouseEventType(int type) { | 241 static bool isMouseEventType(int type) { |
239 return MouseTypeFirst <= type && type <= MouseTypeLast; | 242 return MouseTypeFirst <= type && type <= MouseTypeLast; |
240 } | 243 } |
(...skipping 28 matching lines...) Expand all Loading... |
269 BLINK_COMMON_EXPORT static const char* GetName(WebInputEvent::Type); | 272 BLINK_COMMON_EXPORT static const char* GetName(WebInputEvent::Type); |
270 | 273 |
271 float frameScale() const { return m_frameScale; } | 274 float frameScale() const { return m_frameScale; } |
272 void setFrameScale(float scale) { m_frameScale = scale; } | 275 void setFrameScale(float scale) { m_frameScale = scale; } |
273 | 276 |
274 WebFloatPoint frameTranslate() const { return m_frameTranslate; } | 277 WebFloatPoint frameTranslate() const { return m_frameTranslate; } |
275 void setFrameTranslate(WebFloatPoint translate) { | 278 void setFrameTranslate(WebFloatPoint translate) { |
276 m_frameTranslate = translate; | 279 m_frameTranslate = translate; |
277 } | 280 } |
278 | 281 |
| 282 void setType(Type typeParam) { type = typeParam; } |
| 283 |
| 284 void setModifiers(int modifiersParam) { modifiers = modifiersParam; } |
| 285 |
| 286 void setTimeStampSeconds(double seconds) { timeStampSeconds = seconds; } |
| 287 |
279 protected: | 288 protected: |
280 // The root frame scale. | 289 // The root frame scale. |
281 float m_frameScale; | 290 float m_frameScale; |
282 | 291 |
283 // The root frame translation (applied post scale). | 292 // The root frame translation (applied post scale). |
284 WebFloatPoint m_frameTranslate; | 293 WebFloatPoint m_frameTranslate; |
285 | 294 |
286 explicit WebInputEvent(unsigned sizeParam) { | 295 WebInputEvent(unsigned sizeParam, |
| 296 Type typeParam, |
| 297 int modifiersParam, |
| 298 double timeStampSecondsParam) { |
| 299 memset(this, 0, sizeParam); |
| 300 timeStampSeconds = timeStampSecondsParam; |
| 301 size = sizeParam; |
| 302 type = typeParam; |
| 303 modifiers = modifiersParam; |
| 304 #if DCHECK_IS_ON() |
| 305 // If dcheck is on force failures if frame scale is not initialized |
| 306 // correctly by causing DIV0. |
| 307 m_frameScale = 0; |
| 308 #else |
| 309 m_frameScale = 1; |
| 310 #endif |
| 311 } |
| 312 |
| 313 WebInputEvent(unsigned sizeParam) { |
287 memset(this, 0, sizeParam); | 314 memset(this, 0, sizeParam); |
288 timeStampSeconds = 0.0; | 315 timeStampSeconds = 0.0; |
289 size = sizeParam; | 316 size = sizeParam; |
290 type = Undefined; | 317 type = Undefined; |
291 modifiers = 0; | |
292 #if DCHECK_IS_ON() | 318 #if DCHECK_IS_ON() |
293 // If dcheck is on force failures if frame scale is not initialized | 319 // If dcheck is on force failures if frame scale is not initialized |
294 // correctly by causing DIV0. | 320 // correctly by causing DIV0. |
295 m_frameScale = 0; | 321 m_frameScale = 0; |
296 #else | 322 #else |
297 m_frameScale = 1; | 323 m_frameScale = 1; |
298 #endif | 324 #endif |
299 } | 325 } |
300 }; | 326 }; |
301 | 327 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 | 370 |
345 // |text| is the text generated by this keystroke. |unmodifiedText| is | 371 // |text| is the text generated by this keystroke. |unmodifiedText| is |
346 // |text|, but unmodified by an concurrently-held modifiers (except | 372 // |text|, but unmodified by an concurrently-held modifiers (except |
347 // shift). This is useful for working out shortcut keys. Linux and | 373 // shift). This is useful for working out shortcut keys. Linux and |
348 // Windows guarantee one character per event. The Mac does not, but in | 374 // Windows guarantee one character per event. The Mac does not, but in |
349 // reality that's all it ever gives. We're generous, and cap it a bit | 375 // reality that's all it ever gives. We're generous, and cap it a bit |
350 // longer. | 376 // longer. |
351 WebUChar text[textLengthCap]; | 377 WebUChar text[textLengthCap]; |
352 WebUChar unmodifiedText[textLengthCap]; | 378 WebUChar unmodifiedText[textLengthCap]; |
353 | 379 |
354 WebKeyboardEvent() | 380 WebKeyboardEvent(Type type, int modifiers, double timeStampSeconds) |
355 : WebInputEvent(sizeof(WebKeyboardEvent)), | 381 : WebInputEvent(sizeof(WebKeyboardEvent), |
356 windowsKeyCode(0), | 382 type, |
357 nativeKeyCode(0), | 383 modifiers, |
358 isSystemKey(false), | 384 timeStampSeconds) {} |
359 isBrowserShortcut(false) { | 385 |
360 } | 386 WebKeyboardEvent() : WebInputEvent(sizeof(WebKeyboardEvent)) {} |
361 | 387 |
362 // Please refer to bug http://b/issue?id=961192, which talks about Webkit | 388 // Please refer to bug http://b/issue?id=961192, which talks about Webkit |
363 // keyboard event handling changes. It also mentions the list of keys | 389 // keyboard event handling changes. It also mentions the list of keys |
364 // which don't have associated character events. | 390 // which don't have associated character events. |
365 bool isCharacterKey() const { | 391 bool isCharacterKey() const { |
366 // TODO(dtapuska): Determine if we can remove this method and just | 392 // TODO(dtapuska): Determine if we can remove this method and just |
367 // not actually generate events for these instead of filtering them out. | 393 // not actually generate events for these instead of filtering them out. |
368 switch (windowsKeyCode) { | 394 switch (windowsKeyCode) { |
369 case 0x08: // VK_BACK | 395 case 0x08: // VK_BACK |
370 case 0x1b: // VK_ESCAPE | 396 case 0x1b: // VK_ESCAPE |
(...skipping 18 matching lines...) Expand all Loading... |
389 int windowY; | 415 int windowY; |
390 | 416 |
391 // Screen coordinate | 417 // Screen coordinate |
392 int globalX; | 418 int globalX; |
393 int globalY; | 419 int globalY; |
394 | 420 |
395 int movementX; | 421 int movementX; |
396 int movementY; | 422 int movementY; |
397 int clickCount; | 423 int clickCount; |
398 | 424 |
| 425 WebMouseEvent(Type type, int modifiers, double timeStampSeconds) |
| 426 : WebInputEvent(sizeof(WebMouseEvent), type, modifiers, timeStampSeconds), |
| 427 WebPointerProperties() {} |
| 428 |
399 WebMouseEvent() | 429 WebMouseEvent() |
400 : WebInputEvent(sizeof(WebMouseEvent)), | 430 : WebInputEvent(sizeof(WebMouseEvent)), WebPointerProperties() {} |
401 WebPointerProperties(), | |
402 x(0), | |
403 y(0), | |
404 windowX(0), | |
405 windowY(0), | |
406 globalX(0), | |
407 globalY(0), | |
408 movementX(0), | |
409 movementY(0), | |
410 clickCount(0) {} | |
411 | 431 |
412 protected: | 432 protected: |
413 explicit WebMouseEvent(unsigned sizeParam) | 433 explicit WebMouseEvent(unsigned sizeParam) |
414 : WebInputEvent(sizeParam), | 434 : WebInputEvent(sizeParam), WebPointerProperties() {} |
415 WebPointerProperties(), | 435 |
416 x(0), | 436 WebMouseEvent(unsigned sizeParam, |
417 y(0), | 437 Type type, |
418 windowX(0), | 438 int modifiers, |
419 windowY(0), | 439 double timeStampSeconds) |
420 globalX(0), | 440 : WebInputEvent(sizeParam, type, modifiers, timeStampSeconds), |
421 globalY(0), | 441 WebPointerProperties() {} |
422 movementX(0), | |
423 movementY(0), | |
424 clickCount(0) {} | |
425 }; | 442 }; |
426 | 443 |
427 // WebTouchEvent -------------------------------------------------------------- | 444 // WebTouchEvent -------------------------------------------------------------- |
428 | 445 |
429 // TODO(e_hakkinen): Replace with WebPointerEvent. crbug.com/508283 | 446 // TODO(e_hakkinen): Replace with WebPointerEvent. crbug.com/508283 |
430 class WebTouchEvent : public WebInputEvent { | 447 class WebTouchEvent : public WebInputEvent { |
431 public: | 448 public: |
432 // Maximum number of simultaneous touches supported on | 449 // Maximum number of simultaneous touches supported on |
433 // Ash/Aura. | 450 // Ash/Aura. |
434 enum { kTouchesLengthCap = 16 }; | 451 enum { kTouchesLengthCap = 16 }; |
(...skipping 13 matching lines...) Expand all Loading... |
448 | 465 |
449 // Whether this touch event is a touchstart or a first touchmove event per | 466 // Whether this touch event is a touchstart or a first touchmove event per |
450 // scroll. | 467 // scroll. |
451 bool touchStartOrFirstTouchMove; | 468 bool touchStartOrFirstTouchMove; |
452 | 469 |
453 // A unique identifier for the touch event. Valid ids start at one and | 470 // A unique identifier for the touch event. Valid ids start at one and |
454 // increase monotonically. Zero means an unknown id. | 471 // increase monotonically. Zero means an unknown id. |
455 uint32_t uniqueTouchEventId; | 472 uint32_t uniqueTouchEventId; |
456 | 473 |
457 WebTouchEvent() | 474 WebTouchEvent() |
458 : WebInputEvent(sizeof(WebTouchEvent)), | 475 : WebInputEvent(sizeof(WebTouchEvent)), dispatchType(Blocking) {} |
459 touchesLength(0), | 476 |
460 dispatchType(Blocking), | 477 WebTouchEvent(Type type, int modifiers, double timeStampSeconds) |
461 movedBeyondSlopRegion(false), | 478 : WebInputEvent(sizeof(WebTouchEvent), type, modifiers, timeStampSeconds), |
462 touchStartOrFirstTouchMove(false), | 479 dispatchType(Blocking) {} |
463 uniqueTouchEventId(0) {} | |
464 }; | 480 }; |
465 | 481 |
466 #pragma pack(pop) | 482 #pragma pack(pop) |
467 | 483 |
468 } // namespace blink | 484 } // namespace blink |
469 | 485 |
470 #endif | 486 #endif |
OLD | NEW |