Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/context.h" | 5 #include "shell/context.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/lazy_instance.h" | 13 #include "base/lazy_instance.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/memory/scoped_vector.h" | 16 #include "base/memory/scoped_vector.h" |
| 17 #include "base/path_service.h" | 17 #include "base/path_service.h" |
| 18 #include "base/strings/string_split.h" | 18 #include "base/strings/string_split.h" |
| 19 #include "base/strings/string_util.h" | 19 #include "base/strings/string_util.h" |
| 20 #include "build/build_config.h" | 20 #include "build/build_config.h" |
| 21 #include "mojo/common/trace_controller_impl.h" | |
| 21 #include "mojo/common/tracing_impl.h" | 22 #include "mojo/common/tracing_impl.h" |
| 22 #include "mojo/edk/embedder/embedder.h" | 23 #include "mojo/edk/embedder/embedder.h" |
| 23 #include "mojo/edk/embedder/simple_platform_support.h" | 24 #include "mojo/edk/embedder/simple_platform_support.h" |
| 24 #include "mojo/public/cpp/application/application_connection.h" | 25 #include "mojo/public/cpp/application/application_connection.h" |
| 25 #include "mojo/public/cpp/application/application_delegate.h" | 26 #include "mojo/public/cpp/application/application_delegate.h" |
| 26 #include "mojo/public/cpp/application/application_impl.h" | 27 #include "mojo/public/cpp/application/application_impl.h" |
| 27 #include "services/tracing/tracing.mojom.h" | 28 #include "services/tracing/tracing.mojom.h" |
| 28 #include "shell/application_manager/application_loader.h" | 29 #include "shell/application_manager/application_loader.h" |
| 29 #include "shell/application_manager/application_manager.h" | 30 #include "shell/application_manager/application_manager.h" |
| 30 #include "shell/dynamic_application_loader.h" | 31 #include "shell/dynamic_application_loader.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 const GURL from(pair.first); | 140 const GURL from(pair.first); |
| 140 const GURL to = context->ResolveCommandLineURL(pair.second); | 141 const GURL to = context->ResolveCommandLineURL(pair.second); |
| 141 if (!from.is_valid() || !to.is_valid()) | 142 if (!from.is_valid() || !to.is_valid()) |
| 142 return false; | 143 return false; |
| 143 resolver->AddCustomMapping(from, to); | 144 resolver->AddCustomMapping(from, to); |
| 144 } | 145 } |
| 145 } | 146 } |
| 146 return true; | 147 return true; |
| 147 } | 148 } |
| 148 | 149 |
| 150 class TracingServiceProvider : public ServiceProvider { | |
| 151 public: | |
| 152 explicit TracingServiceProvider(InterfaceRequest<ServiceProvider> request) | |
| 153 : binding_(this, request.Pass()) {} | |
| 154 ~TracingServiceProvider() override {} | |
| 155 | |
| 156 void ConnectToService(const mojo::String& service_name, | |
| 157 ScopedMessagePipeHandle client_handle) override { | |
| 158 if (service_name == tracing::TraceController::Name_) { | |
| 159 new TraceControllerImpl( | |
| 160 MakeRequest<tracing::TraceController>(client_handle.Pass())); | |
| 161 } | |
| 162 } | |
| 163 | |
| 164 private: | |
| 165 StrongBinding<ServiceProvider> binding_; | |
| 166 }; | |
|
viettrungluu
2015/02/02 21:22:44
DISALLOW_COPY_AND_ASSIGN
| |
| 167 | |
| 149 } // namespace | 168 } // namespace |
| 150 | 169 |
| 151 Context::Context() : application_manager_(this) { | 170 Context::Context() : application_manager_(this) { |
| 152 DCHECK(!base::MessageLoop::current()); | 171 DCHECK(!base::MessageLoop::current()); |
| 153 | 172 |
| 154 // By default assume that the local apps reside alongside the shell. | 173 // By default assume that the local apps reside alongside the shell. |
| 155 // TODO(ncbray): really, this should be passed in rather than defaulting. | 174 // TODO(ncbray): really, this should be passed in rather than defaulting. |
| 156 // This default makes sense for desktop but not Android. | 175 // This default makes sense for desktop but not Android. |
| 157 base::FilePath shell_dir; | 176 base::FilePath shell_dir; |
| 158 PathService::Get(base::DIR_MODULE, &shell_dir); | 177 PathService::Get(base::DIR_MODULE, &shell_dir); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 222 runner_factory.reset(new OutOfProcessDynamicServiceRunnerFactory()); | 241 runner_factory.reset(new OutOfProcessDynamicServiceRunnerFactory()); |
| 223 else | 242 else |
| 224 runner_factory.reset(new InProcessDynamicServiceRunnerFactory()); | 243 runner_factory.reset(new InProcessDynamicServiceRunnerFactory()); |
| 225 | 244 |
| 226 DynamicApplicationLoader* dynamic_application_loader = | 245 DynamicApplicationLoader* dynamic_application_loader = |
| 227 new DynamicApplicationLoader(this, runner_factory.Pass()); | 246 new DynamicApplicationLoader(this, runner_factory.Pass()); |
| 228 InitContentHandlers(dynamic_application_loader, command_line); | 247 InitContentHandlers(dynamic_application_loader, command_line); |
| 229 application_manager_.set_default_loader( | 248 application_manager_.set_default_loader( |
| 230 scoped_ptr<ApplicationLoader>(dynamic_application_loader)); | 249 scoped_ptr<ApplicationLoader>(dynamic_application_loader)); |
| 231 | 250 |
| 232 tracing::TraceDataCollectorPtr trace_data_collector_ptr; | 251 ServiceProviderPtr tracing_service_provider_ptr; |
| 233 application_manager_.ConnectToService(GURL("mojo:tracing"), | 252 new TracingServiceProvider(GetProxy(&tracing_service_provider_ptr)); |
| 234 &trace_data_collector_ptr); | 253 application_manager_.ConnectToApplication( |
| 235 TracingImpl::Create(trace_data_collector_ptr.Pass()); | 254 GURL("mojo:tracing"), GURL(""), nullptr, |
| 255 tracing_service_provider_ptr.Pass()); | |
| 236 | 256 |
| 237 if (listener_) | 257 if (listener_) |
| 238 listener_->WaitForListening(); | 258 listener_->WaitForListening(); |
| 239 | 259 |
| 240 return true; | 260 return true; |
| 241 } | 261 } |
| 242 | 262 |
| 243 void Context::OnApplicationError(const GURL& url) { | 263 void Context::OnApplicationError(const GURL& url) { |
| 244 if (app_urls_.find(url) != app_urls_.end()) { | 264 if (app_urls_.find(url) != app_urls_.end()) { |
| 245 app_urls_.erase(url); | 265 app_urls_.erase(url); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 268 ScopedMessagePipeHandle Context::ConnectToServiceByName( | 288 ScopedMessagePipeHandle Context::ConnectToServiceByName( |
| 269 const GURL& application_url, | 289 const GURL& application_url, |
| 270 const std::string& service_name) { | 290 const std::string& service_name) { |
| 271 app_urls_.insert(application_url); | 291 app_urls_.insert(application_url); |
| 272 return application_manager_.ConnectToServiceByName(application_url, | 292 return application_manager_.ConnectToServiceByName(application_url, |
| 273 service_name).Pass(); | 293 service_name).Pass(); |
| 274 } | 294 } |
| 275 | 295 |
| 276 } // namespace shell | 296 } // namespace shell |
| 277 } // namespace mojo | 297 } // namespace mojo |
| OLD | NEW |