Chromium Code Reviews| 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 ArcServiceLauncher* g_arc_service_launcher = nullptr; | 
| 
 
Luis Héctor Chávez
2016/11/28 22:17:40
Please mention who owns this weak pointer.
 
hidehiko
2016/11/29 14:14:11
Done.
 
 | |
| 28 | 46 | 
| 29 ArcServiceLauncher::~ArcServiceLauncher() = default; | 47 } // namespace | 
| 48 | |
| 49 ArcServiceLauncher::ArcServiceLauncher() { | |
| 50 DCHECK(g_arc_service_launcher == nullptr); | |
| 51 g_arc_service_launcher = this; | |
| 52 } | |
| 53 | |
| 54 ArcServiceLauncher::~ArcServiceLauncher() { | |
| 55 if (arc_service_manager_) | |
| 
 
Luis Héctor Chávez
2016/11/28 22:17:40
Shouldn't this be DCHECK(!arc_service_manager_); ?
 
hidehiko
2016/11/29 14:14:12
Oh, right. Done.
 
 | |
| 56 Shutdown(); | |
| 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 // TODO(hidehiko): ArcSessionManager should be rather than an ArcService but | 
| 
 
Luis Héctor Chávez
2016/11/28 22:17:40
You can now remove this TODO :)
 
hidehiko
2016/11/29 14:14:12
Yes! Removed.
 
 | |
| 38 // its manager. Restructure it to reflect the concept. | 77 // its manager. Restructure it to reflect the concept. | 
| 39 arc_service_manager_->AddService(base::MakeUnique<ArcSessionManager>( | 78 arc_session_manager_ = | 
| 40 arc_service_manager_->arc_bridge_service())); | 79 base::MakeUnique<ArcSessionManager>(arc_bridge_service); | 
| 41 | 80 | 
| 42 arc_service_manager_->AddService(base::MakeUnique<ArcAuthService>( | 81 // 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( | 82 arc_service_manager_->AddService( | 
| 47 base::MakeUnique<ArcContentFileSystemService>( | 83 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( | 84 arc_service_manager_->AddService( | 
| 52 base::MakeUnique<ArcEnterpriseReportingService>( | 85 base::MakeUnique<ArcAuthService>(arc_bridge_service)); | 
| 53 arc_service_manager_->arc_bridge_service())); | 86 arc_service_manager_->AddService( | 
| 87 base::MakeUnique<ArcBluetoothBridge>(arc_bridge_service)); | |
| 88 arc_service_manager_->AddService( | |
| 89 base::MakeUnique<ArcBootErrorNotification>(arc_bridge_service)); | |
| 90 arc_service_manager_->AddService( | |
| 91 base::MakeUnique<ArcBootPhaseMonitorBridge>(arc_bridge_service)); | |
| 92 arc_service_manager_->AddService( | |
| 93 base::MakeUnique<ArcClipboardBridge>(arc_bridge_service)); | |
| 94 arc_service_manager_->AddService( | |
| 95 base::MakeUnique<ArcContentFileSystemService>(arc_bridge_service)); | |
| 96 arc_service_manager_->AddService(base::MakeUnique<ArcCrashCollectorBridge>( | |
| 97 arc_bridge_service, arc_service_manager_->blocking_task_runner())); | |
| 98 arc_service_manager_->AddService( | |
| 99 base::MakeUnique<ArcDownloadsWatcherService>(arc_bridge_service)); | |
| 100 arc_service_manager_->AddService( | |
| 101 base::MakeUnique<ArcEnterpriseReportingService>(arc_bridge_service)); | |
| 54 arc_service_manager_->AddService(base::MakeUnique<ArcIntentHelperBridge>( | 102 arc_service_manager_->AddService(base::MakeUnique<ArcIntentHelperBridge>( | 
| 103 arc_bridge_service, arc_service_manager_->icon_loader(), | |
| 104 arc_service_manager_->activity_resolver())); | |
| 105 arc_service_manager_->AddService( | |
| 106 base::MakeUnique<ArcImeService>(arc_bridge_service)); | |
| 107 arc_service_manager_->AddService( | |
| 108 base::MakeUnique<ArcKioskBridge>(arc_bridge_service)); | |
| 109 arc_service_manager_->AddService( | |
| 110 base::MakeUnique<ArcMetricsService>(arc_bridge_service)); | |
| 111 arc_service_manager_->AddService( | |
| 112 base::MakeUnique<ArcNetHostImpl>(arc_bridge_service)); | |
| 113 arc_service_manager_->AddService( | |
| 114 base::MakeUnique<ArcObbMounterBridge>(arc_bridge_service)); | |
| 115 arc_service_manager_->AddService( | |
| 116 base::MakeUnique<ArcPolicyBridge>(arc_bridge_service)); | |
| 117 arc_service_manager_->AddService( | |
| 118 base::MakeUnique<ArcPowerBridge>(arc_bridge_service)); | |
| 119 arc_service_manager_->AddService( | |
| 120 base::MakeUnique<ArcPrintService>(arc_bridge_service)); | |
| 121 arc_service_manager_->AddService( | |
| 122 base::MakeUnique<ArcProcessService>(arc_bridge_service)); | |
| 123 arc_service_manager_->AddService( | |
| 124 base::MakeUnique<ArcSettingsService>(arc_bridge_service)); | |
| 125 arc_service_manager_->AddService( | |
| 126 base::MakeUnique<ArcStorageManager>(arc_bridge_service)); | |
| 127 arc_service_manager_->AddService( | |
| 128 base::MakeUnique<ArcTtsService>(arc_bridge_service)); | |
| 129 arc_service_manager_->AddService( | |
| 130 base::MakeUnique<ArcWallpaperService>(arc_bridge_service)); | |
| 131 arc_service_manager_->AddService( | |
| 132 base::MakeUnique<GpuArcVideoServiceHost>(arc_bridge_service)); | |
| 133 } | |
| 134 | |
| 135 void ArcServiceLauncher::OnPrimaryUserProfilePrepared(Profile* profile) { | |
| 136 DCHECK(arc_service_manager_); | |
| 137 arc_service_manager_->AddService(base::MakeUnique<ArcNotificationManager>( | |
| 55 arc_service_manager_->arc_bridge_service(), | 138 arc_service_manager_->arc_bridge_service(), | 
| 56 arc_service_manager_->icon_loader(), | 139 multi_user_util::GetAccountIdFromProfile(profile))); | 
| 57 arc_service_manager_->activity_resolver())); | 140 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 } | 141 } | 
| 73 | 142 | 
| 74 void ArcServiceLauncher::Shutdown() { | 143 void ArcServiceLauncher::Shutdown() { | 
| 75 DCHECK(arc_service_manager_); | 144 DCHECK(arc_service_manager_); | 
| 145 // Destory in the reverse order of the initialization. | |
| 
 
Luis Héctor Chávez
2016/11/28 22:17:40
nit: destroy.
 
hidehiko
2016/11/29 14:14:11
Done.
 
 | |
| 76 arc_service_manager_->Shutdown(); | 146 arc_service_manager_->Shutdown(); | 
| 147 arc_session_manager_.reset(); | |
| 148 arc_service_manager_.reset(); | |
| 77 } | 149 } | 
| 78 | 150 | 
| 79 } // namespace arc | 151 } // namespace arc | 
| OLD | NEW |