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 #include "mojo/shell/application_manager.h" | 5 #include "mojo/shell/application_manager.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 bool ApplicationManager::ConnectToRunningApplication( | 178 bool ApplicationManager::ConnectToRunningApplication( |
179 ApplicationInstance* originator, | 179 ApplicationInstance* originator, |
180 const GURL& resolved_url, | 180 const GURL& resolved_url, |
181 const std::string& qualifier, | 181 const std::string& qualifier, |
182 const GURL& requestor_url, | 182 const GURL& requestor_url, |
183 InterfaceRequest<ServiceProvider>* services, | 183 InterfaceRequest<ServiceProvider>* services, |
184 ServiceProviderPtr* exposed_services, | 184 ServiceProviderPtr* exposed_services, |
185 CapabilityFilterPtr* filter) { | 185 CapabilityFilterPtr* filter) { |
186 GURL application_url = GetBaseURLAndQuery(resolved_url, nullptr); | 186 GURL application_url = GetBaseURLAndQuery(resolved_url, nullptr); |
187 ApplicationInstance* instance = | 187 ApplicationInstance* instance = |
188 GetApplicationInstance(application_url, qualifier); | 188 GetApplicationInstance(Identity(application_url, qualifier)); |
189 if (!instance) | 189 if (!instance) |
190 return false; | 190 return false; |
191 | 191 |
192 instance->ConnectToClient(originator, resolved_url, requestor_url, | 192 instance->ConnectToClient(originator, resolved_url, requestor_url, |
193 services->Pass(), exposed_services->Pass(), | 193 services->Pass(), exposed_services->Pass(), |
194 filter->Pass()); | 194 filter->Pass()); |
195 return true; | 195 return true; |
196 } | 196 } |
197 | 197 |
198 bool ApplicationManager::ConnectToApplicationWithLoader( | 198 bool ApplicationManager::ConnectToApplicationWithLoader( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 InterfaceRequest<Application> application_request = GetProxy(&application); | 235 InterfaceRequest<Application> application_request = GetProxy(&application); |
236 ApplicationInstance::CapabilityFilter capability_filter; | 236 ApplicationInstance::CapabilityFilter capability_filter; |
237 std::set<std::string> interfaces; | 237 std::set<std::string> interfaces; |
238 interfaces.insert("*"); | 238 interfaces.insert("*"); |
239 capability_filter["*"] = interfaces; | 239 capability_filter["*"] = interfaces; |
240 if (!filter.is_null()) { | 240 if (!filter.is_null()) { |
241 capability_filter = | 241 capability_filter = |
242 filter->filter.To<ApplicationInstance::CapabilityFilter>(); | 242 filter->filter.To<ApplicationInstance::CapabilityFilter>(); |
243 } | 243 } |
244 ApplicationInstance* instance = new ApplicationInstance( | 244 ApplicationInstance* instance = new ApplicationInstance( |
245 application.Pass(), this, app_identity, capability_filter, | 245 application.Pass(), this, |
246 on_application_end); | 246 originator ? originator->identity() : Identity(GURL()), app_identity, |
| 247 capability_filter, on_application_end); |
247 identity_to_instance_[app_identity] = instance; | 248 identity_to_instance_[app_identity] = instance; |
248 instance->InitializeApplication(); | 249 instance->InitializeApplication(); |
249 instance->ConnectToClient(originator, app_url, requestor_url, services.Pass(), | 250 instance->ConnectToClient(originator, app_url, requestor_url, services.Pass(), |
250 exposed_services.Pass(), filter.Pass()); | 251 exposed_services.Pass(), filter.Pass()); |
251 return application_request.Pass(); | 252 return application_request.Pass(); |
252 } | 253 } |
253 | 254 |
254 ApplicationInstance* ApplicationManager::GetApplicationInstance( | 255 ApplicationInstance* ApplicationManager::GetApplicationInstance( |
255 const GURL& url, | 256 const Identity& identity) const { |
256 const std::string& qualifier) { | 257 const auto& instance_it = identity_to_instance_.find(identity); |
257 const auto& instance_it = | |
258 identity_to_instance_.find(Identity(url, qualifier)); | |
259 if (instance_it != identity_to_instance_.end()) | 258 if (instance_it != identity_to_instance_.end()) |
260 return instance_it->second; | 259 return instance_it->second; |
261 return nullptr; | 260 return nullptr; |
262 } | 261 } |
263 | 262 |
264 void ApplicationManager::HandleFetchCallback( | 263 void ApplicationManager::HandleFetchCallback( |
265 ApplicationInstance* originator, | 264 ApplicationInstance* originator, |
266 const GURL& requested_url, | 265 const GURL& requested_url, |
267 const std::string& qualifier, | 266 const std::string& qualifier, |
268 const GURL& requestor_url, | 267 const GURL& requestor_url, |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 request->url = mojo::String::From(application_url.spec()); | 532 request->url = mojo::String::From(application_url.spec()); |
534 ConnectToApplication(nullptr, request.Pass(), std::string(), GURL(), | 533 ConnectToApplication(nullptr, request.Pass(), std::string(), GURL(), |
535 GetProxy(&services), nullptr, nullptr, base::Closure()); | 534 GetProxy(&services), nullptr, nullptr, base::Closure()); |
536 MessagePipe pipe; | 535 MessagePipe pipe; |
537 services->ConnectToService(interface_name, pipe.handle1.Pass()); | 536 services->ConnectToService(interface_name, pipe.handle1.Pass()); |
538 return pipe.handle0.Pass(); | 537 return pipe.handle0.Pass(); |
539 } | 538 } |
540 | 539 |
541 } // namespace shell | 540 } // namespace shell |
542 } // namespace mojo | 541 } // namespace mojo |
OLD | NEW |