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

Unified Diff: chrome/browser/chromeos/dbus/cros_dbus_service.cc

Issue 9839075: chromeos: Separate CrosDBusService Initialize/Shutdown from DBusThreadManager (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased onto ToT Created 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/dbus/cros_dbus_service.cc
diff --git a/chrome/browser/chromeos/dbus/cros_dbus_service.cc b/chrome/browser/chromeos/dbus/cros_dbus_service.cc
index 9954ed4f86a220ad095c946b1cae2ed6881ee923..ae979a91865e1ddf883d63c49349a4bafee5f9e5 100644
--- a/chrome/browser/chromeos/dbus/cros_dbus_service.cc
+++ b/chrome/browser/chromeos/dbus/cros_dbus_service.cc
@@ -8,6 +8,7 @@
#include "base/chromeos/chromeos_version.h"
#include "base/stl_util.h"
#include "base/threading/platform_thread.h"
+#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
#include "chrome/browser/chromeos/dbus/proxy_resolution_service_provider.h"
#include "content/public/browser/browser_thread.h"
#include "dbus/bus.h"
@@ -17,6 +18,12 @@
namespace chromeos {
+namespace {
+
+CrosDBusService* g_cros_dbus_service = NULL;
+
+} // namespace
+
// The CrosDBusService implementation used in production, and unit tests.
class CrosDBusServiceImpl : public CrosDBusService {
public:
@@ -30,8 +37,8 @@ class CrosDBusServiceImpl : public CrosDBusService {
STLDeleteElements(&service_providers_);
}
- // CrosDBusService override.
- virtual void Start() {
+ // Starts the D-Bus service.
+ void Start() {
// Make sure we're running on the origin thread (i.e. the UI thread in
// production).
DCHECK(OnOriginThread());
@@ -91,30 +98,46 @@ class CrosDBusServiceStubImpl : public CrosDBusService {
virtual ~CrosDBusServiceStubImpl() {
}
-
- // CrosDBusService override.
- virtual void Start() {
- }
};
// static
-CrosDBusService* CrosDBusService::Create(dbus::Bus* bus) {
+void CrosDBusService::Initialize() {
+ if (g_cros_dbus_service) {
+ LOG(WARNING) << "CrosDBusService was already initialized";
+ return;
+ }
if (base::chromeos::IsRunningOnChromeOS()) {
+ dbus::Bus* bus = DBusThreadManager::Get()->GetSystemBus();
CrosDBusServiceImpl* service = new CrosDBusServiceImpl(bus);
service->RegisterServiceProvider(ProxyResolutionServiceProvider::Create());
- return service;
+ g_cros_dbus_service = service;
+ service->Start();
} else {
- return new CrosDBusServiceStubImpl;
+ g_cros_dbus_service = new CrosDBusServiceStubImpl;
}
+ VLOG(1) << "CrosDBusService initialized";
}
// static
-CrosDBusService* CrosDBusService::CreateForTesting(
+void CrosDBusService::InitializeForTesting(
dbus::Bus* bus,
ServiceProviderInterface* proxy_resolution_service) {
+ if (g_cros_dbus_service) {
+ LOG(WARNING) << "CrosDBusService was already initialized";
+ return;
+ }
CrosDBusServiceImpl* service = new CrosDBusServiceImpl(bus);
service->RegisterServiceProvider(proxy_resolution_service);
- return service;
+ service->Start();
+ g_cros_dbus_service = service;
+ VLOG(1) << "CrosDBusService initialized";
+}
+
+// static
+void CrosDBusService::Shutdown() {
+ delete g_cros_dbus_service;
+ g_cros_dbus_service = NULL;
+ VLOG(1) << "CrosDBusService Shutdown completed";
}
CrosDBusService::~CrosDBusService() {
« no previous file with comments | « chrome/browser/chromeos/dbus/cros_dbus_service.h ('k') | chrome/browser/chromeos/dbus/cros_dbus_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698