| 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 #include "ui/events/event.h" |
| 6 |
| 5 #include <stddef.h> | 7 #include <stddef.h> |
| 6 #include <stdint.h> | 8 #include <stdint.h> |
| 7 | 9 |
| 10 #include <memory> |
| 11 |
| 8 #include "base/macros.h" | 12 #include "base/macros.h" |
| 9 #include "base/memory/scoped_ptr.h" | |
| 10 #include "build/build_config.h" | 13 #include "build/build_config.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "ui/events/event.h" | |
| 13 #include "ui/events/event_utils.h" | 15 #include "ui/events/event_utils.h" |
| 14 #include "ui/events/keycodes/dom/dom_code.h" | 16 #include "ui/events/keycodes/dom/dom_code.h" |
| 15 #include "ui/events/keycodes/dom/keycode_converter.h" | 17 #include "ui/events/keycodes/dom/keycode_converter.h" |
| 16 #include "ui/events/test/events_test_utils.h" | 18 #include "ui/events/test/events_test_utils.h" |
| 17 | 19 |
| 18 #if defined(USE_X11) | 20 #if defined(USE_X11) |
| 19 #include <X11/Xlib.h> | 21 #include <X11/Xlib.h> |
| 20 #include "ui/events/test/events_test_utils_x11.h" | 22 #include "ui/events/test/events_test_utils_x11.h" |
| 21 #include "ui/gfx/x/x11_types.h" // nogncheck | 23 #include "ui/gfx/x/x11_types.h" // nogncheck |
| 22 #endif | 24 #endif |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); | 124 EXPECT_FALSE(MouseEvent::IsRepeatedClickEvent(mouse_ev1, mouse_ev2)); |
| 123 } | 125 } |
| 124 | 126 |
| 125 // Tests that an event only increases the click count and gets marked as a | 127 // Tests that an event only increases the click count and gets marked as a |
| 126 // double click if a release event was seen for the previous click. This | 128 // double click if a release event was seen for the previous click. This |
| 127 // prevents the same PRESSED event from being processed twice: | 129 // prevents the same PRESSED event from being processed twice: |
| 128 // http://crbug.com/389162 | 130 // http://crbug.com/389162 |
| 129 TEST(EventTest, DoubleClickRequiresRelease) { | 131 TEST(EventTest, DoubleClickRequiresRelease) { |
| 130 const gfx::Point origin1(0, 0); | 132 const gfx::Point origin1(0, 0); |
| 131 const gfx::Point origin2(100, 0); | 133 const gfx::Point origin2(100, 0); |
| 132 scoped_ptr<MouseEvent> ev; | 134 std::unique_ptr<MouseEvent> ev; |
| 133 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 135 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); |
| 134 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 136 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); |
| 135 | 137 |
| 136 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 138 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
| 137 0, 0)); | 139 0, 0)); |
| 138 ev->set_time_stamp(start); | 140 ev->set_time_stamp(start); |
| 139 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 141 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| 140 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), | 142 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin1, origin1, EventTimeForNow(), |
| 141 0, 0)); | 143 0, 0)); |
| 142 ev->set_time_stamp(start); | 144 ev->set_time_stamp(start); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 158 EventTimeForNow(), 0, 0)); | 160 EventTimeForNow(), 0, 0)); |
| 159 ev->set_time_stamp(soon); | 161 ev->set_time_stamp(soon); |
| 160 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); | 162 EXPECT_EQ(2, MouseEvent::GetRepeatCount(*ev)); |
| 161 MouseEvent::ResetLastClickForTest(); | 163 MouseEvent::ResetLastClickForTest(); |
| 162 } | 164 } |
| 163 | 165 |
| 164 // Tests that clicking right and then left clicking does not generate a double | 166 // Tests that clicking right and then left clicking does not generate a double |
| 165 // click. | 167 // click. |
| 166 TEST(EventTest, SingleClickRightLeft) { | 168 TEST(EventTest, SingleClickRightLeft) { |
| 167 const gfx::Point origin(0, 0); | 169 const gfx::Point origin(0, 0); |
| 168 scoped_ptr<MouseEvent> ev; | 170 std::unique_ptr<MouseEvent> ev; |
| 169 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); | 171 base::TimeDelta start = base::TimeDelta::FromMilliseconds(0); |
| 170 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); | 172 base::TimeDelta soon = start + base::TimeDelta::FromMilliseconds(1); |
| 171 | 173 |
| 172 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 174 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
| 173 ui::EF_RIGHT_MOUSE_BUTTON, | 175 ui::EF_RIGHT_MOUSE_BUTTON, |
| 174 ui::EF_RIGHT_MOUSE_BUTTON)); | 176 ui::EF_RIGHT_MOUSE_BUTTON)); |
| 175 ev->set_time_stamp(start); | 177 ev->set_time_stamp(start); |
| 176 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); | 178 EXPECT_EQ(1, MouseEvent::GetRepeatCount(*ev)); |
| 177 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), | 179 ev.reset(new MouseEvent(ET_MOUSE_PRESSED, origin, origin, EventTimeForNow(), |
| 178 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); | 180 ui::EF_LEFT_MOUSE_BUTTON, ui::EF_LEFT_MOUSE_BUTTON)); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 { | 348 { |
| 347 KeyEvent keyev(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN); | 349 KeyEvent keyev(ET_KEY_RELEASED, VKEY_MENU, EF_ALT_DOWN); |
| 348 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); | 350 EXPECT_EQ(EF_ALT_DOWN, keyev.flags()); |
| 349 keyev.NormalizeFlags(); | 351 keyev.NormalizeFlags(); |
| 350 EXPECT_EQ(EF_NONE, keyev.flags()); | 352 EXPECT_EQ(EF_NONE, keyev.flags()); |
| 351 } | 353 } |
| 352 } | 354 } |
| 353 | 355 |
| 354 TEST(EventTest, KeyEventCopy) { | 356 TEST(EventTest, KeyEventCopy) { |
| 355 KeyEvent key(ET_KEY_PRESSED, VKEY_A, EF_NONE); | 357 KeyEvent key(ET_KEY_PRESSED, VKEY_A, EF_NONE); |
| 356 scoped_ptr<KeyEvent> copied_key(new KeyEvent(key)); | 358 std::unique_ptr<KeyEvent> copied_key(new KeyEvent(key)); |
| 357 EXPECT_EQ(copied_key->type(), key.type()); | 359 EXPECT_EQ(copied_key->type(), key.type()); |
| 358 EXPECT_EQ(copied_key->key_code(), key.key_code()); | 360 EXPECT_EQ(copied_key->key_code(), key.key_code()); |
| 359 } | 361 } |
| 360 | 362 |
| 361 TEST(EventTest, KeyEventCode) { | 363 TEST(EventTest, KeyEventCode) { |
| 362 const DomCode kDomCodeForSpace = DomCode::SPACE; | 364 const DomCode kDomCodeForSpace = DomCode::SPACE; |
| 363 const char kCodeForSpace[] = "Space"; | 365 const char kCodeForSpace[] = "Space"; |
| 364 ASSERT_EQ(kDomCodeForSpace, | 366 ASSERT_EQ(kDomCodeForSpace, |
| 365 ui::KeycodeConverter::CodeStringToDomCode(kCodeForSpace)); | 367 ui::KeycodeConverter::CodeStringToDomCode(kCodeForSpace)); |
| 366 const uint16_t kNativeCodeSpace = | 368 const uint16_t kNativeCodeSpace = |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 ui::PointerEvent pointer_event_from_mouse(mouse_event); | 848 ui::PointerEvent pointer_event_from_mouse(mouse_event); |
| 847 EXPECT_EQ(mouse_event.pointer_details(), | 849 EXPECT_EQ(mouse_event.pointer_details(), |
| 848 pointer_event_from_mouse.pointer_details()); | 850 pointer_event_from_mouse.pointer_details()); |
| 849 } | 851 } |
| 850 | 852 |
| 851 TEST(EventTest, PointerEventClone) { | 853 TEST(EventTest, PointerEventClone) { |
| 852 { | 854 { |
| 853 ui::PointerEvent ptr_event( | 855 ui::PointerEvent ptr_event( |
| 854 ui::TouchEvent(ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, | 856 ui::TouchEvent(ET_TOUCH_PRESSED, gfx::Point(0, 0), 0, 0, |
| 855 ui::EventTimeForNow(), 10.0f, 5.0f, 0.0f, 15.0f)); | 857 ui::EventTimeForNow(), 10.0f, 5.0f, 0.0f, 15.0f)); |
| 856 scoped_ptr<ui::Event> clone(ui::Event::Clone(ptr_event)); | 858 std::unique_ptr<ui::Event> clone(ui::Event::Clone(ptr_event)); |
| 857 EXPECT_TRUE(clone->IsPointerEvent()); | 859 EXPECT_TRUE(clone->IsPointerEvent()); |
| 858 ui::PointerEvent* clone_as_ptr = clone->AsPointerEvent(); | 860 ui::PointerEvent* clone_as_ptr = clone->AsPointerEvent(); |
| 859 | 861 |
| 860 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); | 862 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); |
| 861 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); | 863 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); |
| 862 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); | 864 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); |
| 863 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); | 865 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); |
| 864 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); | 866 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); |
| 865 } | 867 } |
| 866 | 868 |
| 867 { | 869 { |
| 868 ui::PointerEvent ptr_event( | 870 ui::PointerEvent ptr_event( |
| 869 ui::MouseEvent(ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), | 871 ui::MouseEvent(ET_MOUSE_PRESSED, gfx::Point(0, 0), gfx::Point(0, 0), |
| 870 ui::EventTimeForNow(), 0, 0)); | 872 ui::EventTimeForNow(), 0, 0)); |
| 871 scoped_ptr<ui::Event> clone(ui::Event::Clone(ptr_event)); | 873 std::unique_ptr<ui::Event> clone(ui::Event::Clone(ptr_event)); |
| 872 EXPECT_TRUE(clone->IsPointerEvent()); | 874 EXPECT_TRUE(clone->IsPointerEvent()); |
| 873 ui::PointerEvent* clone_as_ptr = clone->AsPointerEvent(); | 875 ui::PointerEvent* clone_as_ptr = clone->AsPointerEvent(); |
| 874 | 876 |
| 875 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); | 877 EXPECT_EQ(ptr_event.type(), clone_as_ptr->type()); |
| 876 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); | 878 EXPECT_EQ(ptr_event.pointer_id(), clone_as_ptr->pointer_id()); |
| 877 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); | 879 EXPECT_EQ(ptr_event.pointer_details(), clone_as_ptr->pointer_details()); |
| 878 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); | 880 EXPECT_EQ(ptr_event.location(), clone_as_ptr->location()); |
| 879 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); | 881 EXPECT_EQ(ptr_event.root_location(), clone_as_ptr->root_location()); |
| 880 } | 882 } |
| 881 } | 883 } |
| 882 | 884 |
| 883 } // namespace ui | 885 } // namespace ui |
| OLD | NEW |