summaryrefslogtreecommitdiffstats
path: root/mojo/service_manager
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-21 16:44:38 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-21 16:44:38 +0000
commite0bd76c3edce49acc5a015b2dac9c3094a01abf5 (patch)
tree810766d0d10a499f9e7f8dfdbbcbe35176ed60e9 /mojo/service_manager
parent6c090076f885a3d1c92725a79fee856b1aa1c050 (diff)
downloadchromium_src-e0bd76c3edce49acc5a015b2dac9c3094a01abf5.zip
chromium_src-e0bd76c3edce49acc5a015b2dac9c3094a01abf5.tar.gz
chromium_src-e0bd76c3edce49acc5a015b2dac9c3094a01abf5.tar.bz2
Add creation of ServiceManager to Content
BUG=None TEST=Mojo.Init R=jam@chromium.org, sky@chromium.org, jam Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=258438 Review URL: https://codereview.chromium.org/187183002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258607 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/service_manager')
-rw-r--r--mojo/service_manager/service_loader.h3
-rw-r--r--mojo/service_manager/service_manager.cc15
-rw-r--r--mojo/service_manager/service_manager.h14
-rw-r--r--mojo/service_manager/service_manager_export.h32
4 files changed, 60 insertions, 4 deletions
diff --git a/mojo/service_manager/service_loader.h b/mojo/service_manager/service_loader.h
index 7da0540..76aaac7 100644
--- a/mojo/service_manager/service_loader.h
+++ b/mojo/service_manager/service_loader.h
@@ -6,6 +6,7 @@
#define MOJO_SERVICE_MANAGER_SERVICE_LOADER_H_
#include "mojo/public/shell/shell.mojom.h"
+#include "mojo/service_manager/service_manager_export.h"
#include "url/gurl.h"
namespace mojo {
@@ -14,7 +15,7 @@ class ServiceManager;
// Interface to allowing default loading behavior to be overridden for a
// specific url.
-class ServiceLoader {
+class MOJO_SERVICE_MANAGER_EXPORT ServiceLoader {
public:
virtual ~ServiceLoader() {};
virtual void LoadService(ServiceManager* manager,
diff --git a/mojo/service_manager/service_manager.cc b/mojo/service_manager/service_manager.cc
index b5843cf4..05b570b 100644
--- a/mojo/service_manager/service_manager.cc
+++ b/mojo/service_manager/service_manager.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <stdio.h>
+
#include "mojo/service_manager/service_manager.h"
#include "base/lazy_instance.h"
@@ -14,6 +16,11 @@
namespace mojo {
+namespace {
+// Used by TestAPI.
+bool has_created_instance = false;
+}
+
class ServiceManager::ServiceFactory : public Shell, public ErrorHandler {
public:
ServiceFactory(ServiceManager* manager, const GURL& url)
@@ -52,6 +59,11 @@ class ServiceManager::ServiceFactory : public Shell, public ErrorHandler {
DISALLOW_COPY_AND_ASSIGN(ServiceFactory);
};
+// static
+bool ServiceManager::TestAPI::HasCreatedInstance() {
+ return has_created_instance;
+}
+
bool ServiceManager::TestAPI::HasFactoryForURL(const GURL& url) const {
return manager_->url_to_service_factory_.find(url) !=
manager_->url_to_service_factory_.end();
@@ -69,9 +81,10 @@ ServiceManager::~ServiceManager() {
}
// static
-ServiceManager* GetInstance() {
+ServiceManager* ServiceManager::GetInstance() {
static base::LazyInstance<ServiceManager> instance =
LAZY_INSTANCE_INITIALIZER;
+ has_created_instance = true;
return &instance.Get();
}
diff --git a/mojo/service_manager/service_manager.h b/mojo/service_manager/service_manager.h
index c05e177..b91e73c 100644
--- a/mojo/service_manager/service_manager.h
+++ b/mojo/service_manager/service_manager.h
@@ -9,20 +9,30 @@
#include "base/basictypes.h"
#include "base/callback.h"
+#include "base/gtest_prod_util.h"
#include "mojo/public/shell/shell.mojom.h"
+#include "mojo/service_manager/service_manager_export.h"
#include "url/gurl.h"
+namespace content {
+ class MojoTest;
+}
+
namespace mojo {
class ServiceLoader;
-class ServiceManager {
+class MOJO_SERVICE_MANAGER_EXPORT ServiceManager {
public:
// API for testing.
- class TestAPI {
+ class MOJO_SERVICE_MANAGER_EXPORT TestAPI {
private:
friend class ServiceManagerTest;
+ friend class content::MojoTest;
+
explicit TestAPI(ServiceManager* manager) : manager_(manager) {}
+ // Returns true if the shared instance has been created.
+ static bool HasCreatedInstance();
// Returns true if there is a ServiceFactory for this URL.
bool HasFactoryForURL(const GURL& url) const;
diff --git a/mojo/service_manager/service_manager_export.h b/mojo/service_manager/service_manager_export.h
new file mode 100644
index 0000000..251aad9
--- /dev/null
+++ b/mojo/service_manager/service_manager_export.h
@@ -0,0 +1,32 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MOJO_SERVICE_MANAGER_SERVICE_MANAGER_EXPORT_H_
+#define MOJO_SERVICE_MANAGER_SERVICE_MANAGER_EXPORT_H_
+
+#if defined(COMPONENT_BUILD)
+
+#if defined(WIN32)
+
+#if defined(MOJO_SERVICE_MANAGER_IMPLEMENTATION)
+#define MOJO_SERVICE_MANAGER_EXPORT __declspec(dllexport)
+#else
+#define MOJO_SERVICE_MANAGER_EXPORT __declspec(dllimport)
+#endif
+
+#else // !defined(WIN32)
+
+#if defined(MOJO_SERVICE_MANAGER_IMPLEMENTATION)
+#define MOJO_SERVICE_MANAGER_EXPORT __attribute__((visibility("default")))
+#else
+#define MOJO_SERVICE_MANAGER_EXPORT
+#endif
+
+#endif // defined(WIN32)
+
+#else // !defined(COMPONENT_BUILD)
+#define MOJO_SERVICE_MANAGER_EXPORT
+#endif
+
+#endif // MOJO_SERVICE_MANAGER_SERVICE_MANAGER_EXPORT_H_