| // 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 |
| // primary profile. |
| void DeviceChangeHandler::TouchpadExists(bool exists) { |
| if (!exists) |
| return; |
| |
| // Using GetPrimaryUserProfile here because this is a system setting which can |
| // only be set by the user which starts the session. |
| PrefService* prefs = ProfileManager::GetPrimaryUserProfile()->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 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 primary |
| // profile. |
| void DeviceChangeHandler::MouseExists(bool exists) { |
| if (!exists) |
| return; |
| |
| // Using GetPrimaryUserProfile here because this is the property which can |
| // only be set by the user which starts the session. |
| PrefService* prefs = ProfileManager::GetPrimaryUserProfile()->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 |