| 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 "shell/application_manager/application_manager.h" | 5 #include "shell/application_manager/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" |
| 11 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 12 #include "base/trace_event/trace_event.h" | 12 #include "base/trace_event/trace_event.h" |
| 13 #include "mojo/public/cpp/bindings/binding.h" | 13 #include "mojo/public/cpp/bindings/binding.h" |
| 14 #include "mojo/public/cpp/bindings/error_handler.h" | 14 #include "mojo/public/cpp/bindings/error_handler.h" |
| 15 #include "mojo/services/authenticating_url_loader/public/interfaces/authenticati
ng_url_loader_factory.mojom.h" |
| 15 #include "mojo/services/authentication/public/interfaces/authentication.mojom.h" | 16 #include "mojo/services/authentication/public/interfaces/authentication.mojom.h" |
| 16 #include "mojo/services/content_handler/public/interfaces/content_handler.mojom.
h" | 17 #include "mojo/services/content_handler/public/interfaces/content_handler.mojom.
h" |
| 17 #include "shell/application_manager/fetcher.h" | 18 #include "shell/application_manager/fetcher.h" |
| 18 #include "shell/application_manager/local_fetcher.h" | 19 #include "shell/application_manager/local_fetcher.h" |
| 19 #include "shell/application_manager/network_fetcher.h" | 20 #include "shell/application_manager/network_fetcher.h" |
| 20 #include "shell/application_manager/query_util.h" | 21 #include "shell/application_manager/query_util.h" |
| 21 #include "shell/application_manager/shell_impl.h" | 22 #include "shell/application_manager/shell_impl.h" |
| 22 | 23 |
| 23 using mojo::Application; | 24 using mojo::Application; |
| 24 using mojo::ApplicationPtr; | 25 using mojo::ApplicationPtr; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 bool ApplicationManager::TestAPI::HasFactoryForURL(const GURL& url) const { | 94 bool ApplicationManager::TestAPI::HasFactoryForURL(const GURL& url) const { |
| 94 return manager_->identity_to_shell_impl_.find(Identity(url)) != | 95 return manager_->identity_to_shell_impl_.find(Identity(url)) != |
| 95 manager_->identity_to_shell_impl_.end(); | 96 manager_->identity_to_shell_impl_.end(); |
| 96 } | 97 } |
| 97 | 98 |
| 98 ApplicationManager::ApplicationManager(const Options& options, | 99 ApplicationManager::ApplicationManager(const Options& options, |
| 99 Delegate* delegate) | 100 Delegate* delegate) |
| 100 : options_(options), | 101 : options_(options), |
| 101 delegate_(delegate), | 102 delegate_(delegate), |
| 102 blocking_pool_(nullptr), | 103 blocking_pool_(nullptr), |
| 103 initialized_authentication_service_(false), | 104 initialized_authentication_interceptor_(false), |
| 104 weak_ptr_factory_(this) { | 105 weak_ptr_factory_(this) { |
| 105 } | 106 } |
| 106 | 107 |
| 107 ApplicationManager::~ApplicationManager() { | 108 ApplicationManager::~ApplicationManager() { |
| 108 } | 109 } |
| 109 | 110 |
| 110 void ApplicationManager::TerminateShellConnections() { | 111 void ApplicationManager::TerminateShellConnections() { |
| 111 identity_to_shell_impl_.clear(); | 112 identity_to_shell_impl_.clear(); |
| 112 } | 113 } |
| 113 | 114 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 new LocalFetcher(resolved_url, GetBaseURLAndQuery(resolved_url, nullptr), | 182 new LocalFetcher(resolved_url, GetBaseURLAndQuery(resolved_url, nullptr), |
| 182 callback); | 183 callback); |
| 183 return; | 184 return; |
| 184 } | 185 } |
| 185 | 186 |
| 186 if (!url_response_disk_cache_) { | 187 if (!url_response_disk_cache_) { |
| 187 ConnectToService(GURL("mojo:url_response_disk_cache"), | 188 ConnectToService(GURL("mojo:url_response_disk_cache"), |
| 188 &url_response_disk_cache_); | 189 &url_response_disk_cache_); |
| 189 } | 190 } |
| 190 | 191 |
| 191 if (!url_loader_factory_) { | 192 if (!network_service_) { |
| 192 ConnectToService(GURL("mojo:authenticating_url_loader"), | 193 ConnectToService(GURL("mojo:network_service"), &network_service_); |
| 193 &url_loader_factory_); | |
| 194 } | 194 } |
| 195 | 195 |
| 196 // NOTE: Attempting to initialize the AuthenticationService while connecting | 196 // NOTE: Attempting to initialize the apps used authentication for while |
| 197 // to the AuthenticationService would result in a recursive loop, so it has | 197 // connecting to those apps would result in a recursive loop, so it has to be |
| 198 // to be explicitly avoided here. AuthenticatingURLLoaders work fine without | 198 // explicitly avoided here. What this means in practice is that these apps |
| 199 // the AuthenticationService as long as authentication is not needed, so what | 199 // cannot themselves require authentication to obtain. |
| 200 // this means in practice is that the AuthenticationService cannot itself | 200 if (!initialized_authentication_interceptor_ && |
| 201 // require authentication to obtain. | 201 !EndsWith(resolved_url.path(), "/authentication.mojo", true) && |
| 202 if (!initialized_authentication_service_ && | 202 !EndsWith(resolved_url.path(), "/authenticating_url_loader.mojo", true)) { |
| 203 !EndsWith(resolved_url.path(), "/authentication.mojo", true)) { | |
| 204 authentication::AuthenticationServicePtr authentication_service; | 203 authentication::AuthenticationServicePtr authentication_service; |
| 205 ConnectToService(GURL("mojo:authentication"), &authentication_service); | 204 ConnectToService(GURL("mojo:authentication"), &authentication_service); |
| 206 url_loader_factory_->SetAuthenticationService( | 205 mojo::AuthenticatingURLLoaderFactoryPtr url_loader_factory; |
| 207 authentication_service.Pass()); | 206 ConnectToService(GURL("mojo:authenticating_url_loader"), |
| 208 initialized_authentication_service_ = true; | 207 &url_loader_factory); |
| 208 mojo::URLLoaderInterceptorFactoryPtr interceptor_factory; |
| 209 url_loader_factory->CreateURLLoaderInterceptorFactory( |
| 210 GetProxy(&interceptor_factory), authentication_service.Pass()); |
| 211 network_service_->RegisterURLLoaderInterceptor(interceptor_factory.Pass()); |
| 212 initialized_authentication_interceptor_ = true; |
| 209 } | 213 } |
| 210 | 214 |
| 211 new NetworkFetcher(options_.disable_cache, options_.predictable_app_filenames, | 215 new NetworkFetcher(options_.disable_cache, options_.predictable_app_filenames, |
| 212 resolved_url, url_response_disk_cache_.get(), | 216 resolved_url, url_response_disk_cache_.get(), |
| 213 url_loader_factory_.get(), callback); | 217 network_service_.get(), callback); |
| 214 } | 218 } |
| 215 | 219 |
| 216 bool ApplicationManager::ConnectToRunningApplication( | 220 bool ApplicationManager::ConnectToRunningApplication( |
| 217 const GURL& resolved_url, | 221 const GURL& resolved_url, |
| 218 const GURL& requestor_url, | 222 const GURL& requestor_url, |
| 219 InterfaceRequest<ServiceProvider>* services, | 223 InterfaceRequest<ServiceProvider>* services, |
| 220 ServiceProviderPtr* exposed_services) { | 224 ServiceProviderPtr* exposed_services) { |
| 221 GURL application_url = GetBaseURLAndQuery(resolved_url, nullptr); | 225 GURL application_url = GetBaseURLAndQuery(resolved_url, nullptr); |
| 222 ShellImpl* shell_impl = GetShellImpl(application_url); | 226 ShellImpl* shell_impl = GetShellImpl(application_url); |
| 223 if (!shell_impl) | 227 if (!shell_impl) |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 return args_it->second; | 504 return args_it->second; |
| 501 return std::vector<std::string>(); | 505 return std::vector<std::string>(); |
| 502 } | 506 } |
| 503 | 507 |
| 504 void ApplicationManager::CleanupRunner(NativeRunner* runner) { | 508 void ApplicationManager::CleanupRunner(NativeRunner* runner) { |
| 505 native_runners_.erase( | 509 native_runners_.erase( |
| 506 std::find(native_runners_.begin(), native_runners_.end(), runner)); | 510 std::find(native_runners_.begin(), native_runners_.end(), runner)); |
| 507 } | 511 } |
| 508 | 512 |
| 509 } // namespace shell | 513 } // namespace shell |
| OLD | NEW |