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

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

Issue 222203003: Pepper: Move exit_status to NexeLoadManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More build fixes Created 6 years, 8 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 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 575
576 Plugin::Plugin(PP_Instance pp_instance) 576 Plugin::Plugin(PP_Instance pp_instance)
577 : pp::Instance(pp_instance), 577 : pp::Instance(pp_instance),
578 main_subprocess_("main subprocess", NULL, NULL), 578 main_subprocess_("main subprocess", NULL, NULL),
579 uses_nonsfi_mode_(false), 579 uses_nonsfi_mode_(false),
580 wrapper_factory_(NULL), 580 wrapper_factory_(NULL),
581 enable_dev_interfaces_(false), 581 enable_dev_interfaces_(false),
582 init_time_(0), 582 init_time_(0),
583 nexe_size_(0), 583 nexe_size_(0),
584 time_of_last_progress_event_(0), 584 time_of_last_progress_event_(0),
585 exit_status_(-1),
586 nacl_interface_(NULL), 585 nacl_interface_(NULL),
587 uma_interface_(this) { 586 uma_interface_(this) {
588 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%" 587 PLUGIN_PRINTF(("Plugin::Plugin (this=%p, pp_instance=%"
589 NACL_PRId32 ")\n", static_cast<void*>(this), pp_instance)); 588 NACL_PRId32 ")\n", static_cast<void*>(this), pp_instance));
590 callback_factory_.Initialize(this); 589 callback_factory_.Initialize(this);
591 nexe_downloader_.Initialize(this); 590 nexe_downloader_.Initialize(this);
592 nacl_interface_ = GetNaClInterface(); 591 nacl_interface_ = GetNaClInterface();
593 CHECK(nacl_interface_ != NULL); 592 CHECK(nacl_interface_ != NULL);
594 593
595 // Notify PPB_NaCl_Private that the instance is created before altering any 594 // Notify PPB_NaCl_Private that the instance is created before altering any
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 } 803 }
805 804
806 void Plugin::NexeDidCrash(int32_t pp_error) { 805 void Plugin::NexeDidCrash(int32_t pp_error) {
807 PLUGIN_PRINTF(("Plugin::NexeDidCrash (pp_error=%" NACL_PRId32 ")\n", 806 PLUGIN_PRINTF(("Plugin::NexeDidCrash (pp_error=%" NACL_PRId32 ")\n",
808 pp_error)); 807 pp_error));
809 if (pp_error != PP_OK) { 808 if (pp_error != PP_OK) {
810 PLUGIN_PRINTF(("Plugin::NexeDidCrash: CallOnMainThread callback with" 809 PLUGIN_PRINTF(("Plugin::NexeDidCrash: CallOnMainThread callback with"
811 " non-PP_OK arg -- SHOULD NOT HAPPEN\n")); 810 " non-PP_OK arg -- SHOULD NOT HAPPEN\n"));
812 } 811 }
813 PLUGIN_PRINTF(("Plugin::NexeDidCrash: crash event!\n")); 812 PLUGIN_PRINTF(("Plugin::NexeDidCrash: crash event!\n"));
814 if (-1 != exit_status()) { 813 int exit_status = nacl_interface_->GetExitStatus(pp_instance());
814 if (exit_status != -1) {
dmichael (off chromium) 2014/04/02 19:01:41 Pardon the stupid question, but is -1 a viable exi
815 // The NaCl module voluntarily exited. However, this is still a 815 // The NaCl module voluntarily exited. However, this is still a
816 // crash from the point of view of Pepper, since PPAPI plugins are 816 // crash from the point of view of Pepper, since PPAPI plugins are
817 // event handlers and should never exit. 817 // event handlers and should never exit.
818 PLUGIN_PRINTF((("Plugin::NexeDidCrash: nexe exited with status %d" 818 PLUGIN_PRINTF((("Plugin::NexeDidCrash: nexe exited with status %d"
819 " so this is a \"controlled crash\".\n"), 819 " so this is a \"controlled crash\".\n"),
820 exit_status())); 820 exit_status));
821 } 821 }
822 // If the crash occurs during load, we just want to report an error 822 // If the crash occurs during load, we just want to report an error
823 // that fits into our load progress event grammar. If the crash 823 // that fits into our load progress event grammar. If the crash
824 // occurs after loaded/loadend, then we use ReportDeadNexe to send a 824 // occurs after loaded/loadend, then we use ReportDeadNexe to send a
825 // "crash" event. 825 // "crash" event.
826 if (nacl_interface_->GetNexeErrorReported(pp_instance())) { 826 if (nacl_interface_->GetNexeErrorReported(pp_instance())) {
827 PLUGIN_PRINTF(("Plugin::NexeDidCrash: error already reported;" 827 PLUGIN_PRINTF(("Plugin::NexeDidCrash: error already reported;"
828 " suppressing\n")); 828 " suppressing\n"));
829 } else { 829 } else {
830 if (nacl_interface_->GetNaClReadyState(pp_instance()) == 830 if (nacl_interface_->GetNaClReadyState(pp_instance()) ==
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 callback_factory_.NewCallback(&Plugin::SetExitStatusOnMainThread, 1365 callback_factory_.NewCallback(&Plugin::SetExitStatusOnMainThread,
1366 exit_status); 1366 exit_status);
1367 core->CallOnMainThread(0, callback, 0); 1367 core->CallOnMainThread(0, callback, 0);
1368 } 1368 }
1369 } 1369 }
1370 1370
1371 void Plugin::SetExitStatusOnMainThread(int32_t pp_error, 1371 void Plugin::SetExitStatusOnMainThread(int32_t pp_error,
1372 int exit_status) { 1372 int exit_status) {
1373 DCHECK(pp::Module::Get()->core()->IsMainThread()); 1373 DCHECK(pp::Module::Get()->core()->IsMainThread());
1374 DCHECK(nacl_interface_); 1374 DCHECK(nacl_interface_);
1375 exit_status_ = exit_status; 1375 nacl_interface_->SetExitStatus(pp_instance(), exit_status);
1376 nacl_interface_->SetReadOnlyProperty(pp_instance(),
1377 pp::Var("exitStatus").pp_var(),
1378 pp::Var(exit_status_).pp_var());
1379 } 1376 }
1380 1377
1381 1378
1382 } // namespace plugin 1379 } // namespace plugin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698