Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: ppapi/native_client/src/trusted/plugin/plugin.cc

Issue 263683002: Set file tokens for NaCl main nexe if available to enable validation caching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clear tokens too Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/trusted/plugin/plugin.cc
diff --git a/ppapi/native_client/src/trusted/plugin/plugin.cc b/ppapi/native_client/src/trusted/plugin/plugin.cc
index b516879d6f5d8a2914f175d9fc1807067b87cec5..3c316feb6284a8de827725b8b6f389004725bce9 100644
--- a/ppapi/native_client/src/trusted/plugin/plugin.cc
+++ b/ppapi/native_client/src/trusted/plugin/plugin.cc
@@ -23,6 +23,7 @@
#include "native_client/src/include/portability.h"
#include "native_client/src/include/portability_io.h"
#include "native_client/src/include/portability_string.h"
+#include "native_client/src/public/nacl_file_info.h"
#include "native_client/src/shared/platform/nacl_check.h"
#include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
#include "native_client/src/trusted/nonnacl_util/sel_ldr_launcher.h"
@@ -375,6 +376,8 @@ Plugin::Plugin(PP_Instance pp_instance)
// We call set_exit_status() here to ensure that the 'exitStatus' property is
// set. This can only be called when nacl_interface_ is not NULL.
set_exit_status(-1);
+ memset(&nexe_file_info_, 0, sizeof nexe_file_info_);
+ nexe_file_info_.desc = -1;
}
@@ -446,11 +449,17 @@ void Plugin::NexeFileDidOpen(int32_t pp_error) {
if (pp_error != PP_OK)
return;
- int32_t desc = ConvertFileDescriptor(nexe_handle_);
+ nexe_file_info_.desc = ConvertFileDescriptor(nexe_handle_);
teravest 2014/05/21 16:49:42 I'm a little confused why nexe_file_info_ needs to
jvoung (off chromium) 2014/05/21 21:10:56 It was mostly to avoid heap allocating the NaClFil
nexe_handle_ = PP_kInvalidFileHandle; // Clear out nexe handle.
+ NaClDesc *desc = NaClDescIoFromFileInfo(nexe_file_info_, O_RDONLY);
+ if (desc == NULL)
+ return;
+ // nexe_file_info_ is handed to desc, clear out old copy.
+ memset(&nexe_file_info_, 0, sizeof nexe_file_info_);
+ nexe_file_info_.desc = -1;
nacl::scoped_ptr<nacl::DescWrapper>
- wrapper(wrapper_factory()->MakeFileDesc(desc, O_RDONLY));
+ wrapper(wrapper_factory()->MakeGenericCleanup(desc));
NaClLog(4, "NexeFileDidOpen: invoking LoadNaClModule\n");
LoadNaClModule(
wrapper.release(),
@@ -574,6 +583,8 @@ void Plugin::ProcessNaClManifest(const nacl::string& manifest_json) {
nacl_interface_->DownloadNexe(pp_instance(),
program_url_.c_str(),
&nexe_handle_,
+ &nexe_file_info_.file_token.lo,
+ &nexe_file_info_.file_token.hi,
open_callback.pp_completion_callback());
return;
}

Powered by Google App Engine
This is Rietveld 408576698