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

Unified Diff: ui/events/blink/web_input_event_unittest.cc

Issue 2234023002: Refactor WebInputEventAura to ui/events/blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 4 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
« no previous file with comments | « ui/events/blink/web_input_event_traits_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/blink/web_input_event_unittest.cc
diff --git a/ui/events/blink/web_input_event_unittest.cc b/ui/events/blink/web_input_event_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bbbd5e14ad425e68ea83871f4f4b842ce8033157
--- /dev/null
+++ b/ui/events/blink/web_input_event_unittest.cc
@@ -0,0 +1,530 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/events/blink/web_input_event.h"
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "base/macros.h"
+#include "build/build_config.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/events/base_event_utils.h"
+#include "ui/events/blink/blink_event_util.h"
+#include "ui/events/event.h"
+#include "ui/events/event_utils.h"
+#include "ui/events/keycodes/dom/dom_code.h"
+#include "ui/events/keycodes/dom/dom_key.h"
+#include "ui/events/keycodes/dom/keycode_converter.h"
+
+#if defined(USE_X11)
+#include <X11/keysym.h>
+#include <X11/Xlib.h>
+#include "ui/events/test/events_test_utils_x11.h"
+#include "ui/gfx/x/x11_types.h" // nogncheck
+#endif
+
+namespace ui {
+
+namespace {
+
+gfx::Point GetScreenLocationFromEvent(const LocatedEvent& event) {
+ return event.root_location();
+}
+
+} // namespace
+
+// Checks that MakeWebKeyboardEvent makes a DOM3 spec compliant key event.
+// crbug.com/127142
+TEST(WebInputEventTest, TestMakeWebKeyboardEvent) {
+ {
+ // Press left Ctrl.
+ KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
+ EF_CONTROL_DOWN);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| should be set.
+ EXPECT_EQ(blink::WebInputEvent::ControlKey | blink::WebInputEvent::IsLeft,
+ webkit_event.modifiers);
+ EXPECT_EQ(static_cast<int>(DomCode::CONTROL_LEFT), webkit_event.domCode);
+ EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
+ }
+ {
+ // Release left Ctrl.
+ KeyEvent event(ET_KEY_RELEASED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
+ EF_NONE);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| shouldn't be set.
+ EXPECT_EQ(blink::WebInputEvent::IsLeft, webkit_event.modifiers);
+ EXPECT_EQ(static_cast<int>(DomCode::CONTROL_LEFT), webkit_event.domCode);
+ EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
+ }
+ {
+ // Press right Ctrl.
+ KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
+ EF_CONTROL_DOWN);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| should be set.
+ EXPECT_EQ(blink::WebInputEvent::ControlKey | blink::WebInputEvent::IsRight,
+ webkit_event.modifiers);
+ EXPECT_EQ(static_cast<int>(DomCode::CONTROL_RIGHT), webkit_event.domCode);
+ }
+ {
+ // Release right Ctrl.
+ KeyEvent event(ET_KEY_RELEASED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
+ EF_NONE);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| shouldn't be set.
+ EXPECT_EQ(blink::WebInputEvent::IsRight, webkit_event.modifiers);
+ EXPECT_EQ(static_cast<int>(DomCode::CONTROL_RIGHT), webkit_event.domCode);
+ EXPECT_EQ(static_cast<int>(DomKey::CONTROL), webkit_event.domKey);
+ }
+#if defined(USE_X11)
+ const int kLocationModifiers =
+ blink::WebInputEvent::IsLeft | blink::WebInputEvent::IsRight;
+ ScopedXI2Event xev;
+ {
+ // Press Ctrl.
+ xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
+ KeyEvent event(xev);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| should be set.
+ EXPECT_EQ(blink::WebInputEvent::ControlKey,
+ webkit_event.modifiers & ~kLocationModifiers);
+ }
+ {
+ // Release Ctrl.
+ xev.InitKeyEvent(ET_KEY_RELEASED, VKEY_CONTROL, ControlMask);
+ KeyEvent event(xev);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ // However, modifier bit for Control in |webkit_event| shouldn't be set.
+ EXPECT_EQ(0, webkit_event.modifiers & ~kLocationModifiers);
+ }
+#endif
+}
+
+TEST(WebInputEventTest, TestMakeWebKeyboardEventWindowsKeyCode) {
+#if defined(USE_X11)
+ ScopedXI2Event xev;
+ {
+ // Press left Ctrl.
+ xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode =
+ KeycodeConverter::DomCodeToNativeKeycode(DomCode::CONTROL_LEFT);
+ KeyEvent event(xev);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
+ }
+ {
+ // Press right Ctrl.
+ xev.InitKeyEvent(ET_KEY_PRESSED, VKEY_CONTROL, 0);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode =
+ KeycodeConverter::DomCodeToNativeKeycode(DomCode::CONTROL_RIGHT);
+ KeyEvent event(xev);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
+ }
+#elif defined(OS_WIN)
+// TODO(yusukes): Add tests for win_aura once keyboardEvent() in
+// third_party/WebKit/Source/web/win/WebInputEventFactory.cpp is modified
+// to return VKEY_[LR]XXX instead of VKEY_XXX.
+// https://bugs.webkit.org/show_bug.cgi?id=86694
+#endif
+ {
+ // Press left Ctrl.
+ KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_LEFT,
+ EF_CONTROL_DOWN, DomKey::CONTROL, EventTimeForNow());
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
+ }
+ {
+ // Press right Ctrl.
+ KeyEvent event(ET_KEY_PRESSED, VKEY_CONTROL, DomCode::CONTROL_RIGHT,
+ EF_CONTROL_DOWN, DomKey::CONTROL, EventTimeForNow());
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(VKEY_CONTROL, webkit_event.windowsKeyCode);
+ }
+}
+
+// Checks that MakeWebKeyboardEvent fills a correct keypad modifier.
+TEST(WebInputEventTest, TestMakeWebKeyboardEventKeyPadKeyCode) {
+#if defined(USE_X11)
+#define XK(x) XK_##x
+#else
+#define XK(x) 0
+#endif
+ struct TestCase {
+ DomCode dom_code; // The physical key (location).
+ KeyboardCode ui_keycode; // The virtual key code.
+ uint32_t x_keysym; // The X11 keysym.
+ bool expected_result; // true if the event has "isKeyPad" modifier.
+ } kTesCases[] = {
+ {DomCode::DIGIT0, VKEY_0, XK(0), false},
+ {DomCode::DIGIT1, VKEY_1, XK(1), false},
+ {DomCode::DIGIT2, VKEY_2, XK(2), false},
+ {DomCode::DIGIT3, VKEY_3, XK(3), false},
+ {DomCode::DIGIT4, VKEY_4, XK(4), false},
+ {DomCode::DIGIT5, VKEY_5, XK(5), false},
+ {DomCode::DIGIT6, VKEY_6, XK(6), false},
+ {DomCode::DIGIT7, VKEY_7, XK(7), false},
+ {DomCode::DIGIT8, VKEY_8, XK(8), false},
+ {DomCode::DIGIT9, VKEY_9, XK(9), false},
+
+ {DomCode::NUMPAD0, VKEY_NUMPAD0, XK(KP_0), true},
+ {DomCode::NUMPAD1, VKEY_NUMPAD1, XK(KP_1), true},
+ {DomCode::NUMPAD2, VKEY_NUMPAD2, XK(KP_2), true},
+ {DomCode::NUMPAD3, VKEY_NUMPAD3, XK(KP_3), true},
+ {DomCode::NUMPAD4, VKEY_NUMPAD4, XK(KP_4), true},
+ {DomCode::NUMPAD5, VKEY_NUMPAD5, XK(KP_5), true},
+ {DomCode::NUMPAD6, VKEY_NUMPAD6, XK(KP_6), true},
+ {DomCode::NUMPAD7, VKEY_NUMPAD7, XK(KP_7), true},
+ {DomCode::NUMPAD8, VKEY_NUMPAD8, XK(KP_8), true},
+ {DomCode::NUMPAD9, VKEY_NUMPAD9, XK(KP_9), true},
+
+ {DomCode::NUMPAD_MULTIPLY, VKEY_MULTIPLY, XK(KP_Multiply), true},
+ {DomCode::NUMPAD_SUBTRACT, VKEY_SUBTRACT, XK(KP_Subtract), true},
+ {DomCode::NUMPAD_ADD, VKEY_ADD, XK(KP_Add), true},
+ {DomCode::NUMPAD_DIVIDE, VKEY_DIVIDE, XK(KP_Divide), true},
+ {DomCode::NUMPAD_DECIMAL, VKEY_DECIMAL, XK(KP_Decimal), true},
+ {DomCode::NUMPAD_DECIMAL, VKEY_DELETE, XK(KP_Delete), true},
+ {DomCode::NUMPAD0, VKEY_INSERT, XK(KP_Insert), true},
+ {DomCode::NUMPAD1, VKEY_END, XK(KP_End), true},
+ {DomCode::NUMPAD2, VKEY_DOWN, XK(KP_Down), true},
+ {DomCode::NUMPAD3, VKEY_NEXT, XK(KP_Page_Down), true},
+ {DomCode::NUMPAD4, VKEY_LEFT, XK(KP_Left), true},
+ {DomCode::NUMPAD5, VKEY_CLEAR, XK(KP_Begin), true},
+ {DomCode::NUMPAD6, VKEY_RIGHT, XK(KP_Right), true},
+ {DomCode::NUMPAD7, VKEY_HOME, XK(KP_Home), true},
+ {DomCode::NUMPAD8, VKEY_UP, XK(KP_Up), true},
+ {DomCode::NUMPAD9, VKEY_PRIOR, XK(KP_Page_Up), true},
+ };
+ for (const auto& test_case : kTesCases) {
+ KeyEvent event(ET_KEY_PRESSED, test_case.ui_keycode, test_case.dom_code,
+ EF_NONE);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(test_case.expected_result,
+ (webkit_event.modifiers & blink::WebInputEvent::IsKeyPad) != 0)
+ << "Failed in "
+ << "{dom_code:"
+ << KeycodeConverter::DomCodeToCodeString(test_case.dom_code)
+ << ", ui_keycode:" << test_case.ui_keycode
+ << "}, expect: " << test_case.expected_result;
+ }
+#if defined(USE_X11)
+ ScopedXI2Event xev;
+ for (size_t i = 0; i < arraysize(kTesCases); ++i) {
+ const TestCase& test_case = kTesCases[i];
+
+ // TODO: re-enable the two cases excluded here once all trybots
+ // are sufficiently up to date to round-trip the associated keys.
+ if ((test_case.x_keysym == XK_KP_Divide) ||
+ (test_case.x_keysym == XK_KP_Decimal))
+ continue;
+
+ xev.InitKeyEvent(ET_KEY_PRESSED, test_case.ui_keycode, EF_NONE);
+ XEvent* xevent = xev;
+ xevent->xkey.keycode =
+ XKeysymToKeycode(gfx::GetXDisplay(), test_case.x_keysym);
+ if (!xevent->xkey.keycode)
+ continue;
+ KeyEvent event(xev);
+ blink::WebKeyboardEvent webkit_event = MakeWebKeyboardEvent(event);
+ EXPECT_EQ(test_case.expected_result,
+ (webkit_event.modifiers & blink::WebInputEvent::IsKeyPad) != 0)
+ << "Failed in " << i << "th test case: "
+ << "{dom_code:"
+ << KeycodeConverter::DomCodeToCodeString(test_case.dom_code)
+ << ", ui_keycode:" << test_case.ui_keycode
+ << ", x_keysym:" << test_case.x_keysym
+ << "}, expect: " << test_case.expected_result;
+ }
+#endif
+}
+
+TEST(WebInputEventTest, TestMakeWebMouseEvent) {
+ {
+ // Left pressed.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
+ EF_LEFT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Left released.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, 0,
+ EF_LEFT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Middle pressed.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_MIDDLE_MOUSE_BUTTON,
+ EF_MIDDLE_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonMiddle, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Middle released.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, 0,
+ EF_MIDDLE_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonMiddle, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Right pressed.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_RIGHT_MOUSE_BUTTON,
+ EF_RIGHT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonRight, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Right released.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_RELEASED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, 0,
+ EF_RIGHT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonRight, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseUp, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Moved
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_MOVED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, 0, 0);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseMove, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Moved with left down
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_MOVED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
+ 0);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseMove, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Left with shift pressed.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(
+ ET_MOUSE_PRESSED, gfx::Point(123, 321), gfx::Point(123, 321), timestamp,
+ EF_LEFT_MOUSE_BUTTON | EF_SHIFT_DOWN, EF_LEFT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonLeft, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseDown, webkit_event.type);
+ EXPECT_EQ(ui_event.GetClickCount(), webkit_event.clickCount);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Default values for PointerDetails.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
+ EF_LEFT_MOUSE_BUTTON);
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+
+ EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
+ webkit_event.pointerType);
+ EXPECT_EQ(0, webkit_event.tiltX);
+ EXPECT_EQ(0, webkit_event.tiltY);
+ EXPECT_TRUE(std::isnan(webkit_event.force));
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Stylus values for PointerDetails.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseEvent ui_event(ET_MOUSE_PRESSED, gfx::Point(123, 321),
+ gfx::Point(123, 321), timestamp, EF_LEFT_MOUSE_BUTTON,
+ EF_LEFT_MOUSE_BUTTON);
+ ui_event.set_pointer_details(
+ PointerDetails(EventPointerType::POINTER_TYPE_PEN,
+ /* radius_x */ 0.0f,
+ /* radius_y */ 0.0f,
+ /* force */ 0.8f,
+ /* tilt_x */ 89.5f,
+ /* tilt_y */ -89.5f));
+ blink::WebMouseEvent webkit_event =
+ MakeWebMouseEvent(ui_event, base::Bind(&GetScreenLocationFromEvent));
+
+ EXPECT_EQ(blink::WebPointerProperties::PointerType::Pen,
+ webkit_event.pointerType);
+ EXPECT_EQ(90, webkit_event.tiltX);
+ EXPECT_EQ(-90, webkit_event.tiltY);
+ EXPECT_FLOAT_EQ(0.8f, webkit_event.force);
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+}
+
+TEST(WebInputEventTest, TestMakeWebMouseWheelEvent) {
+ {
+ // Mouse wheel.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseWheelEvent ui_event(gfx::Vector2d(MouseWheelEvent::kWheelDelta * 2,
+ -MouseWheelEvent::kWheelDelta * 2),
+ gfx::Point(123, 321), gfx::Point(123, 321),
+ timestamp, 0, 0);
+ blink::WebMouseWheelEvent webkit_event = MakeWebMouseWheelEvent(
+ ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseWheel, webkit_event.type);
+ EXPECT_FLOAT_EQ(ui_event.x_offset() / 53.0f, webkit_event.wheelTicksX);
+ EXPECT_FLOAT_EQ(ui_event.y_offset() / 53.0f, webkit_event.wheelTicksY);
+ EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
+ webkit_event.pointerType);
+ EXPECT_EQ(0, webkit_event.tiltX);
+ EXPECT_EQ(0, webkit_event.tiltY);
+ EXPECT_TRUE(std::isnan(webkit_event.force));
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+ {
+ // Mouse wheel with shift and no x offset.
+ base::TimeTicks timestamp = EventTimeForNow();
+ MouseWheelEvent ui_event(
+ gfx::Vector2d(0, -MouseWheelEvent::kWheelDelta * 2),
+ gfx::Point(123, 321), gfx::Point(123, 321), timestamp, EF_SHIFT_DOWN,
+ 0);
+ blink::WebMouseWheelEvent webkit_event = MakeWebMouseWheelEvent(
+ ui_event, base::Bind(&GetScreenLocationFromEvent));
+ EXPECT_EQ(EventFlagsToWebEventModifiers(ui_event.flags()),
+ webkit_event.modifiers);
+ EXPECT_FLOAT_EQ(EventTimeStampToSeconds(timestamp),
+ webkit_event.timeStampSeconds);
+ EXPECT_EQ(blink::WebMouseEvent::ButtonNone, webkit_event.button);
+ EXPECT_EQ(blink::WebInputEvent::MouseWheel, webkit_event.type);
+ EXPECT_FLOAT_EQ(ui_event.y_offset() / 53.0f, webkit_event.wheelTicksX);
+ EXPECT_FLOAT_EQ(0, webkit_event.wheelTicksY);
+ EXPECT_EQ(blink::WebPointerProperties::PointerType::Mouse,
+ webkit_event.pointerType);
+ EXPECT_EQ(0, webkit_event.tiltX);
+ EXPECT_EQ(0, webkit_event.tiltY);
+ EXPECT_TRUE(std::isnan(webkit_event.force));
+ EXPECT_EQ(123, webkit_event.x);
+ EXPECT_EQ(123, webkit_event.windowX);
+ EXPECT_EQ(321, webkit_event.y);
+ EXPECT_EQ(321, webkit_event.windowY);
+ }
+}
+
+} // namespace ui
« no previous file with comments | « ui/events/blink/web_input_event_traits_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698