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 <utility> |
7 #include <vector> | 8 #include <vector> |
8 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/command_line.h" | 11 #include "base/command_line.h" |
11 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
12 #include "base/i18n/icu_util.h" | 13 #include "base/i18n/icu_util.h" |
13 #include "base/lazy_instance.h" | 14 #include "base/lazy_instance.h" |
14 #include "base/macros.h" | 15 #include "base/macros.h" |
15 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
16 #include "base/path_service.h" | 17 #include "base/path_service.h" |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 135 |
135 ServiceProviderPtr devtools_service_provider; | 136 ServiceProviderPtr devtools_service_provider; |
136 scoped_ptr<shell::ConnectToApplicationParams> params( | 137 scoped_ptr<shell::ConnectToApplicationParams> params( |
137 new shell::ConnectToApplicationParams); | 138 new shell::ConnectToApplicationParams); |
138 params->set_source(shell::Identity(GURL("mojo:shell"), std::string(), | 139 params->set_source(shell::Identity(GURL("mojo:shell"), std::string(), |
139 shell::GetPermissiveCapabilityFilter())); | 140 shell::GetPermissiveCapabilityFilter())); |
140 params->SetTarget(shell::Identity(GURL("mojo:devtools_service"), | 141 params->SetTarget(shell::Identity(GURL("mojo:devtools_service"), |
141 std::string(), | 142 std::string(), |
142 shell::GetPermissiveCapabilityFilter())); | 143 shell::GetPermissiveCapabilityFilter())); |
143 params->set_services(GetProxy(&devtools_service_provider)); | 144 params->set_services(GetProxy(&devtools_service_provider)); |
144 manager->ConnectToApplication(params.Pass()); | 145 manager->ConnectToApplication(std::move(params)); |
145 | 146 |
146 devtools_service::DevToolsCoordinatorPtr devtools_coordinator; | 147 devtools_service::DevToolsCoordinatorPtr devtools_coordinator; |
147 devtools_service_provider->ConnectToService( | 148 devtools_service_provider->ConnectToService( |
148 devtools_service::DevToolsCoordinator::Name_, | 149 devtools_service::DevToolsCoordinator::Name_, |
149 GetProxy(&devtools_coordinator).PassMessagePipe()); | 150 GetProxy(&devtools_coordinator).PassMessagePipe()); |
150 devtools_coordinator->Initialize(static_cast<uint16_t>(port)); | 151 devtools_coordinator->Initialize(static_cast<uint16_t>(port)); |
151 } | 152 } |
152 | 153 |
153 class TracingServiceProvider : public ServiceProvider { | 154 class TracingServiceProvider : public ServiceProvider { |
154 public: | 155 public: |
155 TracingServiceProvider(Tracer* tracer, | 156 TracingServiceProvider(Tracer* tracer, |
156 InterfaceRequest<ServiceProvider> request) | 157 InterfaceRequest<ServiceProvider> request) |
157 : tracer_(tracer), binding_(this, request.Pass()) {} | 158 : tracer_(tracer), binding_(this, std::move(request)) {} |
158 ~TracingServiceProvider() override {} | 159 ~TracingServiceProvider() override {} |
159 | 160 |
160 void ConnectToService(const mojo::String& service_name, | 161 void ConnectToService(const mojo::String& service_name, |
161 ScopedMessagePipeHandle client_handle) override { | 162 ScopedMessagePipeHandle client_handle) override { |
162 if (tracer_ && service_name == tracing::TraceProvider::Name_) { | 163 if (tracer_ && service_name == tracing::TraceProvider::Name_) { |
163 tracer_->ConnectToProvider( | 164 tracer_->ConnectToProvider( |
164 MakeRequest<tracing::TraceProvider>(client_handle.Pass())); | 165 MakeRequest<tracing::TraceProvider>(std::move(client_handle))); |
165 } | 166 } |
166 } | 167 } |
167 | 168 |
168 private: | 169 private: |
169 Tracer* tracer_; | 170 Tracer* tracer_; |
170 StrongBinding<ServiceProvider> binding_; | 171 StrongBinding<ServiceProvider> binding_; |
171 | 172 |
172 DISALLOW_COPY_AND_ASSIGN(TracingServiceProvider); | 173 DISALLOW_COPY_AND_ASSIGN(TracingServiceProvider); |
173 }; | 174 }; |
174 | 175 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 } else { | 227 } else { |
227 #if defined(COMPONENT_BUILD) | 228 #if defined(COMPONENT_BUILD) |
228 LOG(ERROR) << "Running Mojo in single process component build, which isn't " | 229 LOG(ERROR) << "Running Mojo in single process component build, which isn't " |
229 << "supported because statics in apps interact. Use static build" | 230 << "supported because statics in apps interact. Use static build" |
230 << " or don't pass --single-process."; | 231 << " or don't pass --single-process."; |
231 #endif | 232 #endif |
232 runner_factory.reset( | 233 runner_factory.reset( |
233 new InProcessNativeRunnerFactory(task_runners_->blocking_pool())); | 234 new InProcessNativeRunnerFactory(task_runners_->blocking_pool())); |
234 } | 235 } |
235 application_manager_.reset(new shell::ApplicationManager( | 236 application_manager_.reset(new shell::ApplicationManager( |
236 make_scoped_ptr(package_manager_), runner_factory.Pass(), | 237 make_scoped_ptr(package_manager_), std::move(runner_factory), |
237 task_runners_->blocking_pool())); | 238 task_runners_->blocking_pool())); |
238 | 239 |
239 ServiceProviderPtr tracing_services; | 240 ServiceProviderPtr tracing_services; |
240 ServiceProviderPtr tracing_exposed_services; | 241 ServiceProviderPtr tracing_exposed_services; |
241 new TracingServiceProvider(&tracer_, GetProxy(&tracing_exposed_services)); | 242 new TracingServiceProvider(&tracer_, GetProxy(&tracing_exposed_services)); |
242 | 243 |
243 scoped_ptr<shell::ConnectToApplicationParams> params( | 244 scoped_ptr<shell::ConnectToApplicationParams> params( |
244 new shell::ConnectToApplicationParams); | 245 new shell::ConnectToApplicationParams); |
245 params->set_source(shell::Identity(GURL("mojo:shell"), std::string(), | 246 params->set_source(shell::Identity(GURL("mojo:shell"), std::string(), |
246 shell::GetPermissiveCapabilityFilter())); | 247 shell::GetPermissiveCapabilityFilter())); |
247 params->SetTarget(shell::Identity(GURL("mojo:tracing"), std::string(), | 248 params->SetTarget(shell::Identity(GURL("mojo:tracing"), std::string(), |
248 shell::GetPermissiveCapabilityFilter())); | 249 shell::GetPermissiveCapabilityFilter())); |
249 params->set_services(GetProxy(&tracing_services)); | 250 params->set_services(GetProxy(&tracing_services)); |
250 params->set_exposed_services(tracing_exposed_services.Pass()); | 251 params->set_exposed_services(std::move(tracing_exposed_services)); |
251 application_manager_->ConnectToApplication(params.Pass()); | 252 application_manager_->ConnectToApplication(std::move(params)); |
252 | 253 |
253 if (command_line.HasSwitch(tracing::kTraceStartup)) { | 254 if (command_line.HasSwitch(tracing::kTraceStartup)) { |
254 tracing::TraceCollectorPtr coordinator; | 255 tracing::TraceCollectorPtr coordinator; |
255 auto coordinator_request = GetProxy(&coordinator); | 256 auto coordinator_request = GetProxy(&coordinator); |
256 tracing_services->ConnectToService(tracing::TraceCollector::Name_, | 257 tracing_services->ConnectToService(tracing::TraceCollector::Name_, |
257 coordinator_request.PassMessagePipe()); | 258 coordinator_request.PassMessagePipe()); |
258 tracer_.StartCollectingFromTracingService(coordinator.Pass()); | 259 tracer_.StartCollectingFromTracingService(std::move(coordinator)); |
259 } | 260 } |
260 | 261 |
261 // Record the shell startup metrics used for performance testing. | 262 // Record the shell startup metrics used for performance testing. |
262 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 263 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
263 tracing::kEnableStatsCollectionBindings)) { | 264 tracing::kEnableStatsCollectionBindings)) { |
264 tracing::StartupPerformanceDataCollectorPtr collector; | 265 tracing::StartupPerformanceDataCollectorPtr collector; |
265 tracing_services->ConnectToService( | 266 tracing_services->ConnectToService( |
266 tracing::StartupPerformanceDataCollector::Name_, | 267 tracing::StartupPerformanceDataCollector::Name_, |
267 GetProxy(&collector).PassMessagePipe()); | 268 GetProxy(&collector).PassMessagePipe()); |
268 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) | 269 #if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 ServiceProviderPtr services; | 306 ServiceProviderPtr services; |
306 ServiceProviderPtr exposed_services; | 307 ServiceProviderPtr exposed_services; |
307 | 308 |
308 app_urls_.insert(url); | 309 app_urls_.insert(url); |
309 | 310 |
310 scoped_ptr<shell::ConnectToApplicationParams> params( | 311 scoped_ptr<shell::ConnectToApplicationParams> params( |
311 new shell::ConnectToApplicationParams); | 312 new shell::ConnectToApplicationParams); |
312 params->SetTarget(shell::Identity(url, std::string(), | 313 params->SetTarget(shell::Identity(url, std::string(), |
313 shell::GetPermissiveCapabilityFilter())); | 314 shell::GetPermissiveCapabilityFilter())); |
314 params->set_services(GetProxy(&services)); | 315 params->set_services(GetProxy(&services)); |
315 params->set_exposed_services(exposed_services.Pass()); | 316 params->set_exposed_services(std::move(exposed_services)); |
316 params->set_on_application_end( | 317 params->set_on_application_end( |
317 base::Bind(&Context::OnApplicationEnd, base::Unretained(this), url)); | 318 base::Bind(&Context::OnApplicationEnd, base::Unretained(this), url)); |
318 application_manager_->ConnectToApplication(params.Pass()); | 319 application_manager_->ConnectToApplication(std::move(params)); |
319 } | 320 } |
320 | 321 |
321 void Context::RunCommandLineApplication(const base::Closure& callback) { | 322 void Context::RunCommandLineApplication(const base::Closure& callback) { |
322 DCHECK(app_urls_.empty()); | 323 DCHECK(app_urls_.empty()); |
323 DCHECK(app_complete_callback_.is_null()); | 324 DCHECK(app_complete_callback_.is_null()); |
324 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 325 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
325 base::CommandLine::StringVector args = command_line->GetArgs(); | 326 base::CommandLine::StringVector args = command_line->GetArgs(); |
326 for (size_t i = 0; i < args.size(); ++i) { | 327 for (size_t i = 0; i < args.size(); ++i) { |
327 GURL possible_app(args[i]); | 328 GURL possible_app(args[i]); |
328 if (possible_app.SchemeIs("mojo")) { | 329 if (possible_app.SchemeIs("mojo")) { |
(...skipping 14 matching lines...) Expand all Loading... |
343 base::MessageLoop::current()->QuitWhenIdle(); | 344 base::MessageLoop::current()->QuitWhenIdle(); |
344 } else { | 345 } else { |
345 app_complete_callback_.Run(); | 346 app_complete_callback_.Run(); |
346 } | 347 } |
347 } | 348 } |
348 } | 349 } |
349 } | 350 } |
350 | 351 |
351 } // namespace runner | 352 } // namespace runner |
352 } // namespace mojo | 353 } // namespace mojo |
OLD | NEW |