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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 const size_t kImageCacheSingleAllocationByteLimit = 64 * 1024 * 1024; | 250 const size_t kImageCacheSingleAllocationByteLimit = 64 * 1024 * 1024; |
251 | 251 |
252 #if defined(OS_ANDROID) | 252 #if defined(OS_ANDROID) |
253 // Unique identifier for each output surface created. | 253 // Unique identifier for each output surface created. |
254 uint32_t g_next_compositor_frame_sink_id = 1; | 254 uint32_t g_next_compositor_frame_sink_id = 1; |
255 #endif | 255 #endif |
256 | 256 |
257 // An implementation of mojom::RenderMessageFilter which can be mocked out | 257 // An implementation of mojom::RenderMessageFilter which can be mocked out |
258 // for tests which may indirectly send messages over this interface. | 258 // for tests which may indirectly send messages over this interface. |
259 mojom::RenderMessageFilter* g_render_message_filter_for_testing; | 259 mojom::RenderMessageFilter* g_render_message_filter_for_testing; |
| 260 mojom::RenderMessageFilterUI* g_render_message_filter_ui_for_testing; |
260 | 261 |
261 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access | 262 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access |
262 // incorrectly from the wrong thread. | 263 // incorrectly from the wrong thread. |
263 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl>>::DestructorAtExit | 264 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl>>::DestructorAtExit |
264 lazy_tls = LAZY_INSTANCE_INITIALIZER; | 265 lazy_tls = LAZY_INSTANCE_INITIALIZER; |
265 | 266 |
266 // v8::MemoryPressureLevel should correspond to base::MemoryPressureListener. | 267 // v8::MemoryPressureLevel should correspond to base::MemoryPressureListener. |
267 static_assert(static_cast<v8::MemoryPressureLevel>( | 268 static_assert(static_cast<v8::MemoryPressureLevel>( |
268 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE) == | 269 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE) == |
269 v8::MemoryPressureLevel::kNone, "none level not align"); | 270 v8::MemoryPressureLevel::kNone, "none level not align"); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 | 532 |
532 // static | 533 // static |
533 mojom::RenderMessageFilter* RenderThreadImpl::current_render_message_filter() { | 534 mojom::RenderMessageFilter* RenderThreadImpl::current_render_message_filter() { |
534 if (g_render_message_filter_for_testing) | 535 if (g_render_message_filter_for_testing) |
535 return g_render_message_filter_for_testing; | 536 return g_render_message_filter_for_testing; |
536 DCHECK(current()); | 537 DCHECK(current()); |
537 return current()->render_message_filter(); | 538 return current()->render_message_filter(); |
538 } | 539 } |
539 | 540 |
540 // static | 541 // static |
| 542 mojom::RenderMessageFilterUI* |
| 543 RenderThreadImpl::current_render_message_filter_ui() { |
| 544 if (g_render_message_filter_ui_for_testing) |
| 545 return g_render_message_filter_ui_for_testing; |
| 546 DCHECK(current()); |
| 547 return current()->render_message_filter_ui(); |
| 548 } |
| 549 |
| 550 // static |
541 void RenderThreadImpl::SetRenderMessageFilterForTesting( | 551 void RenderThreadImpl::SetRenderMessageFilterForTesting( |
542 mojom::RenderMessageFilter* render_message_filter) { | 552 mojom::RenderMessageFilter* render_message_filter) { |
543 g_render_message_filter_for_testing = render_message_filter; | 553 g_render_message_filter_for_testing = render_message_filter; |
544 } | 554 } |
545 | 555 |
| 556 void RenderThreadImpl::SetRenderMessageFilterUIForTesting( |
| 557 mojom::RenderMessageFilterUI* render_message_filter_ui) { |
| 558 g_render_message_filter_ui_for_testing = render_message_filter_ui; |
| 559 } |
| 560 |
546 // In single-process mode used for debugging, we don't pass a renderer client | 561 // In single-process mode used for debugging, we don't pass a renderer client |
547 // ID via command line because RenderThreadImpl lives in the same process as | 562 // ID via command line because RenderThreadImpl lives in the same process as |
548 // the browser | 563 // the browser |
549 RenderThreadImpl::RenderThreadImpl( | 564 RenderThreadImpl::RenderThreadImpl( |
550 const InProcessChildThreadParams& params, | 565 const InProcessChildThreadParams& params, |
551 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, | 566 std::unique_ptr<blink::scheduler::RendererScheduler> scheduler, |
552 const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) | 567 const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) |
553 : ChildThreadImpl(Options::Builder() | 568 : ChildThreadImpl(Options::Builder() |
554 .InBrowserProcess(params) | 569 .InBrowserProcess(params) |
555 .AutoStartServiceManagerConnection(false) | 570 .AutoStartServiceManagerConnection(false) |
(...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2048 GetChannel()->GetRemoteAssociatedInterface(&render_frame_message_filter_); | 2063 GetChannel()->GetRemoteAssociatedInterface(&render_frame_message_filter_); |
2049 return render_frame_message_filter_.get(); | 2064 return render_frame_message_filter_.get(); |
2050 } | 2065 } |
2051 | 2066 |
2052 mojom::RenderMessageFilter* RenderThreadImpl::render_message_filter() { | 2067 mojom::RenderMessageFilter* RenderThreadImpl::render_message_filter() { |
2053 if (!render_message_filter_) | 2068 if (!render_message_filter_) |
2054 GetChannel()->GetRemoteAssociatedInterface(&render_message_filter_); | 2069 GetChannel()->GetRemoteAssociatedInterface(&render_message_filter_); |
2055 return render_message_filter_.get(); | 2070 return render_message_filter_.get(); |
2056 } | 2071 } |
2057 | 2072 |
| 2073 mojom::RenderMessageFilterUI* RenderThreadImpl::render_message_filter_ui() { |
| 2074 if (!render_message_filter_ui_) { |
| 2075 GetChannel()->GetRemoteAssociatedInterface(&render_message_filter_ui_); |
| 2076 } |
| 2077 |
| 2078 DCHECK(render_message_filter_ui_); |
| 2079 return render_message_filter_ui_.get(); |
| 2080 } |
| 2081 |
2058 gpu::GpuChannelHost* RenderThreadImpl::GetGpuChannel() { | 2082 gpu::GpuChannelHost* RenderThreadImpl::GetGpuChannel() { |
2059 if (!gpu_channel_) | 2083 if (!gpu_channel_) |
2060 return nullptr; | 2084 return nullptr; |
2061 if (gpu_channel_->IsLost()) | 2085 if (gpu_channel_->IsLost()) |
2062 return nullptr; | 2086 return nullptr; |
2063 return gpu_channel_.get(); | 2087 return gpu_channel_.get(); |
2064 } | 2088 } |
2065 | 2089 |
2066 void RenderThreadImpl::OnFieldTrialGroupFinalized( | 2090 void RenderThreadImpl::OnFieldTrialGroupFinalized( |
2067 const std::string& trial_name, | 2091 const std::string& trial_name, |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2449 } | 2473 } |
2450 } | 2474 } |
2451 | 2475 |
2452 void RenderThreadImpl::OnRendererInterfaceRequest( | 2476 void RenderThreadImpl::OnRendererInterfaceRequest( |
2453 mojom::RendererAssociatedRequest request) { | 2477 mojom::RendererAssociatedRequest request) { |
2454 DCHECK(!renderer_binding_.is_bound()); | 2478 DCHECK(!renderer_binding_.is_bound()); |
2455 renderer_binding_.Bind(std::move(request)); | 2479 renderer_binding_.Bind(std::move(request)); |
2456 } | 2480 } |
2457 | 2481 |
2458 } // namespace content | 2482 } // namespace content |
OLD | NEW |