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

Side by Side Diff: ppapi/native_client/src/trusted/plugin/plugin.cc

Issue 288773002: Pepper: Simplify manifest download logic. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifdef _MSC_VER 5 #ifdef _MSC_VER
6 // Do not warn about use of std::copy with raw pointers. 6 // Do not warn about use of std::copy with raw pointers.
7 #pragma warning(disable : 4996) 7 #pragma warning(disable : 4996)
8 #endif 8 #endif
9 9
10 #include "ppapi/native_client/src/trusted/plugin/plugin.h" 10 #include "ppapi/native_client/src/trusted/plugin/plugin.h"
(...skipping 26 matching lines...) Expand all
37 #include "ppapi/native_client/src/trusted/plugin/nacl_entry_points.h" 37 #include "ppapi/native_client/src/trusted/plugin/nacl_entry_points.h"
38 #include "ppapi/native_client/src/trusted/plugin/nacl_subprocess.h" 38 #include "ppapi/native_client/src/trusted/plugin/nacl_subprocess.h"
39 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h" 39 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h"
40 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h" 40 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h"
41 #include "ppapi/native_client/src/trusted/plugin/utility.h" 41 #include "ppapi/native_client/src/trusted/plugin/utility.h"
42 42
43 namespace plugin { 43 namespace plugin {
44 44
45 namespace { 45 namespace {
46 46
47 // This is a pretty arbitrary limit on the byte size of the NaCl manfest file.
48 // Note that the resulting string object has to have at least one byte extra
49 // for the null termination character.
50 const size_t kNaClManifestMaxFileBytes = 1024 * 1024;
51
52 // Up to 20 seconds 47 // Up to 20 seconds
53 const int64_t kTimeSmallMin = 1; // in ms 48 const int64_t kTimeSmallMin = 1; // in ms
54 const int64_t kTimeSmallMax = 20000; // in ms 49 const int64_t kTimeSmallMax = 20000; // in ms
55 const uint32_t kTimeSmallBuckets = 100; 50 const uint32_t kTimeSmallBuckets = 100;
56 51
57 const int64_t kSizeKBMin = 1; 52 const int64_t kSizeKBMin = 1;
58 const int64_t kSizeKBMax = 512*1024; // very large .nexe 53 const int64_t kSizeKBMax = 512*1024; // very large .nexe
59 const uint32_t kSizeKBBuckets = 100; 54 const uint32_t kSizeKBBuckets = 100;
60 55
61 } // namespace 56 } // namespace
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 true, 586 true,
592 &UpdateDownloadProgress)); 587 &UpdateDownloadProgress));
593 } 588 }
594 return; 589 return;
595 } 590 }
596 } 591 }
597 } 592 }
598 593
599 void Plugin::RequestNaClManifest(const nacl::string& url) { 594 void Plugin::RequestNaClManifest(const nacl::string& url) {
600 PLUGIN_PRINTF(("Plugin::RequestNaClManifest (url='%s')\n", url.c_str())); 595 PLUGIN_PRINTF(("Plugin::RequestNaClManifest (url='%s')\n", url.c_str()));
601 PP_Bool is_data_uri; 596 pp::CompletionCallback open_callback =
602 ErrorInfo error_info; 597 callback_factory_.NewCallback(&Plugin::NaClManifestFileDidOpen);
603 if (!nacl_interface_->RequestNaClManifest(pp_instance(), url.c_str(), 598 nacl_interface_->RequestNaClManifest(pp_instance(),
604 &is_data_uri)) 599 url.c_str(),
605 return; 600 &manifest_data_var_,
606 pp::Var nmf_resolved_url = 601 open_callback.pp_completion_callback());
607 pp::Var(pp::PASS_REF, nacl_interface_->GetManifestBaseURL(pp_instance()));
608 if (is_data_uri) {
609 std::string string_nmf_resolved_url = nmf_resolved_url.AsString();
610 pp::Var nmf_data = pp::Var(
611 pp::PASS_REF,
612 nacl_interface_->ParseDataURL(string_nmf_resolved_url.c_str()));
613 if (!nmf_data.is_string()) {
614 error_info.SetReport(PP_NACL_ERROR_MANIFEST_LOAD_URL,
615 "could not load manifest url.");
616 ReportLoadError(error_info);
617 } else if (nmf_data.AsString().size() > kNaClManifestMaxFileBytes) {
618 error_info.SetReport(PP_NACL_ERROR_MANIFEST_TOO_LARGE,
619 "manifest file too large.");
620 ReportLoadError(error_info);
621 } else {
622 ProcessNaClManifest(nmf_data.AsString());
623 }
624 } else {
625 pp::CompletionCallback open_callback =
626 callback_factory_.NewCallback(&Plugin::NaClManifestFileDidOpen);
627 std::string nmf_resolved_url_str = nmf_resolved_url.AsString();
628 nacl_interface_->DownloadManifestToBuffer(
629 pp_instance(),
630 &manifest_data_var_,
631 open_callback.pp_completion_callback());
632 }
633 } 602 }
634 603
635 604
636 bool Plugin::SetManifestObject(const nacl::string& manifest_json) { 605 bool Plugin::SetManifestObject(const nacl::string& manifest_json) {
637 PLUGIN_PRINTF(("Plugin::SetManifestObject(): manifest_json='%s'.\n", 606 PLUGIN_PRINTF(("Plugin::SetManifestObject(): manifest_json='%s'.\n",
638 manifest_json.c_str())); 607 manifest_json.c_str()));
639 // Determine whether lookups should use portable (i.e., pnacl versions) 608 // Determine whether lookups should use portable (i.e., pnacl versions)
640 // rather than platform-specific files. 609 // rather than platform-specific files.
641 pp::Var manifest_base_url = 610 pp::Var manifest_base_url =
642 pp::Var(pp::PASS_REF, nacl_interface_->GetManifestBaseURL(pp_instance())); 611 pp::Var(pp::PASS_REF, nacl_interface_->GetManifestBaseURL(pp_instance()));
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 829
861 void Plugin::SetExitStatusOnMainThread(int32_t pp_error, 830 void Plugin::SetExitStatusOnMainThread(int32_t pp_error,
862 int exit_status) { 831 int exit_status) {
863 DCHECK(pp::Module::Get()->core()->IsMainThread()); 832 DCHECK(pp::Module::Get()->core()->IsMainThread());
864 DCHECK(nacl_interface_); 833 DCHECK(nacl_interface_);
865 nacl_interface_->SetExitStatus(pp_instance(), exit_status); 834 nacl_interface_->SetExitStatus(pp_instance(), exit_status);
866 } 835 }
867 836
868 837
869 } // namespace plugin 838 } // namespace plugin
OLDNEW
« no previous file with comments | « ppapi/c/private/ppb_nacl_private.h ('k') | ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698