OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ | 5 #ifndef SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ |
6 #define SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ | 6 #define SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <set> | 10 #include <set> |
(...skipping 15 matching lines...) Expand all Loading... |
26 // other. | 26 // other. |
27 class ConnectionImpl : public Connection { | 27 class ConnectionImpl : public Connection { |
28 public: | 28 public: |
29 ConnectionImpl(); | 29 ConnectionImpl(); |
30 // |allowed_interfaces| are the set of interfaces that the shell has allowed | 30 // |allowed_interfaces| are the set of interfaces that the shell has allowed |
31 // an application to expose to another application. If this set contains only | 31 // an application to expose to another application. If this set contains only |
32 // the string value "*" all interfaces may be exposed. | 32 // the string value "*" all interfaces may be exposed. |
33 ConnectionImpl(const std::string& connection_name, | 33 ConnectionImpl(const std::string& connection_name, |
34 const Identity& remote, | 34 const Identity& remote, |
35 uint32_t remote_id, | 35 uint32_t remote_id, |
36 shell::mojom::InterfaceProviderPtr remote_interfaces, | |
37 shell::mojom::InterfaceProviderRequest local_interfaces, | |
38 const CapabilityRequest& capability_request, | 36 const CapabilityRequest& capability_request, |
39 State initial_state); | 37 State initial_state); |
40 ~ConnectionImpl() override; | 38 ~ConnectionImpl() override; |
41 | 39 |
| 40 // Sets the local registry & remote provider, transferring ownership to the |
| 41 // ConnectionImpl. |
| 42 void SetExposedInterfaces( |
| 43 std::unique_ptr<InterfaceRegistry> exposed_interfaces); |
| 44 void SetRemoteInterfaces( |
| 45 std::unique_ptr<InterfaceProvider> remote_interfaces); |
| 46 |
| 47 // Sets the local registry & remote provider, without transferring ownership. |
| 48 void set_exposed_interfaces(InterfaceRegistry* exposed_interfaces) { |
| 49 exposed_interfaces_ = exposed_interfaces; |
| 50 } |
| 51 void set_remote_interfaces(InterfaceProvider* remote_interfaces) { |
| 52 remote_interfaces_ = remote_interfaces; |
| 53 } |
| 54 |
42 shell::mojom::Connector::ConnectCallback GetConnectCallback(); | 55 shell::mojom::Connector::ConnectCallback GetConnectCallback(); |
43 | 56 |
44 private: | 57 private: |
45 // Connection: | 58 // Connection: |
46 bool HasCapabilityClass(const std::string& class_name) const override; | 59 bool HasCapabilityClass(const std::string& class_name) const override; |
47 const std::string& GetConnectionName() override; | 60 const std::string& GetConnectionName() override; |
48 const Identity& GetRemoteIdentity() const override; | 61 const Identity& GetRemoteIdentity() const override; |
49 void SetConnectionLostClosure(const base::Closure& handler) override; | 62 void SetConnectionLostClosure(const base::Closure& handler) override; |
50 shell::mojom::ConnectResult GetResult() const override; | 63 shell::mojom::ConnectResult GetResult() const override; |
51 bool IsPending() const override; | 64 bool IsPending() const override; |
(...skipping 10 matching lines...) Expand all Loading... |
62 uint32_t target_application_id); | 75 uint32_t target_application_id); |
63 | 76 |
64 const std::string connection_name_; | 77 const std::string connection_name_; |
65 Identity remote_; | 78 Identity remote_; |
66 uint32_t remote_id_ = shell::mojom::kInvalidInstanceID; | 79 uint32_t remote_id_ = shell::mojom::kInvalidInstanceID; |
67 | 80 |
68 State state_; | 81 State state_; |
69 shell::mojom::ConnectResult result_ = shell::mojom::ConnectResult::SUCCEEDED; | 82 shell::mojom::ConnectResult result_ = shell::mojom::ConnectResult::SUCCEEDED; |
70 std::vector<base::Closure> connection_completed_callbacks_; | 83 std::vector<base::Closure> connection_completed_callbacks_; |
71 | 84 |
72 InterfaceRegistry interfaces_; | 85 InterfaceRegistry* exposed_interfaces_ = nullptr; |
73 InterfaceProvider remote_interfaces_; | 86 InterfaceProvider* remote_interfaces_ = nullptr; |
| 87 |
| 88 std::unique_ptr<InterfaceRegistry> exposed_interfaces_owner_; |
| 89 std::unique_ptr<InterfaceProvider> remote_interfaces_owner_; |
74 | 90 |
75 const CapabilityRequest capability_request_; | 91 const CapabilityRequest capability_request_; |
76 const bool allow_all_interfaces_; | 92 const bool allow_all_interfaces_; |
77 | 93 |
78 base::WeakPtrFactory<ConnectionImpl> weak_factory_; | 94 base::WeakPtrFactory<ConnectionImpl> weak_factory_; |
79 | 95 |
80 DISALLOW_COPY_AND_ASSIGN(ConnectionImpl); | 96 DISALLOW_COPY_AND_ASSIGN(ConnectionImpl); |
81 }; | 97 }; |
82 | 98 |
83 } // namespace internal | 99 } // namespace internal |
84 } // namespace shell | 100 } // namespace shell |
85 | 101 |
86 #endif // SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ | 102 #endif // SERVICES_SHELL_PUBLIC_CPP_LIB_CONNECTION_IMPL_H_ |
OLD | NEW |