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

Side by Side Diff: components/nacl/renderer/ppb_nacl_private_impl.cc

Issue 231243002: PPAPI: Move some of NexeFileDidOpen to NexeLoadManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix crash 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
« no previous file with comments | « components/nacl/renderer/nexe_load_manager.cc ('k') | ppapi/api/private/ppb_nacl_private.idl » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/containers/scoped_ptr_hash_map.h" 8 #include "base/containers/scoped_ptr_hash_map.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 if (load_manager) { 469 if (load_manager) {
470 nacl::NexeLoadManager::ProgressEvent event(event_type); 470 nacl::NexeLoadManager::ProgressEvent event(event_type);
471 event.resource_url = resource_url; 471 event.resource_url = resource_url;
472 event.length_is_computable = PP_ToBool(length_is_computable); 472 event.length_is_computable = PP_ToBool(length_is_computable);
473 event.loaded_bytes = loaded_bytes; 473 event.loaded_bytes = loaded_bytes;
474 event.total_bytes = total_bytes; 474 event.total_bytes = total_bytes;
475 load_manager->DispatchEvent(event); 475 load_manager->DispatchEvent(event);
476 } 476 }
477 } 477 }
478 478
479 void NexeFileDidOpen(PP_Instance instance,
480 int32_t pp_error,
481 int32_t fd,
482 int32_t http_status,
483 int64_t nexe_bytes_read,
484 const char* url) {
485 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance);
486 if (load_manager) {
487 load_manager->NexeFileDidOpen(pp_error,
488 fd,
489 http_status,
490 nexe_bytes_read,
491 url);
492 }
493 }
494
479 void ReportLoadSuccess(PP_Instance instance, 495 void ReportLoadSuccess(PP_Instance instance,
480 const char* url, 496 const char* url,
481 uint64_t loaded_bytes, 497 uint64_t loaded_bytes,
482 uint64_t total_bytes) { 498 uint64_t total_bytes) {
483 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); 499 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance);
484 if (load_manager) 500 if (load_manager)
485 load_manager->ReportLoadSuccess(url, loaded_bytes, total_bytes); 501 load_manager->ReportLoadSuccess(url, loaded_bytes, total_bytes);
486 } 502 }
487 503
488 void ReportLoadError(PP_Instance instance, 504 void ReportLoadError(PP_Instance instance,
(...skipping 21 matching lines...) Expand all
510 scoped_ptr<nacl::NexeLoadManager> new_load_manager( 526 scoped_ptr<nacl::NexeLoadManager> new_load_manager(
511 new nacl::NexeLoadManager(instance)); 527 new nacl::NexeLoadManager(instance));
512 NexeLoadManagerMap& map = g_load_manager_map.Get(); 528 NexeLoadManagerMap& map = g_load_manager_map.Get();
513 DLOG_IF(ERROR, map.count(instance) != 0) << "Instance count should be 0"; 529 DLOG_IF(ERROR, map.count(instance) != 0) << "Instance count should be 0";
514 map.add(instance, new_load_manager.Pass()); 530 map.add(instance, new_load_manager.Pass());
515 } 531 }
516 532
517 void InstanceDestroyed(PP_Instance instance) { 533 void InstanceDestroyed(PP_Instance instance) {
518 NexeLoadManagerMap& map = g_load_manager_map.Get(); 534 NexeLoadManagerMap& map = g_load_manager_map.Get();
519 DLOG_IF(ERROR, map.count(instance) == 0) << "Could not find instance ID"; 535 DLOG_IF(ERROR, map.count(instance) == 0) << "Could not find instance ID";
536 // The erase may call NexeLoadManager's destructor prior to removing it from
537 // the map. In that case, it is possible for the trusted Plugin to re-enter
538 // the NexeLoadManager (e.g., by calling ReportLoadError). Passing out the
539 // NexeLoadManager to a local scoped_ptr just ensures that its entry is gone
540 // from the map prior to the destructor being invoked.
541 scoped_ptr<nacl::NexeLoadManager> temp(map.take(instance));
520 map.erase(instance); 542 map.erase(instance);
521 } 543 }
522 544
523 PP_Bool NaClDebugEnabledForURL(const char* alleged_nmf_url) { 545 PP_Bool NaClDebugEnabledForURL(const char* alleged_nmf_url) {
524 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaClDebug)) 546 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaClDebug))
525 return PP_FALSE; 547 return PP_FALSE;
526 bool should_debug; 548 bool should_debug;
527 IPC::Sender* sender = content::RenderThread::Get(); 549 IPC::Sender* sender = content::RenderThread::Get();
528 DCHECK(sender); 550 DCHECK(sender);
529 if(!sender->Send(new NaClHostMsg_NaClDebugEnabledForURL( 551 if(!sender->Send(new NaClHostMsg_NaClDebugEnabledForURL(
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 644 }
623 645
624 int64_t GetNexeSize(PP_Instance instance) { 646 int64_t GetNexeSize(PP_Instance instance) {
625 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance); 647 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance);
626 DCHECK(load_manager); 648 DCHECK(load_manager);
627 if (load_manager) 649 if (load_manager)
628 return load_manager->nexe_size(); 650 return load_manager->nexe_size();
629 return 0; 651 return 0;
630 } 652 }
631 653
632 void SetNexeSize(PP_Instance instance, int64_t nexe_size) {
633 nacl::NexeLoadManager* load_manager = GetNexeLoadManager(instance);
634 DCHECK(load_manager);
635 if (load_manager)
636 return load_manager->set_nexe_size(nexe_size);
637 }
638
639 const PPB_NaCl_Private nacl_interface = { 654 const PPB_NaCl_Private nacl_interface = {
640 &LaunchSelLdr, 655 &LaunchSelLdr,
641 &StartPpapiProxy, 656 &StartPpapiProxy,
642 &UrandomFD, 657 &UrandomFD,
643 &Are3DInterfacesDisabled, 658 &Are3DInterfacesDisabled,
644 &BrokerDuplicateHandle, 659 &BrokerDuplicateHandle,
645 &GetReadonlyPnaclFD, 660 &GetReadonlyPnaclFD,
646 &CreateTemporaryFile, 661 &CreateTemporaryFile,
647 &GetNumberOfProcessors, 662 &GetNumberOfProcessors,
648 &IsNonSFIModeEnabled, 663 &IsNonSFIModeEnabled,
649 &GetNexeFd, 664 &GetNexeFd,
650 &ReportTranslationFinished, 665 &ReportTranslationFinished,
651 &OpenNaClExecutable, 666 &OpenNaClExecutable,
652 &DispatchEvent, 667 &DispatchEvent,
668 &NexeFileDidOpen,
653 &ReportLoadSuccess, 669 &ReportLoadSuccess,
654 &ReportLoadError, 670 &ReportLoadError,
655 &ReportLoadAbort, 671 &ReportLoadAbort,
656 &NexeDidCrash, 672 &NexeDidCrash,
657 &InstanceCreated, 673 &InstanceCreated,
658 &InstanceDestroyed, 674 &InstanceDestroyed,
659 &NaClDebugEnabledForURL, 675 &NaClDebugEnabledForURL,
660 &GetSandboxArch, 676 &GetSandboxArch,
661 &GetUrlScheme, 677 &GetUrlScheme,
662 &LogToConsole, 678 &LogToConsole,
663 &GetNaClReadyState, 679 &GetNaClReadyState,
664 &SetNaClReadyState, 680 &SetNaClReadyState,
665 &GetIsInstalled, 681 &GetIsInstalled,
666 &SetIsInstalled, 682 &SetIsInstalled,
667 &SetReadyTime, 683 &SetReadyTime,
668 &GetExitStatus, 684 &GetExitStatus,
669 &SetExitStatus, 685 &SetExitStatus,
670 &Vlog, 686 &Vlog,
671 &SetInitTime, 687 &SetInitTime,
672 &GetNexeSize, 688 &GetNexeSize
673 &SetNexeSize
674 }; 689 };
675 690
676 } // namespace 691 } // namespace
677 692
678 namespace nacl { 693 namespace nacl {
679 694
680 const PPB_NaCl_Private* GetNaClPrivateInterface() { 695 const PPB_NaCl_Private* GetNaClPrivateInterface() {
681 return &nacl_interface; 696 return &nacl_interface;
682 } 697 }
683 698
684 } // namespace nacl 699 } // namespace nacl
OLDNEW
« no previous file with comments | « components/nacl/renderer/nexe_load_manager.cc ('k') | ppapi/api/private/ppb_nacl_private.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698