OLD | NEW |
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 Loading... |
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 |
OLD | NEW |