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

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

Issue 2774373002: Use MojoCompositorFrameSink in RendererCompositorFrameSink (Closed)
Patch Set: Rebased, dedup IPC Created 3 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 storage_partition_impl_->GetIndexedDBContext(), 696 storage_partition_impl_->GetIndexedDBContext(),
697 ChromeBlobStorageContext::GetFor(browser_context_))), 697 ChromeBlobStorageContext::GetFor(browser_context_))),
698 channel_connected_(false), 698 channel_connected_(false),
699 sent_render_process_ready_(false), 699 sent_render_process_ready_(false),
700 #if defined(OS_ANDROID) 700 #if defined(OS_ANDROID)
701 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL, 701 never_signaled_(base::WaitableEvent::ResetPolicy::MANUAL,
702 base::WaitableEvent::InitialState::NOT_SIGNALED), 702 base::WaitableEvent::InitialState::NOT_SIGNALED),
703 #endif 703 #endif
704 instance_weak_factory_( 704 instance_weak_factory_(
705 new base::WeakPtrFactory<RenderProcessHostImpl>(this)), 705 new base::WeakPtrFactory<RenderProcessHostImpl>(this)),
706 frame_sink_provider_(id_),
706 weak_factory_(this) { 707 weak_factory_(this) {
707 widget_helper_ = new RenderWidgetHelper(); 708 widget_helper_ = new RenderWidgetHelper();
708 709
709 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID()); 710 ChildProcessSecurityPolicyImpl::GetInstance()->Add(GetID());
710 711
711 CHECK(!BrowserMainRunner::ExitedMainMessageLoop()); 712 CHECK(!BrowserMainRunner::ExitedMainMessageLoop());
712 RegisterHost(GetID(), this); 713 RegisterHost(GetID(), this);
713 g_all_hosts.Get().set_check_on_null_data(true); 714 g_all_hosts.Get().set_check_on_null_data(true);
714 // Initialize |child_process_activity_time_| to a reasonable value. 715 // Initialize |child_process_activity_time_| to a reasonable value.
715 mark_child_process_activity_time(); 716 mark_child_process_activity_time();
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
1236 &PaymentAppContextImpl::CreatePaymentManager, 1237 &PaymentAppContextImpl::CreatePaymentManager,
1237 base::Unretained(storage_partition_impl_->GetPaymentAppContext()))); 1238 base::Unretained(storage_partition_impl_->GetPaymentAppContext())));
1238 1239
1239 AddUIThreadInterface( 1240 AddUIThreadInterface(
1240 registry.get(), 1241 registry.get(),
1241 base::Bind(&RenderProcessHostImpl:: 1242 base::Bind(&RenderProcessHostImpl::
1242 CreateOffscreenCanvasCompositorFrameSinkProvider, 1243 CreateOffscreenCanvasCompositorFrameSinkProvider,
1243 base::Unretained(this))); 1244 base::Unretained(this)));
1244 1245
1245 AddUIThreadInterface(registry.get(), 1246 AddUIThreadInterface(registry.get(),
1247 base::Bind(&RenderProcessHostImpl::BindFrameSinkProvider,
1248 base::Unretained(this)));
1249
1250 AddUIThreadInterface(registry.get(),
1246 base::Bind(&OffscreenCanvasSurfaceFactoryImpl::Create)); 1251 base::Bind(&OffscreenCanvasSurfaceFactoryImpl::Create));
1247 AddUIThreadInterface( 1252 AddUIThreadInterface(
1248 registry.get(), 1253 registry.get(),
1249 base::Bind(&BackgroundSyncContext::CreateService, 1254 base::Bind(&BackgroundSyncContext::CreateService,
1250 base::Unretained( 1255 base::Unretained(
1251 storage_partition_impl_->GetBackgroundSyncContext()))); 1256 storage_partition_impl_->GetBackgroundSyncContext())));
1252 AddUIThreadInterface( 1257 AddUIThreadInterface(
1253 registry.get(), 1258 registry.get(),
1254 base::Bind(&PlatformNotificationContextImpl::CreateService, 1259 base::Bind(&PlatformNotificationContextImpl::CreateService,
1255 base::Unretained( 1260 base::Unretained(
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1362 void RenderProcessHostImpl::CreateOffscreenCanvasCompositorFrameSinkProvider( 1367 void RenderProcessHostImpl::CreateOffscreenCanvasCompositorFrameSinkProvider(
1363 blink::mojom::OffscreenCanvasCompositorFrameSinkProviderRequest request) { 1368 blink::mojom::OffscreenCanvasCompositorFrameSinkProviderRequest request) {
1364 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1369 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1365 if (!offscreen_canvas_provider_) { 1370 if (!offscreen_canvas_provider_) {
1366 offscreen_canvas_provider_.reset( 1371 offscreen_canvas_provider_.reset(
1367 new OffscreenCanvasCompositorFrameSinkProviderImpl()); 1372 new OffscreenCanvasCompositorFrameSinkProviderImpl());
1368 } 1373 }
1369 offscreen_canvas_provider_->Add(std::move(request)); 1374 offscreen_canvas_provider_->Add(std::move(request));
1370 } 1375 }
1371 1376
1377 void RenderProcessHostImpl::BindFrameSinkProvider(
1378 mojom::FrameSinkProviderRequest request) {
1379 frame_sink_provider_.Bind(std::move(request));
1380 }
1381
1372 void RenderProcessHostImpl::CreateStoragePartitionService( 1382 void RenderProcessHostImpl::CreateStoragePartitionService(
1373 mojo::InterfaceRequest<mojom::StoragePartitionService> request) { 1383 mojo::InterfaceRequest<mojom::StoragePartitionService> request) {
1374 // DO NOT REMOVE THIS COMMAND LINE CHECK WITHOUT SECURITY REVIEW! 1384 // DO NOT REMOVE THIS COMMAND LINE CHECK WITHOUT SECURITY REVIEW!
1375 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1385 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1376 switches::kMojoLocalStorage)) { 1386 switches::kMojoLocalStorage)) {
1377 storage_partition_impl_->Bind(std::move(request)); 1387 storage_partition_impl_->Bind(std::move(request));
1378 } 1388 }
1379 } 1389 }
1380 1390
1381 int RenderProcessHostImpl::GetNextRoutingID() { 1391 int RenderProcessHostImpl::GetNextRoutingID() {
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after
2751 // before Init()) and they'll eventually reach the new process. 2761 // before Init()) and they'll eventually reach the new process.
2752 // 2762 //
2753 // Note that this may have already been called by one of the above observers 2763 // Note that this may have already been called by one of the above observers
2754 EnableSendQueue(); 2764 EnableSendQueue();
2755 2765
2756 // It's possible that one of the calls out to the observers might have caused 2766 // It's possible that one of the calls out to the observers might have caused
2757 // this object to be no longer needed. 2767 // this object to be no longer needed.
2758 if (delayed_cleanup_needed_) 2768 if (delayed_cleanup_needed_)
2759 Cleanup(); 2769 Cleanup();
2760 2770
2771 // If RenderProcessHostImpl is reused, the next renderer will send a new
2772 // request for FrameSinkProvider so make sure frame_sink_provider_ is ready
2773 // for that.
2774 frame_sink_provider_.Unbind();
2775
2761 // This object is not deleted at this point and might be reused later. 2776 // This object is not deleted at this point and might be reused later.
2762 // TODO(darin): clean this up 2777 // TODO(darin): clean this up
2763 } 2778 }
2764 2779
2765 size_t RenderProcessHost::GetActiveViewCount() { 2780 size_t RenderProcessHost::GetActiveViewCount() {
2766 size_t num_active_views = 0; 2781 size_t num_active_views = 0;
2767 std::unique_ptr<RenderWidgetHostIterator> widgets( 2782 std::unique_ptr<RenderWidgetHostIterator> widgets(
2768 RenderWidgetHost::GetRenderWidgetHosts()); 2783 RenderWidgetHost::GetRenderWidgetHosts());
2769 while (RenderWidgetHost* widget = widgets->GetNextHost()) { 2784 while (RenderWidgetHost* widget = widgets->GetNextHost()) {
2770 // Count only RenderWidgetHosts in this process. 2785 // Count only RenderWidgetHosts in this process.
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
3060 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error; 3075 LOG(ERROR) << "Terminating render process for bad Mojo message: " << error;
3061 3076
3062 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing. 3077 // The ReceivedBadMessage call below will trigger a DumpWithoutCrashing.
3063 // Capture the error message in a crash key value. 3078 // Capture the error message in a crash key value.
3064 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error); 3079 base::debug::ScopedCrashKey error_key_value("mojo-message-error", error);
3065 bad_message::ReceivedBadMessage(render_process_id, 3080 bad_message::ReceivedBadMessage(render_process_id,
3066 bad_message::RPH_MOJO_PROCESS_ERROR); 3081 bad_message::RPH_MOJO_PROCESS_ERROR);
3067 } 3082 }
3068 3083
3069 } // namespace content 3084 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_process_host_impl.h ('k') | content/browser/renderer_host/render_widget_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698