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

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

Issue 1684063002: Add ArcEnabled policy implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@26869593
Patch Set: Inject ArcBridgeService for testing. Created 4 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
« no previous file with comments | « components/arc/arc_service_manager.h ('k') | components/arc/test/fake_arc_bridge_bootstrap.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_service_manager.h" 5 #include "components/arc/arc_service_manager.h"
6 6
7 #include "base/sequenced_task_runner.h" 7 #include "base/sequenced_task_runner.h"
8 #include "base/thread_task_runner_handle.h" 8 #include "base/thread_task_runner_handle.h"
9 #include "components/arc/arc_bridge_bootstrap.h" 9 #include "components/arc/arc_bridge_bootstrap.h"
10 #include "components/arc/arc_bridge_service_impl.h" 10 #include "components/arc/arc_bridge_service_impl.h"
11 #include "components/arc/clipboard/arc_clipboard_bridge.h" 11 #include "components/arc/clipboard/arc_clipboard_bridge.h"
12 #include "components/arc/ime/arc_ime_bridge.h" 12 #include "components/arc/ime/arc_ime_bridge.h"
13 #include "components/arc/input/arc_input_bridge.h" 13 #include "components/arc/input/arc_input_bridge.h"
14 #include "components/arc/net/arc_net_host_impl.h" 14 #include "components/arc/net/arc_net_host_impl.h"
15 #include "components/arc/power/arc_power_bridge.h" 15 #include "components/arc/power/arc_power_bridge.h"
16 #include "ui/arc/notification/arc_notification_manager.h" 16 #include "ui/arc/notification/arc_notification_manager.h"
17 17
18 namespace arc { 18 namespace arc {
19 19
20 namespace { 20 namespace {
21 21
22 // Weak pointer. This class is owned by ChromeBrowserMainPartsChromeos. 22 // Weak pointer. This class is owned by ChromeBrowserMainPartsChromeos.
23 ArcServiceManager* g_arc_service_manager = nullptr; 23 ArcServiceManager* g_arc_service_manager = nullptr;
24 24
25 // This pointer is owned by ArcServiceManager.
26 ArcBridgeService* g_arc_bridge_service_for_testing = nullptr;
hidehiko 2016/03/16 16:45:35 Could you avoid the global var here? Would it be p
Polina Bondarenko 2016/03/17 13:40:28 Fixed: 1) Create ArcServiceManager(fake arc_bridge
27
25 } // namespace 28 } // namespace
26 29
27 ArcServiceManager::ArcServiceManager() 30 ArcServiceManager::ArcServiceManager() {
28 : arc_bridge_service_(
29 new ArcBridgeServiceImpl(ArcBridgeBootstrap::Create())) {
30 DCHECK(!g_arc_service_manager); 31 DCHECK(!g_arc_service_manager);
31 g_arc_service_manager = this; 32 g_arc_service_manager = this;
32 33
34 if (g_arc_bridge_service_for_testing) {
35 arc_bridge_service_.reset(g_arc_bridge_service_for_testing);
36 g_arc_bridge_service_for_testing = nullptr;
37 } else {
38 arc_bridge_service_.reset(new ArcBridgeServiceImpl(
39 ArcBridgeBootstrap::Create()));
40 }
41
33 AddService(make_scoped_ptr(new ArcClipboardBridge(arc_bridge_service()))); 42 AddService(make_scoped_ptr(new ArcClipboardBridge(arc_bridge_service())));
34 AddService(make_scoped_ptr(new ArcImeBridge(arc_bridge_service()))); 43 AddService(make_scoped_ptr(new ArcImeBridge(arc_bridge_service())));
35 AddService(make_scoped_ptr(new ArcInputBridge(arc_bridge_service()))); 44 AddService(make_scoped_ptr(new ArcInputBridge(arc_bridge_service())));
36 AddService(make_scoped_ptr(new ArcNetHostImpl(arc_bridge_service()))); 45 AddService(make_scoped_ptr(new ArcNetHostImpl(arc_bridge_service())));
37 AddService(make_scoped_ptr(new ArcPowerBridge(arc_bridge_service()))); 46 AddService(make_scoped_ptr(new ArcPowerBridge(arc_bridge_service())));
38 } 47 }
39 48
40 ArcServiceManager::~ArcServiceManager() { 49 ArcServiceManager::~ArcServiceManager() {
41 DCHECK(thread_checker_.CalledOnValidThread()); 50 DCHECK(thread_checker_.CalledOnValidThread());
42 DCHECK(g_arc_service_manager == this); 51 DCHECK(g_arc_service_manager == this);
43 g_arc_service_manager = nullptr; 52 g_arc_service_manager = nullptr;
53 if (g_arc_bridge_service_for_testing) {
54 delete g_arc_bridge_service_for_testing;
55 }
44 } 56 }
45 57
46 // static 58 // static
47 ArcServiceManager* ArcServiceManager::Get() { 59 ArcServiceManager* ArcServiceManager::Get() {
48 DCHECK(g_arc_service_manager); 60 DCHECK(g_arc_service_manager);
49 DCHECK(g_arc_service_manager->thread_checker_.CalledOnValidThread()); 61 DCHECK(g_arc_service_manager->thread_checker_.CalledOnValidThread());
50 return g_arc_service_manager; 62 return g_arc_service_manager;
51 } 63 }
52 64
53 ArcBridgeService* ArcServiceManager::arc_bridge_service() { 65 ArcBridgeService* ArcServiceManager::arc_bridge_service() {
54 DCHECK(thread_checker_.CalledOnValidThread()); 66 DCHECK(thread_checker_.CalledOnValidThread());
55 return arc_bridge_service_.get(); 67 return arc_bridge_service_.get();
56 } 68 }
57 69
58 void ArcServiceManager::AddService(scoped_ptr<ArcService> service) { 70 void ArcServiceManager::AddService(scoped_ptr<ArcService> service) {
59 DCHECK(thread_checker_.CalledOnValidThread()); 71 DCHECK(thread_checker_.CalledOnValidThread());
60 72
61 services_.emplace_back(std::move(service)); 73 services_.emplace_back(std::move(service));
62 } 74 }
63 75
64 void ArcServiceManager::OnPrimaryUserProfilePrepared( 76 void ArcServiceManager::OnPrimaryUserProfilePrepared(
65 const AccountId& account_id) { 77 const AccountId& account_id) {
66 DCHECK(thread_checker_.CalledOnValidThread()); 78 DCHECK(thread_checker_.CalledOnValidThread());
67 79
68 AddService(make_scoped_ptr( 80 AddService(make_scoped_ptr(
69 new ArcNotificationManager(arc_bridge_service(), account_id))); 81 new ArcNotificationManager(arc_bridge_service(), account_id)));
70 } 82 }
71 83
84 //static
85 void ArcServiceManager::SetArcBridgeServiceForTesting(
86 scoped_ptr<ArcBridgeService> arc_bridge_service) {
87 if (g_arc_bridge_service_for_testing) {
88 delete g_arc_bridge_service_for_testing;
89 }
90 g_arc_bridge_service_for_testing = arc_bridge_service.release();
91 }
92
72 } // namespace arc 93 } // namespace arc
OLDNEW
« no previous file with comments | « components/arc/arc_service_manager.h ('k') | components/arc/test/fake_arc_bridge_bootstrap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698