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

Side by Side Diff: mojo/public/cpp/application/exported_service_registry.h

Issue 433513005: Pass ServiceProvider thru ViewManagerService::Embed() allowing embedder & embeddee to expose servic… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
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 MOJO_PUBLIC_APPLICATION_EXPORTED_SERVICE_REGISTRY_H_
6 #define MOJO_PUBLIC_APPLICATION_EXPORTED_SERVICE_REGISTRY_H_
7
8 #include "mojo/public/cpp/application/lib/service_connector.h"
9 #include "mojo/public/interfaces/application/service_provider.mojom.h"
10
11 namespace mojo {
12 namespace internal {
13 class ServiceConnectorBase;
14 }
15
DaveMoore 2014/08/06 21:34:59 Nit: Please provide a comment. On quick inspection
16 class RemoteServiceProvider : public ServiceProvider {
darin (slow to review) 2014/08/06 22:13:29 nit: break this class out into its own .h and .cc
17 public:
18 explicit RemoteServiceProvider(ServiceProvider* service_provider)
darin (slow to review) 2014/08/06 22:13:29 technically, this is more of a ServiceProvider thu
19 : service_provider_(service_provider) {}
20 virtual ~RemoteServiceProvider() {}
21
22 void Clear() {
23 service_provider_ = NULL;
24 }
25
26 virtual void ConnectToService(
27 const String& service_name,
28 ScopedMessagePipeHandle client_handle) MOJO_OVERRIDE {
29 if (service_provider_)
30 service_provider_->ConnectToService(service_name, client_handle.Pass());
31 }
32
33 private:
34 ServiceProvider* service_provider_;
35
36 MOJO_DISALLOW_COPY_AND_ASSIGN(RemoteServiceProvider);
37 };
38
39 class ExportedServiceRegistry : public InterfaceImpl<ServiceProvider> {
darin (slow to review) 2014/08/06 22:13:29 nit: an Impl suffix might be nice here just to pre
40 public:
41 ExportedServiceRegistry();
42 virtual ~ExportedServiceRegistry();
43
44 template <typename Interface>
45 void AddService(InterfaceFactory<Interface>* factory) {
46 AddServiceConnector(
47 new internal::InterfaceFactoryConnector<Interface>(factory));
48 }
49
50 void set_remote(RemoteServiceProvider* remote) { remote_ = remote; }
darin (slow to review) 2014/08/06 22:13:29 hmm, it's not clear what the remote service provid
51
52 private:
53 typedef std::map<std::string, internal::ServiceConnectorBase*>
54 NameToServiceConnectorMap;
55
56 // Overridden from ServiceProvider:
57 virtual void ConnectToService(
58 const String& service_name,
59 ScopedMessagePipeHandle client_handle) MOJO_OVERRIDE;
60
61 // Overridden from InterfaceImpl:
62 virtual void OnConnectionError() MOJO_OVERRIDE {
63 if (remote_)
darin (slow to review) 2014/08/06 22:13:29 nit: if (remote_) { remote_->Clear(); remote_
64 remote_->Clear();
65 remote_ = NULL;
66 }
67
68 void AddServiceConnector(
69 internal::ServiceConnectorBase* service_connector);
70 void RemoveServiceConnector(
71 internal::ServiceConnectorBase* service_connector);
72
73 NameToServiceConnectorMap service_connectors_;
74
75 RemoteServiceProvider* remote_;
76
77 MOJO_DISALLOW_COPY_AND_ASSIGN(ExportedServiceRegistry);
78 };
79
80 } // namespace mojo
81
82 #endif // MOJO_PUBLIC_APPLICATION_EXPORTED_SERVICE_REGISTRY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698