| 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 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 } | 802 } |
| 803 | 803 |
| 804 int64_t GetNexeSize(PP_Instance instance) { | 804 int64_t GetNexeSize(PP_Instance instance) { |
| 805 NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 805 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 806 DCHECK(load_manager); | 806 DCHECK(load_manager); |
| 807 if (load_manager) | 807 if (load_manager) |
| 808 return load_manager->nexe_size(); | 808 return load_manager->nexe_size(); |
| 809 return 0; | 809 return 0; |
| 810 } | 810 } |
| 811 | 811 |
| 812 PP_Bool RequestNaClManifest(PP_Instance instance, | 812 void DownloadManifestToBuffer(PP_Instance instance, |
| 813 const char* url, | 813 struct PP_Var* out_data, |
| 814 PP_Bool* pp_is_data_uri) { | 814 struct PP_CompletionCallback callback); |
| 815 |
| 816 void RequestNaClManifest(PP_Instance instance, |
| 817 const char* url, |
| 818 PP_Var* out_data, |
| 819 PP_CompletionCallback callback) { |
| 815 NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 820 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 816 DCHECK(load_manager); | 821 DCHECK(load_manager); |
| 817 if (load_manager) { | 822 if (!load_manager) { |
| 818 bool is_data_uri; | 823 ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask( |
| 819 bool result = load_manager->RequestNaClManifest(url, &is_data_uri); | 824 FROM_HERE, |
| 820 *pp_is_data_uri = PP_FromBool(is_data_uri); | 825 base::Bind(callback.func, callback.user_data, |
| 821 return PP_FromBool(result); | 826 static_cast<int32_t>(PP_ERROR_FAILED))); |
| 827 return; |
| 822 } | 828 } |
| 823 return PP_FALSE; | 829 |
| 830 if (!load_manager->RequestNaClManifest(url)) { |
| 831 ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask( |
| 832 FROM_HERE, |
| 833 base::Bind(callback.func, callback.user_data, |
| 834 static_cast<int32_t>(PP_ERROR_FAILED))); |
| 835 return; |
| 836 } |
| 837 |
| 838 const GURL& base_url = load_manager->manifest_base_url(); |
| 839 if (base_url.SchemeIs("data")) { |
| 840 GURL gurl(base_url); |
| 841 std::string mime_type; |
| 842 std::string charset; |
| 843 std::string data; |
| 844 int32_t error = PP_ERROR_FAILED; |
| 845 if (net::DataURL::Parse(gurl, &mime_type, &charset, &data)) { |
| 846 if (data.size() <= ManifestDownloader::kNaClManifestMaxFileBytes) { |
| 847 error = PP_OK; |
| 848 *out_data = ppapi::StringVar::StringToPPVar(data); |
| 849 } else { |
| 850 load_manager->ReportLoadError(PP_NACL_ERROR_MANIFEST_TOO_LARGE, |
| 851 "manifest file too large."); |
| 852 } |
| 853 } else { |
| 854 load_manager->ReportLoadError(PP_NACL_ERROR_MANIFEST_LOAD_URL, |
| 855 "could not load manifest url."); |
| 856 } |
| 857 ppapi::PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask( |
| 858 FROM_HERE, |
| 859 base::Bind(callback.func, callback.user_data, error)); |
| 860 } else { |
| 861 DownloadManifestToBuffer(instance, out_data, callback); |
| 862 } |
| 824 } | 863 } |
| 825 | 864 |
| 826 PP_Var GetManifestBaseURL(PP_Instance instance) { | 865 PP_Var GetManifestBaseURL(PP_Instance instance) { |
| 827 NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 866 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 828 DCHECK(load_manager); | 867 DCHECK(load_manager); |
| 829 if (!load_manager) | 868 if (!load_manager) |
| 830 return PP_MakeUndefined(); | 869 return PP_MakeUndefined(); |
| 831 const GURL& gurl = load_manager->manifest_base_url(); | 870 const GURL& gurl = load_manager->manifest_base_url(); |
| 832 if (!gurl.is_valid()) | 871 if (!gurl.is_valid()) |
| 833 return PP_MakeUndefined(); | 872 return PP_MakeUndefined(); |
| 834 return ppapi::StringVar::StringToPPVar(gurl.spec()); | 873 return ppapi::StringVar::StringToPPVar(gurl.spec()); |
| 835 } | 874 } |
| 836 | 875 |
| 837 PP_Bool ResolvesRelativeToPluginBaseURL(PP_Instance instance, | 876 PP_Bool ResolvesRelativeToPluginBaseURL(PP_Instance instance, |
| 838 const char *url) { | 877 const char *url) { |
| 839 NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 878 NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 840 DCHECK(load_manager); | 879 DCHECK(load_manager); |
| 841 if (!load_manager) | 880 if (!load_manager) |
| 842 return PP_FALSE; | 881 return PP_FALSE; |
| 843 const GURL& gurl = load_manager->plugin_base_url().Resolve(url); | 882 const GURL& gurl = load_manager->plugin_base_url().Resolve(url); |
| 844 if (!gurl.is_valid()) | 883 if (!gurl.is_valid()) |
| 845 return PP_FALSE; | 884 return PP_FALSE; |
| 846 return PP_TRUE; | 885 return PP_TRUE; |
| 847 } | 886 } |
| 848 | 887 |
| 849 PP_Var ParseDataURL(const char* data_url) { | |
| 850 GURL gurl(data_url); | |
| 851 std::string mime_type; | |
| 852 std::string charset; | |
| 853 std::string data; | |
| 854 if (!net::DataURL::Parse(gurl, &mime_type, &charset, &data)) | |
| 855 return PP_MakeUndefined(); | |
| 856 return ppapi::StringVar::StringToPPVar(data); | |
| 857 } | |
| 858 | |
| 859 void ProcessNaClManifest(PP_Instance instance, const char* program_url) { | 888 void ProcessNaClManifest(PP_Instance instance, const char* program_url) { |
| 860 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 889 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 861 if (load_manager) | 890 if (load_manager) |
| 862 load_manager->ProcessNaClManifest(program_url); | 891 load_manager->ProcessNaClManifest(program_url); |
| 863 } | 892 } |
| 864 | 893 |
| 865 PP_Var GetManifestURLArgument(PP_Instance instance) { | 894 PP_Var GetManifestURLArgument(PP_Instance instance) { |
| 866 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); | 895 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); |
| 867 if (load_manager) { | 896 if (load_manager) { |
| 868 return ppapi::StringVar::StringToPPVar( | 897 return ppapi::StringVar::StringToPPVar( |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1280 &GetNaClReadyState, | 1309 &GetNaClReadyState, |
| 1281 &GetIsInstalled, | 1310 &GetIsInstalled, |
| 1282 &GetExitStatus, | 1311 &GetExitStatus, |
| 1283 &SetExitStatus, | 1312 &SetExitStatus, |
| 1284 &Vlog, | 1313 &Vlog, |
| 1285 &InitializePlugin, | 1314 &InitializePlugin, |
| 1286 &GetNexeSize, | 1315 &GetNexeSize, |
| 1287 &RequestNaClManifest, | 1316 &RequestNaClManifest, |
| 1288 &GetManifestBaseURL, | 1317 &GetManifestBaseURL, |
| 1289 &ResolvesRelativeToPluginBaseURL, | 1318 &ResolvesRelativeToPluginBaseURL, |
| 1290 &ParseDataURL, | |
| 1291 &ProcessNaClManifest, | 1319 &ProcessNaClManifest, |
| 1292 &GetManifestURLArgument, | 1320 &GetManifestURLArgument, |
| 1293 &DevInterfacesEnabled, | 1321 &DevInterfacesEnabled, |
| 1294 &DownloadManifestToBuffer, | |
| 1295 &CreatePNaClManifest, | 1322 &CreatePNaClManifest, |
| 1296 &CreateJsonManifest, | 1323 &CreateJsonManifest, |
| 1297 &DestroyManifest, | 1324 &DestroyManifest, |
| 1298 &ManifestGetProgramURL, | 1325 &ManifestGetProgramURL, |
| 1299 &ManifestResolveKey, | 1326 &ManifestResolveKey, |
| 1300 &GetPNaClResourceInfo, | 1327 &GetPNaClResourceInfo, |
| 1301 &GetCpuFeatureAttrs, | 1328 &GetCpuFeatureAttrs, |
| 1302 &PostMessageToJavaScript | 1329 &PostMessageToJavaScript |
| 1303 }; | 1330 }; |
| 1304 | 1331 |
| 1305 } // namespace | 1332 } // namespace |
| 1306 | 1333 |
| 1307 const PPB_NaCl_Private* GetNaClPrivateInterface() { | 1334 const PPB_NaCl_Private* GetNaClPrivateInterface() { |
| 1308 return &nacl_interface; | 1335 return &nacl_interface; |
| 1309 } | 1336 } |
| 1310 | 1337 |
| 1311 } // namespace nacl | 1338 } // namespace nacl |
| OLD | NEW |