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 "content/public/browser/browser_thread.h" 12 13#if defined(USE_X11) 14#include "chrome/browser/chromeos/events/xinput_hierarchy_changed_event_listener.h" 15#endif 16 17using content::BrowserThread; 18 19namespace chromeos { 20namespace system { 21 22PointerDeviceObserver::PointerDeviceObserver() 23 : weak_factory_(this) { 24} 25 26PointerDeviceObserver::~PointerDeviceObserver() { 27#if defined(USE_X11) 28 XInputHierarchyChangedEventListener::GetInstance() 29 ->RemoveObserver(this); 30#endif 31} 32 33void PointerDeviceObserver::Init() { 34#if defined(USE_X11) 35 XInputHierarchyChangedEventListener::GetInstance() 36 ->AddObserver(this); 37#endif 38} 39 40void PointerDeviceObserver::CheckDevices() { 41 CheckMouseExists(); 42 CheckTouchpadExists(); 43} 44 45void PointerDeviceObserver::AddObserver(Observer* observer) { 46 observers_.AddObserver(observer); 47} 48 49void PointerDeviceObserver::RemoveObserver(Observer* observer) { 50 observers_.RemoveObserver(observer); 51} 52 53void PointerDeviceObserver::DeviceHierarchyChanged() { 54 CheckDevices(); 55} 56 57void PointerDeviceObserver::CheckTouchpadExists() { 58 InputDeviceSettings::Get()->TouchpadExists( 59 base::Bind(&PointerDeviceObserver::OnTouchpadExists, 60 weak_factory_.GetWeakPtr())); 61} 62 63void PointerDeviceObserver::CheckMouseExists() { 64 InputDeviceSettings::Get()->MouseExists( 65 base::Bind(&PointerDeviceObserver::OnMouseExists, 66 weak_factory_.GetWeakPtr())); 67} 68 69void PointerDeviceObserver::OnTouchpadExists(bool exists) { 70 FOR_EACH_OBSERVER(Observer, observers_, TouchpadExists(exists)); 71} 72 73void PointerDeviceObserver::OnMouseExists(bool exists) { 74 FOR_EACH_OBSERVER(Observer, observers_, MouseExists(exists)); 75} 76 77PointerDeviceObserver::Observer::~Observer() { 78} 79 80} // namespace system 81} // namespace chromeos 82