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

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

Issue 20182002: Make inttypes.h and similar macro usage C++11-friendly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: line Created 7 years, 5 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 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 // If the MIME type is foreign, then this NEXE is being used as a content 624 // If the MIME type is foreign, then this NEXE is being used as a content
625 // type handler rather than directly by an HTML document. 625 // type handler rather than directly by an HTML document.
626 return 626 return
627 !mime_type().empty() && 627 !mime_type().empty() &&
628 mime_type() != kNaClMIMEType && 628 mime_type() != kNaClMIMEType &&
629 mime_type() != kPnaclMIMEType; 629 mime_type() != kPnaclMIMEType;
630 } 630 }
631 631
632 632
633 Plugin* Plugin::New(PP_Instance pp_instance) { 633 Plugin* Plugin::New(PP_Instance pp_instance) {
634 PLUGIN_PRINTF(("Plugin::New (pp_instance=%"NACL_PRId32")\n", pp_instance)); 634 PLUGIN_PRINTF(("Plugin::New (pp_instance=%" NACL_PRId32 ")\n", pp_instance));
635 Plugin* plugin = new Plugin(pp_instance); 635 Plugin* plugin = new Plugin(pp_instance);
636 PLUGIN_PRINTF(("Plugin::New (plugin=%p)\n", static_cast<void*>(plugin))); 636 PLUGIN_PRINTF(("Plugin::New (plugin=%p)\n", static_cast<void*>(plugin)));
637 if (plugin == NULL) { 637 if (plugin == NULL) {
638 return NULL; 638 return NULL;
639 } 639 }
640 return plugin; 640 return plugin;
641 } 641 }
642 642
643 643
644 // All failures of this function will show up as "Missing Plugin-in", so 644 // All failures of this function will show up as "Missing Plugin-in", so
645 // there is no need to log to JS console that there was an initialization 645 // there is no need to log to JS console that there was an initialization
646 // failure. Note that module loading functions will log their own errors. 646 // failure. Note that module loading functions will log their own errors.
647 bool Plugin::Init(uint32_t argc, const char* argn[], const char* argv[]) { 647 bool Plugin::Init(uint32_t argc, const char* argn[], const char* argv[]) {
648 PLUGIN_PRINTF(("Plugin::Init (argc=%"NACL_PRIu32")\n", argc)); 648 PLUGIN_PRINTF(("Plugin::Init (argc=%" NACL_PRIu32 ")\n", argc));
649 HistogramEnumerateOsArch(GetSandboxISA()); 649 HistogramEnumerateOsArch(GetSandboxISA());
650 init_time_ = NaClGetTimeOfDayMicroseconds(); 650 init_time_ = NaClGetTimeOfDayMicroseconds();
651 651
652 ScriptablePlugin* scriptable_plugin = ScriptablePlugin::NewPlugin(this); 652 ScriptablePlugin* scriptable_plugin = ScriptablePlugin::NewPlugin(this);
653 if (scriptable_plugin == NULL) 653 if (scriptable_plugin == NULL)
654 return false; 654 return false;
655 655
656 set_scriptable_plugin(scriptable_plugin); 656 set_scriptable_plugin(scriptable_plugin);
657 PLUGIN_PRINTF(("Plugin::Init (scriptable_handle=%p)\n", 657 PLUGIN_PRINTF(("Plugin::Init (scriptable_handle=%p)\n",
658 static_cast<void*>(scriptable_plugin_))); 658 static_cast<void*>(scriptable_plugin_)));
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 nexe_error_reported_(false), 733 nexe_error_reported_(false),
734 wrapper_factory_(NULL), 734 wrapper_factory_(NULL),
735 enable_dev_interfaces_(false), 735 enable_dev_interfaces_(false),
736 is_installed_(false), 736 is_installed_(false),
737 init_time_(0), 737 init_time_(0),
738 ready_time_(0), 738 ready_time_(0),
739 nexe_size_(0), 739 nexe_size_(0),
740 time_of_last_progress_event_(0), 740 time_of_last_progress_event_(0),
741 nacl_interface_(NULL) { 741 nacl_interface_(NULL) {
742 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%" 742 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%"
743 NACL_PRId32")\n", static_cast<void*>(this), pp_instance)); 743 NACL_PRId32 ")\n", static_cast<void*>(this), pp_instance));
744 callback_factory_.Initialize(this); 744 callback_factory_.Initialize(this);
745 nexe_downloader_.Initialize(this); 745 nexe_downloader_.Initialize(this);
746 nacl_interface_ = GetNaClInterface(); 746 nacl_interface_ = GetNaClInterface();
747 CHECK(nacl_interface_ != NULL); 747 CHECK(nacl_interface_ != NULL);
748 } 748 }
749 749
750 750
751 Plugin::~Plugin() { 751 Plugin::~Plugin() {
752 int64_t shutdown_start = NaClGetTimeOfDayMicroseconds(); 752 int64_t shutdown_start = NaClGetTimeOfDayMicroseconds();
753 753
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 837
838 void Plugin::HistogramStartupTimeMedium(const std::string& name, float dt) { 838 void Plugin::HistogramStartupTimeMedium(const std::string& name, float dt) {
839 if (nexe_size_ > 0) { 839 if (nexe_size_ > 0) {
840 float size_in_MB = static_cast<float>(nexe_size_) / (1024.f * 1024.f); 840 float size_in_MB = static_cast<float>(nexe_size_) / (1024.f * 1024.f);
841 HistogramTimeMedium(name, static_cast<int64_t>(dt)); 841 HistogramTimeMedium(name, static_cast<int64_t>(dt));
842 HistogramTimeMedium(name + "PerMB", static_cast<int64_t>(dt / size_in_MB)); 842 HistogramTimeMedium(name + "PerMB", static_cast<int64_t>(dt / size_in_MB));
843 } 843 }
844 } 844 }
845 845
846 void Plugin::NexeFileDidOpen(int32_t pp_error) { 846 void Plugin::NexeFileDidOpen(int32_t pp_error) {
847 PLUGIN_PRINTF(("Plugin::NexeFileDidOpen (pp_error=%"NACL_PRId32")\n", 847 PLUGIN_PRINTF(("Plugin::NexeFileDidOpen (pp_error=%" NACL_PRId32 ")\n",
848 pp_error)); 848 pp_error));
849 struct NaClFileInfo info = nexe_downloader_.GetFileInfo(); 849 struct NaClFileInfo info = nexe_downloader_.GetFileInfo();
850 PLUGIN_PRINTF(("Plugin::NexeFileDidOpen (file_desc=%"NACL_PRId32")\n", 850 PLUGIN_PRINTF(("Plugin::NexeFileDidOpen (file_desc=%" NACL_PRId32 ")\n",
851 info.desc)); 851 info.desc));
852 HistogramHTTPStatusCode( 852 HistogramHTTPStatusCode(
853 is_installed_ ? 853 is_installed_ ?
854 "NaCl.HttpStatusCodeClass.Nexe.InstalledApp" : 854 "NaCl.HttpStatusCodeClass.Nexe.InstalledApp" :
855 "NaCl.HttpStatusCodeClass.Nexe.NotInstalledApp", 855 "NaCl.HttpStatusCodeClass.Nexe.NotInstalledApp",
856 nexe_downloader_.status_code()); 856 nexe_downloader_.status_code());
857 ErrorInfo error_info; 857 ErrorInfo error_info;
858 if (pp_error != PP_OK || info.desc == NACL_NO_FILE_DESC) { 858 if (pp_error != PP_OK || info.desc == NACL_NO_FILE_DESC) {
859 if (pp_error == PP_ERROR_ABORTED) { 859 if (pp_error == PP_ERROR_ABORTED) {
860 ReportLoadAbort(); 860 ReportLoadAbort();
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 PLUGIN_PRINTF(("LogLineToConsole: %s\n", 946 PLUGIN_PRINTF(("LogLineToConsole: %s\n",
947 one_line.c_str())); 947 one_line.c_str()));
948 plugin->AddToConsole(one_line); 948 plugin->AddToConsole(one_line);
949 } 949 }
950 950
951 void Plugin::CopyCrashLogToJsConsole() { 951 void Plugin::CopyCrashLogToJsConsole() {
952 nacl::string fatal_msg(main_service_runtime()->GetCrashLogOutput()); 952 nacl::string fatal_msg(main_service_runtime()->GetCrashLogOutput());
953 size_t ix_start = 0; 953 size_t ix_start = 0;
954 size_t ix_end; 954 size_t ix_end;
955 955
956 PLUGIN_PRINTF(("Plugin::CopyCrashLogToJsConsole: got %"NACL_PRIuS" bytes\n", 956 PLUGIN_PRINTF(("Plugin::CopyCrashLogToJsConsole: got %" NACL_PRIuS " bytes\n",
957 fatal_msg.size())); 957 fatal_msg.size()));
958 while (nacl::string::npos != (ix_end = fatal_msg.find('\n', ix_start))) { 958 while (nacl::string::npos != (ix_end = fatal_msg.find('\n', ix_start))) {
959 LogLineToConsole(this, fatal_msg.substr(ix_start, ix_end - ix_start)); 959 LogLineToConsole(this, fatal_msg.substr(ix_start, ix_end - ix_start));
960 ix_start = ix_end + 1; 960 ix_start = ix_end + 1;
961 } 961 }
962 if (ix_start != fatal_msg.size()) { 962 if (ix_start != fatal_msg.size()) {
963 LogLineToConsole(this, fatal_msg.substr(ix_start)); 963 LogLineToConsole(this, fatal_msg.substr(ix_start));
964 } 964 }
965 } 965 }
966 966
967 void Plugin::NexeDidCrash(int32_t pp_error) { 967 void Plugin::NexeDidCrash(int32_t pp_error) {
968 PLUGIN_PRINTF(("Plugin::NexeDidCrash (pp_error=%"NACL_PRId32")\n", 968 PLUGIN_PRINTF(("Plugin::NexeDidCrash (pp_error=%" NACL_PRId32 ")\n",
969 pp_error)); 969 pp_error));
970 if (pp_error != PP_OK) { 970 if (pp_error != PP_OK) {
971 PLUGIN_PRINTF(("Plugin::NexeDidCrash: CallOnMainThread callback with" 971 PLUGIN_PRINTF(("Plugin::NexeDidCrash: CallOnMainThread callback with"
972 " non-PP_OK arg -- SHOULD NOT HAPPEN\n")); 972 " non-PP_OK arg -- SHOULD NOT HAPPEN\n"));
973 } 973 }
974 PLUGIN_PRINTF(("Plugin::NexeDidCrash: crash event!\n")); 974 PLUGIN_PRINTF(("Plugin::NexeDidCrash: crash event!\n"));
975 int exit_status = main_subprocess_.service_runtime()->exit_status(); 975 int exit_status = main_subprocess_.service_runtime()->exit_status();
976 if (-1 != exit_status) { 976 if (-1 != exit_status) {
977 // The NaCl module voluntarily exited. However, this is still a 977 // The NaCl module voluntarily exited. However, this is still a
978 // crash from the point of view of Pepper, since PPAPI plugins are 978 // crash from the point of view of Pepper, since PPAPI plugins are
(...skipping 26 matching lines...) Expand all
1005 // In all cases, try to grab the crash log. The first error 1005 // In all cases, try to grab the crash log. The first error
1006 // reported may have come from the start_module RPC reply indicating 1006 // reported may have come from the start_module RPC reply indicating
1007 // a validation error or something similar, which wouldn't grab the 1007 // a validation error or something similar, which wouldn't grab the
1008 // crash log. In the event that this is called twice, the second 1008 // crash log. In the event that this is called twice, the second
1009 // invocation will just be a no-op, since all the crash log will 1009 // invocation will just be a no-op, since all the crash log will
1010 // have been received and we'll just get an EOF indication. 1010 // have been received and we'll just get an EOF indication.
1011 CopyCrashLogToJsConsole(); 1011 CopyCrashLogToJsConsole();
1012 } 1012 }
1013 1013
1014 void Plugin::BitcodeDidTranslate(int32_t pp_error) { 1014 void Plugin::BitcodeDidTranslate(int32_t pp_error) {
1015 PLUGIN_PRINTF(("Plugin::BitcodeDidTranslate (pp_error=%"NACL_PRId32")\n", 1015 PLUGIN_PRINTF(("Plugin::BitcodeDidTranslate (pp_error=%" NACL_PRId32 ")\n",
1016 pp_error)); 1016 pp_error));
1017 if (pp_error != PP_OK) { 1017 if (pp_error != PP_OK) {
1018 // Error should have been reported by pnacl. Just return. 1018 // Error should have been reported by pnacl. Just return.
1019 PLUGIN_PRINTF(("Plugin::BitcodeDidTranslate error in Pnacl\n")); 1019 PLUGIN_PRINTF(("Plugin::BitcodeDidTranslate error in Pnacl\n"));
1020 return; 1020 return;
1021 } 1021 }
1022 1022
1023 // Inform JavaScript that we successfully translated the bitcode to a nexe. 1023 // Inform JavaScript that we successfully translated the bitcode to a nexe.
1024 nacl::scoped_ptr<nacl::DescWrapper> 1024 nacl::scoped_ptr<nacl::DescWrapper>
1025 wrapper(pnacl_coordinator_.get()->ReleaseTranslatedFD()); 1025 wrapper(pnacl_coordinator_.get()->ReleaseTranslatedFD());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 // else ReportLoadError() and ReportAbortError() will be used by loading code 1073 // else ReportLoadError() and ReportAbortError() will be used by loading code
1074 // to provide error handling. 1074 // to provide error handling.
1075 // 1075 //
1076 // NOTE: not all crashes during load will make it here. 1076 // NOTE: not all crashes during load will make it here.
1077 // Those in BrowserPpp::InitializeModule and creation of PPP interfaces 1077 // Those in BrowserPpp::InitializeModule and creation of PPP interfaces
1078 // will just get reported back as PP_ERROR_FAILED. 1078 // will just get reported back as PP_ERROR_FAILED.
1079 } 1079 }
1080 1080
1081 void Plugin::NaClManifestBufferReady(int32_t pp_error) { 1081 void Plugin::NaClManifestBufferReady(int32_t pp_error) {
1082 PLUGIN_PRINTF(("Plugin::NaClManifestBufferReady (pp_error=%" 1082 PLUGIN_PRINTF(("Plugin::NaClManifestBufferReady (pp_error=%"
1083 NACL_PRId32")\n", pp_error)); 1083 NACL_PRId32 ")\n", pp_error));
1084 ErrorInfo error_info; 1084 ErrorInfo error_info;
1085 set_manifest_url(nexe_downloader_.url()); 1085 set_manifest_url(nexe_downloader_.url());
1086 if (pp_error != PP_OK) { 1086 if (pp_error != PP_OK) {
1087 if (pp_error == PP_ERROR_ABORTED) { 1087 if (pp_error == PP_ERROR_ABORTED) {
1088 ReportLoadAbort(); 1088 ReportLoadAbort();
1089 } else { 1089 } else {
1090 error_info.SetReport(ERROR_MANIFEST_LOAD_URL, 1090 error_info.SetReport(ERROR_MANIFEST_LOAD_URL,
1091 "could not load manifest url."); 1091 "could not load manifest url.");
1092 ReportLoadError(error_info); 1092 ReportLoadError(error_info);
1093 } 1093 }
(...skipping 16 matching lines...) Expand all
1110 return; 1110 return;
1111 } 1111 }
1112 std::copy(buffer.begin(), buffer.begin() + buffer_size, &json_buffer[0]); 1112 std::copy(buffer.begin(), buffer.begin() + buffer_size, &json_buffer[0]);
1113 json_buffer[buffer_size] = '\0'; 1113 json_buffer[buffer_size] = '\0';
1114 1114
1115 ProcessNaClManifest(json_buffer.get()); 1115 ProcessNaClManifest(json_buffer.get());
1116 } 1116 }
1117 1117
1118 void Plugin::NaClManifestFileDidOpen(int32_t pp_error) { 1118 void Plugin::NaClManifestFileDidOpen(int32_t pp_error) {
1119 PLUGIN_PRINTF(("Plugin::NaClManifestFileDidOpen (pp_error=%" 1119 PLUGIN_PRINTF(("Plugin::NaClManifestFileDidOpen (pp_error=%"
1120 NACL_PRId32")\n", pp_error)); 1120 NACL_PRId32 ")\n", pp_error));
1121 HistogramTimeSmall("NaCl.Perf.StartupTime.ManifestDownload", 1121 HistogramTimeSmall("NaCl.Perf.StartupTime.ManifestDownload",
1122 nexe_downloader_.TimeSinceOpenMilliseconds()); 1122 nexe_downloader_.TimeSinceOpenMilliseconds());
1123 HistogramHTTPStatusCode( 1123 HistogramHTTPStatusCode(
1124 is_installed_ ? 1124 is_installed_ ?
1125 "NaCl.HttpStatusCodeClass.Manifest.InstalledApp" : 1125 "NaCl.HttpStatusCodeClass.Manifest.InstalledApp" :
1126 "NaCl.HttpStatusCodeClass.Manifest.NotInstalledApp", 1126 "NaCl.HttpStatusCodeClass.Manifest.NotInstalledApp",
1127 nexe_downloader_.status_code()); 1127 nexe_downloader_.status_code());
1128 ErrorInfo error_info; 1128 ErrorInfo error_info;
1129 // The manifest file was successfully opened. Set the src property on the 1129 // The manifest file was successfully opened. Set the src property on the
1130 // plugin now, so that the full url is available to error handlers. 1130 // plugin now, so that the full url is available to error handlers.
1131 set_manifest_url(nexe_downloader_.url()); 1131 set_manifest_url(nexe_downloader_.url());
1132 struct NaClFileInfo info = nexe_downloader_.GetFileInfo(); 1132 struct NaClFileInfo info = nexe_downloader_.GetFileInfo();
1133 PLUGIN_PRINTF(("Plugin::NaClManifestFileDidOpen (file_desc=%" 1133 PLUGIN_PRINTF(("Plugin::NaClManifestFileDidOpen (file_desc=%"
1134 NACL_PRId32")\n", info.desc)); 1134 NACL_PRId32 ")\n", info.desc));
1135 if (pp_error != PP_OK || info.desc == NACL_NO_FILE_DESC) { 1135 if (pp_error != PP_OK || info.desc == NACL_NO_FILE_DESC) {
1136 if (pp_error == PP_ERROR_ABORTED) { 1136 if (pp_error == PP_ERROR_ABORTED) {
1137 ReportLoadAbort(); 1137 ReportLoadAbort();
1138 } else if (pp_error == PP_ERROR_NOACCESS) { 1138 } else if (pp_error == PP_ERROR_NOACCESS) {
1139 error_info.SetReport(ERROR_MANIFEST_NOACCESS_URL, 1139 error_info.SetReport(ERROR_MANIFEST_NOACCESS_URL,
1140 "access to manifest url was denied."); 1140 "access to manifest url was denied.");
1141 ReportLoadError(error_info); 1141 ReportLoadError(error_info);
1142 } else { 1142 } else {
1143 error_info.SetReport(ERROR_MANIFEST_LOAD_URL, 1143 error_info.SetReport(ERROR_MANIFEST_LOAD_URL,
1144 "could not load manifest url."); 1144 "could not load manifest url.");
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
1306 if (!json_manifest->Init(manifest_json, error_info)) { 1306 if (!json_manifest->Init(manifest_json, error_info)) {
1307 return false; 1307 return false;
1308 } 1308 }
1309 manifest_.reset(json_manifest.release()); 1309 manifest_.reset(json_manifest.release());
1310 return true; 1310 return true;
1311 } 1311 }
1312 1312
1313 void Plugin::UrlDidOpenForStreamAsFile(int32_t pp_error, 1313 void Plugin::UrlDidOpenForStreamAsFile(int32_t pp_error,
1314 FileDownloader*& url_downloader, 1314 FileDownloader*& url_downloader,
1315 PP_CompletionCallback callback) { 1315 PP_CompletionCallback callback) {
1316 PLUGIN_PRINTF(("Plugin::UrlDidOpen (pp_error=%"NACL_PRId32 1316 PLUGIN_PRINTF(("Plugin::UrlDidOpen (pp_error=%" NACL_PRId32
1317 ", url_downloader=%p)\n", pp_error, 1317 ", url_downloader=%p)\n", pp_error,
1318 static_cast<void*>(url_downloader))); 1318 static_cast<void*>(url_downloader)));
1319 url_downloaders_.erase(url_downloader); 1319 url_downloaders_.erase(url_downloader);
1320 nacl::scoped_ptr<FileDownloader> scoped_url_downloader(url_downloader); 1320 nacl::scoped_ptr<FileDownloader> scoped_url_downloader(url_downloader);
1321 struct NaClFileInfo info = scoped_url_downloader->GetFileInfo(); 1321 struct NaClFileInfo info = scoped_url_downloader->GetFileInfo();
1322 1322
1323 if (pp_error != PP_OK) { 1323 if (pp_error != PP_OK) {
1324 PP_RunCompletionCallback(&callback, pp_error); 1324 PP_RunCompletionCallback(&callback, pp_error);
1325 } else if (info.desc > NACL_NO_FILE_DESC) { 1325 } else if (info.desc > NACL_NO_FILE_DESC) {
1326 url_file_info_map_[url_downloader->url_to_open()] = info; 1326 url_file_info_map_[url_downloader->url_to_open()] = info;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 Plugin::kUnknownBytes); 1506 Plugin::kUnknownBytes);
1507 } 1507 }
1508 1508
1509 void Plugin::EnqueueProgressEvent(const char* event_type, 1509 void Plugin::EnqueueProgressEvent(const char* event_type,
1510 const nacl::string& url, 1510 const nacl::string& url,
1511 LengthComputable length_computable, 1511 LengthComputable length_computable,
1512 uint64_t loaded_bytes, 1512 uint64_t loaded_bytes,
1513 uint64_t total_bytes) { 1513 uint64_t total_bytes) {
1514 PLUGIN_PRINTF(("Plugin::EnqueueProgressEvent (" 1514 PLUGIN_PRINTF(("Plugin::EnqueueProgressEvent ("
1515 "event_type='%s', url='%s', length_computable=%d, " 1515 "event_type='%s', url='%s', length_computable=%d, "
1516 "loaded=%"NACL_PRIu64", total=%"NACL_PRIu64")\n", 1516 "loaded=%" NACL_PRIu64 ", total=%" NACL_PRIu64 ")\n",
1517 event_type, 1517 event_type,
1518 url.c_str(), 1518 url.c_str(),
1519 static_cast<int>(length_computable), 1519 static_cast<int>(length_computable),
1520 loaded_bytes, 1520 loaded_bytes,
1521 total_bytes)); 1521 total_bytes));
1522 1522
1523 progress_events_.push(new ProgressEvent(event_type, 1523 progress_events_.push(new ProgressEvent(event_type,
1524 url, 1524 url,
1525 length_computable, 1525 length_computable,
1526 loaded_bytes, 1526 loaded_bytes,
1527 total_bytes)); 1527 total_bytes));
1528 // Note that using callback_factory_ in this way is not thread safe. 1528 // Note that using callback_factory_ in this way is not thread safe.
1529 // If/when EnqueueProgressEvent is callable from another thread, this 1529 // If/when EnqueueProgressEvent is callable from another thread, this
1530 // will need to change. 1530 // will need to change.
1531 pp::CompletionCallback callback = 1531 pp::CompletionCallback callback =
1532 callback_factory_.NewCallback(&Plugin::DispatchProgressEvent); 1532 callback_factory_.NewCallback(&Plugin::DispatchProgressEvent);
1533 pp::Core* core = pp::Module::Get()->core(); 1533 pp::Core* core = pp::Module::Get()->core();
1534 core->CallOnMainThread(0, callback, 0); 1534 core->CallOnMainThread(0, callback, 0);
1535 } 1535 }
1536 1536
1537 void Plugin::ReportSelLdrLoadStatus(int status) { 1537 void Plugin::ReportSelLdrLoadStatus(int status) {
1538 HistogramEnumerateSelLdrLoadStatus(static_cast<NaClErrorCode>(status), 1538 HistogramEnumerateSelLdrLoadStatus(static_cast<NaClErrorCode>(status),
1539 is_installed_); 1539 is_installed_);
1540 } 1540 }
1541 1541
1542 void Plugin::DispatchProgressEvent(int32_t result) { 1542 void Plugin::DispatchProgressEvent(int32_t result) {
1543 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent (result=%" 1543 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent (result=%"
1544 NACL_PRId32")\n", result)); 1544 NACL_PRId32 ")\n", result));
1545 if (result < 0) { 1545 if (result < 0) {
1546 return; 1546 return;
1547 } 1547 }
1548 if (progress_events_.empty()) { 1548 if (progress_events_.empty()) {
1549 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent: no pending events\n")); 1549 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent: no pending events\n"));
1550 return; 1550 return;
1551 } 1551 }
1552 nacl::scoped_ptr<ProgressEvent> event(progress_events_.front()); 1552 nacl::scoped_ptr<ProgressEvent> event(progress_events_.front());
1553 progress_events_.pop(); 1553 progress_events_.pop();
1554 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent (" 1554 PLUGIN_PRINTF(("Plugin::DispatchProgressEvent ("
1555 "event_type='%s', url='%s', length_computable=%d, " 1555 "event_type='%s', url='%s', length_computable=%d, "
1556 "loaded=%"NACL_PRIu64", total=%"NACL_PRIu64")\n", 1556 "loaded=%" NACL_PRIu64 ", total=%" NACL_PRIu64 ")\n",
1557 event->event_type(), 1557 event->event_type(),
1558 event->url(), 1558 event->url(),
1559 static_cast<int>(event->length_computable()), 1559 static_cast<int>(event->length_computable()),
1560 event->loaded_bytes(), 1560 event->loaded_bytes(),
1561 event->total_bytes())); 1561 event->total_bytes()));
1562 1562
1563 static const char* kEventClosureJS = 1563 static const char* kEventClosureJS =
1564 "(function(target, type, url," 1564 "(function(target, type, url,"
1565 " lengthComputable, loadedBytes, totalBytes) {" 1565 " lengthComputable, loadedBytes, totalBytes) {"
1566 " var progress_event = new ProgressEvent(type, {" 1566 " var progress_event = new ProgressEvent(type, {"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 static_cast<uint32_t>(text.size())); 1682 static_cast<uint32_t>(text.size()));
1683 const PPB_Console* console_interface = 1683 const PPB_Console* console_interface =
1684 static_cast<const PPB_Console*>( 1684 static_cast<const PPB_Console*>(
1685 module->GetBrowserInterface(PPB_CONSOLE_INTERFACE)); 1685 module->GetBrowserInterface(PPB_CONSOLE_INTERFACE));
1686 console_interface->LogWithSource(pp_instance(), PP_LOGLEVEL_LOG, prefix, str); 1686 console_interface->LogWithSource(pp_instance(), PP_LOGLEVEL_LOG, prefix, str);
1687 var_interface->Release(prefix); 1687 var_interface->Release(prefix);
1688 var_interface->Release(str); 1688 var_interface->Release(str);
1689 } 1689 }
1690 1690
1691 } // namespace plugin 1691 } // namespace plugin
OLDNEW
« no previous file with comments | « ppapi/native_client/src/trusted/plugin/module_ppapi.cc ('k') | ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698