OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "chrome/browser/chromeos/cros/cros_library.h" | 5 #include "chrome/browser/chromeos/cros/cros_library.h" |
6 | 6 |
7 #include "chrome/browser/chromeos/cros/cros_library_loader.h" | 7 #include "chrome/browser/chromeos/cros/cros_library_loader.h" |
8 #include "chrome/browser/chromeos/cros/cryptohome_library.h" | 8 #include "chrome/browser/chromeos/cros/cryptohome_library.h" |
9 #include "chrome/browser/chromeos/cros/input_method_library.h" | 9 #include "chrome/browser/chromeos/cros/input_method_library.h" |
10 #include "chrome/browser/chromeos/cros/keyboard_library.h" | 10 #include "chrome/browser/chromeos/cros/keyboard_library.h" |
11 #include "chrome/browser/chromeos/cros/login_library.h" | 11 #include "chrome/browser/chromeos/cros/login_library.h" |
12 #include "chrome/browser/chromeos/cros/mount_library.h" | 12 #include "chrome/browser/chromeos/cros/mount_library.h" |
13 #include "chrome/browser/chromeos/cros/network_library.h" | 13 #include "chrome/browser/chromeos/cros/network_library.h" |
14 #include "chrome/browser/chromeos/cros/power_library.h" | 14 #include "chrome/browser/chromeos/cros/power_library.h" |
15 #include "chrome/browser/chromeos/cros/screen_lock_library.h" | 15 #include "chrome/browser/chromeos/cros/screen_lock_library.h" |
16 #include "chrome/browser/chromeos/cros/speech_synthesis_library.h" | 16 #include "chrome/browser/chromeos/cros/speech_synthesis_library.h" |
17 #include "chrome/browser/chromeos/cros/synaptics_library.h" | 17 #include "chrome/browser/chromeos/cros/synaptics_library.h" |
18 #include "chrome/browser/chromeos/cros/syslogs_library.h" | 18 #include "chrome/browser/chromeos/cros/syslogs_library.h" |
19 #include "chrome/browser/chromeos/cros/system_library.h" | 19 #include "chrome/browser/chromeos/cros/system_library.h" |
20 #include "chrome/browser/chromeos/cros/update_library.h" | 20 #include "chrome/browser/chromeos/cros/update_library.h" |
21 | 21 |
22 namespace chromeos { | 22 namespace chromeos { |
23 | 23 |
24 CrosLibrary::CrosLibrary() : library_loader_(NULL), | 24 CrosLibrary::CrosLibrary() : library_loader_(NULL), |
25 crypto_lib_(NULL), | |
26 keyboard_lib_(NULL), | |
27 input_method_lib_(NULL), | |
28 login_lib_(NULL), | |
29 mount_lib_(NULL), | |
30 network_lib_(NULL), | |
31 power_lib_(NULL), | |
32 screen_lock_lib_(NULL), | |
33 speech_synthesis_lib_(NULL), | |
34 synaptics_lib_(NULL), | |
35 syslogs_lib_(NULL), | |
36 system_lib_(NULL), | |
37 update_lib_(NULL), | |
38 own_library_loader_(true), | |
39 own_cryptohome_lib_(true), | |
40 own_keyboard_lib_(true), | |
41 own_input_method_lib_(true), | |
42 own_login_lib_(true), | |
43 own_mount_lib_(true), | |
44 own_network_lib_(true), | |
45 own_power_lib_(true), | |
46 own_screen_lock_lib_(true), | |
47 own_speech_synthesis_lib_(true), | |
48 own_synaptics_lib_(true), | |
49 own_syslogs_lib_(true), | |
50 own_system_lib_(true), | |
51 own_update_lib_(true), | |
52 loaded_(false), | 25 loaded_(false), |
53 load_error_(false), | 26 load_error_(false), |
54 test_api_(NULL) { | 27 test_api_(NULL) { |
55 | |
56 } | 28 } |
57 | 29 |
58 CrosLibrary::~CrosLibrary() { | 30 CrosLibrary::~CrosLibrary() { |
59 if (own_library_loader_) | 31 if (own_library_loader_) |
60 delete library_loader_; | 32 delete library_loader_; |
61 if (own_cryptohome_lib_) | |
62 delete crypto_lib_; | |
63 if (own_keyboard_lib_) | |
64 delete keyboard_lib_; | |
65 if (own_input_method_lib_) | |
66 delete input_method_lib_; | |
67 if (own_login_lib_) | |
68 delete login_lib_; | |
69 if (own_mount_lib_) | |
70 delete mount_lib_; | |
71 if (own_network_lib_) | |
72 delete network_lib_; | |
73 if (own_power_lib_) | |
74 delete power_lib_; | |
75 if (own_screen_lock_lib_) | |
76 delete screen_lock_lib_; | |
77 if (own_speech_synthesis_lib_) | |
78 delete speech_synthesis_lib_; | |
79 if (own_synaptics_lib_) | |
80 delete synaptics_lib_; | |
81 if (own_syslogs_lib_) | |
82 delete syslogs_lib_; | |
83 if (own_system_lib_) | |
84 delete system_lib_; | |
85 if (own_update_lib_) | |
86 delete update_lib_; | |
87 delete test_api_; | |
88 } | 33 } |
89 | 34 |
90 // static | 35 // static |
91 CrosLibrary* CrosLibrary::Get() { | 36 CrosLibrary* CrosLibrary::Get() { |
92 return Singleton<CrosLibrary>::get(); | 37 return Singleton<CrosLibrary>::get(); |
93 } | 38 } |
94 | 39 |
95 CryptohomeLibrary* CrosLibrary::GetCryptohomeLibrary() { | 40 CryptohomeLibrary* CrosLibrary::GetCryptohomeLibrary() { |
96 if (!crypto_lib_) | 41 return crypto_lib_.GetDefaultImpl(use_stub_impl_); |
97 crypto_lib_ = new CryptohomeLibraryImpl(); | |
98 return crypto_lib_; | |
99 } | 42 } |
100 | 43 |
101 KeyboardLibrary* CrosLibrary::GetKeyboardLibrary() { | 44 KeyboardLibrary* CrosLibrary::GetKeyboardLibrary() { |
102 if (!keyboard_lib_) | 45 return keyboard_lib_.GetDefaultImpl(use_stub_impl_); |
103 keyboard_lib_ = new KeyboardLibraryImpl(); | |
104 return keyboard_lib_; | |
105 } | 46 } |
106 | 47 |
107 InputMethodLibrary* CrosLibrary::GetInputMethodLibrary() { | 48 InputMethodLibrary* CrosLibrary::GetInputMethodLibrary() { |
108 if (!input_method_lib_) | 49 return input_method_lib_.GetDefaultImpl(use_stub_impl_); |
109 input_method_lib_ = new InputMethodLibraryImpl(); | |
110 return input_method_lib_; | |
111 } | 50 } |
112 | 51 |
113 LoginLibrary* CrosLibrary::GetLoginLibrary() { | 52 LoginLibrary* CrosLibrary::GetLoginLibrary() { |
114 if (!login_lib_) | 53 return login_lib_.GetDefaultImpl(use_stub_impl_); |
115 login_lib_ = new LoginLibraryImpl(); | |
116 return login_lib_; | |
117 } | 54 } |
118 | 55 |
119 MountLibrary* CrosLibrary::GetMountLibrary() { | 56 MountLibrary* CrosLibrary::GetMountLibrary() { |
120 if (!mount_lib_) | 57 return mount_lib_.GetDefaultImpl(use_stub_impl_); |
121 mount_lib_ = new MountLibraryImpl(); | |
122 return mount_lib_; | |
123 } | 58 } |
124 | 59 |
125 NetworkLibrary* CrosLibrary::GetNetworkLibrary() { | 60 NetworkLibrary* CrosLibrary::GetNetworkLibrary() { |
126 if (!network_lib_) | 61 return network_lib_.GetDefaultImpl(use_stub_impl_); |
127 network_lib_ = new NetworkLibraryImpl(); | |
128 return network_lib_; | |
129 } | 62 } |
130 | 63 |
131 PowerLibrary* CrosLibrary::GetPowerLibrary() { | 64 PowerLibrary* CrosLibrary::GetPowerLibrary() { |
132 if (!power_lib_) | 65 return power_lib_.GetDefaultImpl(use_stub_impl_); |
133 power_lib_ = new PowerLibraryImpl(); | |
134 return power_lib_; | |
135 } | 66 } |
136 | 67 |
137 ScreenLockLibrary* CrosLibrary::GetScreenLockLibrary() { | 68 ScreenLockLibrary* CrosLibrary::GetScreenLockLibrary() { |
138 if (!screen_lock_lib_) | 69 return screen_lock_lib_.GetDefaultImpl(use_stub_impl_); |
139 screen_lock_lib_ = new ScreenLockLibraryImpl(); | |
140 return screen_lock_lib_; | |
141 } | 70 } |
142 | 71 |
143 SpeechSynthesisLibrary* CrosLibrary::GetSpeechSynthesisLibrary() { | 72 SpeechSynthesisLibrary* CrosLibrary::GetSpeechSynthesisLibrary() { |
144 if (!speech_synthesis_lib_) | 73 return speech_synthesis_lib_.GetDefaultImpl(use_stub_impl_); |
145 speech_synthesis_lib_ = new SpeechSynthesisLibraryImpl(); | |
146 return speech_synthesis_lib_; | |
147 } | 74 } |
148 | 75 |
149 SynapticsLibrary* CrosLibrary::GetSynapticsLibrary() { | 76 SynapticsLibrary* CrosLibrary::GetSynapticsLibrary() { |
150 if (!synaptics_lib_) | 77 return synaptics_lib_.GetDefaultImpl(use_stub_impl_); |
151 synaptics_lib_ = new SynapticsLibraryImpl(); | |
152 return synaptics_lib_; | |
153 } | 78 } |
154 | 79 |
155 SyslogsLibrary* CrosLibrary::GetSyslogsLibrary() { | 80 SyslogsLibrary* CrosLibrary::GetSyslogsLibrary() { |
156 if (!syslogs_lib_) | 81 return syslogs_lib_.GetDefaultImpl(use_stub_impl_); |
157 syslogs_lib_ = new SyslogsLibraryImpl(); | |
158 return syslogs_lib_; | |
159 } | 82 } |
160 | 83 |
161 SystemLibrary* CrosLibrary::GetSystemLibrary() { | 84 SystemLibrary* CrosLibrary::GetSystemLibrary() { |
162 if (!system_lib_) | 85 return system_lib_.GetDefaultImpl(use_stub_impl_); |
163 system_lib_ = new SystemLibraryImpl(); | |
164 return system_lib_; | |
165 } | 86 } |
166 | 87 |
167 UpdateLibrary* CrosLibrary::GetUpdateLibrary() { | 88 UpdateLibrary* CrosLibrary::GetUpdateLibrary() { |
168 if (!update_lib_) | 89 return update_lib_.GetDefaultImpl(use_stub_impl_); |
169 update_lib_ = new UpdateLibraryImpl(); | |
170 return update_lib_; | |
171 } | 90 } |
172 | 91 |
173 bool CrosLibrary::EnsureLoaded() { | 92 bool CrosLibrary::EnsureLoaded() { |
| 93 if (use_stub_impl_) |
| 94 return true; |
| 95 |
174 if (!loaded_ && !load_error_) { | 96 if (!loaded_ && !load_error_) { |
175 if (!library_loader_) | 97 if (!library_loader_) |
176 library_loader_ = new CrosLibraryLoader(); | 98 library_loader_ = new CrosLibraryLoader(); |
177 loaded_ = library_loader_->Load(&load_error_string_); | 99 loaded_ = library_loader_->Load(&load_error_string_); |
178 load_error_ = !loaded_; | 100 load_error_ = !loaded_; |
179 } | 101 } |
180 return loaded_; | 102 return loaded_; |
181 } | 103 } |
182 | 104 |
183 CrosLibrary::TestApi* CrosLibrary::GetTestApi() { | 105 CrosLibrary::TestApi* CrosLibrary::GetTestApi() { |
184 if (!test_api_) | 106 if (!test_api_) |
185 test_api_ = new TestApi(this); | 107 test_api_ = new TestApi(this); |
186 return test_api_; | 108 return test_api_; |
187 } | 109 } |
188 | 110 |
| 111 void CrosLibrary::TestApi::SetUseStubImpl() { |
| 112 library_->use_stub_impl_ = true; |
| 113 } |
| 114 |
189 void CrosLibrary::TestApi::SetLibraryLoader(LibraryLoader* loader, bool own) { | 115 void CrosLibrary::TestApi::SetLibraryLoader(LibraryLoader* loader, bool own) { |
190 if (library_->library_loader_ == loader) | 116 if (library_->library_loader_ == loader) |
191 return; | 117 return; |
192 if (library_->own_library_loader_) | 118 if (library_->own_library_loader_) |
193 delete library_->library_loader_; | 119 delete library_->library_loader_; |
194 library_->own_library_loader_ = own; | 120 library_->own_library_loader_ = own; |
195 library_->library_loader_ = loader; | 121 library_->library_loader_ = loader; |
196 // Reset load flags when loader changes. Otherwise some tests are really not | 122 // Reset load flags when loader changes. Otherwise some tests are really not |
197 // going to be happy. | 123 // going to be happy. |
198 library_->loaded_ = false; | 124 library_->loaded_ = false; |
199 library_->load_error_ = false; | 125 library_->load_error_ = false; |
200 } | 126 } |
201 | 127 |
202 void CrosLibrary::TestApi::SetCryptohomeLibrary(CryptohomeLibrary* library, | 128 void CrosLibrary::TestApi::SetCryptohomeLibrary( |
203 bool own) { | 129 CryptohomeLibrary* library, bool own) { |
204 if (library_->own_cryptohome_lib_) | 130 library_->crypto_lib_.SetImpl(library, own); |
205 delete library_->crypto_lib_; | |
206 library_->own_cryptohome_lib_ = own; | |
207 library_->crypto_lib_ = library; | |
208 } | 131 } |
209 | 132 |
210 void CrosLibrary::TestApi::SetKeyboardLibrary(KeyboardLibrary* library, | 133 void CrosLibrary::TestApi::SetKeyboardLibrary( |
211 bool own) { | 134 KeyboardLibrary* library, bool own) { |
212 if (library_->own_keyboard_lib_) | 135 library_->keyboard_lib_.SetImpl(library, own); |
213 delete library_->keyboard_lib_; | |
214 library_->own_keyboard_lib_ = own; | |
215 library_->keyboard_lib_ = library; | |
216 } | 136 } |
217 | 137 |
218 void CrosLibrary::TestApi::SetInputMethodLibrary(InputMethodLibrary* library, | 138 void CrosLibrary::TestApi::SetInputMethodLibrary( |
219 bool own) { | 139 InputMethodLibrary* library, bool own) { |
220 if (library_->own_input_method_lib_) | 140 library_->input_method_lib_.SetImpl(library, own); |
221 delete library_->input_method_lib_; | |
222 library_->own_input_method_lib_ = own; | |
223 library_->input_method_lib_ = library; | |
224 } | 141 } |
225 | 142 |
226 void CrosLibrary::TestApi::SetLoginLibrary(LoginLibrary* library, bool own) { | 143 void CrosLibrary::TestApi::SetLoginLibrary( |
227 if (library_->own_login_lib_) | 144 LoginLibrary* library, bool own) { |
228 delete library_->login_lib_; | 145 library_->login_lib_.SetImpl(library, own); |
229 library_->own_login_lib_ = own; | |
230 library_->login_lib_ = library; | |
231 } | 146 } |
232 | 147 |
233 void CrosLibrary::TestApi::SetMountLibrary(MountLibrary* library, bool own) { | 148 void CrosLibrary::TestApi::SetMountLibrary( |
234 if (library_->own_mount_lib_) | 149 MountLibrary* library, bool own) { |
235 delete library_->mount_lib_; | 150 library_->mount_lib_.SetImpl(library, own); |
236 library_->own_mount_lib_ = own; | |
237 library_->mount_lib_ = library; | |
238 } | 151 } |
239 | 152 |
240 void CrosLibrary::TestApi::SetNetworkLibrary(NetworkLibrary* library, | 153 void CrosLibrary::TestApi::SetNetworkLibrary( |
241 bool own) { | 154 NetworkLibrary* library, bool own) { |
242 if (library_->own_network_lib_) | 155 library_->network_lib_.SetImpl(library, own); |
243 delete library_->network_lib_; | |
244 library_->own_network_lib_ = own; | |
245 library_->network_lib_ = library; | |
246 } | 156 } |
247 | 157 |
248 void CrosLibrary::TestApi::SetPowerLibrary(PowerLibrary* library, bool own) { | 158 void CrosLibrary::TestApi::SetPowerLibrary( |
249 if (library_->own_power_lib_) | 159 PowerLibrary* library, bool own) { |
250 delete library_->power_lib_; | 160 library_->power_lib_.SetImpl(library, own); |
251 library_->own_power_lib_ = own; | |
252 library_->power_lib_ = library; | |
253 } | 161 } |
254 | 162 |
255 void CrosLibrary::TestApi::SetScreenLockLibrary(ScreenLockLibrary* library, | 163 void CrosLibrary::TestApi::SetScreenLockLibrary( |
256 bool own) { | 164 ScreenLockLibrary* library, bool own) { |
257 if (library_->own_screen_lock_lib_) | 165 library_->screen_lock_lib_.SetImpl(library, own); |
258 delete library_->screen_lock_lib_; | |
259 library_->own_screen_lock_lib_ = own; | |
260 library_->screen_lock_lib_ = library; | |
261 } | 166 } |
262 | 167 |
263 void CrosLibrary::TestApi::SetSpeechSynthesisLibrary( | 168 void CrosLibrary::TestApi::SetSpeechSynthesisLibrary( |
264 SpeechSynthesisLibrary* library, bool own) { | 169 SpeechSynthesisLibrary* library, bool own) { |
265 if (library_->own_speech_synthesis_lib_) | 170 library_->speech_synthesis_lib_.SetImpl(library, own); |
266 delete library_->speech_synthesis_lib_; | |
267 library_->own_speech_synthesis_lib_ = own; | |
268 library_->speech_synthesis_lib_ = library; | |
269 } | 171 } |
270 | 172 |
271 void CrosLibrary::TestApi::SetSynapticsLibrary(SynapticsLibrary* library, | 173 void CrosLibrary::TestApi::SetSynapticsLibrary( |
272 bool own) { | 174 SynapticsLibrary* library, bool own) { |
273 if (library_->own_synaptics_lib_) | 175 library_->synaptics_lib_.SetImpl(library, own); |
274 delete library_->synaptics_lib_; | |
275 library_->own_synaptics_lib_ = own; | |
276 library_->synaptics_lib_ = library; | |
277 } | 176 } |
278 | 177 |
279 void CrosLibrary::TestApi::SetSyslogsLibrary(SyslogsLibrary* library, | 178 void CrosLibrary::TestApi::SetSyslogsLibrary( |
280 bool own) { | 179 SyslogsLibrary* library, bool own) { |
281 if (library_->syslogs_lib_) | 180 library_->syslogs_lib_.SetImpl(library, own); |
282 delete library_->syslogs_lib_; | |
283 library_->own_syslogs_lib_ = own; | |
284 library_->syslogs_lib_ = library; | |
285 } | 181 } |
286 | 182 |
287 void CrosLibrary::TestApi::SetSystemLibrary(SystemLibrary* library, | 183 void CrosLibrary::TestApi::SetSystemLibrary( |
288 bool own) { | 184 SystemLibrary* library, bool own) { |
289 if (library_->system_lib_) | 185 library_->system_lib_.SetImpl(library, own); |
290 delete library_->system_lib_; | |
291 library_->own_system_lib_ = own; | |
292 library_->system_lib_ = library; | |
293 } | 186 } |
294 | 187 |
295 void CrosLibrary::TestApi::SetUpdateLibrary(UpdateLibrary* library, | 188 void CrosLibrary::TestApi::SetUpdateLibrary( |
296 bool own) { | 189 UpdateLibrary* library, bool own) { |
297 if (library_->update_lib_) | 190 library_->update_lib_.SetImpl(library, own); |
298 delete library_->update_lib_; | |
299 library_->own_update_lib_ = own; | |
300 library_->update_lib_ = library; | |
301 } | 191 } |
302 | 192 |
303 } // namespace chromeos | 193 } // namespace chromeos |
OLD | NEW |