| OLD | NEW |
| 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 "content/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "cc/base/switches.h" | 44 #include "cc/base/switches.h" |
| 45 #include "cc/blink/web_layer_impl.h" | 45 #include "cc/blink/web_layer_impl.h" |
| 46 #include "cc/output/buffer_to_texture_target_map.h" | 46 #include "cc/output/buffer_to_texture_target_map.h" |
| 47 #include "cc/output/compositor_frame_sink.h" | 47 #include "cc/output/compositor_frame_sink.h" |
| 48 #include "cc/output/copy_output_request.h" | 48 #include "cc/output/copy_output_request.h" |
| 49 #include "cc/output/vulkan_in_process_context_provider.h" | 49 #include "cc/output/vulkan_in_process_context_provider.h" |
| 50 #include "cc/raster/task_graph_runner.h" | 50 #include "cc/raster/task_graph_runner.h" |
| 51 #include "cc/trees/layer_tree_host_common.h" | 51 #include "cc/trees/layer_tree_host_common.h" |
| 52 #include "cc/trees/layer_tree_settings.h" | 52 #include "cc/trees/layer_tree_settings.h" |
| 53 #include "components/discardable_memory/client/client_discardable_shared_memory_
manager.h" | 53 #include "components/discardable_memory/client/client_discardable_shared_memory_
manager.h" |
| 54 #include "components/display_compositor/child/child_shared_bitmap_manager.h" |
| 54 #include "content/child/appcache/appcache_dispatcher.h" | 55 #include "content/child/appcache/appcache_dispatcher.h" |
| 55 #include "content/child/appcache/appcache_frontend_impl.h" | 56 #include "content/child/appcache/appcache_frontend_impl.h" |
| 56 #include "content/child/blob_storage/blob_message_filter.h" | 57 #include "content/child/blob_storage/blob_message_filter.h" |
| 57 #include "content/child/child_histogram_message_filter.h" | 58 #include "content/child/child_histogram_message_filter.h" |
| 58 #include "content/child/child_resource_message_filter.h" | 59 #include "content/child/child_resource_message_filter.h" |
| 59 #include "content/child/child_shared_bitmap_manager.h" | |
| 60 #include "content/child/content_child_helpers.h" | 60 #include "content/child/content_child_helpers.h" |
| 61 #include "content/child/db_message_filter.h" | 61 #include "content/child/db_message_filter.h" |
| 62 #include "content/child/indexed_db/indexed_db_dispatcher.h" | 62 #include "content/child/indexed_db/indexed_db_dispatcher.h" |
| 63 #include "content/child/memory/child_memory_coordinator_impl.h" | 63 #include "content/child/memory/child_memory_coordinator_impl.h" |
| 64 #include "content/child/resource_dispatcher.h" | 64 #include "content/child/resource_dispatcher.h" |
| 65 #include "content/child/resource_scheduling_filter.h" | 65 #include "content/child/resource_scheduling_filter.h" |
| 66 #include "content/child/runtime_features.h" | 66 #include "content/child/runtime_features.h" |
| 67 #include "content/child/thread_safe_sender.h" | 67 #include "content/child/thread_safe_sender.h" |
| 68 #include "content/child/web_database_observer_impl.h" | 68 #include "content/child/web_database_observer_impl.h" |
| 69 #include "content/child/worker_thread_registry.h" | 69 #include "content/child/worker_thread_registry.h" |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 | 543 |
| 544 // static | 544 // static |
| 545 mojom::RenderMessageFilter* RenderThreadImpl::current_render_message_filter() { | 545 mojom::RenderMessageFilter* RenderThreadImpl::current_render_message_filter() { |
| 546 if (g_render_message_filter_for_testing) | 546 if (g_render_message_filter_for_testing) |
| 547 return g_render_message_filter_for_testing; | 547 return g_render_message_filter_for_testing; |
| 548 DCHECK(current()); | 548 DCHECK(current()); |
| 549 return current()->render_message_filter(); | 549 return current()->render_message_filter(); |
| 550 } | 550 } |
| 551 | 551 |
| 552 // static | 552 // static |
| 553 const scoped_refptr<mojom::ThreadSafeRenderMessageFilterAssociatedPtr>& | |
| 554 RenderThreadImpl::current_thread_safe_render_message_filter() { | |
| 555 DCHECK(current()); | |
| 556 return current()->thread_safe_render_message_filter(); | |
| 557 } | |
| 558 | |
| 559 // static | |
| 560 void RenderThreadImpl::SetRenderMessageFilterForTesting( | 553 void RenderThreadImpl::SetRenderMessageFilterForTesting( |
| 561 mojom::RenderMessageFilter* render_message_filter) { | 554 mojom::RenderMessageFilter* render_message_filter) { |
| 562 g_render_message_filter_for_testing = render_message_filter; | 555 g_render_message_filter_for_testing = render_message_filter; |
| 563 } | 556 } |
| 564 | 557 |
| 565 // In single-process mode used for debugging, we don't pass a renderer client | 558 // In single-process mode used for debugging, we don't pass a renderer client |
| 566 // ID via command line because RenderThreadImpl lives in the same process as | 559 // ID via command line because RenderThreadImpl lives in the same process as |
| 567 // the browser | 560 // the browser |
| 568 RenderThreadImpl::RenderThreadImpl( | 561 RenderThreadImpl::RenderThreadImpl( |
| 569 const InProcessChildThreadParams& params, | 562 const InProcessChildThreadParams& params, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 ChildProcess::current()->set_main_thread(this); | 616 ChildProcess::current()->set_main_thread(this); |
| 624 | 617 |
| 625 if (IsRunningInMash()) { | 618 if (IsRunningInMash()) { |
| 626 gpu_ = ui::Gpu::Create(GetServiceManagerConnection()->GetConnector(), | 619 gpu_ = ui::Gpu::Create(GetServiceManagerConnection()->GetConnector(), |
| 627 GetIOTaskRunner()); | 620 GetIOTaskRunner()); |
| 628 } else { | 621 } else { |
| 629 gpu_ = ui::Gpu::Create(GetRemoteInterfaces(), GetIOTaskRunner()); | 622 gpu_ = ui::Gpu::Create(GetRemoteInterfaces(), GetIOTaskRunner()); |
| 630 } | 623 } |
| 631 | 624 |
| 632 channel()->GetThreadSafeRemoteAssociatedInterface( | 625 channel()->GetThreadSafeRemoteAssociatedInterface( |
| 633 &thread_safe_render_message_filter_); | 626 &thread_safe_shared_bitmap_manager_ptr_); |
| 634 shared_bitmap_manager_.reset( | 627 shared_bitmap_manager_.reset(new display_compositor::ChildSharedBitmapManager( |
| 635 new ChildSharedBitmapManager(thread_safe_render_message_filter_)); | 628 thread_safe_shared_bitmap_manager_ptr_)); |
| 636 | 629 |
| 637 InitializeWebKit(resource_task_queue); | 630 InitializeWebKit(resource_task_queue); |
| 638 | 631 |
| 639 // In single process the single process is all there is. | 632 // In single process the single process is all there is. |
| 640 webkit_shared_timer_suspended_ = false; | 633 webkit_shared_timer_suspended_ = false; |
| 641 widget_count_ = 0; | 634 widget_count_ = 0; |
| 642 hidden_widget_count_ = 0; | 635 hidden_widget_count_ = 0; |
| 643 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; | 636 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; |
| 644 idle_notifications_to_skip_ = 0; | 637 idle_notifications_to_skip_ = 0; |
| 645 | 638 |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 void RenderThreadImpl::RecordAction(const base::UserMetricsAction& action) { | 1229 void RenderThreadImpl::RecordAction(const base::UserMetricsAction& action) { |
| 1237 Send(new ViewHostMsg_UserMetricsRecordAction(action.str_)); | 1230 Send(new ViewHostMsg_UserMetricsRecordAction(action.str_)); |
| 1238 } | 1231 } |
| 1239 | 1232 |
| 1240 void RenderThreadImpl::RecordComputedAction(const std::string& action) { | 1233 void RenderThreadImpl::RecordComputedAction(const std::string& action) { |
| 1241 Send(new ViewHostMsg_UserMetricsRecordAction(action)); | 1234 Send(new ViewHostMsg_UserMetricsRecordAction(action)); |
| 1242 } | 1235 } |
| 1243 | 1236 |
| 1244 std::unique_ptr<base::SharedMemory> | 1237 std::unique_ptr<base::SharedMemory> |
| 1245 RenderThreadImpl::HostAllocateSharedMemoryBuffer(size_t size) { | 1238 RenderThreadImpl::HostAllocateSharedMemoryBuffer(size_t size) { |
| 1246 return ChildThreadImpl::AllocateSharedMemory(size); | 1239 return display_compositor::ChildSharedBitmapManager::AllocateSharedMemory( |
| 1240 size); |
| 1247 } | 1241 } |
| 1248 | 1242 |
| 1249 cc::SharedBitmapManager* RenderThreadImpl::GetSharedBitmapManager() { | 1243 cc::SharedBitmapManager* RenderThreadImpl::GetSharedBitmapManager() { |
| 1250 return shared_bitmap_manager(); | 1244 return shared_bitmap_manager(); |
| 1251 } | 1245 } |
| 1252 | 1246 |
| 1253 void RenderThreadImpl::RegisterExtension(v8::Extension* extension) { | 1247 void RenderThreadImpl::RegisterExtension(v8::Extension* extension) { |
| 1254 WebScriptController::registerExtension(extension); | 1248 WebScriptController::registerExtension(extension); |
| 1255 } | 1249 } |
| 1256 | 1250 |
| (...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2007 GetChannel()->GetRemoteAssociatedInterface(&render_frame_message_filter_); | 2001 GetChannel()->GetRemoteAssociatedInterface(&render_frame_message_filter_); |
| 2008 return render_frame_message_filter_.get(); | 2002 return render_frame_message_filter_.get(); |
| 2009 } | 2003 } |
| 2010 | 2004 |
| 2011 mojom::RenderMessageFilter* RenderThreadImpl::render_message_filter() { | 2005 mojom::RenderMessageFilter* RenderThreadImpl::render_message_filter() { |
| 2012 if (!render_message_filter_) | 2006 if (!render_message_filter_) |
| 2013 GetChannel()->GetRemoteAssociatedInterface(&render_message_filter_); | 2007 GetChannel()->GetRemoteAssociatedInterface(&render_message_filter_); |
| 2014 return render_message_filter_.get(); | 2008 return render_message_filter_.get(); |
| 2015 } | 2009 } |
| 2016 | 2010 |
| 2017 const scoped_refptr<mojom::ThreadSafeRenderMessageFilterAssociatedPtr>& | |
| 2018 RenderThreadImpl::thread_safe_render_message_filter() { | |
| 2019 return thread_safe_render_message_filter_; | |
| 2020 } | |
| 2021 | |
| 2022 gpu::GpuChannelHost* RenderThreadImpl::GetGpuChannel() { | 2011 gpu::GpuChannelHost* RenderThreadImpl::GetGpuChannel() { |
| 2023 if (!gpu_channel_) | 2012 if (!gpu_channel_) |
| 2024 return nullptr; | 2013 return nullptr; |
| 2025 if (gpu_channel_->IsLost()) | 2014 if (gpu_channel_->IsLost()) |
| 2026 return nullptr; | 2015 return nullptr; |
| 2027 return gpu_channel_.get(); | 2016 return gpu_channel_.get(); |
| 2028 } | 2017 } |
| 2029 | 2018 |
| 2030 void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) { | 2019 void RenderThreadImpl::CreateView(mojom::CreateViewParamsPtr params) { |
| 2031 CompositorDependencies* compositor_deps = this; | 2020 CompositorDependencies* compositor_deps = this; |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2380 } | 2369 } |
| 2381 } | 2370 } |
| 2382 | 2371 |
| 2383 void RenderThreadImpl::OnRendererInterfaceRequest( | 2372 void RenderThreadImpl::OnRendererInterfaceRequest( |
| 2384 mojom::RendererAssociatedRequest request) { | 2373 mojom::RendererAssociatedRequest request) { |
| 2385 DCHECK(!renderer_binding_.is_bound()); | 2374 DCHECK(!renderer_binding_.is_bound()); |
| 2386 renderer_binding_.Bind(std::move(request)); | 2375 renderer_binding_.Bind(std::move(request)); |
| 2387 } | 2376 } |
| 2388 | 2377 |
| 2389 } // namespace content | 2378 } // namespace content |
| OLD | NEW |