| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "remoting/host/event_executor_win.h" | 5 #include "remoting/host/event_executor_win.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 | 8 |
| 9 #include "app/keyboard_codes.h" | 9 #include "app/keyboard_codes.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| 11 #include "base/stl_util-inl.h" | 11 #include "base/stl_util-inl.h" |
| 12 #include "remoting/host/capturer.h" | 12 #include "remoting/host/capturer.h" |
| 13 #include "remoting/proto/event.pb.h" | 13 #include "remoting/proto/event.pb.h" |
| 14 | 14 |
| 15 namespace remoting { | 15 namespace remoting { |
| 16 | 16 |
| 17 using protocol::MouseEvent; |
| 18 using protocol::KeyEvent; |
| 19 |
| 17 EventExecutorWin::EventExecutorWin( | 20 EventExecutorWin::EventExecutorWin( |
| 18 MessageLoop* message_loop, Capturer* capturer) | 21 MessageLoop* message_loop, Capturer* capturer) |
| 19 : message_loop_(message_loop), | 22 : message_loop_(message_loop), |
| 20 capturer_(capturer) { | 23 capturer_(capturer) { |
| 21 } | 24 } |
| 22 | 25 |
| 23 EventExecutorWin::~EventExecutorWin() { | 26 EventExecutorWin::~EventExecutorWin() { |
| 24 } | 27 } |
| 25 | 28 |
| 26 void EventExecutorWin::InjectKeyEvent(const KeyEvent* event, Task* done) { | 29 void EventExecutorWin::InjectKeyEvent(const KeyEvent* event, Task* done) { |
| 27 if (MessageLoop::current() != message_loop_) { | 30 if (MessageLoop::current() != message_loop_) { |
| 28 message_loop_->PostTask( | 31 message_loop_->PostTask( |
| 29 FROM_HERE, | 32 FROM_HERE, |
| 30 NewRunnableMethod(this, &EventExecutorWin::InjectKeyEvent, | 33 NewRunnableMethod(this, &EventExecutorWin::InjectKeyEvent, |
| 31 event, done)); | 34 event, done)); |
| 32 return; | 35 return; |
| 33 } | 36 } |
| 34 HandleKey(event); | 37 HandleKey(event); |
| 35 done->Run(); | 38 done->Run(); |
| 36 delete done; | 39 delete done; |
| 37 } | 40 } |
| 38 | 41 |
| 39 void EventExecutorWin::InjectMouseEvent(const MouseEvent* event, | 42 void EventExecutorWin::InjectMouseEvent(const MouseEvent* event, Task* done) { |
| 40 Task* done) { | |
| 41 if (MessageLoop::current() != message_loop_) { | 43 if (MessageLoop::current() != message_loop_) { |
| 42 message_loop_->PostTask( | 44 message_loop_->PostTask( |
| 43 FROM_HERE, | 45 FROM_HERE, |
| 44 NewRunnableMethod(this, &EventExecutorWin::InjectMouseEvent, | 46 NewRunnableMethod(this, &EventExecutorWin::InjectMouseEvent, |
| 45 event, done)); | 47 event, done)); |
| 46 return; | 48 return; |
| 47 } | 49 } |
| 48 HandleMouse(event); | 50 HandleMouse(event); |
| 49 done->Run(); | 51 done->Run(); |
| 50 delete done; | 52 delete done; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 } | 121 } |
| 120 } | 122 } |
| 121 | 123 |
| 122 if (event->has_button() && event->has_button_down()) { | 124 if (event->has_button() && event->has_button_down()) { |
| 123 INPUT button_event; | 125 INPUT button_event; |
| 124 button_event.type = INPUT_MOUSE; | 126 button_event.type = INPUT_MOUSE; |
| 125 button_event.mi.time = 0; | 127 button_event.mi.time = 0; |
| 126 button_event.mi.dx = 0; | 128 button_event.mi.dx = 0; |
| 127 button_event.mi.dy = 0; | 129 button_event.mi.dy = 0; |
| 128 | 130 |
| 129 MouseButton button = event->button(); | 131 MouseEvent::MouseButton button = event->button(); |
| 130 bool down = event->button_down(); | 132 bool down = event->button_down(); |
| 131 if (button == MouseButtonLeft) { | 133 if (button == MouseEvent::BUTTON_LEFT) { |
| 132 button_event.mi.dwFlags = | 134 button_event.mi.dwFlags = |
| 133 down ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP; | 135 down ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP; |
| 134 } else if (button == MouseButtonMiddle) { | 136 } else if (button == MouseEvent::BUTTON_MIDDLE) { |
| 135 button_event.mi.dwFlags = | 137 button_event.mi.dwFlags = |
| 136 down ? MOUSEEVENTF_MIDDLEDOWN : MOUSEEVENTF_MIDDLEUP; | 138 down ? MOUSEEVENTF_MIDDLEDOWN : MOUSEEVENTF_MIDDLEUP; |
| 137 } else if (button == MouseButtonRight) { | 139 } else if (button == MouseEvent::BUTTON_RIGHT) { |
| 138 button_event.mi.dwFlags = | 140 button_event.mi.dwFlags = |
| 139 down ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_RIGHTUP; | 141 down ? MOUSEEVENTF_RIGHTDOWN : MOUSEEVENTF_RIGHTUP; |
| 140 } else { | 142 } else { |
| 141 button_event.mi.dwFlags = | 143 button_event.mi.dwFlags = |
| 142 down ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP; | 144 down ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_LEFTUP; |
| 143 } | 145 } |
| 144 | 146 |
| 145 SendInput(1, &button_event, sizeof(INPUT)); | 147 SendInput(1, &button_event, sizeof(INPUT)); |
| 146 } | 148 } |
| 147 } | 149 } |
| 148 | 150 |
| 149 } // namespace remoting | 151 } // namespace remoting |
| OLD | NEW |