Index: components/nacl/renderer/ppb_nacl_private_impl.cc |
diff --git a/components/nacl/renderer/ppb_nacl_private_impl.cc b/components/nacl/renderer/ppb_nacl_private_impl.cc |
index f85a51f3aaec899cc43635f2d2f458553c597f59..54e2cf0b8f8c6179a8577d84b15e6ba9069b388a 100644 |
--- a/components/nacl/renderer/ppb_nacl_private_impl.cc |
+++ b/components/nacl/renderer/ppb_nacl_private_impl.cc |
@@ -1043,39 +1043,48 @@ PP_Bool ManifestGetProgramURL(PP_Instance instance, |
return PP_FALSE; |
} |
-PP_Bool ManifestResolveKey(PP_Instance instance, |
- PP_Bool is_helper_process, |
- const char* key, |
- PP_Var* pp_full_url, |
- PP_PNaClOptions* pnacl_options) { |
+bool ManifestResolveKey(PP_Instance instance, |
+ bool is_helper_process, |
+ const std::string& key, |
+ std::string* full_url, |
+ PP_PNaClOptions* pnacl_options) { |
// For "helper" processes (llc and ld), we resolve keys manually as there is |
// no existing .nmf file to parse. |
- if (PP_ToBool(is_helper_process)) { |
+ if (is_helper_process) { |
pnacl_options->translate = PP_FALSE; |
// We can only resolve keys in the files/ namespace. |
const std::string kFilesPrefix = "files/"; |
- std::string key_string(key); |
- if (key_string.find(kFilesPrefix) == std::string::npos) { |
+ if (key.find(kFilesPrefix) == std::string::npos) { |
nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
if (load_manager) |
load_manager->ReportLoadError(PP_NACL_ERROR_MANIFEST_RESOLVE_URL, |
"key did not start with files/"); |
- return PP_FALSE; |
+ return false; |
} |
- std::string key_basename = key_string.substr(kFilesPrefix.length()); |
- std::string pnacl_url = |
- std::string(kPNaClTranslatorBaseUrl) + GetSandboxArch() + "/" + |
- key_basename; |
- *pp_full_url = ppapi::StringVar::StringToPPVar(pnacl_url); |
- return PP_TRUE; |
+ std::string key_basename = key.substr(kFilesPrefix.length()); |
+ *full_url = std::string(kPNaClTranslatorBaseUrl) + GetSandboxArch() + "/" + |
+ key_basename; |
+ return true; |
} |
JsonManifest* manifest = GetJsonManifest(instance); |
if (manifest == NULL) |
- return PP_FALSE; |
+ return false; |
+ |
+ return manifest->ResolveKey(key, full_url, pnacl_options); |
+} |
+PP_Bool ExternalManifestResolveKey(PP_Instance instance, |
+ PP_Bool is_helper_process, |
+ const char* key, |
+ PP_Var* pp_full_url, |
+ PP_PNaClOptions* pnacl_options) { |
std::string full_url; |
- bool ok = manifest->ResolveKey(key, &full_url, pnacl_options); |
+ bool ok = ManifestResolveKey(instance, |
+ PP_ToBool(is_helper_process), |
+ std::string(key), |
+ &full_url, |
+ pnacl_options); |
if (ok) |
*pp_full_url = ppapi::StringVar::StringToPPVar(full_url); |
return PP_FromBool(ok); |
@@ -1542,7 +1551,7 @@ const PPB_NaCl_Private nacl_interface = { |
&ProcessNaClManifest, |
&DevInterfacesEnabled, |
&ManifestGetProgramURL, |
- &ManifestResolveKey, |
+ &ExternalManifestResolveKey, |
&GetPNaClResourceInfo, |
&GetCpuFeatureAttrs, |
&PostMessageToJavaScript, |