| 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 <vector> | 10 #include <vector> |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 | 326 |
| 327 private: | 327 private: |
| 328 int32_t routing_id_highmark_; | 328 int32_t routing_id_highmark_; |
| 329 }; | 329 }; |
| 330 | 330 |
| 331 void CreateRenderFrameSetup(mojo::InterfaceRequest<RenderFrameSetup> request) { | 331 void CreateRenderFrameSetup(mojo::InterfaceRequest<RenderFrameSetup> request) { |
| 332 mojo::BindToRequest(new RenderFrameSetupImpl(), &request); | 332 mojo::BindToRequest(new RenderFrameSetupImpl(), &request); |
| 333 } | 333 } |
| 334 | 334 |
| 335 bool ShouldUseMojoChannel() { | 335 bool ShouldUseMojoChannel() { |
| 336 return CommandLine::ForCurrentProcess()->HasSwitch( | 336 return base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 337 switches::kEnableRendererMojoChannel) || | 337 switches::kEnableRendererMojoChannel) || |
| 338 IPC::ChannelMojo::ShouldBeUsed(); | 338 IPC::ChannelMojo::ShouldBeUsed(); |
| 339 } | 339 } |
| 340 | 340 |
| 341 blink::WebGraphicsContext3D::Attributes GetOffscreenAttribs() { | 341 blink::WebGraphicsContext3D::Attributes GetOffscreenAttribs() { |
| 342 blink::WebGraphicsContext3D::Attributes attributes; | 342 blink::WebGraphicsContext3D::Attributes attributes; |
| 343 attributes.shareResources = true; | 343 attributes.shareResources = true; |
| 344 attributes.depth = false; | 344 attributes.depth = false; |
| 345 attributes.stencil = false; | 345 attributes.stencil = false; |
| 346 attributes.antialias = false; | 346 attributes.antialias = false; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 369 RenderThreadImpl::HistogramCustomizer::HistogramCustomizer() { | 369 RenderThreadImpl::HistogramCustomizer::HistogramCustomizer() { |
| 370 custom_histograms_.insert("V8.MemoryExternalFragmentationTotal"); | 370 custom_histograms_.insert("V8.MemoryExternalFragmentationTotal"); |
| 371 custom_histograms_.insert("V8.MemoryHeapSampleTotalCommitted"); | 371 custom_histograms_.insert("V8.MemoryHeapSampleTotalCommitted"); |
| 372 custom_histograms_.insert("V8.MemoryHeapSampleTotalUsed"); | 372 custom_histograms_.insert("V8.MemoryHeapSampleTotalUsed"); |
| 373 } | 373 } |
| 374 | 374 |
| 375 RenderThreadImpl::HistogramCustomizer::~HistogramCustomizer() {} | 375 RenderThreadImpl::HistogramCustomizer::~HistogramCustomizer() {} |
| 376 | 376 |
| 377 void RenderThreadImpl::HistogramCustomizer::RenderViewNavigatedToHost( | 377 void RenderThreadImpl::HistogramCustomizer::RenderViewNavigatedToHost( |
| 378 const std::string& host, size_t view_count) { | 378 const std::string& host, size_t view_count) { |
| 379 if (CommandLine::ForCurrentProcess()->HasSwitch( | 379 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 380 switches::kDisableHistogramCustomizer)) { | 380 switches::kDisableHistogramCustomizer)) { |
| 381 return; | 381 return; |
| 382 } | 382 } |
| 383 // Check if all RenderViews are displaying a page from the same host. If there | 383 // Check if all RenderViews are displaying a page from the same host. If there |
| 384 // is only one RenderView, the common host is this view's host. If there are | 384 // is only one RenderView, the common host is this view's host. If there are |
| 385 // many, check if this one shares the common host of the other | 385 // many, check if this one shares the common host of the other |
| 386 // RenderViews. It's ok to not detect some cases where the RenderViews share a | 386 // RenderViews. It's ok to not detect some cases where the RenderViews share a |
| 387 // common host. This information is only used for producing custom histograms. | 387 // common host. This information is only used for producing custom histograms. |
| 388 if (view_count == 1) | 388 if (view_count == 1) |
| 389 SetCommonHost(host); | 389 SetCommonHost(host); |
| 390 else if (host != common_host_) | 390 else if (host != common_host_) |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 AddFilter(midi_message_filter_.get()); | 509 AddFilter(midi_message_filter_.get()); |
| 510 | 510 |
| 511 AddFilter((new IndexedDBMessageFilter(thread_safe_sender()))->GetFilter()); | 511 AddFilter((new IndexedDBMessageFilter(thread_safe_sender()))->GetFilter()); |
| 512 | 512 |
| 513 AddFilter((new EmbeddedWorkerContextMessageFilter())->GetFilter()); | 513 AddFilter((new EmbeddedWorkerContextMessageFilter())->GetFilter()); |
| 514 | 514 |
| 515 GetContentClient()->renderer()->RenderThreadStarted(); | 515 GetContentClient()->renderer()->RenderThreadStarted(); |
| 516 | 516 |
| 517 InitSkiaEventTracer(); | 517 InitSkiaEventTracer(); |
| 518 | 518 |
| 519 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 519 const base::CommandLine& command_line = |
| 520 *base::CommandLine::ForCurrentProcess(); |
| 520 | 521 |
| 521 is_impl_side_painting_enabled_ = | 522 is_impl_side_painting_enabled_ = |
| 522 command_line.HasSwitch(switches::kEnableImplSidePainting); | 523 command_line.HasSwitch(switches::kEnableImplSidePainting); |
| 523 cc_blink::WebLayerImpl::SetImplSidePaintingEnabled( | 524 cc_blink::WebLayerImpl::SetImplSidePaintingEnabled( |
| 524 is_impl_side_painting_enabled_); | 525 is_impl_side_painting_enabled_); |
| 525 | 526 |
| 526 is_zero_copy_enabled_ = command_line.HasSwitch(switches::kEnableZeroCopy); | 527 is_zero_copy_enabled_ = command_line.HasSwitch(switches::kEnableZeroCopy); |
| 527 | 528 |
| 528 #if defined(OS_MACOSX) || defined(OS_ANDROID) | 529 #if defined(OS_MACOSX) || defined(OS_ANDROID) |
| 529 // TODO(danakj): If changing these also update NumberOfRendererRasterThreads | 530 // TODO(danakj): If changing these also update NumberOfRendererRasterThreads |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 812 return message_loop(); | 813 return message_loop(); |
| 813 } | 814 } |
| 814 | 815 |
| 815 IPC::SyncChannel* RenderThreadImpl::GetChannel() { | 816 IPC::SyncChannel* RenderThreadImpl::GetChannel() { |
| 816 return channel(); | 817 return channel(); |
| 817 } | 818 } |
| 818 | 819 |
| 819 std::string RenderThreadImpl::GetLocale() { | 820 std::string RenderThreadImpl::GetLocale() { |
| 820 // The browser process should have passed the locale to the renderer via the | 821 // The browser process should have passed the locale to the renderer via the |
| 821 // --lang command line flag. | 822 // --lang command line flag. |
| 822 const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); | 823 const base::CommandLine& parsed_command_line = |
| 824 *base::CommandLine::ForCurrentProcess(); |
| 823 const std::string& lang = | 825 const std::string& lang = |
| 824 parsed_command_line.GetSwitchValueASCII(switches::kLang); | 826 parsed_command_line.GetSwitchValueASCII(switches::kLang); |
| 825 DCHECK(!lang.empty()); | 827 DCHECK(!lang.empty()); |
| 826 return lang; | 828 return lang; |
| 827 } | 829 } |
| 828 | 830 |
| 829 IPC::SyncMessageFilter* RenderThreadImpl::GetSyncMessageFilter() { | 831 IPC::SyncMessageFilter* RenderThreadImpl::GetSyncMessageFilter() { |
| 830 return sync_message_filter(); | 832 return sync_message_filter(); |
| 831 } | 833 } |
| 832 | 834 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 // The ChildResourceMessageFilter and the ResourceDispatcher need to use the | 921 // The ChildResourceMessageFilter and the ResourceDispatcher need to use the |
| 920 // same queue to ensure tasks are executed in the expected order. | 922 // same queue to ensure tasks are executed in the expected order. |
| 921 child_resource_message_filter()->SetMainThreadTaskRunner(resource_task_queue); | 923 child_resource_message_filter()->SetMainThreadTaskRunner(resource_task_queue); |
| 922 resource_dispatcher()->SetMainThreadTaskRunner(resource_task_queue); | 924 resource_dispatcher()->SetMainThreadTaskRunner(resource_task_queue); |
| 923 } | 925 } |
| 924 | 926 |
| 925 void RenderThreadImpl::EnsureWebKitInitialized() { | 927 void RenderThreadImpl::EnsureWebKitInitialized() { |
| 926 if (blink_platform_impl_) | 928 if (blink_platform_impl_) |
| 927 return; | 929 return; |
| 928 | 930 |
| 929 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 931 const base::CommandLine& command_line = |
| 932 *base::CommandLine::ForCurrentProcess(); |
| 930 | 933 |
| 931 #ifdef ENABLE_VTUNE_JIT_INTERFACE | 934 #ifdef ENABLE_VTUNE_JIT_INTERFACE |
| 932 if (command_line.HasSwitch(switches::kEnableVtune)) | 935 if (command_line.HasSwitch(switches::kEnableVtune)) |
| 933 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler()); | 936 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler()); |
| 934 #endif | 937 #endif |
| 935 | 938 |
| 936 blink_platform_impl_.reset( | 939 blink_platform_impl_.reset( |
| 937 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); | 940 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); |
| 938 blink::initialize(blink_platform_impl_.get()); | 941 blink::initialize(blink_platform_impl_.get()); |
| 939 | 942 |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1179 | 1182 |
| 1180 void RenderThreadImpl::PostponeIdleNotification() { | 1183 void RenderThreadImpl::PostponeIdleNotification() { |
| 1181 idle_notifications_to_skip_ = 2; | 1184 idle_notifications_to_skip_ = 2; |
| 1182 } | 1185 } |
| 1183 | 1186 |
| 1184 scoped_refptr<media::GpuVideoAcceleratorFactories> | 1187 scoped_refptr<media::GpuVideoAcceleratorFactories> |
| 1185 RenderThreadImpl::GetGpuFactories() { | 1188 RenderThreadImpl::GetGpuFactories() { |
| 1186 DCHECK(IsMainThread()); | 1189 DCHECK(IsMainThread()); |
| 1187 | 1190 |
| 1188 scoped_refptr<GpuChannelHost> gpu_channel_host = GetGpuChannel(); | 1191 scoped_refptr<GpuChannelHost> gpu_channel_host = GetGpuChannel(); |
| 1189 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); | 1192 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| 1190 scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories; | 1193 scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories; |
| 1191 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner = | 1194 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner = |
| 1192 GetMediaThreadTaskRunner(); | 1195 GetMediaThreadTaskRunner(); |
| 1193 if (!cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode)) { | 1196 if (!cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode)) { |
| 1194 if (!gpu_va_context_provider_.get() || | 1197 if (!gpu_va_context_provider_.get() || |
| 1195 gpu_va_context_provider_->DestroyedOnMainThread()) { | 1198 gpu_va_context_provider_->DestroyedOnMainThread()) { |
| 1196 if (!gpu_channel_host.get()) { | 1199 if (!gpu_channel_host.get()) { |
| 1197 gpu_channel_host = EstablishGpuChannelSync( | 1200 gpu_channel_host = EstablishGpuChannelSync( |
| 1198 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZ
E); | 1201 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZ
E); |
| 1199 } | 1202 } |
| (...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1533 gpu_info, | 1536 gpu_info, |
| 1534 channel_handle, | 1537 channel_handle, |
| 1535 ChildProcess::current()->GetShutDownEvent(), | 1538 ChildProcess::current()->GetShutDownEvent(), |
| 1536 gpu_memory_buffer_manager()); | 1539 gpu_memory_buffer_manager()); |
| 1537 return gpu_channel_.get(); | 1540 return gpu_channel_.get(); |
| 1538 } | 1541 } |
| 1539 | 1542 |
| 1540 blink::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( | 1543 blink::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( |
| 1541 blink::WebMediaStreamCenterClient* client) { | 1544 blink::WebMediaStreamCenterClient* client) { |
| 1542 #if defined(OS_ANDROID) | 1545 #if defined(OS_ANDROID) |
| 1543 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1546 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1544 switches::kDisableWebRTC)) | 1547 switches::kDisableWebRTC)) |
| 1545 return NULL; | 1548 return NULL; |
| 1546 #endif | 1549 #endif |
| 1547 | 1550 |
| 1548 #if defined(ENABLE_WEBRTC) | 1551 #if defined(ENABLE_WEBRTC) |
| 1549 if (!media_stream_center_) { | 1552 if (!media_stream_center_) { |
| 1550 media_stream_center_ = GetContentClient()->renderer() | 1553 media_stream_center_ = GetContentClient()->renderer() |
| 1551 ->OverrideCreateWebMediaStreamCenter(client); | 1554 ->OverrideCreateWebMediaStreamCenter(client); |
| 1552 if (!media_stream_center_) { | 1555 if (!media_stream_center_) { |
| 1553 scoped_ptr<MediaStreamCenter> media_stream_center( | 1556 scoped_ptr<MediaStreamCenter> media_stream_center( |
| 1554 new MediaStreamCenter(client, GetPeerConnectionDependencyFactory())); | 1557 new MediaStreamCenter(client, GetPeerConnectionDependencyFactory())); |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1739 hidden_widget_count_--; | 1742 hidden_widget_count_--; |
| 1740 | 1743 |
| 1741 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { | 1744 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
| 1742 return; | 1745 return; |
| 1743 } | 1746 } |
| 1744 | 1747 |
| 1745 ScheduleIdleHandler(kLongIdleHandlerDelayMs); | 1748 ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
| 1746 } | 1749 } |
| 1747 | 1750 |
| 1748 } // namespace content | 1751 } // namespace content |
| OLD | NEW |