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

Unified Diff: ui/events/event.h

Issue 1695783002: IPC::ParamTraits for ui::Event (towards ui::Events over mojo IPC) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Explicate MUS_COMMON_EXPORT in header and impl Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: ui/events/event.h
diff --git a/ui/events/event.h b/ui/events/event.h
index 35999bf463bd902c9a421963c83112e990fbda67..ca383d70a33054b0b2e0758c4392ea84ebda61ee 100644
--- a/ui/events/event.h
+++ b/ui/events/event.h
@@ -6,7 +6,6 @@
#define UI_EVENTS_EVENT_H_
#include <stdint.h>
-
#include "base/compiler_specific.h"
#include "base/event_types.h"
#include "base/gtest_prod_util.h"
@@ -27,6 +26,10 @@ namespace gfx {
class Transform;
}
+namespace IPC {
+template <class P> struct ParamTraits;
+}
+
namespace ui {
class EventTarget;
class KeyEvent;
@@ -36,6 +39,10 @@ class PointerEvent;
class ScrollEvent;
class TouchEvent;
enum class DomCode;
+class Event;
+class MouseWheelEvent;
+
+using ScopedEvent = scoped_ptr<Event>;
class EVENTS_EXPORT Event {
public:
@@ -282,6 +289,9 @@ class EVENTS_EXPORT Event {
private:
friend class EventTestApi;
+ // For (de)serialization.
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+
EventType type_;
std::string name_;
base::TimeDelta time_stamp_;
@@ -303,6 +313,13 @@ class EVENTS_EXPORT CancelModeEvent : public Event {
public:
CancelModeEvent();
~CancelModeEvent() override;
+
+ private:
+ // For (de)serialization.
+ CancelModeEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : Event(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::CancelModeEvent>;
};
class EVENTS_EXPORT LocatedEvent : public Event {
@@ -346,6 +363,13 @@ class EVENTS_EXPORT LocatedEvent : public Event {
protected:
friend class LocatedEventTestApi;
+
+ // For (de)serialization.
+ LocatedEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : Event(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::LocatedEvent>;
+
explicit LocatedEvent(const base::NativeEvent& native_event);
// Create a new LocatedEvent which is identical to the provided model.
@@ -406,6 +430,9 @@ struct EVENTS_EXPORT PointerDetails {
tilt_y == other.tilt_y;
}
+ // For serialization.
+ friend struct IPC::ParamTraits<ui::PointerDetails>;
+
// The type of pointer device.
EventPointerType pointer_type = EventPointerType::POINTER_TYPE_UNKNOWN;
@@ -525,6 +552,13 @@ class EVENTS_EXPORT MouseEvent : public LocatedEvent {
pointer_details_ = details;
}
+ protected:
+ // For (de)serialization.
+ MouseEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : LocatedEvent(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::MouseEvent>;
+
private:
FRIEND_TEST_ALL_PREFIXES(EventTest, DoubleClickRequiresRelease);
FRIEND_TEST_ALL_PREFIXES(EventTest, SingleClickRightLeft);
@@ -585,6 +619,12 @@ class EVENTS_EXPORT MouseWheelEvent : public MouseEvent {
const gfx::Vector2d& offset() const { return offset_; }
private:
+ // For (de)serialization.
+ MouseWheelEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : MouseEvent(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::MouseWheelEvent>;
+
gfx::Vector2d offset_;
};
@@ -657,15 +697,22 @@ class EVENTS_EXPORT TouchEvent : public LocatedEvent {
}
private:
+ // For (de)serialization.
+ TouchEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : LocatedEvent(type, time_stamp, flags),
+ should_remove_native_touch_id_mapping_(false) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::TouchEvent>;
+
// Adjusts rotation_angle_ to within the acceptable range.
void FixRotationAngle();
// The identity (typically finger) of the touch starting at 0 and incrementing
// for each separable additional touch that the hardware can detect.
- const int touch_id_;
+ int touch_id_;
// A unique identifier for the touch event.
- const uint32_t unique_event_id_;
+ uint32_t unique_event_id_;
// Clockwise angle (in degrees) of the major axis from the X axis. Must be
// less than 180 and non-negative.
@@ -875,6 +922,11 @@ class EVENTS_EXPORT KeyEvent : public Event {
void set_is_char(bool is_char) { is_char_ = is_char; }
private:
+ // For (de)serialization.
+ KeyEvent(EventType type, base::TimeDelta time_stamp, int flags);
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::KeyEvent>;
+
// Determine key_ on a keystroke event from code_ and flags().
void ApplyLayout() const;
@@ -953,6 +1005,12 @@ class EVENTS_EXPORT ScrollEvent : public MouseEvent {
int finger_count() const { return finger_count_; }
private:
+ // For (de)serialization.
+ ScrollEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : MouseEvent(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::ScrollEvent>;
+
// Potential accelerated offsets.
float x_offset_;
float y_offset_;
@@ -985,6 +1043,12 @@ class EVENTS_EXPORT GestureEvent : public LocatedEvent {
const GestureEventDetails& details() const { return details_; }
private:
+ // For (de)serialization.
+ GestureEvent(EventType type, base::TimeDelta time_stamp, int flags)
+ : LocatedEvent(type, time_stamp, flags) {}
+ friend struct IPC::ParamTraits<ui::ScopedEvent>;
+ friend struct IPC::ParamTraits<ui::GestureEvent>;
+
GestureEventDetails details_;
};

Powered by Google App Engine
This is Rietveld 408576698