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

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

Issue 264943003: Pepper: Move manifest logic to components/nacl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 6 years, 8 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 986f6d7fb723bae881ed265dcf7b312b6fbfab23..1fe1ddb446b7af422657918ba44d99b60c96bc89 100644
--- a/ppapi/native_client/src/trusted/plugin/plugin.cc
+++ b/ppapi/native_client/src/trusted/plugin/plugin.cc
@@ -35,7 +35,6 @@
#include "ppapi/cpp/module.h"
#include "ppapi/native_client/src/trusted/plugin/file_utils.h"
-#include "ppapi/native_client/src/trusted/plugin/json_manifest.h"
#include "ppapi/native_client/src/trusted/plugin/nacl_entry_points.h"
#include "ppapi/native_client/src/trusted/plugin/nacl_subprocess.h"
#include "ppapi/native_client/src/trusted/plugin/plugin_error.h"
@@ -137,11 +136,11 @@ void Plugin::HistogramHTTPStatusCode(const std::string& name, int status) {
bool Plugin::LoadNaClModuleFromBackgroundThread(
nacl::DescWrapper* wrapper,
NaClSubprocess* subprocess,
- const Manifest* manifest,
+ int32_t manifest_id,
const SelLdrStartParams& params) {
CHECK(!pp::Module::Get()->core()->IsMainThread());
ServiceRuntime* service_runtime =
- new ServiceRuntime(this, manifest, false, uses_nonsfi_mode_,
+ new ServiceRuntime(this, manifest_id, false, uses_nonsfi_mode_,
pp::BlockUntilComplete(), pp::BlockUntilComplete());
subprocess->set_service_runtime(service_runtime);
PLUGIN_PRINTF(("Plugin::LoadNaClModuleFromBackgroundThread "
@@ -229,7 +228,7 @@ void Plugin::LoadNaClModule(nacl::DescWrapper* wrapper,
enable_crash_throttling);
ErrorInfo error_info;
ServiceRuntime* service_runtime =
- new ServiceRuntime(this, manifest_.get(), true, uses_nonsfi_mode,
+ new ServiceRuntime(this, manifest_id_, true, uses_nonsfi_mode,
init_done_cb, crash_cb);
main_subprocess_.set_service_runtime(service_runtime);
PLUGIN_PRINTF(("Plugin::LoadNaClModule (service_runtime=%p)\n",
@@ -294,7 +293,7 @@ bool Plugin::LoadNaClModuleContinuationIntern() {
NaClSubprocess* Plugin::LoadHelperNaClModule(const nacl::string& helper_url,
nacl::DescWrapper* wrapper,
- const Manifest* manifest,
+ int32_t manifest_id,
ErrorInfo* error_info) {
nacl::scoped_ptr<NaClSubprocess> nacl_subprocess(
new NaClSubprocess("helper module", NULL, NULL));
@@ -321,7 +320,7 @@ NaClSubprocess* Plugin::LoadHelperNaClModule(const nacl::string& helper_url,
false /* enable_exception_handling */,
true /* enable_crash_throttling */);
if (!LoadNaClModuleFromBackgroundThread(wrapper, nacl_subprocess.get(),
- manifest, params)) {
+ manifest_id, params)) {
return NULL;
}
// We need not wait for the init_done callback. We can block
@@ -642,20 +641,19 @@ void Plugin::ProcessNaClManifest(const nacl::string& manifest_json) {
if (!SetManifestObject(manifest_json))
return;
- nacl::string program_url;
+ PP_Var pp_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)) {
+ PP_Bool uses_nonsfi_mode;
+ if (nacl_interface_->GetManifestProgramURL(pp_instance(),
+ manifest_id_, &pp_program_url, &pnacl_options, &uses_nonsfi_mode)) {
+ std::string program_url = pp::Var(pp::PASS_REF, pp_program_url).AsString();
// TODO(teravest): Make ProcessNaClManifest take responsibility for more of
// this function.
nacl_interface_->ProcessNaClManifest(pp_instance(), program_url.c_str());
- uses_nonsfi_mode_ = uses_nonsfi_mode;
+ uses_nonsfi_mode_ = PP_ToBool(uses_nonsfi_mode);
if (pnacl_options.translate) {
pp::CompletionCallback translate_callback =
callback_factory_.NewCallback(&Plugin::BitcodeDidTranslate);
- // Will always call the callback on success or failure.
pnacl_coordinator_.reset(
PnaclCoordinator::BitcodeToNative(this,
program_url,
@@ -681,8 +679,6 @@ void Plugin::ProcessNaClManifest(const nacl::string& manifest_json) {
return;
}
}
- // Failed to select the program and/or the translator.
- ReportLoadError(error_info);
}
void Plugin::RequestNaClManifest(const nacl::string& url) {
@@ -727,30 +723,22 @@ void Plugin::RequestNaClManifest(const nacl::string& url) {
bool Plugin::SetManifestObject(const nacl::string& manifest_json) {
PLUGIN_PRINTF(("Plugin::SetManifestObject(): manifest_json='%s'.\n",
manifest_json.c_str()));
- 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());
- bool nonsfi_mode_enabled =
- PP_ToBool(nacl_interface_->IsNonSFIModeEnabled());
pp::Var manifest_base_url =
pp::Var(pp::PASS_REF, nacl_interface_->GetManifestBaseURL(pp_instance()));
std::string manifest_base_url_str = manifest_base_url.AsString();
- bool pnacl_debug = GetNaClInterface()->NaClDebugEnabledForURL(
- manifest_base_url_str.c_str());
const char* sandbox_isa = nacl_interface_->GetSandboxArch();
- nacl::scoped_ptr<JsonManifest> json_manifest(
- 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)) {
- ReportLoadError(error_info);
+
+ int32_t manifest_id = nacl_interface_->CreateJsonManifest(
+ pp_instance(),
+ manifest_base_url_str.c_str(),
+ is_pnacl ? kPortableArch : sandbox_isa,
+ manifest_json.c_str());
+ if (manifest_id == -1)
return false;
- }
- manifest_.reset(json_manifest.release());
+ manifest_id_ = manifest_id;
return true;
}

Powered by Google App Engine
This is Rietveld 408576698