| Index: ui/events/event_unittest.cc
|
| ===================================================================
|
| --- ui/events/event_unittest.cc (revision 286215)
|
| +++ ui/events/event_unittest.cc (working copy)
|
| @@ -98,6 +98,68 @@
|
| EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2));
|
| }
|
|
|
| +// Tests that an event only increases the click count and gets marked as a
|
| +// double click if a release event was seen for the previous click. This
|
| +// prevents the same PRESSED event from being processed twice:
|
| +// http://crbug.com/389162
|
| +TEST(EventTest, DoubleClickRequiresRelease) {
|
| + const gfx::Point origin1(0, 0);
|
| + const gfx::Point origin2(100, 0);
|
| + scoped_ptr<MouseEvent> ev;
|
| + base::TimeDelta start = base::TimeDelta::FromMilliseconds(0);
|
| +
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| +
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin2, origin2, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin2, origin2, 0, 0));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev));
|
| + MouseEvent::ResetLastClickForTest();
|
| +}
|
| +
|
| +// Tests that clicking right and then left clicking does not generate a double
|
| +// click.
|
| +TEST(EventTest, SingleClickRightLeft) {
|
| + const gfx::Point origin(0, 0);
|
| + scoped_ptr<MouseEvent> ev;
|
| + base::TimeDelta start = base::TimeDelta::FromMilliseconds(0);
|
| +
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin,
|
| + ui::EF_RIGHT_MOUSE_BUTTON,
|
| + ui::EF_RIGHT_MOUSE_BUTTON));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin,
|
| + ui::EF_LEFT_MOUSE_BUTTON,
|
| + ui::EF_LEFT_MOUSE_BUTTON));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_RELEASED, origin, origin,
|
| + ui::EF_LEFT_MOUSE_BUTTON,
|
| + ui::EF_LEFT_MOUSE_BUTTON));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev));
|
| + ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin,
|
| + ui::EF_LEFT_MOUSE_BUTTON,
|
| + ui::EF_LEFT_MOUSE_BUTTON));
|
| + ev->set_time_stamp(start);
|
| + EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev));
|
| + MouseEvent::ResetLastClickForTest();
|
| +}
|
| +
|
| TEST(EventTest, KeyEvent) {
|
| static const struct {
|
| KeyboardCode key_code;
|
|
|