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 "components/nacl/renderer/ppb_nacl_private_impl.h" | 5 #include "components/nacl/renderer/ppb_nacl_private_impl.h" |
6 | 6 |
7 #include <numeric> | 7 #include <numeric> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 void* imc_handle, | 378 void* imc_handle, |
379 PP_CompletionCallback callback) { | 379 PP_CompletionCallback callback) { |
380 CHECK(ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()-> | 380 CHECK(ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()-> |
381 BelongsToCurrentThread()); | 381 BelongsToCurrentThread()); |
382 NaClAppProcessType process_type = PP_ToNaClAppProcessType(pp_process_type); | 382 NaClAppProcessType process_type = PP_ToNaClAppProcessType(pp_process_type); |
383 // Create the manifest service proxy here, so on error case, it will be | 383 // Create the manifest service proxy here, so on error case, it will be |
384 // destructed (without passing it to ManifestServiceChannel). | 384 // destructed (without passing it to ManifestServiceChannel). |
385 scoped_ptr<ManifestServiceChannel::Delegate> manifest_service_proxy( | 385 scoped_ptr<ManifestServiceChannel::Delegate> manifest_service_proxy( |
386 new ManifestServiceProxy(instance, process_type)); | 386 new ManifestServiceProxy(instance, process_type)); |
387 | 387 |
388 FileDescriptor result_socket; | |
389 IPC::Sender* sender = content::RenderThread::Get(); | 388 IPC::Sender* sender = content::RenderThread::Get(); |
390 DCHECK(sender); | 389 DCHECK(sender); |
391 int routing_id = GetRoutingID(instance); | 390 int routing_id = GetRoutingID(instance); |
392 NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 391 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
393 DCHECK(load_manager); | 392 DCHECK(load_manager); |
394 content::PepperPluginInstance* plugin_instance = | 393 content::PepperPluginInstance* plugin_instance = |
395 content::PepperPluginInstance::Get(instance); | 394 content::PepperPluginInstance::Get(instance); |
396 DCHECK(plugin_instance); | 395 DCHECK(plugin_instance); |
397 if (!routing_id || !load_manager || !plugin_instance) { | 396 if (!routing_id || !load_manager || !plugin_instance) { |
398 if (nexe_file_info->handle != PP_kInvalidFileHandle) { | 397 if (nexe_file_info->handle != PP_kInvalidFileHandle) { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 load_manager->ReportLoadError(PP_NACL_ERROR_SEL_LDR_LAUNCH, | 474 load_manager->ReportLoadError(PP_NACL_ERROR_SEL_LDR_LAUNCH, |
476 "ServiceRuntime: failed to start", | 475 "ServiceRuntime: failed to start", |
477 error_message_string); | 476 error_message_string); |
478 } | 477 } |
479 ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask( | 478 ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask( |
480 FROM_HERE, | 479 FROM_HERE, |
481 base::Bind(callback.func, callback.user_data, | 480 base::Bind(callback.func, callback.user_data, |
482 static_cast<int32_t>(PP_ERROR_FAILED))); | 481 static_cast<int32_t>(PP_ERROR_FAILED))); |
483 return; | 482 return; |
484 } | 483 } |
485 result_socket = launch_result.imc_channel_handle; | 484 |
486 instance_info.channel_handle = launch_result.ppapi_ipc_channel_handle; | 485 instance_info.channel_handle = launch_result.ppapi_ipc_channel_handle; |
487 instance_info.plugin_pid = launch_result.plugin_pid; | 486 instance_info.plugin_pid = launch_result.plugin_pid; |
488 instance_info.plugin_child_id = launch_result.plugin_child_id; | 487 instance_info.plugin_child_id = launch_result.plugin_child_id; |
489 | 488 |
490 // Don't save instance_info if channel handle is invalid. | 489 // Don't save instance_info if channel handle is invalid. |
491 if (IsValidChannelHandle(instance_info.channel_handle)) { | 490 if (IsValidChannelHandle(instance_info.channel_handle)) { |
492 NaClPluginInstance* nacl_plugin_instance = GetNaClPluginInstance(instance); | 491 NaClPluginInstance* nacl_plugin_instance = GetNaClPluginInstance(instance); |
493 nacl_plugin_instance->instance_info.reset(new InstanceInfo(instance_info)); | 492 nacl_plugin_instance->instance_info.reset(new InstanceInfo(instance_info)); |
494 } | 493 } |
495 | 494 |
496 *(static_cast<NaClHandle*>(imc_handle)) = ToNativeHandle(result_socket); | 495 *(static_cast<NaClHandle*>(imc_handle)) = |
| 496 IPC::PlatformFileForTransitToPlatformFile( |
| 497 launch_result.imc_channel_handle); |
497 | 498 |
498 // Store the crash information shared memory handle. | 499 // Store the crash information shared memory handle. |
499 load_manager->set_crash_info_shmem_handle( | 500 load_manager->set_crash_info_shmem_handle( |
500 launch_result.crash_info_shmem_handle); | 501 launch_result.crash_info_shmem_handle); |
501 | 502 |
502 // Create the trusted plugin channel. | 503 // Create the trusted plugin channel. |
503 if (IsValidChannelHandle(launch_result.trusted_ipc_channel_handle)) { | 504 if (IsValidChannelHandle(launch_result.trusted_ipc_channel_handle)) { |
504 bool report_exit_status = PP_ToBool(main_service_runtime); | 505 bool report_exit_status = PP_ToBool(main_service_runtime); |
505 scoped_ptr<TrustedPluginChannel> trusted_plugin_channel( | 506 scoped_ptr<TrustedPluginChannel> trusted_plugin_channel( |
506 new TrustedPluginChannel( | 507 new TrustedPluginChannel( |
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1727 &StreamPexe | 1728 &StreamPexe |
1728 }; | 1729 }; |
1729 | 1730 |
1730 } // namespace | 1731 } // namespace |
1731 | 1732 |
1732 const PPB_NaCl_Private* GetNaClPrivateInterface() { | 1733 const PPB_NaCl_Private* GetNaClPrivateInterface() { |
1733 return &nacl_interface; | 1734 return &nacl_interface; |
1734 } | 1735 } |
1735 | 1736 |
1736 } // namespace nacl | 1737 } // namespace nacl |
OLD | NEW |