OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime" | 7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime" |
8 | 8 |
9 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h" | 9 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h" |
10 | 10 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 return; | 179 return; |
180 | 180 |
181 callback->Run(pp_error); | 181 callback->Run(pp_error); |
182 delete callback; | 182 delete callback; |
183 callback = NULL; | 183 callback = NULL; |
184 } | 184 } |
185 | 185 |
186 PluginReverseInterface::PluginReverseInterface( | 186 PluginReverseInterface::PluginReverseInterface( |
187 nacl::WeakRefAnchor* anchor, | 187 nacl::WeakRefAnchor* anchor, |
188 Plugin* plugin, | 188 Plugin* plugin, |
189 int32_t manifest_id, | |
190 ServiceRuntime* service_runtime, | 189 ServiceRuntime* service_runtime, |
191 pp::CompletionCallback init_done_cb, | 190 pp::CompletionCallback init_done_cb, |
192 pp::CompletionCallback crash_cb) | 191 pp::CompletionCallback crash_cb) |
193 : anchor_(anchor), | 192 : anchor_(anchor), |
194 plugin_(plugin), | 193 plugin_(plugin), |
195 manifest_id_(manifest_id), | |
196 service_runtime_(service_runtime), | 194 service_runtime_(service_runtime), |
197 shutting_down_(false), | 195 shutting_down_(false), |
198 init_done_cb_(init_done_cb), | 196 init_done_cb_(init_done_cb), |
199 crash_cb_(crash_cb) { | 197 crash_cb_(crash_cb) { |
200 NaClXMutexCtor(&mu_); | 198 NaClXMutexCtor(&mu_); |
201 NaClXCondVarCtor(&cv_); | 199 NaClXCondVarCtor(&cv_); |
202 } | 200 } |
203 | 201 |
204 PluginReverseInterface::~PluginReverseInterface() { | 202 PluginReverseInterface::~PluginReverseInterface() { |
205 NaClCondVarDtor(&cv_); | 203 NaClCondVarDtor(&cv_); |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation( | 312 void PluginReverseInterface::OpenManifestEntry_MainThreadContinuation( |
315 OpenManifestEntryResource* p, | 313 OpenManifestEntryResource* p, |
316 int32_t err) { | 314 int32_t err) { |
317 UNREFERENCED_PARAMETER(err); | 315 UNREFERENCED_PARAMETER(err); |
318 // CallOnMainThread continuations always called with err == PP_OK. | 316 // CallOnMainThread continuations always called with err == PP_OK. |
319 | 317 |
320 NaClLog(4, "Entered OpenManifestEntry_MainThreadContinuation\n"); | 318 NaClLog(4, "Entered OpenManifestEntry_MainThreadContinuation\n"); |
321 | 319 |
322 PP_Var pp_mapped_url; | 320 PP_Var pp_mapped_url; |
323 PP_PNaClOptions pnacl_options = {PP_FALSE, PP_FALSE, 2}; | 321 PP_PNaClOptions pnacl_options = {PP_FALSE, PP_FALSE, 2}; |
324 if (!GetNaClInterface()->ManifestResolveKey(plugin_->pp_instance(), | 322 if (!GetNaClInterface()->ManifestResolveKey( |
325 manifest_id_, | 323 plugin_->pp_instance(), |
326 p->url.c_str(), | 324 PP_FromBool(!service_runtime_->main_service_runtime()), |
327 &pp_mapped_url, | 325 p->url.c_str(), |
328 &pnacl_options)) { | 326 &pp_mapped_url, |
| 327 &pnacl_options)) { |
329 NaClLog(4, "OpenManifestEntry_MainThreadContinuation: ResolveKey failed\n"); | 328 NaClLog(4, "OpenManifestEntry_MainThreadContinuation: ResolveKey failed\n"); |
330 // Failed, and error_info has the details on what happened. Wake | 329 // Failed, and error_info has the details on what happened. Wake |
331 // up requesting thread -- we are done. | 330 // up requesting thread -- we are done. |
332 { | 331 { |
333 nacl::MutexLocker take(&mu_); | 332 nacl::MutexLocker take(&mu_); |
334 *p->op_complete_ptr = true; // done... | 333 *p->op_complete_ptr = true; // done... |
335 p->file_info->desc = -1; // but failed. | 334 p->file_info->desc = -1; // but failed. |
336 NaClXCondVarBroadcast(&cv_); | 335 NaClXCondVarBroadcast(&cv_); |
337 } | 336 } |
338 p->MaybeRunCallback(PP_OK); | 337 p->MaybeRunCallback(PP_OK); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 void PluginReverseInterface::ReportExitStatus(int exit_status) { | 461 void PluginReverseInterface::ReportExitStatus(int exit_status) { |
463 service_runtime_->set_exit_status(exit_status); | 462 service_runtime_->set_exit_status(exit_status); |
464 } | 463 } |
465 | 464 |
466 int64_t PluginReverseInterface::RequestQuotaForWrite( | 465 int64_t PluginReverseInterface::RequestQuotaForWrite( |
467 nacl::string file_id, int64_t offset, int64_t bytes_to_write) { | 466 nacl::string file_id, int64_t offset, int64_t bytes_to_write) { |
468 return bytes_to_write; | 467 return bytes_to_write; |
469 } | 468 } |
470 | 469 |
471 ServiceRuntime::ServiceRuntime(Plugin* plugin, | 470 ServiceRuntime::ServiceRuntime(Plugin* plugin, |
472 int32_t manifest_id, | |
473 bool main_service_runtime, | 471 bool main_service_runtime, |
474 bool uses_nonsfi_mode, | 472 bool uses_nonsfi_mode, |
475 pp::CompletionCallback init_done_cb, | 473 pp::CompletionCallback init_done_cb, |
476 pp::CompletionCallback crash_cb) | 474 pp::CompletionCallback crash_cb) |
477 : plugin_(plugin), | 475 : plugin_(plugin), |
478 main_service_runtime_(main_service_runtime), | 476 main_service_runtime_(main_service_runtime), |
479 uses_nonsfi_mode_(uses_nonsfi_mode), | 477 uses_nonsfi_mode_(uses_nonsfi_mode), |
480 reverse_service_(NULL), | 478 reverse_service_(NULL), |
481 anchor_(new nacl::WeakRefAnchor()), | 479 anchor_(new nacl::WeakRefAnchor()), |
482 rev_interface_(new PluginReverseInterface(anchor_, plugin, | 480 rev_interface_(new PluginReverseInterface(anchor_, plugin, this, |
483 manifest_id, | |
484 this, | |
485 init_done_cb, crash_cb)), | 481 init_done_cb, crash_cb)), |
486 start_sel_ldr_done_(false) { | 482 start_sel_ldr_done_(false) { |
487 NaClSrpcChannelInitialize(&command_channel_); | 483 NaClSrpcChannelInitialize(&command_channel_); |
488 NaClXMutexCtor(&mu_); | 484 NaClXMutexCtor(&mu_); |
489 NaClXCondVarCtor(&cond_); | 485 NaClXCondVarCtor(&cond_); |
490 } | 486 } |
491 | 487 |
492 bool ServiceRuntime::SetupCommandChannel() { | 488 bool ServiceRuntime::SetupCommandChannel() { |
493 NaClLog(4, "ServiceRuntime::SetupCommand (this=%p, subprocess=%p)\n", | 489 NaClLog(4, "ServiceRuntime::SetupCommand (this=%p, subprocess=%p)\n", |
494 static_cast<void*>(this), | 490 static_cast<void*>(this), |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 | 805 |
810 nacl::string ServiceRuntime::GetCrashLogOutput() { | 806 nacl::string ServiceRuntime::GetCrashLogOutput() { |
811 if (NULL != subprocess_.get()) { | 807 if (NULL != subprocess_.get()) { |
812 return subprocess_->GetCrashLogOutput(); | 808 return subprocess_->GetCrashLogOutput(); |
813 } else { | 809 } else { |
814 return std::string(); | 810 return std::string(); |
815 } | 811 } |
816 } | 812 } |
817 | 813 |
818 } // namespace plugin | 814 } // namespace plugin |
OLD | NEW |