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 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/system/pointer_device_observer.h" 6 7#include "base/basictypes.h" 8#include "base/bind.h" 9#include "base/bind_helpers.h" 10#include "chrome/browser/chromeos/system/input_device_settings.h" 11#include "chrome/browser/chromeos/xinput_hierarchy_changed_event_listener.h" 12#include "content/public/browser/browser_thread.h" 13 14using content::BrowserThread; 15 16namespace chromeos { 17namespace system { 18 19PointerDeviceObserver::PointerDeviceObserver() 20 : weak_factory_(this) { 21} 22 23PointerDeviceObserver::~PointerDeviceObserver() { 24 XInputHierarchyChangedEventListener::GetInstance() 25 ->RemoveObserver(this); 26} 27 28void PointerDeviceObserver::Init() { 29 XInputHierarchyChangedEventListener::GetInstance() 30 ->AddObserver(this); 31} 32 33void PointerDeviceObserver::CheckDevices() { 34 CheckMouseExists(); 35 CheckTouchpadExists(); 36} 37 38void PointerDeviceObserver::AddObserver(Observer* observer) { 39 observers_.AddObserver(observer); 40} 41 42void PointerDeviceObserver::RemoveObserver(Observer* observer) { 43 observers_.RemoveObserver(observer); 44} 45 46void PointerDeviceObserver::DeviceHierarchyChanged() { 47 CheckDevices(); 48} 49 50void PointerDeviceObserver::CheckTouchpadExists() { 51 touchpad_settings::TouchpadExists( 52 base::Bind(&PointerDeviceObserver::OnTouchpadExists, 53 weak_factory_.GetWeakPtr())); 54} 55 56void PointerDeviceObserver::CheckMouseExists() { 57 mouse_settings::MouseExists( 58 base::Bind(&PointerDeviceObserver::OnMouseExists, 59 weak_factory_.GetWeakPtr())); 60} 61 62void PointerDeviceObserver::OnTouchpadExists(bool exists) { 63 FOR_EACH_OBSERVER(Observer, observers_, TouchpadExists(exists)); 64} 65 66void PointerDeviceObserver::OnMouseExists(bool exists) { 67 FOR_EACH_OBSERVER(Observer, observers_, MouseExists(exists)); 68} 69 70PointerDeviceObserver::Observer::~Observer() { 71} 72 73} // namespace system 74} // namespace chromeos 75