diff options
author | achuith@chromium.org <achuith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 06:35:29 +0000 |
---|---|---|
committer | achuith@chromium.org <achuith@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-04 06:35:29 +0000 |
commit | 235a5051b7504ccd60712ace843f489df0fae436 (patch) | |
tree | 154a1bfb3bf88cbaca4e831521fdb25cf02dc29c /chrome/browser/chromeos/system/device_change_handler.cc | |
parent | 4a2a50cb21a126dfc04a4166f96efdd53299bf40 (diff) | |
download | chromium_src-235a5051b7504ccd60712ace843f489df0fae436.zip chromium_src-235a5051b7504ccd60712ace843f489df0fae436.tar.gz chromium_src-235a5051b7504ccd60712ace843f489df0fae436.tar.bz2 |
Use helper DeviceChangeHandler to call mousecontrol/tpcontrol whenever a device is attached.
BUG=240819
TEST=manual
Review URL: https://chromiumcodereview.appspot.com/15381003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203868 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/system/device_change_handler.cc')
-rw-r--r-- | chrome/browser/chromeos/system/device_change_handler.cc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/system/device_change_handler.cc b/chrome/browser/chromeos/system/device_change_handler.cc new file mode 100644 index 0000000..12f5ac4 --- /dev/null +++ b/chrome/browser/chromeos/system/device_change_handler.cc @@ -0,0 +1,89 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/system/device_change_handler.h" + +#include "base/prefs/pref_service.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/chromeos/system/input_device_settings.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/common/pref_names.h" + +namespace chromeos { +namespace system { + +DeviceChangeHandler::DeviceChangeHandler() + : pointer_device_observer_(new PointerDeviceObserver) { + pointer_device_observer_->AddObserver(this); + pointer_device_observer_->Init(); + + // Apply settings on startup. + TouchpadExists(true); + MouseExists(true); +} + +DeviceChangeHandler::~DeviceChangeHandler() { + pointer_device_observer_->RemoveObserver(this); +} + +// When we detect a touchpad is attached, apply touchpad settings of the last +// used profile. +void DeviceChangeHandler::TouchpadExists(bool exists) { + if (!exists) + return; + + // Using GetDefaultProfile here because GetLastUsedProfile returns the + // LoginManager profile in browser tests. + PrefService* prefs = + g_browser_process->profile_manager()->GetDefaultProfile()->GetPrefs(); + + const bool tap_dragging = prefs->GetBoolean(prefs::kTapDraggingEnabled); + system::touchpad_settings::SetTapDragging(tap_dragging); + + const bool three_finger_click = + prefs->GetBoolean(prefs::kEnableTouchpadThreeFingerClick); + system::touchpad_settings::SetThreeFingerClick(three_finger_click); + + const bool three_finger_swipe = + prefs->GetBoolean(prefs::kEnableTouchpadThreeFingerSwipe); + system::touchpad_settings::SetThreeFingerSwipe(three_finger_swipe); + + const int sensitivity = prefs->GetInteger(prefs::kTouchpadSensitivity); + system::touchpad_settings::SetSensitivity(sensitivity); + + // If we are not logged in, use owner preferences. + PrefService* local_prefs = g_browser_process->local_state(); + const bool tap_to_click = + g_browser_process->profile_manager()->IsLoggedIn() ? + prefs->GetBoolean(prefs::kTapToClickEnabled) : + local_prefs->GetBoolean(prefs::kOwnerTapToClickEnabled); + system::touchpad_settings::SetTapToClick(tap_to_click); +} + +// When we detect a mouse is attached, apply mouse settings of the last +// used profile. +void DeviceChangeHandler::MouseExists(bool exists) { + if (!exists) + return; + + // Using GetDefaultProfile here because GetLastUsedProfile returns the + // LoginManager profile in browser tests. + PrefService* prefs = + g_browser_process->profile_manager()->GetDefaultProfile()->GetPrefs(); + + const int sensitivity = prefs->GetInteger(prefs::kMouseSensitivity); + system::mouse_settings::SetSensitivity(sensitivity); + + // If we are not logged in, use owner preferences. + PrefService* local_prefs = g_browser_process->local_state(); + const bool primary_button_right = + g_browser_process->profile_manager()->IsLoggedIn() ? + prefs->GetBoolean(prefs::kPrimaryMouseButtonRight) : + local_prefs->GetBoolean(prefs::kOwnerPrimaryMouseButtonRight); + system::mouse_settings::SetPrimaryButtonRight(primary_button_right); +} + +} // namespace system +} // namespace chromeos + |