| 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 "mojo/runner/context.h" | 5 #include "mojo/runner/context.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 11 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 12 #include "base/lazy_instance.h" | 12 #include "base/lazy_instance.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/memory/scoped_vector.h" | 15 #include "base/memory/scoped_vector.h" |
| 16 #include "base/path_service.h" | 16 #include "base/path_service.h" |
| 17 #include "base/process/process_info.h" |
| 17 #include "base/run_loop.h" | 18 #include "base/run_loop.h" |
| 18 #include "base/strings/string_number_conversions.h" | 19 #include "base/strings/string_number_conversions.h" |
| 19 #include "base/strings/string_split.h" | 20 #include "base/strings/string_split.h" |
| 20 #include "base/strings/string_util.h" | 21 #include "base/strings/string_util.h" |
| 21 #include "base/trace_event/trace_event.h" | 22 #include "base/trace_event/trace_event.h" |
| 22 #include "build/build_config.h" | 23 #include "build/build_config.h" |
| 23 #include "components/devtools_service/public/cpp/switches.h" | 24 #include "components/devtools_service/public/cpp/switches.h" |
| 24 #include "components/devtools_service/public/interfaces/devtools_service.mojom.h
" | 25 #include "components/devtools_service/public/interfaces/devtools_service.mojom.h
" |
| 25 #include "mojo/application/public/cpp/application_connection.h" | 26 #include "mojo/application/public/cpp/application_connection.h" |
| 26 #include "mojo/application/public/cpp/application_delegate.h" | 27 #include "mojo/application/public/cpp/application_delegate.h" |
| 27 #include "mojo/application/public/cpp/application_impl.h" | 28 #include "mojo/application/public/cpp/application_impl.h" |
| 28 #include "mojo/common/trace_controller_impl.h" | 29 #include "mojo/common/trace_controller_impl.h" |
| 29 #include "mojo/common/tracing_impl.h" | 30 #include "mojo/common/tracing_impl.h" |
| 30 #include "mojo/edk/embedder/embedder.h" | 31 #include "mojo/edk/embedder/embedder.h" |
| 31 #include "mojo/edk/embedder/simple_platform_support.h" | 32 #include "mojo/edk/embedder/simple_platform_support.h" |
| 32 #include "mojo/runner/about_fetcher.h" | 33 #include "mojo/runner/about_fetcher.h" |
| 33 #include "mojo/runner/in_process_native_runner.h" | 34 #include "mojo/runner/in_process_native_runner.h" |
| 34 #include "mojo/runner/out_of_process_native_runner.h" | 35 #include "mojo/runner/out_of_process_native_runner.h" |
| 35 #include "mojo/runner/switches.h" | 36 #include "mojo/runner/switches.h" |
| 36 #include "mojo/services/tracing/tracing.mojom.h" | 37 #include "mojo/services/tracing/public/cpp/switches.h" |
| 38 #include "mojo/services/tracing/public/interfaces/tracing.mojom.h" |
| 37 #include "mojo/shell/application_loader.h" | 39 #include "mojo/shell/application_loader.h" |
| 38 #include "mojo/shell/application_manager.h" | 40 #include "mojo/shell/application_manager.h" |
| 39 #include "mojo/shell/switches.h" | 41 #include "mojo/shell/switches.h" |
| 40 #include "mojo/util/filename_util.h" | 42 #include "mojo/util/filename_util.h" |
| 41 #include "url/gurl.h" | 43 #include "url/gurl.h" |
| 42 | 44 |
| 43 namespace mojo { | 45 namespace mojo { |
| 44 namespace runner { | 46 namespace runner { |
| 45 namespace { | 47 namespace { |
| 46 | 48 |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 runner_factory.reset(new InProcessNativeRunnerFactory(this)); | 299 runner_factory.reset(new InProcessNativeRunnerFactory(this)); |
| 298 application_manager_.set_blocking_pool(task_runners_->blocking_pool()); | 300 application_manager_.set_blocking_pool(task_runners_->blocking_pool()); |
| 299 application_manager_.set_native_runner_factory(runner_factory.Pass()); | 301 application_manager_.set_native_runner_factory(runner_factory.Pass()); |
| 300 application_manager_.set_disable_cache( | 302 application_manager_.set_disable_cache( |
| 301 base::CommandLine::ForCurrentProcess()->HasSwitch( | 303 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 302 switches::kDisableCache)); | 304 switches::kDisableCache)); |
| 303 | 305 |
| 304 InitContentHandlers(&application_manager_, command_line); | 306 InitContentHandlers(&application_manager_, command_line); |
| 305 InitNativeOptions(&application_manager_, command_line); | 307 InitNativeOptions(&application_manager_, command_line); |
| 306 | 308 |
| 309 ServiceProviderPtr service_provider_ptr; |
| 307 ServiceProviderPtr tracing_service_provider_ptr; | 310 ServiceProviderPtr tracing_service_provider_ptr; |
| 308 new TracingServiceProvider(GetProxy(&tracing_service_provider_ptr)); | 311 new TracingServiceProvider(GetProxy(&tracing_service_provider_ptr)); |
| 309 mojo::URLRequestPtr request(mojo::URLRequest::New()); | 312 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 310 request->url = mojo::String::From("mojo:tracing"); | 313 request->url = mojo::String::From("mojo:tracing"); |
| 311 application_manager_.ConnectToApplication( | 314 application_manager_.ConnectToApplication( |
| 312 nullptr, request.Pass(), std::string(), GURL(""), nullptr, | 315 nullptr, request.Pass(), std::string(), GURL(), |
| 313 tracing_service_provider_ptr.Pass(), | 316 GetProxy(&service_provider_ptr), tracing_service_provider_ptr.Pass(), |
| 314 shell::GetPermissiveCapabilityFilter(), base::Closure()); | 317 shell::GetPermissiveCapabilityFilter(), base::Closure()); |
| 315 | 318 |
| 319 // CurrentProcessInfo::CreationTime() is missing on some platforms. |
| 320 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) |
| 321 // Record the shell process creation time for performance testing. |
| 322 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 323 tracing::kEnableStatsCollectionBindings)) { |
| 324 tracing::StartupPerformanceDataCollectorPtr collector; |
| 325 service_provider_ptr->ConnectToService( |
| 326 tracing::StartupPerformanceDataCollector::Name_, |
| 327 GetProxy(&collector).PassMessagePipe()); |
| 328 const base::Time creation_time = base::CurrentProcessInfo::CreationTime(); |
| 329 collector->SetShellProcessCreationTime(creation_time.ToInternalValue()); |
| 330 } |
| 331 #endif |
| 332 |
| 316 InitDevToolsServiceIfNeeded(&application_manager_, command_line); | 333 InitDevToolsServiceIfNeeded(&application_manager_, command_line); |
| 317 | 334 |
| 318 return true; | 335 return true; |
| 319 } | 336 } |
| 320 | 337 |
| 321 void Context::Shutdown() { | 338 void Context::Shutdown() { |
| 322 TRACE_EVENT0("mojo_shell", "Context::Shutdown"); | 339 TRACE_EVENT0("mojo_shell", "Context::Shutdown"); |
| 323 DCHECK_EQ(base::MessageLoop::current()->task_runner(), | 340 DCHECK_EQ(base::MessageLoop::current()->task_runner(), |
| 324 task_runners_->shell_runner()); | 341 task_runners_->shell_runner()); |
| 325 embedder::ShutdownIPCSupport(); | 342 embedder::ShutdownIPCSupport(); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 base::MessageLoop::current()->Quit(); | 408 base::MessageLoop::current()->Quit(); |
| 392 } else { | 409 } else { |
| 393 app_complete_callback_.Run(); | 410 app_complete_callback_.Run(); |
| 394 } | 411 } |
| 395 } | 412 } |
| 396 } | 413 } |
| 397 } | 414 } |
| 398 | 415 |
| 399 } // namespace runner | 416 } // namespace runner |
| 400 } // namespace mojo | 417 } // namespace mojo |
| OLD | NEW |