OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef UI_EVENTS_EVENT_H_ | 5 #ifndef UI_EVENTS_EVENT_H_ |
6 #define UI_EVENTS_EVENT_H_ | 6 #define UI_EVENTS_EVENT_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/event_types.h" | 10 #include "base/event_types.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "base/time/time.h" | 12 #include "base/time/time.h" |
13 #include "ui/base/dragdrop/os_exchange_data.h" | 13 #include "ui/base/dragdrop/os_exchange_data.h" |
14 #include "ui/base/gestures/gesture_types.h" | 14 #include "ui/base/gestures/gesture_types.h" |
15 #include "ui/base/latency_info.h" | |
16 #include "ui/base/ui_export.h" | |
17 #include "ui/events/event_constants.h" | 15 #include "ui/events/event_constants.h" |
18 #include "ui/events/keycodes/keyboard_codes.h" | 16 #include "ui/events/keycodes/keyboard_codes.h" |
| 17 #include "ui/events/latency_info.h" |
19 #include "ui/gfx/point.h" | 18 #include "ui/gfx/point.h" |
20 | 19 |
21 namespace gfx { | 20 namespace gfx { |
22 class Transform; | 21 class Transform; |
23 } | 22 } |
24 | 23 |
25 namespace ui { | 24 namespace ui { |
26 class EventTarget; | 25 class EventTarget; |
27 | 26 |
28 class UI_EXPORT Event { | 27 class EVENTS_EXPORT Event { |
29 public: | 28 public: |
30 virtual ~Event(); | 29 virtual ~Event(); |
31 | 30 |
32 class DispatcherApi { | 31 class DispatcherApi { |
33 public: | 32 public: |
34 explicit DispatcherApi(Event* event) : event_(event) {} | 33 explicit DispatcherApi(Event* event) : event_(event) {} |
35 | 34 |
36 void set_target(EventTarget* target) { | 35 void set_target(EventTarget* target) { |
37 event_->target_ = target; | 36 event_->target_ = target; |
38 } | 37 } |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 int flags_; | 230 int flags_; |
232 bool dispatch_to_hidden_targets_; | 231 bool dispatch_to_hidden_targets_; |
233 base::NativeEvent native_event_; | 232 base::NativeEvent native_event_; |
234 bool delete_native_event_; | 233 bool delete_native_event_; |
235 bool cancelable_; | 234 bool cancelable_; |
236 EventTarget* target_; | 235 EventTarget* target_; |
237 EventPhase phase_; | 236 EventPhase phase_; |
238 EventResult result_; | 237 EventResult result_; |
239 }; | 238 }; |
240 | 239 |
241 class UI_EXPORT CancelModeEvent : public Event { | 240 class EVENTS_EXPORT CancelModeEvent : public Event { |
242 public: | 241 public: |
243 CancelModeEvent(); | 242 CancelModeEvent(); |
244 virtual ~CancelModeEvent(); | 243 virtual ~CancelModeEvent(); |
245 }; | 244 }; |
246 | 245 |
247 class UI_EXPORT LocatedEvent : public Event { | 246 class EVENTS_EXPORT LocatedEvent : public Event { |
248 public: | 247 public: |
249 // For testing. | 248 // For testing. |
250 class TestApi : public Event::TestApi { | 249 class TestApi : public Event::TestApi { |
251 public: | 250 public: |
252 explicit TestApi(LocatedEvent* located_event) | 251 explicit TestApi(LocatedEvent* located_event) |
253 : Event::TestApi(located_event), | 252 : Event::TestApi(located_event), |
254 located_event_(located_event) {} | 253 located_event_(located_event) {} |
255 | 254 |
256 void set_location(const gfx::Point& location) { | 255 void set_location(const gfx::Point& location) { |
257 located_event_->location_ = location; | 256 located_event_->location_ = location; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 base::TimeDelta time_stamp, | 303 base::TimeDelta time_stamp, |
305 int flags); | 304 int flags); |
306 | 305 |
307 gfx::Point location_; | 306 gfx::Point location_; |
308 | 307 |
309 // |location_| multiplied by an optional transformation matrix for | 308 // |location_| multiplied by an optional transformation matrix for |
310 // rotations, animations and skews. | 309 // rotations, animations and skews. |
311 gfx::Point root_location_; | 310 gfx::Point root_location_; |
312 }; | 311 }; |
313 | 312 |
314 class UI_EXPORT MouseEvent : public LocatedEvent { | 313 class EVENTS_EXPORT MouseEvent : public LocatedEvent { |
315 public: | 314 public: |
316 explicit MouseEvent(const base::NativeEvent& native_event); | 315 explicit MouseEvent(const base::NativeEvent& native_event); |
317 | 316 |
318 // Create a new MouseEvent based on the provided model. | 317 // Create a new MouseEvent based on the provided model. |
319 // Uses the provided |type| and |flags| for the new event. | 318 // Uses the provided |type| and |flags| for the new event. |
320 // If source / target windows are provided, the model location will be | 319 // If source / target windows are provided, the model location will be |
321 // converted from |source| coordinate system to |target| coordinate system. | 320 // converted from |source| coordinate system to |target| coordinate system. |
322 template <class T> | 321 template <class T> |
323 MouseEvent(const MouseEvent& model, T* source, T* target) | 322 MouseEvent(const MouseEvent& model, T* source, T* target) |
324 : LocatedEvent(model, source, target), | 323 : LocatedEvent(model, source, target), |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 static int GetRepeatCount(const MouseEvent& click_event); | 400 static int GetRepeatCount(const MouseEvent& click_event); |
402 | 401 |
403 // See description above getter for details. | 402 // See description above getter for details. |
404 int changed_button_flags_; | 403 int changed_button_flags_; |
405 | 404 |
406 static MouseEvent* last_click_event_; | 405 static MouseEvent* last_click_event_; |
407 }; | 406 }; |
408 | 407 |
409 class ScrollEvent; | 408 class ScrollEvent; |
410 | 409 |
411 class UI_EXPORT MouseWheelEvent : public MouseEvent { | 410 class EVENTS_EXPORT MouseWheelEvent : public MouseEvent { |
412 public: | 411 public: |
413 // See |offset| for details. | 412 // See |offset| for details. |
414 static const int kWheelDelta; | 413 static const int kWheelDelta; |
415 | 414 |
416 explicit MouseWheelEvent(const base::NativeEvent& native_event); | 415 explicit MouseWheelEvent(const base::NativeEvent& native_event); |
417 explicit MouseWheelEvent(const ScrollEvent& scroll_event); | 416 explicit MouseWheelEvent(const ScrollEvent& scroll_event); |
418 MouseWheelEvent(const MouseEvent& mouse_event, int x_offset, int y_offset); | 417 MouseWheelEvent(const MouseEvent& mouse_event, int x_offset, int y_offset); |
419 MouseWheelEvent(const MouseWheelEvent& mouse_wheel_event); | 418 MouseWheelEvent(const MouseWheelEvent& mouse_wheel_event); |
420 | 419 |
421 template <class T> | 420 template <class T> |
(...skipping 13 matching lines...) Expand all Loading... |
435 const gfx::Vector2d& offset() const { return offset_; } | 434 const gfx::Vector2d& offset() const { return offset_; } |
436 | 435 |
437 // Overridden from LocatedEvent. | 436 // Overridden from LocatedEvent. |
438 virtual void UpdateForRootTransform( | 437 virtual void UpdateForRootTransform( |
439 const gfx::Transform& inverted_root_transform) OVERRIDE; | 438 const gfx::Transform& inverted_root_transform) OVERRIDE; |
440 | 439 |
441 private: | 440 private: |
442 gfx::Vector2d offset_; | 441 gfx::Vector2d offset_; |
443 }; | 442 }; |
444 | 443 |
445 class UI_EXPORT TouchEvent : public LocatedEvent { | 444 class EVENTS_EXPORT TouchEvent : public LocatedEvent { |
446 public: | 445 public: |
447 explicit TouchEvent(const base::NativeEvent& native_event); | 446 explicit TouchEvent(const base::NativeEvent& native_event); |
448 | 447 |
449 // Create a new TouchEvent which is identical to the provided model. | 448 // Create a new TouchEvent which is identical to the provided model. |
450 // If source / target windows are provided, the model location will be | 449 // If source / target windows are provided, the model location will be |
451 // converted from |source| coordinate system to |target| coordinate system. | 450 // converted from |source| coordinate system to |target| coordinate system. |
452 template <class T> | 451 template <class T> |
453 TouchEvent(const TouchEvent& model, T* source, T* target) | 452 TouchEvent(const TouchEvent& model, T* source, T* target) |
454 : LocatedEvent(model, source, target), | 453 : LocatedEvent(model, source, target), |
455 touch_id_(model.touch_id_), | 454 touch_id_(model.touch_id_), |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown. | 517 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown. |
519 float radius_y_; | 518 float radius_y_; |
520 | 519 |
521 // Angle of the major axis away from the X axis. Default 0.0. | 520 // Angle of the major axis away from the X axis. Default 0.0. |
522 float rotation_angle_; | 521 float rotation_angle_; |
523 | 522 |
524 // Force (pressure) of the touch. Normalized to be [0, 1]. Default to be 0.0. | 523 // Force (pressure) of the touch. Normalized to be [0, 1]. Default to be 0.0. |
525 float force_; | 524 float force_; |
526 }; | 525 }; |
527 | 526 |
528 class UI_EXPORT KeyEvent : public Event { | 527 class EVENTS_EXPORT KeyEvent : public Event { |
529 public: | 528 public: |
530 KeyEvent(const base::NativeEvent& native_event, bool is_char); | 529 KeyEvent(const base::NativeEvent& native_event, bool is_char); |
531 | 530 |
532 // Used for synthetic events. | 531 // Used for synthetic events. |
533 KeyEvent(EventType type, KeyboardCode key_code, int flags, bool is_char); | 532 KeyEvent(EventType type, KeyboardCode key_code, int flags, bool is_char); |
534 | 533 |
535 // These setters allow an I18N virtual keyboard to fabricate a keyboard event | 534 // These setters allow an I18N virtual keyboard to fabricate a keyboard event |
536 // which does not have a corresponding KeyboardCode (example: U+00E1 Latin | 535 // which does not have a corresponding KeyboardCode (example: U+00E1 Latin |
537 // small letter A with acute, U+0410 Cyrillic capital letter A.) | 536 // small letter A with acute, U+0410 Cyrillic capital letter A.) |
538 // GetCharacter() and GetUnmodifiedCharacter() return the character. | 537 // GetCharacter() and GetUnmodifiedCharacter() return the character. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 uint16 character_; | 577 uint16 character_; |
579 uint16 unmodified_character_; | 578 uint16 unmodified_character_; |
580 }; | 579 }; |
581 | 580 |
582 // A key event which is translated by an input method (IME). | 581 // A key event which is translated by an input method (IME). |
583 // For example, if an IME receives a KeyEvent(VKEY_SPACE), and it does not | 582 // For example, if an IME receives a KeyEvent(VKEY_SPACE), and it does not |
584 // consume the key, the IME usually generates and dispatches a | 583 // consume the key, the IME usually generates and dispatches a |
585 // TranslatedKeyEvent(VKEY_SPACE) event. If the IME receives a KeyEvent and | 584 // TranslatedKeyEvent(VKEY_SPACE) event. If the IME receives a KeyEvent and |
586 // it does consume the event, it might dispatch a | 585 // it does consume the event, it might dispatch a |
587 // TranslatedKeyEvent(VKEY_PROCESSKEY) event as defined in the DOM spec. | 586 // TranslatedKeyEvent(VKEY_PROCESSKEY) event as defined in the DOM spec. |
588 class UI_EXPORT TranslatedKeyEvent : public KeyEvent { | 587 class EVENTS_EXPORT TranslatedKeyEvent : public KeyEvent { |
589 public: | 588 public: |
590 TranslatedKeyEvent(const base::NativeEvent& native_event, bool is_char); | 589 TranslatedKeyEvent(const base::NativeEvent& native_event, bool is_char); |
591 | 590 |
592 // Used for synthetic events such as a VKEY_PROCESSKEY key event. | 591 // Used for synthetic events such as a VKEY_PROCESSKEY key event. |
593 TranslatedKeyEvent(bool is_press, KeyboardCode key_code, int flags); | 592 TranslatedKeyEvent(bool is_press, KeyboardCode key_code, int flags); |
594 | 593 |
595 // Changes the type() of the object from ET_TRANSLATED_KEY_* to ET_KEY_* so | 594 // Changes the type() of the object from ET_TRANSLATED_KEY_* to ET_KEY_* so |
596 // that RenderWidgetHostViewAura and NativeWidgetAura could handle the event. | 595 // that RenderWidgetHostViewAura and NativeWidgetAura could handle the event. |
597 void ConvertToKeyEvent(); | 596 void ConvertToKeyEvent(); |
598 | 597 |
599 private: | 598 private: |
600 DISALLOW_COPY_AND_ASSIGN(TranslatedKeyEvent); | 599 DISALLOW_COPY_AND_ASSIGN(TranslatedKeyEvent); |
601 }; | 600 }; |
602 | 601 |
603 class UI_EXPORT DropTargetEvent : public LocatedEvent { | 602 class EVENTS_EXPORT DropTargetEvent : public LocatedEvent { |
604 public: | 603 public: |
605 DropTargetEvent(const OSExchangeData& data, | 604 DropTargetEvent(const OSExchangeData& data, |
606 const gfx::Point& location, | 605 const gfx::Point& location, |
607 const gfx::Point& root_location, | 606 const gfx::Point& root_location, |
608 int source_operations); | 607 int source_operations); |
609 | 608 |
610 const OSExchangeData& data() const { return data_; } | 609 const OSExchangeData& data() const { return data_; } |
611 int source_operations() const { return source_operations_; } | 610 int source_operations() const { return source_operations_; } |
612 | 611 |
613 private: | 612 private: |
614 // Data associated with the drag/drop session. | 613 // Data associated with the drag/drop session. |
615 const OSExchangeData& data_; | 614 const OSExchangeData& data_; |
616 | 615 |
617 // Bitmask of supported DragDropTypes::DragOperation by the source. | 616 // Bitmask of supported DragDropTypes::DragOperation by the source. |
618 int source_operations_; | 617 int source_operations_; |
619 | 618 |
620 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent); | 619 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent); |
621 }; | 620 }; |
622 | 621 |
623 class UI_EXPORT ScrollEvent : public MouseEvent { | 622 class EVENTS_EXPORT ScrollEvent : public MouseEvent { |
624 public: | 623 public: |
625 explicit ScrollEvent(const base::NativeEvent& native_event); | 624 explicit ScrollEvent(const base::NativeEvent& native_event); |
626 template <class T> | 625 template <class T> |
627 ScrollEvent(const ScrollEvent& model, | 626 ScrollEvent(const ScrollEvent& model, |
628 T* source, | 627 T* source, |
629 T* target) | 628 T* target) |
630 : MouseEvent(model, source, target), | 629 : MouseEvent(model, source, target), |
631 x_offset_(model.x_offset_), | 630 x_offset_(model.x_offset_), |
632 y_offset_(model.y_offset_), | 631 y_offset_(model.y_offset_), |
633 x_offset_ordinal_(model.x_offset_ordinal_), | 632 x_offset_ordinal_(model.x_offset_ordinal_), |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 // Potential accelerated offsets. | 664 // Potential accelerated offsets. |
666 float x_offset_; | 665 float x_offset_; |
667 float y_offset_; | 666 float y_offset_; |
668 // Unaccelerated offsets. | 667 // Unaccelerated offsets. |
669 float x_offset_ordinal_; | 668 float x_offset_ordinal_; |
670 float y_offset_ordinal_; | 669 float y_offset_ordinal_; |
671 // Number of fingers on the pad. | 670 // Number of fingers on the pad. |
672 int finger_count_; | 671 int finger_count_; |
673 }; | 672 }; |
674 | 673 |
675 class UI_EXPORT GestureEvent : public LocatedEvent { | 674 class EVENTS_EXPORT GestureEvent : public LocatedEvent { |
676 public: | 675 public: |
677 GestureEvent(EventType type, | 676 GestureEvent(EventType type, |
678 int x, | 677 int x, |
679 int y, | 678 int y, |
680 int flags, | 679 int flags, |
681 base::TimeDelta time_stamp, | 680 base::TimeDelta time_stamp, |
682 const GestureEventDetails& details, | 681 const GestureEventDetails& details, |
683 unsigned int touch_ids_bitfield); | 682 unsigned int touch_ids_bitfield); |
684 | 683 |
685 // Create a new GestureEvent which is identical to the provided model. | 684 // Create a new GestureEvent which is identical to the provided model. |
(...skipping 24 matching lines...) Expand all Loading... |
710 // The set of indices of ones in the binary representation of | 709 // The set of indices of ones in the binary representation of |
711 // touch_ids_bitfield_ is the set of touch_ids associate with this gesture. | 710 // touch_ids_bitfield_ is the set of touch_ids associate with this gesture. |
712 // This value is stored as a bitfield because the number of touch ids varies, | 711 // This value is stored as a bitfield because the number of touch ids varies, |
713 // but we currently don't need more than 32 touches at a time. | 712 // but we currently don't need more than 32 touches at a time. |
714 const unsigned int touch_ids_bitfield_; | 713 const unsigned int touch_ids_bitfield_; |
715 }; | 714 }; |
716 | 715 |
717 } // namespace ui | 716 } // namespace ui |
718 | 717 |
719 #endif // UI_EVENTS_EVENT_H_ | 718 #endif // UI_EVENTS_EVENT_H_ |
OLD | NEW |