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

Side by Side Diff: components/arc/arc_bridge_service.cc

Issue 1496193002: arc: Add ArcServiceManager to own all future ARC services (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit fix Created 5 years 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/arc/arc_bridge_service.h" 5 #include "components/arc/arc_bridge_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/sequenced_task_runner.h" 8 #include "base/sequenced_task_runner.h"
9 #include "base/thread_task_runner_handle.h" 9 #include "base/thread_task_runner_handle.h"
10 #include "chromeos/chromeos_switches.h" 10 #include "chromeos/chromeos_switches.h"
11 #include "components/arc/arc_bridge_service_impl.h" 11 #include "components/arc/arc_bridge_service_impl.h"
12 12
13 namespace arc { 13 namespace arc {
14 14
15 namespace {
16
17 // Weak pointer. This class is owned by ChromeBrowserMainPartsChromeos.
18 ArcBridgeService* g_arc_bridge_service = nullptr;
19
20 } // namespace
21
22 ArcBridgeService::ArcBridgeService() 15 ArcBridgeService::ArcBridgeService()
23 : origin_task_runner_(base::ThreadTaskRunnerHandle::Get()), 16 : origin_task_runner_(base::ThreadTaskRunnerHandle::Get()),
24 available_(false), 17 available_(false),
25 state_(State::STOPPED) { 18 state_(State::STOPPED) {}
26 DCHECK(!g_arc_bridge_service);
27 g_arc_bridge_service = this;
28 }
29 19
30 ArcBridgeService::~ArcBridgeService() { 20 ArcBridgeService::~ArcBridgeService() {
31 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 21 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
32 DCHECK(state() == State::STOPPING || state() == State::STOPPED); 22 DCHECK(state() == State::STOPPING || state() == State::STOPPED);
33 DCHECK(g_arc_bridge_service == this);
34 g_arc_bridge_service = nullptr;
35 } 23 }
36 24
37 // static 25 // static
38 ArcBridgeService* ArcBridgeService::Get() {
39 DCHECK(g_arc_bridge_service);
40 DCHECK(g_arc_bridge_service->origin_task_runner()->
41 RunsTasksOnCurrentThread());
42 return g_arc_bridge_service;
43 }
44
45 // static
46 bool ArcBridgeService::GetEnabled(const base::CommandLine* command_line) { 26 bool ArcBridgeService::GetEnabled(const base::CommandLine* command_line) {
47 return command_line->HasSwitch(chromeos::switches::kEnableArc); 27 return command_line->HasSwitch(chromeos::switches::kEnableArc);
48 } 28 }
49 29
50 void ArcBridgeService::AddObserver(Observer* observer) { 30 void ArcBridgeService::AddObserver(Observer* observer) {
51 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 31 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
52 observer_list_.AddObserver(observer); 32 observer_list_.AddObserver(observer);
53 } 33 }
54 34
55 void ArcBridgeService::RemoveObserver(Observer* observer) { 35 void ArcBridgeService::RemoveObserver(Observer* observer) {
(...skipping 30 matching lines...) Expand all
86 FOR_EACH_OBSERVER(Observer, observer_list(), OnStateChanged(state_)); 66 FOR_EACH_OBSERVER(Observer, observer_list(), OnStateChanged(state_));
87 } 67 }
88 68
89 void ArcBridgeService::SetAvailable(bool available) { 69 void ArcBridgeService::SetAvailable(bool available) {
90 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread()); 70 DCHECK(origin_task_runner()->RunsTasksOnCurrentThread());
91 DCHECK(available_ != available); 71 DCHECK(available_ != available);
92 available_ = available; 72 available_ = available;
93 FOR_EACH_OBSERVER(Observer, observer_list(), OnAvailableChanged(available_)); 73 FOR_EACH_OBSERVER(Observer, observer_list(), OnAvailableChanged(available_));
94 } 74 }
95 75
96 // static
97 scoped_ptr<ArcBridgeService> ArcBridgeService::Create(
98 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner,
99 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner) {
100 return make_scoped_ptr(new ArcBridgeServiceImpl(ipc_task_runner,
101 file_task_runner));
102 }
103
104 } // namespace arc 76 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698