| Index: chrome/browser/automation/ui_controls_aurax11.cc
|
| diff --git a/chrome/browser/automation/ui_controls_aurax11.cc b/chrome/browser/automation/ui_controls_aurax11.cc
|
| index 021ca101003a630e08d1ea051bba43606a3bea2d..2080a1dc15f30af59cd951f05e7cba10956895a3 100644
|
| --- a/chrome/browser/automation/ui_controls_aurax11.cc
|
| +++ b/chrome/browser/automation/ui_controls_aurax11.cc
|
| @@ -90,20 +90,24 @@ bool SendKeyPress(gfx::NativeWindow window,
|
| window, key, control, shift, alt, command, base::Closure());
|
| }
|
|
|
| -void SetMaskAndKeycodeThenSend(XEvent* xevent,
|
| - unsigned int mask,
|
| - unsigned int keycode) {
|
| - xevent->xkey.state |= mask;
|
| - xevent->xkey.keycode = keycode;
|
| +void SetKeycodeAndSendThenMask(XEvent* xevent,
|
| + KeySym keysym,
|
| + unsigned int mask) {
|
| + xevent->xkey.keycode =
|
| + XKeysymToKeycode(base::MessagePumpX::GetDefaultXDisplay(),
|
| + keysym);
|
| aura::RootWindow::GetInstance()->PostNativeEvent(xevent);
|
| + xevent->xkey.state |= mask;
|
| }
|
|
|
| -void SetKeycodeAndSendThenUnmask(XEvent* xevent,
|
| +void UnmaskAndSetKeycodeThenSend(XEvent* xevent,
|
| unsigned int mask,
|
| - unsigned int keycode) {
|
| - xevent->xkey.keycode = keycode;
|
| - aura::RootWindow::GetInstance()->PostNativeEvent(xevent);
|
| + KeySym keysym) {
|
| xevent->xkey.state ^= mask;
|
| + xevent->xkey.keycode =
|
| + XKeysymToKeycode(base::MessagePumpX::GetDefaultXDisplay(),
|
| + keysym);
|
| + aura::RootWindow::GetInstance()->PostNativeEvent(xevent);
|
| }
|
|
|
| bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window,
|
| @@ -117,11 +121,11 @@ bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window,
|
| XEvent xevent = {0};
|
| xevent.xkey.type = KeyPress;
|
| if (control)
|
| - SetMaskAndKeycodeThenSend(&xevent, ControlMask, XK_Control_L);
|
| + SetKeycodeAndSendThenMask(&xevent, XK_Control_L, ControlMask);
|
| if (shift)
|
| - SetMaskAndKeycodeThenSend(&xevent, ShiftMask, XK_Shift_L);
|
| + SetKeycodeAndSendThenMask(&xevent, XK_Shift_L, ShiftMask);
|
| if (alt)
|
| - SetMaskAndKeycodeThenSend(&xevent, Mod1Mask, XK_Alt_L);
|
| + SetKeycodeAndSendThenMask(&xevent, XK_Alt_L, Mod1Mask);
|
| xevent.xkey.keycode =
|
| XKeysymToKeycode(base::MessagePumpX::GetDefaultXDisplay(),
|
| ui::XKeysymForWindowsKeyCode(key, shift));
|
| @@ -131,11 +135,11 @@ bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window,
|
| xevent.xkey.type = KeyRelease;
|
| aura::RootWindow::GetInstance()->PostNativeEvent(&xevent);
|
| if (alt)
|
| - SetKeycodeAndSendThenUnmask(&xevent, Mod1Mask, XK_Alt_L);
|
| + UnmaskAndSetKeycodeThenSend(&xevent, Mod1Mask, XK_Alt_L);
|
| if (shift)
|
| - SetKeycodeAndSendThenUnmask(&xevent, ShiftMask, XK_Shift_L);
|
| + UnmaskAndSetKeycodeThenSend(&xevent, ShiftMask, XK_Shift_L);
|
| if (control)
|
| - SetKeycodeAndSendThenUnmask(&xevent, ControlMask, XK_Control_L);
|
| + UnmaskAndSetKeycodeThenSend(&xevent, ControlMask, XK_Control_L);
|
| DCHECK(!xevent.xkey.state);
|
| RunClosureAfterAllPendingUIEvents(closure);
|
| return true;
|
|
|