| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/chromeos/system/input_device_settings.h" | 5 #include "chrome/browser/chromeos/system/input_device_settings.h" |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "content/public/browser/browser_thread.h" | 8 #include "content/public/browser/browser_thread.h" |
| 9 #include "ui/ozone/public/input_controller.h" | 9 #include "ui/ozone/public/input_controller.h" |
| 10 #include "ui/ozone/public/ozone_platform.h" | 10 #include "ui/ozone/public/ozone_platform.h" |
| 11 | 11 |
| 12 #if defined(MOJO_SHELL_CLIENT) |
| 13 #include "content/public/common/mojo_shell_connection.h" |
| 14 #endif |
| 15 |
| 12 namespace chromeos { | 16 namespace chromeos { |
| 13 namespace system { | 17 namespace system { |
| 14 | 18 |
| 15 namespace { | 19 namespace { |
| 16 | 20 |
| 17 InputDeviceSettings* g_instance = nullptr; | 21 InputDeviceSettings* g_instance = nullptr; |
| 18 InputDeviceSettings* g_test_instance = nullptr; | 22 InputDeviceSettings* g_test_instance = nullptr; |
| 19 | 23 |
| 24 std::unique_ptr<ui::InputController> CreateStubInputControllerIfNecessary() { |
| 25 #if defined(MOJO_SHELL_CLIENT) |
| 26 content::MojoShellConnection* conn = content::MojoShellConnection::Get(); |
| 27 if (conn && conn->UsingExternalShell()) |
| 28 return ui::CreateStubInputController(); |
| 29 #endif |
| 30 return nullptr; |
| 31 } |
| 32 |
| 20 // InputDeviceSettings for Linux without X11 (a.k.a. Ozone). | 33 // InputDeviceSettings for Linux without X11 (a.k.a. Ozone). |
| 21 class InputDeviceSettingsImplOzone : public InputDeviceSettings { | 34 class InputDeviceSettingsImplOzone : public InputDeviceSettings { |
| 22 public: | 35 public: |
| 23 InputDeviceSettingsImplOzone(); | 36 InputDeviceSettingsImplOzone(); |
| 24 | 37 |
| 25 protected: | 38 protected: |
| 26 ~InputDeviceSettingsImplOzone() override {} | 39 ~InputDeviceSettingsImplOzone() override {} |
| 27 | 40 |
| 28 private: | 41 private: |
| 29 // Overridden from InputDeviceSettings. | 42 // Overridden from InputDeviceSettings. |
| 30 void TouchpadExists(const DeviceExistsCallback& callback) override; | 43 void TouchpadExists(const DeviceExistsCallback& callback) override; |
| 31 void UpdateTouchpadSettings(const TouchpadSettings& settings) override; | 44 void UpdateTouchpadSettings(const TouchpadSettings& settings) override; |
| 32 void SetTouchpadSensitivity(int value) override; | 45 void SetTouchpadSensitivity(int value) override; |
| 33 void SetTapToClick(bool enabled) override; | 46 void SetTapToClick(bool enabled) override; |
| 34 void SetThreeFingerClick(bool enabled) override; | 47 void SetThreeFingerClick(bool enabled) override; |
| 35 void SetTapDragging(bool enabled) override; | 48 void SetTapDragging(bool enabled) override; |
| 36 void SetNaturalScroll(bool enabled) override; | 49 void SetNaturalScroll(bool enabled) override; |
| 37 void MouseExists(const DeviceExistsCallback& callback) override; | 50 void MouseExists(const DeviceExistsCallback& callback) override; |
| 38 void UpdateMouseSettings(const MouseSettings& settings) override; | 51 void UpdateMouseSettings(const MouseSettings& settings) override; |
| 39 void SetMouseSensitivity(int value) override; | 52 void SetMouseSensitivity(int value) override; |
| 40 void SetPrimaryButtonRight(bool right) override; | 53 void SetPrimaryButtonRight(bool right) override; |
| 41 void ReapplyTouchpadSettings() override; | 54 void ReapplyTouchpadSettings() override; |
| 42 void ReapplyMouseSettings() override; | 55 void ReapplyMouseSettings() override; |
| 43 void SetInternalTouchpadEnabled(bool enabled) override; | 56 void SetInternalTouchpadEnabled(bool enabled) override; |
| 44 void SetTouchscreensEnabled(bool enabled) override; | 57 void SetTouchscreensEnabled(bool enabled) override; |
| 45 | 58 |
| 59 // TODO(sad): A stub input controller is used when running inside mus. |
| 60 // http://crbug.com/601981 |
| 61 std::unique_ptr<ui::InputController> stub_controller_; |
| 62 |
| 46 // Cached InputController pointer. It should be fixed throughout the browser | 63 // Cached InputController pointer. It should be fixed throughout the browser |
| 47 // session. | 64 // session. |
| 48 ui::InputController* input_controller_; | 65 ui::InputController* input_controller_; |
| 49 | 66 |
| 50 // Respective device setting objects. | 67 // Respective device setting objects. |
| 51 TouchpadSettings current_touchpad_settings_; | 68 TouchpadSettings current_touchpad_settings_; |
| 52 MouseSettings current_mouse_settings_; | 69 MouseSettings current_mouse_settings_; |
| 53 | 70 |
| 54 DISALLOW_COPY_AND_ASSIGN(InputDeviceSettingsImplOzone); | 71 DISALLOW_COPY_AND_ASSIGN(InputDeviceSettingsImplOzone); |
| 55 }; | 72 }; |
| 56 | 73 |
| 57 InputDeviceSettingsImplOzone::InputDeviceSettingsImplOzone() | 74 InputDeviceSettingsImplOzone::InputDeviceSettingsImplOzone() |
| 58 : input_controller_( | 75 : stub_controller_(CreateStubInputControllerIfNecessary()), |
| 59 ui::OzonePlatform::GetInstance()->GetInputController()) { | 76 input_controller_( |
| 77 stub_controller_ |
| 78 ? stub_controller_.get() |
| 79 : ui::OzonePlatform::GetInstance()->GetInputController()) { |
| 60 // Make sure the input controller does exist. | 80 // Make sure the input controller does exist. |
| 61 DCHECK(ui::OzonePlatform::GetInstance()->GetInputController()); | 81 DCHECK(input_controller_); |
| 62 } | 82 } |
| 63 | 83 |
| 64 void InputDeviceSettingsImplOzone::TouchpadExists( | 84 void InputDeviceSettingsImplOzone::TouchpadExists( |
| 65 const DeviceExistsCallback& callback) { | 85 const DeviceExistsCallback& callback) { |
| 66 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 86 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 67 callback.Run(input_controller_->HasTouchpad()); | 87 callback.Run(input_controller_->HasTouchpad()); |
| 68 } | 88 } |
| 69 | 89 |
| 70 void InputDeviceSettingsImplOzone::UpdateTouchpadSettings( | 90 void InputDeviceSettingsImplOzone::UpdateTouchpadSettings( |
| 71 const TouchpadSettings& settings) { | 91 const TouchpadSettings& settings) { |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 void InputDeviceSettings::SetSettingsForTesting( | 174 void InputDeviceSettings::SetSettingsForTesting( |
| 155 InputDeviceSettings* test_settings) { | 175 InputDeviceSettings* test_settings) { |
| 156 if (g_test_instance == test_settings) | 176 if (g_test_instance == test_settings) |
| 157 return; | 177 return; |
| 158 delete g_test_instance; | 178 delete g_test_instance; |
| 159 g_test_instance = test_settings; | 179 g_test_instance = test_settings; |
| 160 } | 180 } |
| 161 | 181 |
| 162 } // namespace system | 182 } // namespace system |
| 163 } // namespace chromeos | 183 } // namespace chromeos |
| OLD | NEW |