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

Side by Side Diff: content/public/common/service_registry.h

Issue 2105653002: Delete content::ServiceRegistry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ew
Patch Set: . Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_PUBLIC_COMMON_SERVICE_REGISTRY_H_
6 #define CONTENT_PUBLIC_COMMON_SERVICE_REGISTRY_H_
7
8 #include <string>
9 #include <utility>
10
11 #include "base/bind.h"
12 #include "base/callback.h"
13 #include "base/strings/string_piece.h"
14 #include "content/common/content_export.h"
15 #include "mojo/public/cpp/bindings/interface_ptr.h"
16 #include "mojo/public/cpp/bindings/interface_request.h"
17 #include "mojo/public/cpp/system/core.h"
18 #include "services/shell/public/interfaces/interface_provider.mojom.h"
19
20 namespace content {
21
22 // A ServiceRegistry exposes local services that have been added using
23 // AddService to a paired remote ServiceRegistry and provides local access to
24 // services exposed by the remote ServiceRegistry through
25 // ConnectToRemoteService.
26 class CONTENT_EXPORT ServiceRegistry {
27 public:
28 static ServiceRegistry* Create();
29 virtual ~ServiceRegistry() {}
30
31 // Binds this ServiceProvider implementation to a message pipe endpoint.
32 virtual void Bind(shell::mojom::InterfaceProviderRequest request) = 0;
33
34 // ServiceRegistry is created with a bound InterfaceProviderPtr for remote
35 // interfaces, this is the server end of that pipe which should be passed
36 // to the remote end.
37 virtual shell::mojom::InterfaceProviderRequest TakeRemoteRequest() = 0;
38
39 // Make the service created by |service_factory| available to the remote
40 // ServiceProvider. In response to each request for a service,
41 // |service_factory| will be run with an InterfaceRequest<Interface>
42 // representing that request. Adding a factory for an already registered
43 // service will override the factory. Existing connections to the service are
44 // unaffected.
45 //
46 // If a non-null |task_runner| is passed, the factory will be invoked on that
47 // TaskRunner.
48 template <typename Interface>
49 void AddService(const base::Callback<void(mojo::InterfaceRequest<Interface>)>&
50 service_factory,
51 const scoped_refptr<base::SingleThreadTaskRunner>&
52 task_runner = nullptr) {
53 AddService(Interface::Name_,
54 base::Bind(&ServiceRegistry::ForwardToServiceFactory<Interface>,
55 service_factory),
56 task_runner);
57 }
58 virtual void AddService(
59 const std::string& service_name,
60 const base::Callback<void(mojo::ScopedMessagePipeHandle)>&
61 service_factory,
62 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) = 0;
63
64 // Remove future access to the service implementing Interface. Existing
65 // connections to the service are unaffected.
66 template <typename Interface>
67 void RemoveService() {
68 RemoveService(Interface::Name_);
69 }
70 virtual void RemoveService(const std::string& service_name) = 0;
71
72 // Connect to an interface provided by the remote service provider.
73 template <typename Interface>
74 void ConnectToRemoteService(mojo::InterfaceRequest<Interface> ptr) {
75 ConnectToRemoteService(Interface::Name_, ptr.PassMessagePipe());
76 }
77 virtual void ConnectToRemoteService(base::StringPiece name,
78 mojo::ScopedMessagePipeHandle handle) = 0;
79
80 // Registers a local service factory to intercept ConnectToRemoteService
81 // requests instead of actually connecting to the remote registry. Used only
82 // for testing.
83 virtual void AddServiceOverrideForTesting(
84 const std::string& service_name,
85 const base::Callback<void(mojo::ScopedMessagePipeHandle)>&
86 service_factory) = 0;
87
88 // Removes all local service factories registered
89 // by AddServiceOverrideForTesting. Used only for testing.
90 virtual void ClearServiceOverridesForTesting() = 0;
91
92 private:
93 template <typename Interface>
94 static void ForwardToServiceFactory(
95 const base::Callback<void(mojo::InterfaceRequest<Interface>)>&
96 service_factory,
97 mojo::ScopedMessagePipeHandle handle) {
98 service_factory.Run(mojo::MakeRequest<Interface>(std::move(handle)));
99 }
100 };
101
102 } // namespace content
103
104 #endif // CONTENT_PUBLIC_COMMON_SERVICE_REGISTRY_H_
OLDNEW
« no previous file with comments | « content/public/browser/android/service_registry_android.h ('k') | content/renderer/mojo/interface_provider_js_wrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698