OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "chromeos/ime/ibus_daemon_controller.h" | 5 #include "chromeos/ime/ibus_daemon_controller.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/chromeos/chromeos_version.h" | 8 #include "base/chromeos/chromeos_version.h" |
9 #include "base/environment.h" | 9 #include "base/environment.h" |
10 #include "base/files/file_path_watcher.h" | 10 #include "base/files/file_path_watcher.h" |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
256 | 256 |
257 ObserverList<Observer> observers_; | 257 ObserverList<Observer> observers_; |
258 base::ThreadChecker thread_checker_; | 258 base::ThreadChecker thread_checker_; |
259 | 259 |
260 // Used for making callbacks for PostTask. | 260 // Used for making callbacks for PostTask. |
261 base::WeakPtrFactory<IBusDaemonControllerImpl> weak_ptr_factory_; | 261 base::WeakPtrFactory<IBusDaemonControllerImpl> weak_ptr_factory_; |
262 | 262 |
263 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerImpl); | 263 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerImpl); |
264 }; | 264 }; |
265 | 265 |
266 // The stub implementation of IBusDaemonController. | 266 // An implementation of IBusDaemonController without ibus-daemon interaction. |
267 class IBusDaemonControllerStubImpl : public IBusDaemonController { | 267 // Currently this class is used only on linux desktop. |
268 // TODO(nona): Remove IBusDaemonControlelr this once crbug.com/171351 is fixed. | |
269 class IBusDaemonControllerDaemonlessImpl : public IBusDaemonController { | |
268 public: | 270 public: |
269 IBusDaemonControllerStubImpl() {} | 271 IBusDaemonControllerDaemonlessImpl() |
270 virtual ~IBusDaemonControllerStubImpl() {} | 272 : is_started_(false) {} |
273 virtual ~IBusDaemonControllerDaemonlessImpl() {} | |
271 | 274 |
272 // IBusDaemonController overrides: | 275 // IBusDaemonController overrides: |
273 virtual void AddObserver(Observer* observer) OVERRIDE {} | 276 virtual void AddObserver(Observer* observer) OVERRIDE { |
274 virtual void RemoveObserver(Observer* observer) OVERRIDE {} | 277 observers_.AddObserver(observer); |
275 virtual bool Start() OVERRIDE { return true; } | 278 } |
276 virtual bool Stop() OVERRIDE { return true; } | 279 |
280 virtual void RemoveObserver(Observer* observer) OVERRIDE { | |
281 observers_.RemoveObserver(observer); | |
282 } | |
283 | |
284 virtual bool Start() OVERRIDE { | |
285 if (is_started_) | |
286 return false; | |
287 DBusThreadManager::Get()->InitIBusBus("dummy address", | |
satorux1
2013/03/11 01:24:29
The word "dummy" worries me. Please explain why in
Seigo Nonaka
2013/03/11 03:40:27
Done.
| |
288 base::Bind(&base::DoNothing)); | |
289 is_started_ = true; | |
290 FOR_EACH_OBSERVER(Observer, observers_, OnConnected()); | |
291 return true; | |
292 } | |
293 virtual bool Stop() OVERRIDE { | |
294 if (!is_started_) | |
295 return false; | |
296 is_started_ = false; | |
297 FOR_EACH_OBSERVER(Observer, observers_, OnDisconnected()); | |
298 return true; | |
299 } | |
277 | 300 |
278 private: | 301 private: |
279 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerStubImpl); | 302 ObserverList<Observer> observers_; |
303 bool is_started_; | |
304 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerDaemonlessImpl); | |
280 }; | 305 }; |
281 | 306 |
282 } // namespace | 307 } // namespace |
283 | 308 |
284 /////////////////////////////////////////////////////////////////////////////// | 309 /////////////////////////////////////////////////////////////////////////////// |
285 // IBusDaemonController | 310 // IBusDaemonController |
286 | 311 |
287 IBusDaemonController::IBusDaemonController() { | 312 IBusDaemonController::IBusDaemonController() { |
288 } | 313 } |
289 | 314 |
290 IBusDaemonController::~IBusDaemonController() { | 315 IBusDaemonController::~IBusDaemonController() { |
291 } | 316 } |
292 | 317 |
293 // static | 318 // static |
294 void IBusDaemonController::Initialize( | 319 void IBusDaemonController::Initialize( |
295 const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner, | 320 const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner, |
296 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner) { | 321 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner) { |
297 DCHECK(g_ibus_daemon_controller == NULL) | 322 DCHECK(g_ibus_daemon_controller == NULL) |
298 << "Do not call Initialize function multiple times."; | 323 << "Do not call Initialize function multiple times."; |
299 if (base::chromeos::IsRunningOnChromeOS()) { | 324 if (base::chromeos::IsRunningOnChromeOS()) { |
300 g_ibus_daemon_controller = new IBusDaemonControllerImpl(ui_task_runner, | 325 g_ibus_daemon_controller = new IBusDaemonControllerImpl(ui_task_runner, |
301 file_task_runner); | 326 file_task_runner); |
302 } else { | 327 } else { |
303 g_ibus_daemon_controller = new IBusDaemonControllerStubImpl(); | 328 g_ibus_daemon_controller = new IBusDaemonControllerDaemonlessImpl(); |
304 } | 329 } |
305 } | 330 } |
306 | 331 |
307 // static | 332 // static |
308 void IBusDaemonController::InitializeForTesting( | 333 void IBusDaemonController::InitializeForTesting( |
309 IBusDaemonController* controller_) { | 334 IBusDaemonController* controller_) { |
310 DCHECK(g_ibus_daemon_controller == NULL); | 335 DCHECK(g_ibus_daemon_controller == NULL); |
311 DCHECK(controller_); | 336 DCHECK(controller_); |
312 g_ibus_daemon_controller = controller_; | 337 g_ibus_daemon_controller = controller_; |
313 } | 338 } |
314 | 339 |
315 // static | 340 // static |
316 void IBusDaemonController::Shutdown() { | 341 void IBusDaemonController::Shutdown() { |
317 delete g_ibus_daemon_controller; | 342 delete g_ibus_daemon_controller; |
318 g_ibus_daemon_controller = NULL; | 343 g_ibus_daemon_controller = NULL; |
319 } | 344 } |
320 | 345 |
321 // static | 346 // static |
322 IBusDaemonController* IBusDaemonController::GetInstance() { | 347 IBusDaemonController* IBusDaemonController::GetInstance() { |
323 return g_ibus_daemon_controller; | 348 return g_ibus_daemon_controller; |
324 } | 349 } |
325 | 350 |
326 } // namespace chromeos | 351 } // namespace chromeos |
OLD | NEW |