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

Side by Side Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 24514003: Make BrowserMessageFilter not derive from IPC::ChannelProxy::MessageFilter. This allows us to hide … (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 2 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 // Represents the browser side of the browser <--> renderer communication 5 // Represents the browser side of the browser <--> renderer communication
6 // channel. There will be one RenderProcessHost per renderer process. 6 // channel. There will be one RenderProcessHost per renderer process.
7 7
8 #include "content/browser/renderer_host/render_process_host_impl.h" 8 #include "content/browser/renderer_host/render_process_host_impl.h"
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 gpu_observer_registered_ = true; 523 gpu_observer_registered_ = true;
524 GpuDataManagerImpl::GetInstance()->AddObserver(this); 524 GpuDataManagerImpl::GetInstance()->AddObserver(this);
525 } 525 }
526 526
527 is_initialized_ = true; 527 is_initialized_ = true;
528 return true; 528 return true;
529 } 529 }
530 530
531 void RenderProcessHostImpl::CreateMessageFilters() { 531 void RenderProcessHostImpl::CreateMessageFilters() {
532 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 532 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
533 channel_->AddFilter(new ResourceSchedulerFilter(GetID())); 533 AddFilter(new ResourceSchedulerFilter(GetID()));
534 MediaInternals* media_internals = MediaInternals::GetInstance();; 534 MediaInternals* media_internals = MediaInternals::GetInstance();;
535 media::AudioManager* audio_manager = 535 media::AudioManager* audio_manager =
536 BrowserMainLoop::GetInstance()->audio_manager(); 536 BrowserMainLoop::GetInstance()->audio_manager();
537 // Add BrowserPluginMessageFilter to ensure it gets the first stab at messages 537 // Add BrowserPluginMessageFilter to ensure it gets the first stab at messages
538 // from guests. 538 // from guests.
539 if (supports_browser_plugin_) { 539 if (supports_browser_plugin_) {
540 scoped_refptr<BrowserPluginMessageFilter> bp_message_filter( 540 scoped_refptr<BrowserPluginMessageFilter> bp_message_filter(
541 new BrowserPluginMessageFilter(GetID(), IsGuest())); 541 new BrowserPluginMessageFilter(GetID(), IsGuest()));
542 channel_->AddFilter(bp_message_filter.get()); 542 AddFilter(bp_message_filter.get());
543 } 543 }
544 544
545 scoped_refptr<RenderMessageFilter> render_message_filter( 545 scoped_refptr<RenderMessageFilter> render_message_filter(
546 new RenderMessageFilter( 546 new RenderMessageFilter(
547 GetID(), 547 GetID(),
548 IsGuest(), 548 IsGuest(),
549 #if defined(ENABLE_PLUGINS) 549 #if defined(ENABLE_PLUGINS)
550 PluginServiceImpl::GetInstance(), 550 PluginServiceImpl::GetInstance(),
551 #else 551 #else
552 NULL, 552 NULL,
553 #endif 553 #endif
554 GetBrowserContext(), 554 GetBrowserContext(),
555 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()), 555 GetBrowserContext()->GetRequestContextForRenderProcess(GetID()),
556 widget_helper_.get(), 556 widget_helper_.get(),
557 audio_manager, 557 audio_manager,
558 media_internals, 558 media_internals,
559 storage_partition_impl_->GetDOMStorageContext())); 559 storage_partition_impl_->GetDOMStorageContext()));
560 channel_->AddFilter(render_message_filter.get()); 560 AddFilter(render_message_filter.get());
561 BrowserContext* browser_context = GetBrowserContext(); 561 BrowserContext* browser_context = GetBrowserContext();
562 ResourceContext* resource_context = browser_context->GetResourceContext(); 562 ResourceContext* resource_context = browser_context->GetResourceContext();
563 563
564 scoped_refptr<net::URLRequestContextGetter> request_context( 564 scoped_refptr<net::URLRequestContextGetter> request_context(
565 browser_context->GetRequestContextForRenderProcess(GetID())); 565 browser_context->GetRequestContextForRenderProcess(GetID()));
566 scoped_refptr<net::URLRequestContextGetter> media_request_context( 566 scoped_refptr<net::URLRequestContextGetter> media_request_context(
567 browser_context->GetMediaRequestContextForRenderProcess(GetID())); 567 browser_context->GetMediaRequestContextForRenderProcess(GetID()));
568 568
569 ResourceMessageFilter::GetContextsCallback get_contexts_callback( 569 ResourceMessageFilter::GetContextsCallback get_contexts_callback(
570 base::Bind(&GetContexts, browser_context->GetResourceContext(), 570 base::Bind(&GetContexts, browser_context->GetResourceContext(),
571 request_context, media_request_context)); 571 request_context, media_request_context));
572 572
573 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter( 573 ResourceMessageFilter* resource_message_filter = new ResourceMessageFilter(
574 GetID(), PROCESS_TYPE_RENDERER, 574 GetID(), PROCESS_TYPE_RENDERER,
575 storage_partition_impl_->GetAppCacheService(), 575 storage_partition_impl_->GetAppCacheService(),
576 ChromeBlobStorageContext::GetFor(browser_context), 576 ChromeBlobStorageContext::GetFor(browser_context),
577 storage_partition_impl_->GetFileSystemContext(), 577 storage_partition_impl_->GetFileSystemContext(),
578 get_contexts_callback); 578 get_contexts_callback);
579 579
580 channel_->AddFilter(resource_message_filter); 580 AddFilter(resource_message_filter);
581 MediaStreamManager* media_stream_manager = 581 MediaStreamManager* media_stream_manager =
582 BrowserMainLoop::GetInstance()->media_stream_manager(); 582 BrowserMainLoop::GetInstance()->media_stream_manager();
583 channel_->AddFilter(new AudioInputRendererHost( 583 AddFilter(new AudioInputRendererHost(
584 audio_manager, 584 audio_manager,
585 media_stream_manager, 585 media_stream_manager,
586 BrowserMainLoop::GetInstance()->audio_mirroring_manager(), 586 BrowserMainLoop::GetInstance()->audio_mirroring_manager(),
587 BrowserMainLoop::GetInstance()->user_input_monitor())); 587 BrowserMainLoop::GetInstance()->user_input_monitor()));
588 channel_->AddFilter(new AudioRendererHost( 588 AddFilter(new AudioRendererHost(
589 GetID(), 589 GetID(),
590 audio_manager, 590 audio_manager,
591 BrowserMainLoop::GetInstance()->audio_mirroring_manager(), 591 BrowserMainLoop::GetInstance()->audio_mirroring_manager(),
592 media_internals, 592 media_internals,
593 media_stream_manager)); 593 media_stream_manager));
594 channel_->AddFilter( 594 AddFilter(
595 new MIDIHost(GetID(), BrowserMainLoop::GetInstance()->midi_manager())); 595 new MIDIHost(GetID(), BrowserMainLoop::GetInstance()->midi_manager()));
596 channel_->AddFilter(new MIDIDispatcherHost(GetID(), browser_context)); 596 AddFilter(new MIDIDispatcherHost(GetID(), browser_context));
597 channel_->AddFilter(new VideoCaptureHost(media_stream_manager)); 597 AddFilter(new VideoCaptureHost(media_stream_manager));
598 channel_->AddFilter(new AppCacheDispatcherHost( 598 AddFilter(new AppCacheDispatcherHost(
599 storage_partition_impl_->GetAppCacheService(), 599 storage_partition_impl_->GetAppCacheService(),
600 GetID())); 600 GetID()));
601 channel_->AddFilter(new ClipboardMessageFilter); 601 AddFilter(new ClipboardMessageFilter);
602 channel_->AddFilter(new DOMStorageMessageFilter( 602 AddFilter(new DOMStorageMessageFilter(
603 GetID(), 603 GetID(),
604 storage_partition_impl_->GetDOMStorageContext())); 604 storage_partition_impl_->GetDOMStorageContext()));
605 channel_->AddFilter(new IndexedDBDispatcherHost( 605 AddFilter(new IndexedDBDispatcherHost(
606 GetID(), 606 GetID(),
607 storage_partition_impl_->GetIndexedDBContext())); 607 storage_partition_impl_->GetIndexedDBContext()));
608 channel_->AddFilter(new ServiceWorkerDispatcherHost( 608 AddFilter(new ServiceWorkerDispatcherHost(
609 storage_partition_impl_->GetServiceWorkerContext())); 609 storage_partition_impl_->GetServiceWorkerContext()));
610 if (IsGuest()) { 610 if (IsGuest()) {
611 if (!g_browser_plugin_geolocation_context.Get().get()) { 611 if (!g_browser_plugin_geolocation_context.Get().get()) {
612 g_browser_plugin_geolocation_context.Get() = 612 g_browser_plugin_geolocation_context.Get() =
613 new BrowserPluginGeolocationPermissionContext(); 613 new BrowserPluginGeolocationPermissionContext();
614 } 614 }
615 channel_->AddFilter(GeolocationDispatcherHost::New( 615 AddFilter(GeolocationDispatcherHost::New(
616 GetID(), g_browser_plugin_geolocation_context.Get().get())); 616 GetID(), g_browser_plugin_geolocation_context.Get().get()));
617 } else { 617 } else {
618 channel_->AddFilter(GeolocationDispatcherHost::New( 618 AddFilter(GeolocationDispatcherHost::New(
619 GetID(), browser_context->GetGeolocationPermissionContext())); 619 GetID(), browser_context->GetGeolocationPermissionContext()));
620 } 620 }
621 gpu_message_filter_ = new GpuMessageFilter(GetID(), widget_helper_.get()); 621 gpu_message_filter_ = new GpuMessageFilter(GetID(), widget_helper_.get());
622 channel_->AddFilter(gpu_message_filter_); 622 AddFilter(gpu_message_filter_);
623 #if defined(ENABLE_WEBRTC) 623 #if defined(ENABLE_WEBRTC)
624 channel_->AddFilter(new WebRTCIdentityServiceHost( 624 AddFilter(new WebRTCIdentityServiceHost(
625 GetID(), storage_partition_impl_->GetWebRTCIdentityStore())); 625 GetID(), storage_partition_impl_->GetWebRTCIdentityStore()));
626 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID()); 626 peer_connection_tracker_host_ = new PeerConnectionTrackerHost(GetID());
627 channel_->AddFilter(peer_connection_tracker_host_.get()); 627 AddFilter(peer_connection_tracker_host_.get());
628 channel_->AddFilter(new MediaStreamDispatcherHost( 628 AddFilter(new MediaStreamDispatcherHost(
629 GetID(), media_stream_manager)); 629 GetID(), media_stream_manager));
630 channel_->AddFilter( 630 AddFilter(
631 new DeviceRequestMessageFilter(resource_context, media_stream_manager)); 631 new DeviceRequestMessageFilter(resource_context, media_stream_manager));
632 #endif 632 #endif
633 #if defined(ENABLE_PLUGINS) 633 #if defined(ENABLE_PLUGINS)
634 channel_->AddFilter(new PepperRendererConnection(GetID())); 634 AddFilter(new PepperRendererConnection(GetID()));
635 #endif 635 #endif
636 #if defined(ENABLE_INPUT_SPEECH) 636 #if defined(ENABLE_INPUT_SPEECH)
637 channel_->AddFilter(new InputTagSpeechDispatcherHost( 637 AddFilter(new InputTagSpeechDispatcherHost(
638 IsGuest(), GetID(), storage_partition_impl_->GetURLRequestContext())); 638 IsGuest(), GetID(), storage_partition_impl_->GetURLRequestContext()));
639 #endif 639 #endif
640 channel_->AddFilter(new SpeechRecognitionDispatcherHost( 640 AddFilter(new SpeechRecognitionDispatcherHost(
641 GetID(), storage_partition_impl_->GetURLRequestContext())); 641 GetID(), storage_partition_impl_->GetURLRequestContext()));
642 channel_->AddFilter(new FileAPIMessageFilter( 642 AddFilter(new FileAPIMessageFilter(
643 GetID(), 643 GetID(),
644 storage_partition_impl_->GetURLRequestContext(), 644 storage_partition_impl_->GetURLRequestContext(),
645 storage_partition_impl_->GetFileSystemContext(), 645 storage_partition_impl_->GetFileSystemContext(),
646 ChromeBlobStorageContext::GetFor(browser_context), 646 ChromeBlobStorageContext::GetFor(browser_context),
647 StreamContext::GetFor(browser_context))); 647 StreamContext::GetFor(browser_context)));
648 channel_->AddFilter(new OrientationMessageFilter()); 648 AddFilter(new OrientationMessageFilter());
649 channel_->AddFilter(new FileUtilitiesMessageFilter(GetID())); 649 AddFilter(new FileUtilitiesMessageFilter(GetID()));
650 channel_->AddFilter(new MimeRegistryMessageFilter()); 650 AddFilter(new MimeRegistryMessageFilter());
651 channel_->AddFilter(new DatabaseMessageFilter( 651 AddFilter(new DatabaseMessageFilter(
652 storage_partition_impl_->GetDatabaseTracker())); 652 storage_partition_impl_->GetDatabaseTracker()));
653 #if defined(OS_MACOSX) 653 #if defined(OS_MACOSX)
654 channel_->AddFilter(new TextInputClientMessageFilter(GetID())); 654 AddFilter(new TextInputClientMessageFilter(GetID()));
655 #elif defined(OS_WIN) 655 #elif defined(OS_WIN)
656 channel_->AddFilter(new FontCacheDispatcher()); 656 channel_->AddFilter(new FontCacheDispatcher());
657 #elif defined(OS_ANDROID) 657 #elif defined(OS_ANDROID)
658 browser_demuxer_android_ = new BrowserDemuxerAndroid(); 658 browser_demuxer_android_ = new BrowserDemuxerAndroid();
659 channel_->AddFilter(browser_demuxer_android_); 659 AddFilter(browser_demuxer_android_);
660 #endif 660 #endif
661 661
662 SocketStreamDispatcherHost::GetRequestContextCallback 662 SocketStreamDispatcherHost::GetRequestContextCallback
663 request_context_callback( 663 request_context_callback(
664 base::Bind(&GetRequestContext, request_context, 664 base::Bind(&GetRequestContext, request_context,
665 media_request_context)); 665 media_request_context));
666 666
667 SocketStreamDispatcherHost* socket_stream_dispatcher_host = 667 SocketStreamDispatcherHost* socket_stream_dispatcher_host =
668 new SocketStreamDispatcherHost( 668 new SocketStreamDispatcherHost(
669 GetID(), request_context_callback, resource_context); 669 GetID(), request_context_callback, resource_context);
670 channel_->AddFilter(socket_stream_dispatcher_host); 670 AddFilter(socket_stream_dispatcher_host);
671 671
672 channel_->AddFilter(new WorkerMessageFilter( 672 AddFilter(new WorkerMessageFilter(
673 GetID(), 673 GetID(),
674 resource_context, 674 resource_context,
675 WorkerStoragePartition( 675 WorkerStoragePartition(
676 storage_partition_impl_->GetURLRequestContext(), 676 storage_partition_impl_->GetURLRequestContext(),
677 storage_partition_impl_->GetMediaURLRequestContext(), 677 storage_partition_impl_->GetMediaURLRequestContext(),
678 storage_partition_impl_->GetAppCacheService(), 678 storage_partition_impl_->GetAppCacheService(),
679 storage_partition_impl_->GetQuotaManager(), 679 storage_partition_impl_->GetQuotaManager(),
680 storage_partition_impl_->GetFileSystemContext(), 680 storage_partition_impl_->GetFileSystemContext(),
681 storage_partition_impl_->GetDatabaseTracker(), 681 storage_partition_impl_->GetDatabaseTracker(),
682 storage_partition_impl_->GetIndexedDBContext()), 682 storage_partition_impl_->GetIndexedDBContext()),
683 base::Bind(&RenderWidgetHelper::GetNextRoutingID, 683 base::Bind(&RenderWidgetHelper::GetNextRoutingID,
684 base::Unretained(widget_helper_.get())))); 684 base::Unretained(widget_helper_.get()))));
685 685
686 #if defined(ENABLE_WEBRTC) 686 #if defined(ENABLE_WEBRTC)
687 channel_->AddFilter(new P2PSocketDispatcherHost( 687 AddFilter(new P2PSocketDispatcherHost(
688 resource_context, 688 resource_context,
689 browser_context->GetRequestContextForRenderProcess(GetID()))); 689 browser_context->GetRequestContextForRenderProcess(GetID())));
690 #endif 690 #endif
691 691
692 channel_->AddFilter(new TraceMessageFilter()); 692 AddFilter(new TraceMessageFilter());
693 channel_->AddFilter(new ResolveProxyMsgHelper( 693 AddFilter(new ResolveProxyMsgHelper(
694 browser_context->GetRequestContextForRenderProcess(GetID()))); 694 browser_context->GetRequestContextForRenderProcess(GetID())));
695 channel_->AddFilter(new QuotaDispatcherHost( 695 AddFilter(new QuotaDispatcherHost(
696 GetID(), 696 GetID(),
697 storage_partition_impl_->GetQuotaManager(), 697 storage_partition_impl_->GetQuotaManager(),
698 GetContentClient()->browser()->CreateQuotaPermissionContext())); 698 GetContentClient()->browser()->CreateQuotaPermissionContext()));
699 channel_->AddFilter(new GamepadBrowserMessageFilter()); 699 AddFilter(new GamepadBrowserMessageFilter());
700 channel_->AddFilter(new DeviceMotionMessageFilter()); 700 AddFilter(new DeviceMotionMessageFilter());
701 channel_->AddFilter(new DeviceOrientationMessageFilter()); 701 AddFilter(new DeviceOrientationMessageFilter());
702 channel_->AddFilter(new ProfilerMessageFilter(PROCESS_TYPE_RENDERER)); 702 AddFilter(new ProfilerMessageFilter(PROCESS_TYPE_RENDERER));
703 channel_->AddFilter(new HistogramMessageFilter()); 703 AddFilter(new HistogramMessageFilter());
704 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) 704 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
705 if (CommandLine::ForCurrentProcess()->HasSwitch( 705 if (CommandLine::ForCurrentProcess()->HasSwitch(
706 switches::kEnableMemoryBenchmarking)) 706 switches::kEnableMemoryBenchmarking))
707 channel_->AddFilter(new MemoryBenchmarkMessageFilter()); 707 AddFilter(new MemoryBenchmarkMessageFilter());
708 #endif 708 #endif
709 #if defined(OS_ANDROID) 709 #if defined(OS_ANDROID)
710 channel_->AddFilter(new VibrationMessageFilter()); 710 AddFilter(new VibrationMessageFilter());
711 #endif 711 #endif
712 } 712 }
713 713
714 int RenderProcessHostImpl::GetNextRoutingID() { 714 int RenderProcessHostImpl::GetNextRoutingID() {
715 return widget_helper_->GetNextRoutingID(); 715 return widget_helper_->GetNextRoutingID();
716 } 716 }
717 717
718 718
719 void RenderProcessHostImpl::ResumeDeferredNavigation( 719 void RenderProcessHostImpl::ResumeDeferredNavigation(
720 const GlobalRequestID& request_id) { 720 const GlobalRequestID& request_id) {
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 } 1377 }
1378 1378
1379 void RenderProcessHostImpl::ResumeRequestsForView(int route_id) { 1379 void RenderProcessHostImpl::ResumeRequestsForView(int route_id) {
1380 widget_helper_->ResumeRequestsForView(route_id); 1380 widget_helper_->ResumeRequestsForView(route_id);
1381 } 1381 }
1382 1382
1383 IPC::ChannelProxy* RenderProcessHostImpl::GetChannel() { 1383 IPC::ChannelProxy* RenderProcessHostImpl::GetChannel() {
1384 return channel_.get(); 1384 return channel_.get();
1385 } 1385 }
1386 1386
1387 void RenderProcessHostImpl::AddFilter(BrowserMessageFilter* filter) {
1388 channel_->AddFilter(filter->GetFilter());
1389 }
1390
1387 bool RenderProcessHostImpl::FastShutdownForPageCount(size_t count) { 1391 bool RenderProcessHostImpl::FastShutdownForPageCount(size_t count) {
1388 if (static_cast<size_t>(GetActiveViewCount()) == count) 1392 if (static_cast<size_t>(GetActiveViewCount()) == count)
1389 return FastShutdownIfPossible(); 1393 return FastShutdownIfPossible();
1390 return false; 1394 return false;
1391 } 1395 }
1392 1396
1393 bool RenderProcessHostImpl::FastShutdownStarted() const { 1397 bool RenderProcessHostImpl::FastShutdownStarted() const {
1394 return fast_shutdown_started_; 1398 return fast_shutdown_started_;
1395 } 1399 }
1396 1400
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1797 // Skip widgets in other processes. 1801 // Skip widgets in other processes.
1798 if (widget->GetProcess()->GetID() != GetID()) 1802 if (widget->GetProcess()->GetID() != GetID())
1799 continue; 1803 continue;
1800 1804
1801 RenderViewHost* rvh = RenderViewHost::From(widget); 1805 RenderViewHost* rvh = RenderViewHost::From(widget);
1802 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences()); 1806 rvh->UpdateWebkitPreferences(rvh->GetWebkitPreferences());
1803 } 1807 }
1804 } 1808 }
1805 1809
1806 } // namespace content 1810 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698