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