Commit 697f3267 authored by penghuang's avatar penghuang Committed by Commit bot

ui/events: Add changed_button_flags_ in ui::PointerEvent.

BUG=638411

Review-Url: https://codereview.chromium.org/2270143002
Cr-Commit-Position: refs/heads/master@{#414486}
parent d8ef4c33
......@@ -443,7 +443,7 @@ TEST_F(CompositorMusConnectionTest, InputHandlerConsumes) {
TEST_F(CompositorMusConnectionTest, RendererWillNotSendAck) {
ui::TestWindow test_window;
ui::PointerEvent event(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 0,
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 0, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
ui::EventTimeForNow());
......@@ -468,7 +468,7 @@ TEST_F(CompositorMusConnectionTest, TouchEventConsumed) {
ui::TestWindow test_window;
ui::PointerEvent event(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 0,
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 0, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
ui::EventTimeForNow());
......
......@@ -477,7 +477,7 @@ TEST_F(WindowTreeClientTest, OnPointerEventObserved) {
// Simulate the server sending an observed event.
std::unique_ptr<ui::PointerEvent> pointer_event_down(new ui::PointerEvent(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_CONTROL_DOWN, 1,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
0, ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks()));
setup.window_tree_client()->OnPointerEventObserved(
std::move(pointer_event_down), 0u);
......@@ -493,7 +493,7 @@ TEST_F(WindowTreeClientTest, OnPointerEventObserved) {
// Simulate another event from the server.
std::unique_ptr<ui::PointerEvent> pointer_event_up(new ui::PointerEvent(
ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), ui::EF_CONTROL_DOWN, 1,
ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), ui::EF_CONTROL_DOWN, 1, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks()));
setup.window_tree_client()->OnPointerEventObserved(
......@@ -515,7 +515,7 @@ TEST_F(WindowTreeClientTest, OnWindowInputEventWithPointerWatcher) {
// Simulate the server dispatching an event that also matched the observer.
std::unique_ptr<ui::PointerEvent> pointer_event_down(new ui::PointerEvent(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_CONTROL_DOWN, 1,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
0, ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks()));
setup.window_tree_client()->OnWindowInputEvent(
1, server_id(root), std::move(pointer_event_down), true);
......
......@@ -157,7 +157,8 @@ bool EventDispatcher::SetCaptureWindow(ServerWindow* window,
// cancels.
ui::PointerEvent event(
event_type, gfx::Point(), gfx::Point(), ui::EF_NONE, pair.first,
ui::PointerDetails(pointer_type), ui::EventTimeForNow());
0 /* changed_button_flags */, ui::PointerDetails(pointer_type),
ui::EventTimeForNow());
DispatchToPointerTarget(pair.second, event);
}
pointer_targets_.clear();
......@@ -425,6 +426,7 @@ void EventDispatcher::UpdateTargetForPointer(int32_t pointer_id,
ui::PointerEvent exit_event(
ui::ET_POINTER_EXITED, event.location(), event.root_location(),
event.flags(), ui::PointerEvent::kMousePointerId,
0 /* changed_button_flags */,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
event.time_stamp());
DispatchToPointerTarget(pointer_targets_[pointer_id], exit_event);
......
......@@ -464,7 +464,7 @@ MouseEvent::MouseEvent(const base::NativeEvent& native_event)
MouseEvent::MouseEvent(const PointerEvent& pointer_event)
: LocatedEvent(pointer_event),
changed_button_flags_(0),
changed_button_flags_(pointer_event.changed_button_flags()),
pointer_details_(pointer_event.pointer_details()) {
DCHECK(pointer_event.IsMousePointerEvent());
switch (pointer_event.type()) {
......@@ -858,11 +858,13 @@ bool PointerEvent::CanConvertFrom(const Event& event) {
PointerEvent::PointerEvent(const PointerEvent& pointer_event)
: LocatedEvent(pointer_event),
pointer_id_(pointer_event.pointer_id()),
changed_button_flags_(pointer_event.changed_button_flags()),
details_(pointer_event.pointer_details()) {}
PointerEvent::PointerEvent(const MouseEvent& mouse_event)
: LocatedEvent(mouse_event),
pointer_id_(kMousePointerId),
changed_button_flags_(mouse_event.changed_button_flags()),
details_(mouse_event.pointer_details()) {
DCHECK(CanConvertFrom(mouse_event));
switch (mouse_event.type()) {
......@@ -895,6 +897,7 @@ PointerEvent::PointerEvent(const MouseEvent& mouse_event)
PointerEvent::PointerEvent(const TouchEvent& touch_event)
: LocatedEvent(touch_event),
pointer_id_(touch_event.touch_id()),
changed_button_flags_(0),
details_(touch_event.pointer_details()) {
DCHECK(CanConvertFrom(touch_event));
switch (touch_event.type()) {
......@@ -924,6 +927,7 @@ PointerEvent::PointerEvent(EventType type,
const gfx::Point& root_location,
int flags,
int pointer_id,
int changed_button_flags,
const PointerDetails& pointer_details,
base::TimeTicks time_stamp)
: LocatedEvent(type,
......@@ -932,6 +936,7 @@ PointerEvent::PointerEvent(EventType type,
time_stamp,
flags),
pointer_id_(pointer_id),
changed_button_flags_(changed_button_flags),
details_(pointer_details) {}
const int PointerEvent::kMousePointerId = std::numeric_limits<int32_t>::max();
......
......@@ -727,14 +727,18 @@ class EVENTS_EXPORT PointerEvent : public LocatedEvent {
const gfx::Point& root_location,
int flags,
int pointer_id,
int changed_button_flags,
const PointerDetails& pointer_details,
base::TimeTicks time_stamp);
int32_t pointer_id() const { return pointer_id_; }
int changed_button_flags() const { return changed_button_flags_; }
void set_changed_button_flags(int flags) { changed_button_flags_ = flags; }
const PointerDetails& pointer_details() const { return details_; }
private:
int32_t pointer_id_;
int changed_button_flags_;
PointerDetails details_;
};
......
......@@ -909,28 +909,29 @@ TEST(EventTest, PointerEventToMouseEvent) {
gfx::Point location;
gfx::Point root_location;
int flags;
int changed_button_flags;
} kTestData[] = {
{ui::ET_POINTER_DOWN, ui::ET_MOUSE_PRESSED, gfx::Point(10, 20),
gfx::Point(110, 120), 0},
gfx::Point(110, 120), 0, 0},
{ui::ET_POINTER_MOVED, ui::ET_MOUSE_MOVED, gfx::Point(20, 10),
gfx::Point(1, 2), 0},
gfx::Point(1, 2), 0, 0},
{ui::ET_POINTER_MOVED, ui::ET_MOUSE_DRAGGED, gfx::Point(20, 10),
gfx::Point(1, 2), EF_LEFT_MOUSE_BUTTON},
gfx::Point(1, 2), EF_LEFT_MOUSE_BUTTON, 0},
{ui::ET_POINTER_MOVED, ui::ET_MOUSE_DRAGGED, gfx::Point(20, 10),
gfx::Point(1, 2), EF_RIGHT_MOUSE_BUTTON},
gfx::Point(1, 2), EF_RIGHT_MOUSE_BUTTON, 0},
{ui::ET_POINTER_MOVED, ui::ET_MOUSE_DRAGGED, gfx::Point(20, 10),
gfx::Point(1, 2), EF_MIDDLE_MOUSE_BUTTON},
gfx::Point(1, 2), EF_MIDDLE_MOUSE_BUTTON, 0},
{ui::ET_POINTER_ENTERED, ui::ET_MOUSE_ENTERED, gfx::Point(), gfx::Point(),
EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON},
EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON, 0},
{ui::ET_POINTER_EXITED, ui::ET_MOUSE_EXITED, gfx::Point(5, 1),
gfx::Point(1, 5), EF_RIGHT_MOUSE_BUTTON},
gfx::Point(1, 5), EF_RIGHT_MOUSE_BUTTON, 0},
{ui::ET_POINTER_UP, ui::ET_MOUSE_RELEASED, gfx::Point(1000, 1000),
gfx::Point(14, 15), EF_MIDDLE_MOUSE_BUTTON}};
gfx::Point(14, 15), EF_MIDDLE_MOUSE_BUTTON, EF_MIDDLE_MOUSE_BUTTON}};
for (size_t i = 0; i < arraysize(kTestData); i++) {
ui::PointerEvent pointer_event(
kTestData[i].in_type, kTestData[i].location, kTestData[i].root_location,
kTestData[i].flags, 0,
kTestData[i].flags, 0, kTestData[i].changed_button_flags,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
base::TimeTicks());
ui::MouseEvent mouse_event(pointer_event);
......@@ -939,6 +940,8 @@ TEST(EventTest, PointerEventToMouseEvent) {
EXPECT_EQ(kTestData[i].location, mouse_event.location());
EXPECT_EQ(kTestData[i].root_location, mouse_event.root_location());
EXPECT_EQ(kTestData[i].flags, mouse_event.flags());
EXPECT_EQ(kTestData[i].changed_button_flags,
mouse_event.changed_button_flags());
}
}
......@@ -952,7 +955,7 @@ TEST(EventTest, PointerEventToTouchEventType) {
for (size_t i = 0; i < arraysize(kTouchTypeMap); i++) {
ui::PointerEvent pointer_event(
kTouchTypeMap[i][0], gfx::Point(), gfx::Point(), 0, 0,
kTouchTypeMap[i][0], gfx::Point(), gfx::Point(), 0, 0, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks());
ui::TouchEvent touch_event(pointer_event);
......
......@@ -63,6 +63,7 @@ struct LocationData {
// TODO(rjkroege,sadrul): Add gesture representation.
struct PointerData {
int32 pointer_id;
int32 changed_button_flags;
PointerKind kind;
LocationData location;
// Some devices (e.g. pen, finger) can extend across multiple pixels
......
......@@ -167,6 +167,7 @@ StructTraits<ui::mojom::EventDataView, EventUniquePtr>::pointer_data(
if (event->IsPointerEvent()) {
const ui::PointerEvent* pointer_event = event->AsPointerEvent();
pointer_data->pointer_id = pointer_event->pointer_id();
pointer_data->changed_button_flags = pointer_event->changed_button_flags();
pointer_details = &pointer_event->pointer_details();
} else {
const ui::MouseWheelEvent* wheel_event = event->AsMouseWheelEvent();
......@@ -287,6 +288,7 @@ bool StructTraits<ui::mojom::EventDataView, EventUniquePtr>::Read(
out->reset(new ui::PointerEvent(
MojoPointerEventTypeToUIEvent(event.action()), location,
screen_location, event.flags(), ui::PointerEvent::kMousePointerId,
pointer_data->changed_button_flags,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
ui::EventTimeForNow()));
return true;
......@@ -295,6 +297,7 @@ bool StructTraits<ui::mojom::EventDataView, EventUniquePtr>::Read(
out->reset(new ui::PointerEvent(
MojoPointerEventTypeToUIEvent(event.action()), location,
screen_location, event.flags(), pointer_data->pointer_id,
pointer_data->changed_button_flags,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH,
pointer_data->brush_data->width,
pointer_data->brush_data->height,
......
......@@ -163,27 +163,28 @@ TEST_F(StructTraitsTest, PointerEvent) {
PointerEvent kTestData[] = {
// Mouse pointer events:
{ET_POINTER_DOWN, gfx::Point(10, 10), gfx::Point(20, 30), EF_NONE,
PointerEvent::kMousePointerId,
PointerEvent::kMousePointerId, 0,
PointerDetails(EventPointerType::POINTER_TYPE_MOUSE), base::TimeTicks()},
{ET_POINTER_MOVED, gfx::Point(1, 5), gfx::Point(5, 1),
EF_LEFT_MOUSE_BUTTON, PointerEvent::kMousePointerId,
EF_LEFT_MOUSE_BUTTON,
PointerDetails(EventPointerType::POINTER_TYPE_MOUSE), base::TimeTicks()},
{ET_POINTER_UP, gfx::Point(411, 130), gfx::Point(20, 30),
EF_MIDDLE_MOUSE_BUTTON | EF_RIGHT_MOUSE_BUTTON,
PointerEvent::kMousePointerId,
PointerEvent::kMousePointerId, EF_RIGHT_MOUSE_BUTTON,
PointerDetails(EventPointerType::POINTER_TYPE_MOUSE), base::TimeTicks()},
{ET_POINTER_EXITED, gfx::Point(10, 10), gfx::Point(20, 30),
EF_BACK_MOUSE_BUTTON, PointerEvent::kMousePointerId,
EF_BACK_MOUSE_BUTTON, PointerEvent::kMousePointerId, 0,
PointerDetails(EventPointerType::POINTER_TYPE_MOUSE), base::TimeTicks()},
// Touch pointer events:
{ET_POINTER_DOWN, gfx::Point(10, 10), gfx::Point(20, 30), EF_NONE, 1,
{ET_POINTER_DOWN, gfx::Point(10, 10), gfx::Point(20, 30), EF_NONE, 1, 0,
PointerDetails(EventPointerType::POINTER_TYPE_TOUCH, 1.0, 2.0, 3.0, 4.0,
5.0),
base::TimeTicks()},
{ET_POINTER_CANCELLED, gfx::Point(120, 120), gfx::Point(2, 3), EF_NONE, 2,
PointerDetails(EventPointerType::POINTER_TYPE_TOUCH, 5.5, 4.5, 3.5, 2.5,
0.5),
0, PointerDetails(EventPointerType::POINTER_TYPE_TOUCH, 5.5, 4.5, 3.5,
2.5, 0.5),
base::TimeTicks()},
};
......@@ -199,6 +200,8 @@ TEST_F(StructTraitsTest, PointerEvent) {
EXPECT_EQ(kTestData[i].location(), output_ptr_event->location());
EXPECT_EQ(kTestData[i].root_location(), output_ptr_event->root_location());
EXPECT_EQ(kTestData[i].pointer_id(), output_ptr_event->pointer_id());
EXPECT_EQ(kTestData[i].changed_button_flags(),
output_ptr_event->changed_button_flags());
EXPECT_EQ(kTestData[i].pointer_details(),
output_ptr_event->pointer_details());
}
......
......@@ -124,11 +124,11 @@ TEST_F(PointerWatcherEventRouterTest, PointerWatcherNoMove) {
ASSERT_TRUE(pointer_watcher_event_router);
ui::PointerEvent pointer_event_down(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1,
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks());
ui::PointerEvent pointer_event_up(
ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), ui::EF_NONE, 1,
ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
base::TimeTicks());
......@@ -177,11 +177,11 @@ TEST_F(PointerWatcherEventRouterTest, PointerWatcherMove) {
ASSERT_TRUE(pointer_watcher_event_router);
ui::PointerEvent pointer_event_down(
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1,
ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks());
ui::PointerEvent pointer_event_move(
ui::ET_POINTER_MOVED, gfx::Point(), gfx::Point(), ui::EF_NONE, 1,
ui::ET_POINTER_MOVED, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
base::TimeTicks());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment