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.
5 #include "chrome/browser/chromeos/system/pointer_device_observer.h"
7 #include "base/basictypes.h"
9 #include "base/bind_helpers.h"
10 #include "chrome/browser/chromeos/events/xinput_hierarchy_changed_event_listener.h"
11 #include "chrome/browser/chromeos/system/input_device_settings.h"
12 #include "content/public/browser/browser_thread.h"
14 using content::BrowserThread;
19 PointerDeviceObserver::PointerDeviceObserver()
20 : weak_factory_(this) {
23 PointerDeviceObserver::~PointerDeviceObserver() {
24 XInputHierarchyChangedEventListener::GetInstance()
25 ->RemoveObserver(this);
28 void PointerDeviceObserver::Init() {
29 XInputHierarchyChangedEventListener::GetInstance()
33 void PointerDeviceObserver::CheckDevices() {
35 CheckTouchpadExists();
38 void PointerDeviceObserver::AddObserver(Observer* observer) {
39 observers_.AddObserver(observer);
42 void PointerDeviceObserver::RemoveObserver(Observer* observer) {
43 observers_.RemoveObserver(observer);
46 void PointerDeviceObserver::DeviceHierarchyChanged() {
50 void PointerDeviceObserver::CheckTouchpadExists() {
51 InputDeviceSettings::Get()->TouchpadExists(
52 base::Bind(&PointerDeviceObserver::OnTouchpadExists,
53 weak_factory_.GetWeakPtr()));
56 void PointerDeviceObserver::CheckMouseExists() {
57 InputDeviceSettings::Get()->MouseExists(
58 base::Bind(&PointerDeviceObserver::OnMouseExists,
59 weak_factory_.GetWeakPtr()));
62 void PointerDeviceObserver::OnTouchpadExists(bool exists) {
63 FOR_EACH_OBSERVER(Observer, observers_, TouchpadExists(exists));
66 void PointerDeviceObserver::OnMouseExists(bool exists) {
67 FOR_EACH_OBSERVER(Observer, observers_, MouseExists(exists));
70 PointerDeviceObserver::Observer::~Observer() {
74 } // namespace chromeos