| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/nacl/renderer/ppb_nacl_private_impl.h" | 5 #include "components/nacl/renderer/ppb_nacl_private_impl.h" |
| 6 | 6 |
| 7 #include <numeric> | 7 #include <numeric> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 53 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
| 54 #include "third_party/WebKit/public/web/WebPluginContainer.h" | 54 #include "third_party/WebKit/public/web/WebPluginContainer.h" |
| 55 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" | 55 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" |
| 56 #include "third_party/WebKit/public/web/WebURLLoaderOptions.h" | 56 #include "third_party/WebKit/public/web/WebURLLoaderOptions.h" |
| 57 #include "third_party/jsoncpp/source/include/json/reader.h" | 57 #include "third_party/jsoncpp/source/include/json/reader.h" |
| 58 #include "third_party/jsoncpp/source/include/json/value.h" | 58 #include "third_party/jsoncpp/source/include/json/value.h" |
| 59 | 59 |
| 60 namespace nacl { | 60 namespace nacl { |
| 61 namespace { | 61 namespace { |
| 62 | 62 |
| 63 // The pseudo-architecture used to indicate portable native client. |
| 64 const char* const kPortableArch = "portable"; |
| 65 |
| 63 base::LazyInstance<scoped_refptr<PnaclTranslationResourceHost> > | 66 base::LazyInstance<scoped_refptr<PnaclTranslationResourceHost> > |
| 64 g_pnacl_resource_host = LAZY_INSTANCE_INITIALIZER; | 67 g_pnacl_resource_host = LAZY_INSTANCE_INITIALIZER; |
| 65 | 68 |
| 66 bool InitializePnaclResourceHost() { | 69 bool InitializePnaclResourceHost() { |
| 67 // Must run on the main thread. | 70 // Must run on the main thread. |
| 68 content::RenderThread* render_thread = content::RenderThread::Get(); | 71 content::RenderThread* render_thread = content::RenderThread::Get(); |
| 69 if (!render_thread) | 72 if (!render_thread) |
| 70 return false; | 73 return false; |
| 71 if (!g_pnacl_resource_host.Get()) { | 74 if (!g_pnacl_resource_host.Get()) { |
| 72 g_pnacl_resource_host.Get() = new PnaclTranslationResourceHost( | 75 g_pnacl_resource_host.Get() = new PnaclTranslationResourceHost( |
| (...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 894 | 897 |
| 895 PP_Var GetManifestURLArgument(PP_Instance instance) { | 898 PP_Var GetManifestURLArgument(PP_Instance instance) { |
| 896 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 899 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 897 if (load_manager) { | 900 if (load_manager) { |
| 898 return ppapi::StringVar::StringToPPVar( | 901 return ppapi::StringVar::StringToPPVar( |
| 899 load_manager->GetManifestURLArgument()); | 902 load_manager->GetManifestURLArgument()); |
| 900 } | 903 } |
| 901 return PP_MakeUndefined(); | 904 return PP_MakeUndefined(); |
| 902 } | 905 } |
| 903 | 906 |
| 904 PP_Bool IsPNaCl(PP_Instance instance) { | |
| 905 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | |
| 906 if (load_manager) | |
| 907 return PP_FromBool(load_manager->IsPNaCl()); | |
| 908 return PP_FALSE; | |
| 909 } | |
| 910 | |
| 911 PP_Bool DevInterfacesEnabled(PP_Instance instance) { | 907 PP_Bool DevInterfacesEnabled(PP_Instance instance) { |
| 912 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 908 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 913 if (load_manager) | 909 if (load_manager) |
| 914 return PP_FromBool(load_manager->DevInterfacesEnabled()); | 910 return PP_FromBool(load_manager->DevInterfacesEnabled()); |
| 915 return PP_FALSE; | 911 return PP_FALSE; |
| 916 } | 912 } |
| 917 | 913 |
| 918 void DownloadManifestToBufferCompletion(PP_Instance instance, | 914 void DownloadManifestToBufferCompletion(PP_Instance instance, |
| 919 struct PP_CompletionCallback callback, | 915 struct PP_CompletionCallback callback, |
| 920 struct PP_Var* out_data, | 916 struct PP_Var* out_data, |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 } | 1014 } |
| 1019 callback.func(callback.user_data, pp_error); | 1015 callback.func(callback.user_data, pp_error); |
| 1020 } | 1016 } |
| 1021 | 1017 |
| 1022 int32_t CreatePNaClManifest(PP_Instance /* instance */) { | 1018 int32_t CreatePNaClManifest(PP_Instance /* instance */) { |
| 1023 return GetPNaClManifestId(); | 1019 return GetPNaClManifestId(); |
| 1024 } | 1020 } |
| 1025 | 1021 |
| 1026 int32_t CreateJsonManifest(PP_Instance instance, | 1022 int32_t CreateJsonManifest(PP_Instance instance, |
| 1027 const char* manifest_url, | 1023 const char* manifest_url, |
| 1028 const char* isa_type, | |
| 1029 const char* manifest_data) { | 1024 const char* manifest_data) { |
| 1025 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 1026 if (!load_manager) |
| 1027 return -1; |
| 1030 int32_t manifest_id = g_next_manifest_id.Get(); | 1028 int32_t manifest_id = g_next_manifest_id.Get(); |
| 1031 g_next_manifest_id.Get()++; | 1029 g_next_manifest_id.Get()++; |
| 1032 | 1030 |
| 1031 const char* isa_type; |
| 1032 if (load_manager->IsPNaCl()) |
| 1033 isa_type = kPortableArch; |
| 1034 else |
| 1035 isa_type = GetSandboxArch(); |
| 1036 |
| 1033 scoped_ptr<nacl::JsonManifest> j( | 1037 scoped_ptr<nacl::JsonManifest> j( |
| 1034 new nacl::JsonManifest( | 1038 new nacl::JsonManifest( |
| 1035 manifest_url, | 1039 manifest_url, |
| 1036 isa_type, | 1040 isa_type, |
| 1037 PP_ToBool(IsNonSFIModeEnabled()), | 1041 PP_ToBool(IsNonSFIModeEnabled()), |
| 1038 PP_ToBool(NaClDebugEnabledForURL(manifest_url)))); | 1042 PP_ToBool(NaClDebugEnabledForURL(manifest_url)))); |
| 1039 JsonManifest::ErrorInfo error_info; | 1043 JsonManifest::ErrorInfo error_info; |
| 1040 if (j->Init(manifest_data, &error_info)) { | 1044 if (j->Init(manifest_data, &error_info)) { |
| 1041 g_manifest_map.Get().add(manifest_id, j.Pass()); | 1045 g_manifest_map.Get().add(manifest_id, j.Pass()); |
| 1042 return manifest_id; | 1046 return manifest_id; |
| 1043 } | 1047 } |
| 1044 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 1048 load_manager->ReportLoadError(error_info.error, error_info.string); |
| 1045 if (load_manager) | |
| 1046 load_manager->ReportLoadError(error_info.error, error_info.string); | |
| 1047 return -1; | 1049 return -1; |
| 1048 } | 1050 } |
| 1049 | 1051 |
| 1050 void DestroyManifest(PP_Instance /* instance */, | 1052 void DestroyManifest(PP_Instance /* instance */, |
| 1051 int32_t manifest_id) { | 1053 int32_t manifest_id) { |
| 1052 if (manifest_id == GetPNaClManifestId()) | 1054 if (manifest_id == GetPNaClManifestId()) |
| 1053 return; | 1055 return; |
| 1054 g_manifest_map.Get().erase(manifest_id); | 1056 g_manifest_map.Get().erase(manifest_id); |
| 1055 } | 1057 } |
| 1056 | 1058 |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1288 &SetExitStatus, | 1290 &SetExitStatus, |
| 1289 &Vlog, | 1291 &Vlog, |
| 1290 &InitializePlugin, | 1292 &InitializePlugin, |
| 1291 &GetNexeSize, | 1293 &GetNexeSize, |
| 1292 &RequestNaClManifest, | 1294 &RequestNaClManifest, |
| 1293 &GetManifestBaseURL, | 1295 &GetManifestBaseURL, |
| 1294 &ResolvesRelativeToPluginBaseURL, | 1296 &ResolvesRelativeToPluginBaseURL, |
| 1295 &ParseDataURL, | 1297 &ParseDataURL, |
| 1296 &ProcessNaClManifest, | 1298 &ProcessNaClManifest, |
| 1297 &GetManifestURLArgument, | 1299 &GetManifestURLArgument, |
| 1298 &IsPNaCl, | |
| 1299 &DevInterfacesEnabled, | 1300 &DevInterfacesEnabled, |
| 1300 &DownloadManifestToBuffer, | 1301 &DownloadManifestToBuffer, |
| 1301 &CreatePNaClManifest, | 1302 &CreatePNaClManifest, |
| 1302 &CreateJsonManifest, | 1303 &CreateJsonManifest, |
| 1303 &DestroyManifest, | 1304 &DestroyManifest, |
| 1304 &ManifestGetProgramURL, | 1305 &ManifestGetProgramURL, |
| 1305 &ManifestResolveKey, | 1306 &ManifestResolveKey, |
| 1306 &GetPNaClResourceInfo, | 1307 &GetPNaClResourceInfo, |
| 1307 &GetCpuFeatureAttrs, | 1308 &GetCpuFeatureAttrs, |
| 1308 &PostMessageToJavaScript | 1309 &PostMessageToJavaScript |
| 1309 }; | 1310 }; |
| 1310 | 1311 |
| 1311 } // namespace | 1312 } // namespace |
| 1312 | 1313 |
| 1313 const PPB_NaCl_Private* GetNaClPrivateInterface() { | 1314 const PPB_NaCl_Private* GetNaClPrivateInterface() { |
| 1314 return &nacl_interface; | 1315 return &nacl_interface; |
| 1315 } | 1316 } |
| 1316 | 1317 |
| 1317 } // namespace nacl | 1318 } // namespace nacl |
| OLD | NEW |