Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(307)

Side by Side Diff: chromeos/ime/ibus_daemon_controller.cc

Issue 12481012: Implement IBusDaemonControllerDaemonlessImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing offline comments Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 // IBusBus should be initialized but it is okay to pass "dummy address" as
288 // the bus address because the actual dbus implementation is stub if the
289 // Chrome OS is working on Linux desktop. This path is not used in
290 // production at this moment, only for Chrome OS on Linux Desktop.
291 // TODO(nona): Remove InitIBusBus oncer all legacy ime is migrated to IME
292 // extension API.
293 DCHECK(!base::chromeos::IsRunningOnChromeOS());
294 DBusThreadManager::Get()->InitIBusBus("dummy address",
295 base::Bind(&base::DoNothing));
296 is_started_ = true;
297 FOR_EACH_OBSERVER(Observer, observers_, OnConnected());
298 return true;
299 }
300 virtual bool Stop() OVERRIDE {
301 if (!is_started_)
302 return false;
303 is_started_ = false;
304 FOR_EACH_OBSERVER(Observer, observers_, OnDisconnected());
305 return true;
306 }
277 307
278 private: 308 private:
279 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerStubImpl); 309 ObserverList<Observer> observers_;
310 bool is_started_;
311 DISALLOW_COPY_AND_ASSIGN(IBusDaemonControllerDaemonlessImpl);
280 }; 312 };
281 313
282 } // namespace 314 } // namespace
283 315
284 /////////////////////////////////////////////////////////////////////////////// 316 ///////////////////////////////////////////////////////////////////////////////
285 // IBusDaemonController 317 // IBusDaemonController
286 318
287 IBusDaemonController::IBusDaemonController() { 319 IBusDaemonController::IBusDaemonController() {
288 } 320 }
289 321
290 IBusDaemonController::~IBusDaemonController() { 322 IBusDaemonController::~IBusDaemonController() {
291 } 323 }
292 324
293 // static 325 // static
294 void IBusDaemonController::Initialize( 326 void IBusDaemonController::Initialize(
295 const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner, 327 const scoped_refptr<base::SequencedTaskRunner>& ui_task_runner,
296 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner) { 328 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner) {
297 DCHECK(g_ibus_daemon_controller == NULL) 329 DCHECK(g_ibus_daemon_controller == NULL)
298 << "Do not call Initialize function multiple times."; 330 << "Do not call Initialize function multiple times.";
299 if (base::chromeos::IsRunningOnChromeOS()) { 331 if (base::chromeos::IsRunningOnChromeOS()) {
300 g_ibus_daemon_controller = new IBusDaemonControllerImpl(ui_task_runner, 332 g_ibus_daemon_controller = new IBusDaemonControllerImpl(ui_task_runner,
301 file_task_runner); 333 file_task_runner);
302 } else { 334 } else {
303 g_ibus_daemon_controller = new IBusDaemonControllerStubImpl(); 335 g_ibus_daemon_controller = new IBusDaemonControllerDaemonlessImpl();
304 } 336 }
305 } 337 }
306 338
307 // static 339 // static
308 void IBusDaemonController::InitializeForTesting( 340 void IBusDaemonController::InitializeForTesting(
309 IBusDaemonController* controller_) { 341 IBusDaemonController* controller_) {
310 DCHECK(g_ibus_daemon_controller == NULL); 342 DCHECK(g_ibus_daemon_controller == NULL);
311 DCHECK(controller_); 343 DCHECK(controller_);
312 g_ibus_daemon_controller = controller_; 344 g_ibus_daemon_controller = controller_;
313 } 345 }
314 346
315 // static 347 // static
316 void IBusDaemonController::Shutdown() { 348 void IBusDaemonController::Shutdown() {
317 delete g_ibus_daemon_controller; 349 delete g_ibus_daemon_controller;
318 g_ibus_daemon_controller = NULL; 350 g_ibus_daemon_controller = NULL;
319 } 351 }
320 352
321 // static 353 // static
322 IBusDaemonController* IBusDaemonController::GetInstance() { 354 IBusDaemonController* IBusDaemonController::GetInstance() {
323 return g_ibus_daemon_controller; 355 return g_ibus_daemon_controller;
324 } 356 }
325 357
326 } // namespace chromeos 358 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698