| OLD | NEW |
| 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 "remoting/host/input_injector.h" | 5 #include "remoting/host/input_injector.h" |
| 6 | 6 |
| 7 #include <ApplicationServices/ApplicationServices.h> | 7 #include <ApplicationServices/ApplicationServices.h> |
| 8 #include <Carbon/Carbon.h> | 8 #include <Carbon/Carbon.h> |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 void SetOrClearBit(uint64_t &value, uint64_t bit, bool set_bit) { | 30 void SetOrClearBit(uint64_t &value, uint64_t bit, bool set_bit) { |
| 31 value = set_bit ? (value | bit) : (value & ~bit); | 31 value = set_bit ? (value | bit) : (value & ~bit); |
| 32 } | 32 } |
| 33 | 33 |
| 34 void CreateAndPostKeyEvent(int keycode, | 34 void CreateAndPostKeyEvent(int keycode, |
| 35 bool pressed, | 35 bool pressed, |
| 36 int flags, | 36 int flags, |
| 37 const base::string16& unicode) { | 37 const base::string16& unicode) { |
| 38 base::ScopedCFTypeRef<CGEventRef> eventRef( | 38 base::ScopedCFTypeRef<CGEventRef> eventRef( |
| 39 CGEventCreateKeyboardEvent(NULL, keycode, pressed)); | 39 CGEventCreateKeyboardEvent(nullptr, keycode, pressed)); |
| 40 if (eventRef) { | 40 if (eventRef) { |
| 41 CGEventSetFlags(eventRef, flags); | 41 CGEventSetFlags(eventRef, flags); |
| 42 if (!unicode.empty()) | 42 if (!unicode.empty()) |
| 43 CGEventKeyboardSetUnicodeString(eventRef, unicode.size(), &(unicode[0])); | 43 CGEventKeyboardSetUnicodeString(eventRef, unicode.size(), &(unicode[0])); |
| 44 CGEventPost(kCGSessionEventTap, eventRef); | 44 CGEventPost(kCGSessionEventTap, eventRef); |
| 45 } | 45 } |
| 46 } | 46 } |
| 47 | 47 |
| 48 // This value is not defined. Give it the obvious name so that if it is ever | 48 // This value is not defined. Give it the obvious name so that if it is ever |
| 49 // added there will be a handy compilation error to remind us to remove this | 49 // added there will be a handy compilation error to remind us to remove this |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 (mouse_button_state_ & RightBit) != 0, | 296 (mouse_button_state_ & RightBit) != 0, |
| 297 (mouse_button_state_ & MiddleBit) != 0); | 297 (mouse_button_state_ & MiddleBit) != 0); |
| 298 #pragma clang diagnostic pop | 298 #pragma clang diagnostic pop |
| 299 if (error != kCGErrorSuccess) | 299 if (error != kCGErrorSuccess) |
| 300 LOG(WARNING) << "CGPostMouseEvent error " << error; | 300 LOG(WARNING) << "CGPostMouseEvent error " << error; |
| 301 | 301 |
| 302 if (event.has_wheel_delta_x() && event.has_wheel_delta_y()) { | 302 if (event.has_wheel_delta_x() && event.has_wheel_delta_y()) { |
| 303 int delta_x = static_cast<int>(event.wheel_delta_x()); | 303 int delta_x = static_cast<int>(event.wheel_delta_x()); |
| 304 int delta_y = static_cast<int>(event.wheel_delta_y()); | 304 int delta_y = static_cast<int>(event.wheel_delta_y()); |
| 305 base::ScopedCFTypeRef<CGEventRef> event(CGEventCreateScrollWheelEvent( | 305 base::ScopedCFTypeRef<CGEventRef> event(CGEventCreateScrollWheelEvent( |
| 306 NULL, kCGScrollEventUnitPixel, 2, delta_y, delta_x)); | 306 nullptr, kCGScrollEventUnitPixel, 2, delta_y, delta_x)); |
| 307 if (event) | 307 if (event) |
| 308 CGEventPost(kCGSessionEventTap, event); | 308 CGEventPost(kCGSessionEventTap, event); |
| 309 } | 309 } |
| 310 } | 310 } |
| 311 | 311 |
| 312 void InputInjectorMac::Core::Start( | 312 void InputInjectorMac::Core::Start( |
| 313 scoped_ptr<protocol::ClipboardStub> client_clipboard) { | 313 scoped_ptr<protocol::ClipboardStub> client_clipboard) { |
| 314 if (!task_runner_->BelongsToCurrentThread()) { | 314 if (!task_runner_->BelongsToCurrentThread()) { |
| 315 task_runner_->PostTask( | 315 task_runner_->PostTask( |
| 316 FROM_HERE, | 316 FROM_HERE, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 334 | 334 |
| 335 } // namespace | 335 } // namespace |
| 336 | 336 |
| 337 scoped_ptr<InputInjector> InputInjector::Create( | 337 scoped_ptr<InputInjector> InputInjector::Create( |
| 338 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 338 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 339 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { | 339 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { |
| 340 return make_scoped_ptr(new InputInjectorMac(main_task_runner)); | 340 return make_scoped_ptr(new InputInjectorMac(main_task_runner)); |
| 341 } | 341 } |
| 342 | 342 |
| 343 } // namespace remoting | 343 } // namespace remoting |
| OLD | NEW |