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

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

Issue 484783002: Pepper: Report NaCl exit status over Chromium IPC. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes for mseaborn Created 6 years, 4 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 #include "ppapi/native_client/src/trusted/plugin/plugin.h" 5 #include "ppapi/native_client/src/trusted/plugin/plugin.h"
6 6
7 #include <sys/stat.h> 7 #include <sys/stat.h>
8 #include <sys/types.h> 8 #include <sys/types.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 wrapper_factory_(NULL), 268 wrapper_factory_(NULL),
269 nacl_interface_(NULL), 269 nacl_interface_(NULL),
270 uma_interface_(this) { 270 uma_interface_(this) {
271 callback_factory_.Initialize(this); 271 callback_factory_.Initialize(this);
272 nacl_interface_ = GetNaClInterface(); 272 nacl_interface_ = GetNaClInterface();
273 CHECK(nacl_interface_ != NULL); 273 CHECK(nacl_interface_ != NULL);
274 274
275 // Notify PPB_NaCl_Private that the instance is created before altering any 275 // Notify PPB_NaCl_Private that the instance is created before altering any
276 // state that it tracks. 276 // state that it tracks.
277 nacl_interface_->InstanceCreated(pp_instance); 277 nacl_interface_->InstanceCreated(pp_instance);
278 // We call set_exit_status() here to ensure that the 'exitStatus' property is
279 // set. This can only be called when nacl_interface_ is not NULL.
280 set_exit_status(-1);
281 nexe_file_info_ = kInvalidNaClFileInfo; 278 nexe_file_info_ = kInvalidNaClFileInfo;
282 } 279 }
283 280
284 281
285 Plugin::~Plugin() { 282 Plugin::~Plugin() {
286 int64_t shutdown_start = NaClGetTimeOfDayMicroseconds(); 283 int64_t shutdown_start = NaClGetTimeOfDayMicroseconds();
287 284
288 // Destroy the coordinator while the rest of the data is still there 285 // Destroy the coordinator while the rest of the data is still there
289 pnacl_coordinator_.reset(NULL); 286 pnacl_coordinator_.reset(NULL);
290 287
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 error_info.error_code(), 442 error_info.error_code(),
446 error_info.message().c_str()); 443 error_info.message().c_str());
447 } 444 }
448 445
449 bool Plugin::DocumentCanRequest(const std::string& url) { 446 bool Plugin::DocumentCanRequest(const std::string& url) {
450 CHECK(pp::Module::Get()->core()->IsMainThread()); 447 CHECK(pp::Module::Get()->core()->IsMainThread());
451 CHECK(pp::URLUtil_Dev::Get() != NULL); 448 CHECK(pp::URLUtil_Dev::Get() != NULL);
452 return pp::URLUtil_Dev::Get()->DocumentCanRequest(this, pp::Var(url)); 449 return pp::URLUtil_Dev::Get()->DocumentCanRequest(this, pp::Var(url));
453 } 450 }
454 451
455 void Plugin::set_exit_status(int exit_status) {
456 pp::Core* core = pp::Module::Get()->core();
457 if (core->IsMainThread()) {
458 SetExitStatusOnMainThread(PP_OK, exit_status);
459 } else {
460 pp::CompletionCallback callback =
461 callback_factory_.NewCallback(&Plugin::SetExitStatusOnMainThread,
462 exit_status);
463 core->CallOnMainThread(0, callback, 0);
464 }
465 }
466
467 void Plugin::SetExitStatusOnMainThread(int32_t pp_error,
468 int exit_status) {
469 DCHECK(pp::Module::Get()->core()->IsMainThread());
470 DCHECK(nacl_interface_);
471 nacl_interface_->SetExitStatus(pp_instance(), exit_status);
472 }
473
474
475 } // namespace plugin 452 } // namespace plugin
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698