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 MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ | 5 #ifndef MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ |
6 #define MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ | 6 #define MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ |
7 | 7 |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 InterfaceRequest<Application> request, | 103 InterfaceRequest<Application> request, |
104 const Closure& termination_closure); | 104 const Closure& termination_closure); |
105 ~ApplicationImpl() override; | 105 ~ApplicationImpl() override; |
106 | 106 |
107 // The Mojo shell. This will return a valid pointer after Initialize() has | 107 // The Mojo shell. This will return a valid pointer after Initialize() has |
108 // been invoked. It will remain valid until UnbindConnections() is invoked or | 108 // been invoked. It will remain valid until UnbindConnections() is invoked or |
109 // the ApplicationImpl is destroyed. | 109 // the ApplicationImpl is destroyed. |
110 Shell* shell() const { return shell_.get(); } | 110 Shell* shell() const { return shell_.get(); } |
111 | 111 |
112 const std::string& url() const { return url_; } | 112 const std::string& url() const { return url_; } |
| 113 uint32_t id() const { return id_; } |
113 | 114 |
114 AppLifetimeHelper* app_lifetime_helper() { return &app_lifetime_helper_; } | 115 AppLifetimeHelper* app_lifetime_helper() { return &app_lifetime_helper_; } |
115 | 116 |
116 // Requests a new connection to an application. Returns a pointer to the | 117 // Requests a new connection to an application. Returns a pointer to the |
117 // connection if the connection is permitted by this application's delegate, | 118 // connection if the connection is permitted by this application's delegate, |
118 // or nullptr otherwise. Caller takes ownership. | 119 // or nullptr otherwise. Caller takes ownership. |
119 scoped_ptr<ApplicationConnection> ConnectToApplication( | 120 scoped_ptr<ApplicationConnection> ConnectToApplication( |
120 const std::string& url); | 121 const std::string& url); |
121 scoped_ptr<ApplicationConnection> ConnectToApplication(ConnectParams* params); | 122 scoped_ptr<ApplicationConnection> ConnectToApplication(ConnectParams* params); |
122 | 123 |
(...skipping 16 matching lines...) Expand all Loading... |
139 // Block the calling thread until the Initialize() method is called by the | 140 // Block the calling thread until the Initialize() method is called by the |
140 // shell. | 141 // shell. |
141 void WaitForInitialize(); | 142 void WaitForInitialize(); |
142 | 143 |
143 // Initiate shutdown of this application. This may involve a round trip to the | 144 // Initiate shutdown of this application. This may involve a round trip to the |
144 // Shell to ensure there are no inbound service requests. | 145 // Shell to ensure there are no inbound service requests. |
145 void Quit(); | 146 void Quit(); |
146 | 147 |
147 private: | 148 private: |
148 // Application implementation. | 149 // Application implementation. |
149 void Initialize(ShellPtr shell, const mojo::String& url) override; | 150 void Initialize(ShellPtr shell, |
| 151 const mojo::String& url, |
| 152 uint32_t id) override; |
150 void AcceptConnection(const String& requestor_url, | 153 void AcceptConnection(const String& requestor_url, |
| 154 uint32_t requestor_id, |
151 InterfaceRequest<ServiceProvider> services, | 155 InterfaceRequest<ServiceProvider> services, |
152 ServiceProviderPtr exposed_services, | 156 ServiceProviderPtr exposed_services, |
153 Array<String> allowed_interfaces, | 157 Array<String> allowed_interfaces, |
154 const String& url) override; | 158 const String& url) override; |
155 void OnQuitRequested(const Callback<void(bool)>& callback) override; | 159 void OnQuitRequested(const Callback<void(bool)>& callback) override; |
156 | 160 |
157 void OnConnectionError(); | 161 void OnConnectionError(); |
158 | 162 |
159 // Called from Quit() when there is no Shell connection, or asynchronously | 163 // Called from Quit() when there is no Shell connection, or asynchronously |
160 // from Quit() once the Shell has OK'ed shutdown. | 164 // from Quit() once the Shell has OK'ed shutdown. |
161 void QuitNow(); | 165 void QuitNow(); |
162 | 166 |
163 // Unbinds the Shell and Application connections. Can be used to re-bind the | 167 // Unbinds the Shell and Application connections. Can be used to re-bind the |
164 // handles to another implementation of ApplicationImpl, for instance when | 168 // handles to another implementation of ApplicationImpl, for instance when |
165 // running apptests. | 169 // running apptests. |
166 void UnbindConnections(InterfaceRequest<Application>* application_request, | 170 void UnbindConnections(InterfaceRequest<Application>* application_request, |
167 ShellPtr* shell); | 171 ShellPtr* shell); |
168 | 172 |
169 // We track the lifetime of incoming connection registries as it more | 173 // We track the lifetime of incoming connection registries as it more |
170 // convenient for the client. | 174 // convenient for the client. |
171 ScopedVector<ApplicationConnection> incoming_connections_; | 175 ScopedVector<ApplicationConnection> incoming_connections_; |
172 ApplicationDelegate* delegate_; | 176 ApplicationDelegate* delegate_; |
173 Binding<Application> binding_; | 177 Binding<Application> binding_; |
174 ShellPtr shell_; | 178 ShellPtr shell_; |
175 std::string url_; | 179 std::string url_; |
| 180 uint32_t id_; |
176 Closure termination_closure_; | 181 Closure termination_closure_; |
177 AppLifetimeHelper app_lifetime_helper_; | 182 AppLifetimeHelper app_lifetime_helper_; |
178 bool quit_requested_; | 183 bool quit_requested_; |
179 base::WeakPtrFactory<ApplicationImpl> weak_factory_; | 184 base::WeakPtrFactory<ApplicationImpl> weak_factory_; |
180 | 185 |
181 MOJO_DISALLOW_COPY_AND_ASSIGN(ApplicationImpl); | 186 MOJO_DISALLOW_COPY_AND_ASSIGN(ApplicationImpl); |
182 }; | 187 }; |
183 | 188 |
184 } // namespace mojo | 189 } // namespace mojo |
185 | 190 |
186 #endif // MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ | 191 #endif // MOJO_SHELL_PUBLIC_CPP_APPLICATION_IMPL_H_ |
OLD | NEW |