| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/chromeos/arc/arc_service_launcher.h" | 5 #include "chrome/browser/chromeos/arc/arc_service_launcher.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "chrome/browser/chromeos/arc/arc_auth_service.h" | 9 #include "chrome/browser/chromeos/arc/arc_auth_service.h" |
| 10 #include "chrome/browser/chromeos/arc/arc_session_manager.h" | 10 #include "chrome/browser/chromeos/arc/arc_session_manager.h" |
| 11 #include "chrome/browser/chromeos/arc/downloads_watcher/arc_downloads_watcher_se
rvice.h" | 11 #include "chrome/browser/chromeos/arc/downloads_watcher/arc_downloads_watcher_se
rvice.h" |
| 12 #include "chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_servic
e.h" | 12 #include "chrome/browser/chromeos/arc/enterprise/arc_enterprise_reporting_servic
e.h" |
| 13 #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_service.h" | 13 #include "chrome/browser/chromeos/arc/fileapi/arc_content_file_system_service.h" |
| 14 #include "chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h" | 14 #include "chrome/browser/chromeos/arc/intent_helper/arc_settings_service.h" |
| 15 #include "chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h
" | 15 #include "chrome/browser/chromeos/arc/notification/arc_boot_error_notification.h
" |
| 16 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h" | 16 #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h" |
| 17 #include "chrome/browser/chromeos/arc/print/arc_print_service.h" | 17 #include "chrome/browser/chromeos/arc/print/arc_print_service.h" |
| 18 #include "chrome/browser/chromeos/arc/process/arc_process_service.h" | 18 #include "chrome/browser/chromeos/arc/process/arc_process_service.h" |
| 19 #include "chrome/browser/chromeos/arc/tts/arc_tts_service.h" | 19 #include "chrome/browser/chromeos/arc/tts/arc_tts_service.h" |
| 20 #include "chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.h" | 20 #include "chrome/browser/chromeos/arc/video/gpu_arc_video_service_host.h" |
| 21 #include "chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.h" | 21 #include "chrome/browser/chromeos/arc/wallpaper/arc_wallpaper_service.h" |
| 22 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" |
| 23 #include "components/arc/arc_service_manager.h" |
| 24 #include "components/arc/audio/arc_audio_bridge.h" |
| 25 #include "components/arc/bluetooth/arc_bluetooth_bridge.h" |
| 26 #include "components/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge.h" |
| 27 #include "components/arc/clipboard/arc_clipboard_bridge.h" |
| 28 #include "components/arc/crash_collector/arc_crash_collector_bridge.h" |
| 29 #include "components/arc/ime/arc_ime_service.h" |
| 22 #include "components/arc/intent_helper/arc_intent_helper_bridge.h" | 30 #include "components/arc/intent_helper/arc_intent_helper_bridge.h" |
| 31 #include "components/arc/kiosk/arc_kiosk_bridge.h" |
| 32 #include "components/arc/metrics/arc_metrics_service.h" |
| 33 #include "components/arc/net/arc_net_host_impl.h" |
| 34 #include "components/arc/obb_mounter/arc_obb_mounter_bridge.h" |
| 35 #include "components/arc/power/arc_power_bridge.h" |
| 36 #include "components/arc/storage_manager/arc_storage_manager.h" |
| 37 #include "components/arc/user_data/arc_user_data_service.h" |
| 38 #include "components/prefs/pref_member.h" |
| 23 #include "content/public/browser/browser_thread.h" | 39 #include "content/public/browser/browser_thread.h" |
| 40 #include "ui/arc/notification/arc_notification_manager.h" |
| 24 | 41 |
| 25 namespace arc { | 42 namespace arc { |
| 43 namespace { |
| 26 | 44 |
| 27 ArcServiceLauncher::ArcServiceLauncher() = default; | 45 // ChromeBrowserMainPartsChromeos owns. |
| 46 ArcServiceLauncher* g_arc_service_launcher = nullptr; |
| 28 | 47 |
| 29 ArcServiceLauncher::~ArcServiceLauncher() = default; | 48 } // namespace |
| 49 |
| 50 ArcServiceLauncher::ArcServiceLauncher() { |
| 51 DCHECK(g_arc_service_launcher == nullptr); |
| 52 g_arc_service_launcher = this; |
| 53 } |
| 54 |
| 55 ArcServiceLauncher::~ArcServiceLauncher() { |
| 56 DCHECK(!arc_service_manager_); |
| 57 DCHECK_EQ(g_arc_service_launcher, this); |
| 58 g_arc_service_launcher = nullptr; |
| 59 } |
| 60 |
| 61 // static |
| 62 ArcServiceLauncher* ArcServiceLauncher::Get() { |
| 63 DCHECK(g_arc_service_launcher); |
| 64 return g_arc_service_launcher; |
| 65 } |
| 30 | 66 |
| 31 void ArcServiceLauncher::Initialize() { | 67 void ArcServiceLauncher::Initialize() { |
| 32 // Create ARC service manager. | 68 // Create ARC service manager. |
| 33 arc_service_manager_ = base::MakeUnique<ArcServiceManager>( | 69 arc_service_manager_ = base::MakeUnique<ArcServiceManager>( |
| 34 content::BrowserThread::GetBlockingPool()); | 70 content::BrowserThread::GetBlockingPool()); |
| 35 | 71 |
| 72 ArcBridgeService* arc_bridge_service = |
| 73 arc_service_manager_->arc_bridge_service(); |
| 74 |
| 36 // Creates ArcSessionManager at first. | 75 // Creates ArcSessionManager at first. |
| 37 // TODO(hidehiko): ArcSessionManager should be rather than an ArcService but | 76 arc_session_manager_ = |
| 38 // its manager. Restructure it to reflect the concept. | 77 base::MakeUnique<ArcSessionManager>(arc_bridge_service); |
| 39 arc_service_manager_->AddService(base::MakeUnique<ArcSessionManager>( | |
| 40 arc_service_manager_->arc_bridge_service())); | |
| 41 | 78 |
| 42 arc_service_manager_->AddService(base::MakeUnique<ArcAuthService>( | 79 // List in lexicographical order. |
| 43 arc_service_manager_->arc_bridge_service())); | |
| 44 arc_service_manager_->AddService(base::MakeUnique<ArcBootErrorNotification>( | |
| 45 arc_service_manager_->arc_bridge_service())); | |
| 46 arc_service_manager_->AddService( | 80 arc_service_manager_->AddService( |
| 47 base::MakeUnique<ArcContentFileSystemService>( | 81 base::MakeUnique<ArcAudioBridge>(arc_bridge_service)); |
| 48 arc_service_manager_->arc_bridge_service())); | |
| 49 arc_service_manager_->AddService(base::MakeUnique<ArcDownloadsWatcherService>( | |
| 50 arc_service_manager_->arc_bridge_service())); | |
| 51 arc_service_manager_->AddService( | 82 arc_service_manager_->AddService( |
| 52 base::MakeUnique<ArcEnterpriseReportingService>( | 83 base::MakeUnique<ArcAuthService>(arc_bridge_service)); |
| 53 arc_service_manager_->arc_bridge_service())); | 84 arc_service_manager_->AddService( |
| 85 base::MakeUnique<ArcBluetoothBridge>(arc_bridge_service)); |
| 86 arc_service_manager_->AddService( |
| 87 base::MakeUnique<ArcBootErrorNotification>(arc_bridge_service)); |
| 88 arc_service_manager_->AddService( |
| 89 base::MakeUnique<ArcBootPhaseMonitorBridge>(arc_bridge_service)); |
| 90 arc_service_manager_->AddService( |
| 91 base::MakeUnique<ArcClipboardBridge>(arc_bridge_service)); |
| 92 arc_service_manager_->AddService( |
| 93 base::MakeUnique<ArcContentFileSystemService>(arc_bridge_service)); |
| 94 arc_service_manager_->AddService(base::MakeUnique<ArcCrashCollectorBridge>( |
| 95 arc_bridge_service, arc_service_manager_->blocking_task_runner())); |
| 96 arc_service_manager_->AddService( |
| 97 base::MakeUnique<ArcDownloadsWatcherService>(arc_bridge_service)); |
| 98 arc_service_manager_->AddService( |
| 99 base::MakeUnique<ArcEnterpriseReportingService>(arc_bridge_service)); |
| 54 arc_service_manager_->AddService(base::MakeUnique<ArcIntentHelperBridge>( | 100 arc_service_manager_->AddService(base::MakeUnique<ArcIntentHelperBridge>( |
| 101 arc_bridge_service, arc_service_manager_->icon_loader(), |
| 102 arc_service_manager_->activity_resolver())); |
| 103 arc_service_manager_->AddService( |
| 104 base::MakeUnique<ArcImeService>(arc_bridge_service)); |
| 105 arc_service_manager_->AddService( |
| 106 base::MakeUnique<ArcKioskBridge>(arc_bridge_service)); |
| 107 arc_service_manager_->AddService( |
| 108 base::MakeUnique<ArcMetricsService>(arc_bridge_service)); |
| 109 arc_service_manager_->AddService( |
| 110 base::MakeUnique<ArcNetHostImpl>(arc_bridge_service)); |
| 111 arc_service_manager_->AddService( |
| 112 base::MakeUnique<ArcObbMounterBridge>(arc_bridge_service)); |
| 113 arc_service_manager_->AddService( |
| 114 base::MakeUnique<ArcPolicyBridge>(arc_bridge_service)); |
| 115 arc_service_manager_->AddService( |
| 116 base::MakeUnique<ArcPowerBridge>(arc_bridge_service)); |
| 117 arc_service_manager_->AddService( |
| 118 base::MakeUnique<ArcPrintService>(arc_bridge_service)); |
| 119 arc_service_manager_->AddService( |
| 120 base::MakeUnique<ArcProcessService>(arc_bridge_service)); |
| 121 arc_service_manager_->AddService( |
| 122 base::MakeUnique<ArcSettingsService>(arc_bridge_service)); |
| 123 arc_service_manager_->AddService( |
| 124 base::MakeUnique<ArcStorageManager>(arc_bridge_service)); |
| 125 arc_service_manager_->AddService( |
| 126 base::MakeUnique<ArcTtsService>(arc_bridge_service)); |
| 127 arc_service_manager_->AddService( |
| 128 base::MakeUnique<ArcWallpaperService>(arc_bridge_service)); |
| 129 arc_service_manager_->AddService( |
| 130 base::MakeUnique<GpuArcVideoServiceHost>(arc_bridge_service)); |
| 131 } |
| 132 |
| 133 void ArcServiceLauncher::OnPrimaryUserProfilePrepared(Profile* profile) { |
| 134 DCHECK(arc_service_manager_); |
| 135 arc_service_manager_->AddService(base::MakeUnique<ArcNotificationManager>( |
| 55 arc_service_manager_->arc_bridge_service(), | 136 arc_service_manager_->arc_bridge_service(), |
| 56 arc_service_manager_->icon_loader(), | 137 multi_user_util::GetAccountIdFromProfile(profile))); |
| 57 arc_service_manager_->activity_resolver())); | 138 arc_session_manager_->OnPrimaryUserProfilePrepared(profile); |
| 58 arc_service_manager_->AddService(base::MakeUnique<ArcPolicyBridge>( | |
| 59 arc_service_manager_->arc_bridge_service())); | |
| 60 arc_service_manager_->AddService(base::MakeUnique<ArcPrintService>( | |
| 61 arc_service_manager_->arc_bridge_service())); | |
| 62 arc_service_manager_->AddService(base::MakeUnique<ArcProcessService>( | |
| 63 arc_service_manager_->arc_bridge_service())); | |
| 64 arc_service_manager_->AddService(base::MakeUnique<ArcSettingsService>( | |
| 65 arc_service_manager_->arc_bridge_service())); | |
| 66 arc_service_manager_->AddService(base::MakeUnique<ArcTtsService>( | |
| 67 arc_service_manager_->arc_bridge_service())); | |
| 68 arc_service_manager_->AddService(base::MakeUnique<ArcWallpaperService>( | |
| 69 arc_service_manager_->arc_bridge_service())); | |
| 70 arc_service_manager_->AddService(base::MakeUnique<GpuArcVideoServiceHost>( | |
| 71 arc_service_manager_->arc_bridge_service())); | |
| 72 } | 139 } |
| 73 | 140 |
| 74 void ArcServiceLauncher::Shutdown() { | 141 void ArcServiceLauncher::Shutdown() { |
| 75 DCHECK(arc_service_manager_); | 142 DCHECK(arc_service_manager_); |
| 143 // Destroy in the reverse order of the initialization. |
| 76 arc_service_manager_->Shutdown(); | 144 arc_service_manager_->Shutdown(); |
| 145 arc_session_manager_.reset(); |
| 146 arc_service_manager_.reset(); |
| 77 } | 147 } |
| 78 | 148 |
| 79 } // namespace arc | 149 } // namespace arc |
| OLD | NEW |