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 eace43823b94c338274d2f29546141066f0bf6c1..c2fcbd87b07801c03ebfeb60554b8d3129bbd354 100644 |
--- a/ppapi/native_client/src/trusted/plugin/plugin.cc |
+++ b/ppapi/native_client/src/trusted/plugin/plugin.cc |
@@ -354,23 +354,12 @@ NaClSubprocess* Plugin::LoadHelperNaClModule(const nacl::string& helper_url, |
return nacl_subprocess.release(); |
} |
-Plugin* Plugin::New(PP_Instance pp_instance) { |
- PLUGIN_PRINTF(("Plugin::New (pp_instance=%" NACL_PRId32 ")\n", pp_instance)); |
- Plugin* plugin = new Plugin(pp_instance); |
- PLUGIN_PRINTF(("Plugin::New (plugin=%p)\n", static_cast<void*>(plugin))); |
- return plugin; |
-} |
- |
// All failures of this function will show up as "Missing Plugin-in", so |
// there is no need to log to JS console that there was an initialization |
// failure. Note that module loading functions will log their own errors. |
bool Plugin::Init(uint32_t argc, const char* argn[], const char* argv[]) { |
PLUGIN_PRINTF(("Plugin::Init (argc=%" NACL_PRIu32 ")\n", argc)); |
nacl_interface_->InitializePlugin(pp_instance(), argc, argn, argv); |
- url_util_ = pp::URLUtil_Dev::Get(); |
- if (url_util_ == NULL) |
- return false; |
- |
wrapper_factory_ = new nacl::DescWrapperFactory(); |
pp::Var manifest_url(pp::PASS_REF, nacl_interface_->GetManifestURLArgument( |
pp_instance())); |
@@ -654,15 +643,13 @@ void Plugin::NaClManifestFileDidOpen(int32_t pp_error) { |
void Plugin::ProcessNaClManifest(const nacl::string& manifest_json) { |
HistogramSizeKB("NaCl.Perf.Size.Manifest", |
static_cast<int32_t>(manifest_json.length() / 1024)); |
- ErrorInfo error_info; |
- if (!SetManifestObject(manifest_json, &error_info)) { |
- ReportLoadError(error_info); |
+ if (!SetManifestObject(manifest_json)) |
return; |
- } |
nacl::string program_url; |
PP_PNaClOptions pnacl_options = {PP_FALSE, PP_FALSE, 2}; |
bool uses_nonsfi_mode; |
+ ErrorInfo error_info; |
if (manifest_->GetProgramURL( |
&program_url, &pnacl_options, &uses_nonsfi_mode, &error_info)) { |
// TODO(teravest): Make ProcessNaClManifest take responsibility for more of |
@@ -742,12 +729,11 @@ void Plugin::RequestNaClManifest(const nacl::string& url) { |
} |
-bool Plugin::SetManifestObject(const nacl::string& manifest_json, |
- ErrorInfo* error_info) { |
+bool Plugin::SetManifestObject(const nacl::string& manifest_json) { |
PLUGIN_PRINTF(("Plugin::SetManifestObject(): manifest_json='%s'.\n", |
manifest_json.c_str())); |
- if (error_info == NULL) |
- return false; |
+ ErrorInfo error_info; |
+ |
// Determine whether lookups should use portable (i.e., pnacl versions) |
// rather than platform-specific files. |
bool is_pnacl = nacl_interface_->IsPNaCl(pp_instance()); |
@@ -760,12 +746,13 @@ bool Plugin::SetManifestObject(const nacl::string& manifest_json, |
manifest_base_url_str.c_str()); |
const char* sandbox_isa = nacl_interface_->GetSandboxArch(); |
nacl::scoped_ptr<JsonManifest> json_manifest( |
- new JsonManifest(url_util_, |
+ new JsonManifest(pp::URLUtil_Dev::Get(), |
manifest_base_url_str, |
(is_pnacl ? kPortableArch : sandbox_isa), |
nonsfi_mode_enabled, |
pnacl_debug)); |
- if (!json_manifest->Init(manifest_json, error_info)) { |
+ if (!json_manifest->Init(manifest_json, &error_info)) { |
+ ReportLoadError(error_info); |
return false; |
} |
manifest_.reset(json_manifest.release()); |
@@ -790,9 +777,8 @@ void Plugin::UrlDidOpenForStreamAsFile( |
} else if (info->get_desc() > NACL_NO_FILE_DESC) { |
std::map<nacl::string, NaClFileInfoAutoCloser*>::iterator it = |
url_file_info_map_.find(url_downloader->url()); |
- if (it != url_file_info_map_.end()) { |
+ if (it != url_file_info_map_.end()) |
delete it->second; |
- } |
url_file_info_map_[url_downloader->url()] = info; |
callback.Run(PP_OK); |
} else { |
@@ -974,8 +960,9 @@ bool Plugin::OpenURLFast(const nacl::string& url, |
} |
bool Plugin::DocumentCanRequest(const std::string& url) { |
- CHECK(url_util_ != NULL); |
- return url_util_->DocumentCanRequest(this, pp::Var(url)); |
+ CHECK(pp::Module::Get()->core()->IsMainThread()); |
+ CHECK(pp::URLUtil_Dev::Get() != NULL); |
+ return pp::URLUtil_Dev::Get()->DocumentCanRequest(this, pp::Var(url)); |
} |
void Plugin::set_exit_status(int exit_status) { |