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

Side by Side Diff: ui/events/x/events_x_unittest.cc

Issue 286103004: Blocked volume up/down events that originated from remapped function keys. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated EventsXTest.FunctionKeyEvents to be more explicit. Created 6 years, 6 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 unified diff | Download patch
« no previous file with comments | « ui/events/x/events_x.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <cstring> 5 #include <cstring>
6 6
7 #include <X11/extensions/XInput2.h> 7 #include <X11/extensions/XInput2.h>
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9 #include <X11/Xutil.h> 9 #include <X11/Xutil.h>
10 #include <X11/XKBlib.h> 10 #include <X11/XKBlib.h>
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 52
53 // We don't bother setting fields that the event code doesn't use, such as 53 // We don't bother setting fields that the event code doesn't use, such as
54 // x_root/y_root and window/root/subwindow. 54 // x_root/y_root and window/root/subwindow.
55 XKeyEvent* key_event = &(event->xkey); 55 XKeyEvent* key_event = &(event->xkey);
56 key_event->display = display; 56 key_event->display = display;
57 key_event->type = is_press ? KeyPress : KeyRelease; 57 key_event->type = is_press ? KeyPress : KeyRelease;
58 key_event->keycode = keycode; 58 key_event->keycode = keycode;
59 key_event->state = state; 59 key_event->state = state;
60 } 60 }
61 61
62 bool HasFunctionKeyFlagSet(Display* display, int x_keysym) {
63 XEvent event;
64 int x_keycode = XKeysymToKeycode(display, x_keysym);
65 // Exclude keysyms for which the server has no corresponding keycode.
66 if (x_keycode) {
67 InitKeyEvent(display, &event, true, x_keycode, 0);
68 ui::KeyEvent ui_key_event(&event, false);
69 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.
70 }
71 return false;
sadrul 2014/05/30 21:23:21 Call the function HasFunctionKeyFlagSetIfSupported
bruthig 2014/06/02 14:22:01 Done.
72 }
73
62 } // namespace 74 } // namespace
63 75
64 TEST(EventsXTest, ButtonEvents) { 76 TEST(EventsXTest, ButtonEvents) {
65 XEvent event; 77 XEvent event;
66 gfx::Point location(5, 10); 78 gfx::Point location(5, 10);
67 gfx::Vector2d offset; 79 gfx::Vector2d offset;
68 80
69 InitButtonEvent(&event, true, location, 1, 0); 81 InitButtonEvent(&event, true, location, 1, 0);
70 EXPECT_EQ(ui::ET_MOUSE_PRESSED, ui::EventTypeFromNative(&event)); 82 EXPECT_EQ(ui::ET_MOUSE_PRESSED, ui::EventTypeFromNative(&event));
71 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, ui::EventFlagsFromNative(&event)); 83 EXPECT_EQ(ui::EF_LEFT_MOUSE_BUTTON, ui::EventFlagsFromNative(&event));
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 InitKeyEvent(display, &event, true, x_keycode, 0); 375 InitKeyEvent(display, &event, true, x_keycode, 0);
364 // int keysym = XLookupKeysym(&event.xkey, 0); 376 // int keysym = XLookupKeysym(&event.xkey, 0);
365 // if (keysym) { 377 // if (keysym) {
366 ui::KeyEvent ui_key_event(&event, false); 378 ui::KeyEvent ui_key_event(&event, false);
367 EXPECT_EQ(keys[k].is_numpad_key ? ui::EF_NUMPAD_KEY : 0, 379 EXPECT_EQ(keys[k].is_numpad_key ? ui::EF_NUMPAD_KEY : 0,
368 ui_key_event.flags() & ui::EF_NUMPAD_KEY); 380 ui_key_event.flags() & ui::EF_NUMPAD_KEY);
369 } 381 }
370 } 382 }
371 } 383 }
372 384
385 TEST(EventsXTest, FunctionKeyEvents) {
386 Display* display = gfx::GetXDisplay();
387
388 // Min function key code minus 1.
389 EXPECT_FALSE(HasFunctionKeyFlagSet(display, XK_F1 - 1));
390 // All function keys.
391 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F1));
392 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F2));
393 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F3));
394 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F4));
395 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F5));
396 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F6));
397 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F7));
398 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F8));
399 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F9));
400 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F10));
401 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F11));
402 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F12));
403 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.
404 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F14));
405 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F15));
406 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F16));
407 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F17));
408 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F18));
409 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F19));
410 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F20));
411 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F21));
412 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F22));
413 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F23));
414 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F24));
415 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F25));
416 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F26));
417 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F27));
418 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F28));
419 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F29));
420 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F30));
421 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F31));
422 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F32));
423 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F33));
424 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F34));
425 EXPECT_TRUE(HasFunctionKeyFlagSet(display, XK_F35));
426 // Max function key code plus 1.
427 EXPECT_FALSE(HasFunctionKeyFlagSet(display, XK_F35 + 1));
428 }
429
373 } // namespace ui 430 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/x/events_x.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698