OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ |
6 #define CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ | 6 #define CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 // WeakPtrFactory when creating callbacks that run on UI thread. See | 45 // WeakPtrFactory when creating callbacks that run on UI thread. See |
46 // session_manager_client.cc for examples. | 46 // session_manager_client.cc for examples. |
47 // | 47 // |
48 class DBusThreadManager { | 48 class DBusThreadManager { |
49 public: | 49 public: |
50 // Sets the global instance. Must be called before any calls to Get(). | 50 // Sets the global instance. Must be called before any calls to Get(). |
51 // We explicitly initialize and shut down the global object, rather than | 51 // We explicitly initialize and shut down the global object, rather than |
52 // making it a Singleton, to ensure clean startup and shutdown. | 52 // making it a Singleton, to ensure clean startup and shutdown. |
53 static void Initialize(); | 53 static void Initialize(); |
54 | 54 |
| 55 // Similar to Initialize(), but can inject an alternative |
| 56 // DBusThreadManager such as MockDBusThreadManager for testing. |
| 57 // The injected object will be owned by the internal pointer and deleted |
| 58 // by Shutdown(). |
| 59 static void InitializeForTesting(DBusThreadManager* dbus_thread_manager); |
| 60 |
55 // Destroys the global instance. | 61 // Destroys the global instance. |
56 static void Shutdown(); | 62 static void Shutdown(); |
57 | 63 |
58 // Gets the global instance. Initialize() must be called first. | 64 // Gets the global instance. Initialize() must be called first. |
59 static DBusThreadManager* Get(); | 65 static DBusThreadManager* Get(); |
60 | 66 |
61 // Returns the bluetooth manager client, owned by DBusThreadManager. | 67 // TODO(satorux): Rename the following getters to something like |
62 // Do not cache this pointer and use it after DBusThreadManager is shut | 68 // GetFooClient() as they are now virtual. |
63 // down. | |
64 BluetoothManagerClient* bluetooth_manager_client() { | |
65 return bluetooth_manager_client_.get(); | |
66 } | |
67 | 69 |
68 // Returns the bluetooth adapter client, owned by DBusThreadManager. | 70 // Returns the bluetooth adapter client, owned by DBusThreadManager. |
69 // Do not cache this pointer and use it after DBusThreadManager is shut | 71 // Do not cache this pointer and use it after DBusThreadManager is shut |
70 // down. | 72 // down. |
71 BluetoothAdapterClient* bluetooth_adapter_client() { | 73 virtual BluetoothAdapterClient* bluetooth_adapter_client() = 0; |
72 return bluetooth_adapter_client_.get(); | 74 |
73 } | 75 // Returns the bluetooth manager client, owned by DBusThreadManager. |
| 76 // Do not cache this pointer and use it after DBusThreadManager is shut |
| 77 // down. |
| 78 virtual BluetoothManagerClient* bluetooth_manager_client() = 0; |
74 | 79 |
75 // Returns the power manager client, owned by DBusThreadManager. | 80 // Returns the power manager client, owned by DBusThreadManager. |
76 // See also comments at session_manager_client(). | 81 // See also comments at session_manager_client(). |
77 PowerManagerClient* power_manager_client() { | 82 virtual PowerManagerClient* power_manager_client() = 0; |
78 return power_manager_client_.get(); | |
79 } | |
80 | 83 |
81 // Returns the session manager client, owned by DBusThreadManager. | 84 // Returns the session manager client, owned by DBusThreadManager. |
82 // Do not cache this pointer and use it after DBusThreadManager is shut | 85 // Do not cache this pointer and use it after DBusThreadManager is shut |
83 // down. | 86 // down. |
84 SessionManagerClient* session_manager_client() { | 87 virtual SensorsClient* sensors_client() = 0; |
85 return session_manager_client_.get(); | 88 |
86 } | 89 // Returns the session manager client, owned by DBusThreadManager. |
| 90 // Do not cache this pointer and use it after DBusThreadManager is shut |
| 91 // down. |
| 92 virtual SessionManagerClient* session_manager_client() = 0; |
87 | 93 |
88 // Sets the session manager client. Takes the ownership. | 94 // Sets the session manager client. Takes the ownership. |
89 // The function is exported for testing. | 95 // The function is exported for testing. |
90 void set_session_manager_client_for_testing( | 96 // |
91 SessionManagerClient* session_manager_client); | 97 // TODO(satorux): Remove this once we convert tests to use |
| 98 // MockDBusThreadManager. |
| 99 virtual void set_session_manager_client_for_testing( |
| 100 SessionManagerClient* session_manager_client) = 0; |
92 | 101 |
93 // Returns the speech synthesizer client, owned by DBusThreadManager. | 102 // Returns the speech synthesizer client, owned by DBusThreadManager. |
94 // Do not cache this pointer and use it after DBusThreadManager is shut | 103 // Do not cache this pointer and use it after DBusThreadManager is shut |
95 // down. | 104 // down. |
96 SpeechSynthesizerClient* speech_synthesizer_client() { | 105 virtual SpeechSynthesizerClient* speech_synthesizer_client() = 0; |
97 return speech_synthesizer_client_.get(); | |
98 } | |
99 | 106 |
100 private: | |
101 DBusThreadManager(); | |
102 virtual ~DBusThreadManager(); | 107 virtual ~DBusThreadManager(); |
103 | 108 |
104 scoped_ptr<base::Thread> dbus_thread_; | 109 protected: |
105 scoped_refptr<dbus::Bus> system_bus_; | 110 DBusThreadManager(); |
106 scoped_ptr<CrosDBusService> cros_dbus_service_; | |
107 scoped_ptr<SensorsClient> sensors_client_; | |
108 scoped_ptr<BluetoothManagerClient> bluetooth_manager_client_; | |
109 scoped_ptr<BluetoothAdapterClient> bluetooth_adapter_client_; | |
110 scoped_ptr<PowerManagerClient> power_manager_client_; | |
111 scoped_ptr<SessionManagerClient> session_manager_client_; | |
112 scoped_ptr<SpeechSynthesizerClient> speech_synthesizer_client_; | |
113 | 111 |
114 DISALLOW_COPY_AND_ASSIGN(DBusThreadManager); | 112 DISALLOW_COPY_AND_ASSIGN(DBusThreadManager); |
115 }; | 113 }; |
116 | 114 |
117 } // namespace chromeos | 115 } // namespace chromeos |
118 | 116 |
119 #endif // CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ | 117 #endif // CHROME_BROWSER_CHROMEOS_DBUS_DBUS_THREAD_MANAGER_H_ |
OLD | NEW |