Index: components/arc/arc_service_manager.cc |
diff --git a/components/arc/arc_service_manager.cc b/components/arc/arc_service_manager.cc |
index 0d982c4c6960b6b5dbad3431a51f05dc010b116d..714895756647fe61531e35d4b9b49eba58e8f893 100644 |
--- a/components/arc/arc_service_manager.cc |
+++ b/components/arc/arc_service_manager.cc |
@@ -7,6 +7,7 @@ |
#include "base/sequenced_task_runner.h" |
#include "base/thread_task_runner_handle.h" |
#include "components/arc/arc_bridge_bootstrap.h" |
+#include "components/arc/arc_bridge_service.h" |
#include "components/arc/arc_bridge_service_impl.h" |
#include "components/arc/audio/arc_audio_bridge.h" |
#include "components/arc/clipboard/arc_clipboard_bridge.h" |
@@ -26,14 +27,23 @@ namespace { |
// Weak pointer. This class is owned by ChromeBrowserMainPartsChromeos. |
ArcServiceManager* g_arc_service_manager = nullptr; |
+// This pointer is owned by ArcServiceManager. |
+ArcBridgeService* g_arc_bridge_service_for_testing = nullptr; |
+ |
} // namespace |
-ArcServiceManager::ArcServiceManager() |
- : arc_bridge_service_( |
- new ArcBridgeServiceImpl(ArcBridgeBootstrap::Create())) { |
+ArcServiceManager::ArcServiceManager() { |
DCHECK(!g_arc_service_manager); |
g_arc_service_manager = this; |
+ if (g_arc_bridge_service_for_testing) { |
+ arc_bridge_service_.reset(g_arc_bridge_service_for_testing); |
+ g_arc_bridge_service_for_testing = nullptr; |
+ } else { |
+ arc_bridge_service_.reset(new ArcBridgeServiceImpl( |
+ ArcBridgeBootstrap::Create())); |
+ } |
+ |
AddService(make_scoped_ptr(new ArcAudioBridge(arc_bridge_service()))); |
AddService(make_scoped_ptr(new ArcClipboardBridge(arc_bridge_service()))); |
AddService( |
@@ -50,6 +60,9 @@ ArcServiceManager::~ArcServiceManager() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(g_arc_service_manager == this); |
g_arc_service_manager = nullptr; |
+ if (g_arc_bridge_service_for_testing) { |
+ delete g_arc_bridge_service_for_testing; |
+ } |
} |
// static |
@@ -78,4 +91,13 @@ void ArcServiceManager::OnPrimaryUserProfilePrepared( |
new ArcNotificationManager(arc_bridge_service(), account_id))); |
} |
+//static |
+void ArcServiceManager::SetArcBridgeServiceForTesting( |
+ scoped_ptr<ArcBridgeService> arc_bridge_service) { |
+ if (g_arc_bridge_service_for_testing) { |
+ delete g_arc_bridge_service_for_testing; |
+ } |
+ g_arc_bridge_service_for_testing = arc_bridge_service.release(); |
+} |
+ |
} // namespace arc |