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

Side by Side Diff: ui/events/event.h

Issue 1755703004: Revert of IPC::ParamTraits for ui::Event (towards ui::Events over mojo IPC) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months 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
« no previous file with comments | « components/mus/common/mus_ipc_export.h ('k') | ui/events/event.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stdint.h> 8 #include <stdint.h>
9
9 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
10 #include "base/event_types.h" 11 #include "base/event_types.h"
11 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/macros.h" 14 #include "base/macros.h"
14 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
15 #include "base/time/time.h" 16 #include "base/time/time.h"
16 #include "ui/events/event_constants.h" 17 #include "ui/events/event_constants.h"
17 #include "ui/events/gesture_event_details.h" 18 #include "ui/events/gesture_event_details.h"
18 #include "ui/events/gestures/gesture_types.h" 19 #include "ui/events/gestures/gesture_types.h"
19 #include "ui/events/keycodes/dom/dom_key.h" 20 #include "ui/events/keycodes/dom/dom_key.h"
20 #include "ui/events/keycodes/keyboard_codes.h" 21 #include "ui/events/keycodes/keyboard_codes.h"
21 #include "ui/events/latency_info.h" 22 #include "ui/events/latency_info.h"
22 #include "ui/gfx/geometry/point.h" 23 #include "ui/gfx/geometry/point.h"
23 #include "ui/gfx/geometry/point_conversions.h" 24 #include "ui/gfx/geometry/point_conversions.h"
24 25
25 namespace gfx { 26 namespace gfx {
26 class Transform; 27 class Transform;
27 } 28 }
28 29
29 namespace IPC {
30 template <class P> struct ParamTraits;
31 }
32
33 namespace ui { 30 namespace ui {
34 class EventTarget; 31 class EventTarget;
35 class KeyEvent; 32 class KeyEvent;
36 class MouseEvent; 33 class MouseEvent;
37 class PointerEvent; 34 class PointerEvent;
38 class TouchEvent; 35 class TouchEvent;
39 enum class DomCode; 36 enum class DomCode;
40 class Event;
41 class MouseWheelEvent;
42
43 using ScopedEvent = scoped_ptr<Event>;
44 37
45 class EVENTS_EXPORT Event { 38 class EVENTS_EXPORT Event {
46 public: 39 public:
47 static scoped_ptr<Event> Clone(const Event& event); 40 static scoped_ptr<Event> Clone(const Event& event);
48 41
49 virtual ~Event(); 42 virtual ~Event();
50 43
51 class DispatcherApi { 44 class DispatcherApi {
52 public: 45 public:
53 explicit DispatcherApi(Event* event) : event_(event) {} 46 explicit DispatcherApi(Event* event) : event_(event) {}
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 262
270 void set_time_stamp(const base::TimeDelta& time_stamp) { 263 void set_time_stamp(const base::TimeDelta& time_stamp) {
271 time_stamp_ = time_stamp; 264 time_stamp_ = time_stamp;
272 } 265 }
273 266
274 void set_name(const std::string& name) { name_ = name; } 267 void set_name(const std::string& name) { name_ = name; }
275 268
276 private: 269 private:
277 friend class EventTestApi; 270 friend class EventTestApi;
278 271
279 // For (de)serialization.
280 friend struct IPC::ParamTraits<ui::ScopedEvent>;
281
282 EventType type_; 272 EventType type_;
283 std::string name_; 273 std::string name_;
284 base::TimeDelta time_stamp_; 274 base::TimeDelta time_stamp_;
285 LatencyInfo latency_; 275 LatencyInfo latency_;
286 int flags_; 276 int flags_;
287 base::NativeEvent native_event_; 277 base::NativeEvent native_event_;
288 bool delete_native_event_; 278 bool delete_native_event_;
289 bool cancelable_; 279 bool cancelable_;
290 EventTarget* target_; 280 EventTarget* target_;
291 EventPhase phase_; 281 EventPhase phase_;
292 EventResult result_; 282 EventResult result_;
293 283
294 // The device id the event came from, or ED_UNKNOWN_DEVICE if the information 284 // The device id the event came from, or ED_UNKNOWN_DEVICE if the information
295 // is not available. 285 // is not available.
296 int source_device_id_; 286 int source_device_id_;
297 }; 287 };
298 288
299 class EVENTS_EXPORT CancelModeEvent : public Event { 289 class EVENTS_EXPORT CancelModeEvent : public Event {
300 public: 290 public:
301 CancelModeEvent(); 291 CancelModeEvent();
302 ~CancelModeEvent() override; 292 ~CancelModeEvent() override;
303
304 private:
305 // For (de)serialization.
306 CancelModeEvent(EventType type, base::TimeDelta time_stamp, int flags)
307 : Event(type, time_stamp, flags) {}
308 friend struct IPC::ParamTraits<ui::ScopedEvent>;
309 friend struct IPC::ParamTraits<ui::CancelModeEvent>;
310 }; 293 };
311 294
312 class EVENTS_EXPORT LocatedEvent : public Event { 295 class EVENTS_EXPORT LocatedEvent : public Event {
313 public: 296 public:
314 ~LocatedEvent() override; 297 ~LocatedEvent() override;
315 298
316 float x() const { return location_.x(); } 299 float x() const { return location_.x(); }
317 float y() const { return location_.y(); } 300 float y() const { return location_.y(); }
318 void set_location(const gfx::Point& location) { 301 void set_location(const gfx::Point& location) {
319 location_ = gfx::PointF(location); 302 location_ = gfx::PointF(location);
(...skipping 23 matching lines...) Expand all
343 if (!target || target == source) 326 if (!target || target == source)
344 return; 327 return;
345 gfx::Point offset = gfx::ToFlooredPoint(location_); 328 gfx::Point offset = gfx::ToFlooredPoint(location_);
346 T::ConvertPointToTarget(source, target, &offset); 329 T::ConvertPointToTarget(source, target, &offset);
347 gfx::Vector2d diff = gfx::ToFlooredPoint(location_) - offset; 330 gfx::Vector2d diff = gfx::ToFlooredPoint(location_) - offset;
348 location_= location_ - diff; 331 location_= location_ - diff;
349 } 332 }
350 333
351 protected: 334 protected:
352 friend class LocatedEventTestApi; 335 friend class LocatedEventTestApi;
353
354 // For (de)serialization.
355 LocatedEvent(EventType type, base::TimeDelta time_stamp, int flags)
356 : Event(type, time_stamp, flags) {}
357 friend struct IPC::ParamTraits<ui::ScopedEvent>;
358 friend struct IPC::ParamTraits<ui::LocatedEvent>;
359
360 explicit LocatedEvent(const base::NativeEvent& native_event); 336 explicit LocatedEvent(const base::NativeEvent& native_event);
361 337
362 // Create a new LocatedEvent which is identical to the provided model. 338 // Create a new LocatedEvent which is identical to the provided model.
363 // If source / target windows are provided, the model location will be 339 // If source / target windows are provided, the model location will be
364 // converted from |source| coordinate system to |target| coordinate system. 340 // converted from |source| coordinate system to |target| coordinate system.
365 template <class T> 341 template <class T>
366 LocatedEvent(const LocatedEvent& model, T* source, T* target) 342 LocatedEvent(const LocatedEvent& model, T* source, T* target)
367 : Event(model), 343 : Event(model),
368 location_(model.location_), 344 location_(model.location_),
369 root_location_(model.root_location_) { 345 root_location_(model.root_location_) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 bool operator==(const PointerDetails& other) const { 386 bool operator==(const PointerDetails& other) const {
411 return pointer_type == other.pointer_type && 387 return pointer_type == other.pointer_type &&
412 radius_x == other.radius_x && 388 radius_x == other.radius_x &&
413 radius_y == other.radius_y && 389 radius_y == other.radius_y &&
414 (force == other.force || 390 (force == other.force ||
415 (std::isnan(force) && std::isnan(other.force))) && 391 (std::isnan(force) && std::isnan(other.force))) &&
416 tilt_x == other.tilt_x && 392 tilt_x == other.tilt_x &&
417 tilt_y == other.tilt_y; 393 tilt_y == other.tilt_y;
418 } 394 }
419 395
420 // For serialization.
421 friend struct IPC::ParamTraits<ui::PointerDetails>;
422
423 // The type of pointer device. 396 // The type of pointer device.
424 EventPointerType pointer_type = EventPointerType::POINTER_TYPE_UNKNOWN; 397 EventPointerType pointer_type = EventPointerType::POINTER_TYPE_UNKNOWN;
425 398
426 // Radius of the X (major) axis of the touch ellipse. 0.0 if unknown. 399 // Radius of the X (major) axis of the touch ellipse. 0.0 if unknown.
427 float radius_x = 0.0; 400 float radius_x = 0.0;
428 401
429 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown. 402 // Radius of the Y (minor) axis of the touch ellipse. 0.0 if unknown.
430 float radius_y = 0.0; 403 float radius_y = 0.0;
431 404
432 // Force (pressure) of the touch. Normalized to be [0, 1] except NaN means 405 // Force (pressure) of the touch. Normalized to be [0, 1] except NaN means
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 505
533 // Updates the button that changed. 506 // Updates the button that changed.
534 void set_changed_button_flags(int flags) { changed_button_flags_ = flags; } 507 void set_changed_button_flags(int flags) { changed_button_flags_ = flags; }
535 508
536 // Event details common to MouseEvent and TouchEvent. 509 // Event details common to MouseEvent and TouchEvent.
537 const PointerDetails& pointer_details() const { return pointer_details_; } 510 const PointerDetails& pointer_details() const { return pointer_details_; }
538 void set_pointer_details(const PointerDetails& details) { 511 void set_pointer_details(const PointerDetails& details) {
539 pointer_details_ = details; 512 pointer_details_ = details;
540 } 513 }
541 514
542 protected:
543 // For (de)serialization.
544 MouseEvent(EventType type, base::TimeDelta time_stamp, int flags)
545 : LocatedEvent(type, time_stamp, flags) {}
546 friend struct IPC::ParamTraits<ui::ScopedEvent>;
547 friend struct IPC::ParamTraits<ui::MouseEvent>;
548
549 private: 515 private:
550 FRIEND_TEST_ALL_PREFIXES(EventTest, DoubleClickRequiresRelease); 516 FRIEND_TEST_ALL_PREFIXES(EventTest, DoubleClickRequiresRelease);
551 FRIEND_TEST_ALL_PREFIXES(EventTest, SingleClickRightLeft); 517 FRIEND_TEST_ALL_PREFIXES(EventTest, SingleClickRightLeft);
552 518
553 // Returns the repeat count based on the previous mouse click, if it is 519 // Returns the repeat count based on the previous mouse click, if it is
554 // recent enough and within a small enough distance. 520 // recent enough and within a small enough distance.
555 static int GetRepeatCount(const MouseEvent& click_event); 521 static int GetRepeatCount(const MouseEvent& click_event);
556 522
557 // Resets the last_click_event_ for unit tests. 523 // Resets the last_click_event_ for unit tests.
558 static void ResetLastClickForTest(); 524 static void ResetLastClickForTest();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 int flags, 565 int flags,
600 int changed_button_flags); 566 int changed_button_flags);
601 567
602 // The amount to scroll. This is in multiples of kWheelDelta. 568 // The amount to scroll. This is in multiples of kWheelDelta.
603 // Note: x_offset() > 0/y_offset() > 0 means scroll left/up. 569 // Note: x_offset() > 0/y_offset() > 0 means scroll left/up.
604 int x_offset() const { return offset_.x(); } 570 int x_offset() const { return offset_.x(); }
605 int y_offset() const { return offset_.y(); } 571 int y_offset() const { return offset_.y(); }
606 const gfx::Vector2d& offset() const { return offset_; } 572 const gfx::Vector2d& offset() const { return offset_; }
607 573
608 private: 574 private:
609 // For (de)serialization.
610 MouseWheelEvent(EventType type, base::TimeDelta time_stamp, int flags)
611 : MouseEvent(type, time_stamp, flags) {}
612 friend struct IPC::ParamTraits<ui::ScopedEvent>;
613 friend struct IPC::ParamTraits<ui::MouseWheelEvent>;
614
615 gfx::Vector2d offset_; 575 gfx::Vector2d offset_;
616 }; 576 };
617 577
618 class EVENTS_EXPORT TouchEvent : public LocatedEvent { 578 class EVENTS_EXPORT TouchEvent : public LocatedEvent {
619 public: 579 public:
620 explicit TouchEvent(const base::NativeEvent& native_event); 580 explicit TouchEvent(const base::NativeEvent& native_event);
621 581
622 // Create a new TouchEvent which is identical to the provided model. 582 // Create a new TouchEvent which is identical to the provided model.
623 // If source / target windows are provided, the model location will be 583 // If source / target windows are provided, the model location will be
624 // converted from |source| coordinate system to |target| coordinate system. 584 // converted from |source| coordinate system to |target| coordinate system.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 return !!(result() & ER_DISABLE_SYNC_HANDLING); 637 return !!(result() & ER_DISABLE_SYNC_HANDLING);
678 } 638 }
679 639
680 // Event details common to MouseEvent and TouchEvent. 640 // Event details common to MouseEvent and TouchEvent.
681 const PointerDetails& pointer_details() const { return pointer_details_; } 641 const PointerDetails& pointer_details() const { return pointer_details_; }
682 void set_pointer_details(const PointerDetails& pointer_details) { 642 void set_pointer_details(const PointerDetails& pointer_details) {
683 pointer_details_ = pointer_details; 643 pointer_details_ = pointer_details;
684 } 644 }
685 645
686 private: 646 private:
687 // For (de)serialization.
688 TouchEvent(EventType type, base::TimeDelta time_stamp, int flags)
689 : LocatedEvent(type, time_stamp, flags),
690 should_remove_native_touch_id_mapping_(false) {}
691 friend struct IPC::ParamTraits<ui::ScopedEvent>;
692 friend struct IPC::ParamTraits<ui::TouchEvent>;
693
694 // Adjusts rotation_angle_ to within the acceptable range. 647 // Adjusts rotation_angle_ to within the acceptable range.
695 void FixRotationAngle(); 648 void FixRotationAngle();
696 649
697 // The identity (typically finger) of the touch starting at 0 and incrementing 650 // The identity (typically finger) of the touch starting at 0 and incrementing
698 // for each separable additional touch that the hardware can detect. 651 // for each separable additional touch that the hardware can detect.
699 int touch_id_; 652 const int touch_id_;
700 653
701 // A unique identifier for the touch event. 654 // A unique identifier for the touch event.
702 uint32_t unique_event_id_; 655 const uint32_t unique_event_id_;
703 656
704 // Clockwise angle (in degrees) of the major axis from the X axis. Must be 657 // Clockwise angle (in degrees) of the major axis from the X axis. Must be
705 // less than 180 and non-negative. 658 // less than 180 and non-negative.
706 float rotation_angle_; 659 float rotation_angle_;
707 660
708 // Whether the (unhandled) touch event will produce a scroll event (e.g., a 661 // Whether the (unhandled) touch event will produce a scroll event (e.g., a
709 // touchmove that exceeds the platform slop region, or a touchend that 662 // touchmove that exceeds the platform slop region, or a touchend that
710 // causes a fling). Defaults to false. 663 // causes a fling). Defaults to false.
711 bool may_cause_scrolling_; 664 bool may_cause_scrolling_;
712 665
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 // (Native X11 event flags describe the state before the event.) 855 // (Native X11 event flags describe the state before the event.)
903 void NormalizeFlags(); 856 void NormalizeFlags();
904 857
905 protected: 858 protected:
906 friend class KeyEventTestApi; 859 friend class KeyEventTestApi;
907 860
908 // This allows a subclass TranslatedKeyEvent to be a non character event. 861 // This allows a subclass TranslatedKeyEvent to be a non character event.
909 void set_is_char(bool is_char) { is_char_ = is_char; } 862 void set_is_char(bool is_char) { is_char_ = is_char; }
910 863
911 private: 864 private:
912 // For (de)serialization.
913 KeyEvent(EventType type, base::TimeDelta time_stamp, int flags);
914 friend struct IPC::ParamTraits<ui::ScopedEvent>;
915 friend struct IPC::ParamTraits<ui::KeyEvent>;
916
917 // Determine key_ on a keystroke event from code_ and flags(). 865 // Determine key_ on a keystroke event from code_ and flags().
918 void ApplyLayout() const; 866 void ApplyLayout() const;
919 867
920 KeyboardCode key_code_; 868 KeyboardCode key_code_;
921 869
922 // DOM KeyboardEvent |code| (e.g. DomCode::US_A, DomCode::SPACE). 870 // DOM KeyboardEvent |code| (e.g. DomCode::US_A, DomCode::SPACE).
923 // http://www.w3.org/TR/DOM-Level-3-Events-code/ 871 // http://www.w3.org/TR/DOM-Level-3-Events-code/
924 // 872 //
925 // This value represents the physical position in the keyboard and can be 873 // This value represents the physical position in the keyboard and can be
926 // converted from / to keyboard scan code like XKB. 874 // converted from / to keyboard scan code like XKB.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 // to provide a consistent user experience. 933 // to provide a consistent user experience.
986 void Scale(const float factor); 934 void Scale(const float factor);
987 935
988 float x_offset() const { return x_offset_; } 936 float x_offset() const { return x_offset_; }
989 float y_offset() const { return y_offset_; } 937 float y_offset() const { return y_offset_; }
990 float x_offset_ordinal() const { return x_offset_ordinal_; } 938 float x_offset_ordinal() const { return x_offset_ordinal_; }
991 float y_offset_ordinal() const { return y_offset_ordinal_; } 939 float y_offset_ordinal() const { return y_offset_ordinal_; }
992 int finger_count() const { return finger_count_; } 940 int finger_count() const { return finger_count_; }
993 941
994 private: 942 private:
995 // For (de)serialization.
996 ScrollEvent(EventType type, base::TimeDelta time_stamp, int flags)
997 : MouseEvent(type, time_stamp, flags) {}
998 friend struct IPC::ParamTraits<ui::ScopedEvent>;
999 friend struct IPC::ParamTraits<ui::ScrollEvent>;
1000
1001 // Potential accelerated offsets. 943 // Potential accelerated offsets.
1002 float x_offset_; 944 float x_offset_;
1003 float y_offset_; 945 float y_offset_;
1004 // Unaccelerated offsets. 946 // Unaccelerated offsets.
1005 float x_offset_ordinal_; 947 float x_offset_ordinal_;
1006 float y_offset_ordinal_; 948 float y_offset_ordinal_;
1007 // Number of fingers on the pad. 949 // Number of fingers on the pad.
1008 int finger_count_; 950 int finger_count_;
1009 }; 951 };
1010 952
(...skipping 12 matching lines...) Expand all
1023 GestureEvent(const GestureEvent& model, T* source, T* target) 965 GestureEvent(const GestureEvent& model, T* source, T* target)
1024 : LocatedEvent(model, source, target), 966 : LocatedEvent(model, source, target),
1025 details_(model.details_) { 967 details_(model.details_) {
1026 } 968 }
1027 969
1028 ~GestureEvent() override; 970 ~GestureEvent() override;
1029 971
1030 const GestureEventDetails& details() const { return details_; } 972 const GestureEventDetails& details() const { return details_; }
1031 973
1032 private: 974 private:
1033 // For (de)serialization.
1034 GestureEvent(EventType type, base::TimeDelta time_stamp, int flags)
1035 : LocatedEvent(type, time_stamp, flags) {}
1036 friend struct IPC::ParamTraits<ui::ScopedEvent>;
1037 friend struct IPC::ParamTraits<ui::GestureEvent>;
1038
1039 GestureEventDetails details_; 975 GestureEventDetails details_;
1040 }; 976 };
1041 977
1042 } // namespace ui 978 } // namespace ui
1043 979
1044 #endif // UI_EVENTS_EVENT_H_ 980 #endif // UI_EVENTS_EVENT_H_
OLDNEW
« no previous file with comments | « components/mus/common/mus_ipc_export.h ('k') | ui/events/event.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698