Index: ui/events/x/events_x_unittest.cc |
diff --git a/ui/events/x/events_x_unittest.cc b/ui/events/x/events_x_unittest.cc |
index 368682cbb1bd5fec0bb896ada960ac5c5ea5aa92..b35c527592e7857fcc70dbe6887b5bb3f6613c19 100644 |
--- a/ui/events/x/events_x_unittest.cc |
+++ b/ui/events/x/events_x_unittest.cc |
@@ -59,6 +59,18 @@ void InitKeyEvent(Display* display, |
key_event->state = state; |
} |
+bool HasFunctionKeyFlagSet(Display* display, int x_keysym) { |
+ XEvent event; |
+ int x_keycode = XKeysymToKeycode(display, x_keysym); |
+ // Exclude keysyms for which the server has no corresponding keycode. |
+ if (x_keycode) { |
+ InitKeyEvent(display, &event, true, x_keycode, 0); |
+ ui::KeyEvent ui_key_event(&event, false); |
+ return static_cast<bool>(ui_key_event.flags() & ui::EF_FUNCTION_KEY); |
sadrul
2014/05/30 21:23:21
Can you just do 'return (flags & ui::EF_FUNCTION_K
bruthig
2014/06/02 14:22:01
Done.
|
+ } |
+ return false; |
sadrul
2014/05/30 21:23:21
Call the function HasFunctionKeyFlagSetIfSupported
bruthig
2014/06/02 14:22:01
Done.
|
+} |
+ |
} // namespace |
TEST(EventsXTest, ButtonEvents) { |
@@ -370,4 +382,49 @@ TEST(EventsXTest, NumpadKeyEvents) { |
} |
} |
+TEST(EventsXTest, FunctionKeyEvents) { |
+ Display* display = gfx::GetXDisplay(); |
+ |
+ // Min function key code minus 1. |
+ EXPECT_FALSE(HasFunctionKeyFlagSet(display, XK_F1 - 1)); |
+ // All function keys. |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F1)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F2)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F3)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F4)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F5)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F6)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F7)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F8)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F9)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F10)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F11)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F12)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F13)); |
bruthig
2014/05/30 19:10:03
The EXPECT_TRUE for XK_F13 to XK_F35 now fails bec
oshima
2014/05/30 21:13:06
Humm, maybe we can just skip or return true for su
sadrul
2014/05/30 21:23:21
I agree. I left a suggestion above for this.
bruthig
2014/06/02 14:22:01
Done.
|
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F14)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F15)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F16)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F17)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F18)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F19)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F20)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F21)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F22)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F23)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F24)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F25)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F26)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F27)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F28)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F29)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F30)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F31)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F32)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F33)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F34)); |
+ EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F35)); |
+ // Max function key code plus 1. |
+ EXPECT_FALSE(HasFunctionKeyFlagSet(display, XK_F35 + 1)); |
+} |
+ |
} // namespace ui |