Chromium Code Reviews| Index: components/nacl/loader/nonsfi/nonsfi_listener.cc |
| diff --git a/components/nacl/loader/nonsfi/nonsfi_listener.cc b/components/nacl/loader/nonsfi/nonsfi_listener.cc |
| index 00dde7a197a19987e58762550d1c6f05a45b7a5e..bc37c2cfd9913853806bc31fe7f2d402bb6a0797 100644 |
| --- a/components/nacl/loader/nonsfi/nonsfi_listener.cc |
| +++ b/components/nacl/loader/nonsfi/nonsfi_listener.cc |
| @@ -35,7 +35,9 @@ namespace nacl { |
| namespace nonsfi { |
| NonSfiListener::NonSfiListener() : io_thread_("NaCl_IOThread"), |
| - shutdown_event_(true, false) { |
| + shutdown_event_(true, false), |
| + key_fd_map_(new std::map<std::string, int>) { |
| + |
|
Mark Seaborn
2015/05/08 00:35:36
Nit: don't add an empty line here
Yusuke Sato
2015/05/08 15:12:35
Done.
|
| io_thread_.StartWithOptions( |
| base::Thread::Options(base::MessageLoop::TYPE_IO, 0)); |
| } |
| @@ -63,12 +65,30 @@ bool NonSfiListener::Send(IPC::Message* msg) { |
| bool NonSfiListener::OnMessageReceived(const IPC::Message& msg) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(NonSfiListener, msg) |
| + IPC_MESSAGE_HANDLER(NaClProcessMsg_SetPrefetchedResource, |
| + OnSetPrefetchedResource) |
| IPC_MESSAGE_HANDLER(NaClProcessMsg_Start, OnStart) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| } |
| +void NonSfiListener::OnSetPrefetchedResource( |
| + const std::vector< |
| + nacl::NaClResourcePrefetchResult>& prefetched_resource_files) { |
| + for (size_t i = 0; i < prefetched_resource_files.size(); ++i) { |
| + CHECK(prefetched_resource_files[i].file_path_metadata.empty()); |
| + bool result = key_fd_map_->insert(std::make_pair( |
| + prefetched_resource_files[i].file_key, |
| + IPC::PlatformFileForTransitToPlatformFile( |
| + prefetched_resource_files[i].file))).second; |
| + if (!result) { |
| + LOG(FATAL) << "Duplicated open_resource key: " |
| + << prefetched_resource_files[i].file_key; |
| + } |
| + } |
| +} |
| + |
| void NonSfiListener::OnStart(const nacl::NaClStartParams& params) { |
| // Random number source initialization. |
| #if defined(OS_NACL_NONSFI) |
| @@ -161,15 +181,7 @@ void NonSfiListener::OnStart(const nacl::NaClStartParams& params) { |
| CHECK(params.nexe_file != IPC::InvalidPlatformFileForTransit()); |
| CHECK(params.nexe_file_path_metadata.empty()); |
| - std::map<std::string, int>* key_fd_map = new std::map<std::string, int>; |
| - for (size_t i = 0; i < params.prefetched_resource_files.size(); ++i) { |
| - CHECK(params.prefetched_resource_files[i].file_path_metadata.empty()); |
| - key_fd_map->insert(std::make_pair( |
| - params.prefetched_resource_files[i].file_key, |
| - IPC::PlatformFileForTransitToPlatformFile( |
| - params.prefetched_resource_files[i].file))); |
| - } |
| - ppapi::RegisterPreopenedDescriptorsNonSfi(key_fd_map); |
| + ppapi::RegisterPreopenedDescriptorsNonSfi(key_fd_map_.release()); |
| MainStart(IPC::PlatformFileForTransitToPlatformFile(params.nexe_file)); |
| } |