| 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 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 #include <cpu-features.h> | 130 #include <cpu-features.h> |
| 131 #include "content/renderer/android/synchronous_compositor_factory.h" | 131 #include "content/renderer/android/synchronous_compositor_factory.h" |
| 132 #include "content/renderer/media/android/renderer_demuxer_android.h" | 132 #include "content/renderer/media/android/renderer_demuxer_android.h" |
| 133 #endif | 133 #endif |
| 134 | 134 |
| 135 #if defined(ENABLE_PLUGINS) | 135 #if defined(ENABLE_PLUGINS) |
| 136 #include "content/renderer/npapi/plugin_channel_host.h" | 136 #include "content/renderer/npapi/plugin_channel_host.h" |
| 137 #endif | 137 #endif |
| 138 | 138 |
| 139 using base::ThreadRestrictions; | 139 using base::ThreadRestrictions; |
| 140 using WebKit::WebDocument; | 140 using blink::WebDocument; |
| 141 using WebKit::WebFrame; | 141 using blink::WebFrame; |
| 142 using WebKit::WebNetworkStateNotifier; | 142 using blink::WebNetworkStateNotifier; |
| 143 using WebKit::WebRuntimeFeatures; | 143 using blink::WebRuntimeFeatures; |
| 144 using WebKit::WebScriptController; | 144 using blink::WebScriptController; |
| 145 using WebKit::WebSecurityPolicy; | 145 using blink::WebSecurityPolicy; |
| 146 using WebKit::WebString; | 146 using blink::WebString; |
| 147 using WebKit::WebView; | 147 using blink::WebView; |
| 148 | 148 |
| 149 namespace content { | 149 namespace content { |
| 150 | 150 |
| 151 namespace { | 151 namespace { |
| 152 | 152 |
| 153 const int64 kInitialIdleHandlerDelayMs = 1000; | 153 const int64 kInitialIdleHandlerDelayMs = 1000; |
| 154 const int64 kShortIdleHandlerDelayMs = 1000; | 154 const int64 kShortIdleHandlerDelayMs = 1000; |
| 155 const int64 kLongIdleHandlerDelayMs = 30*1000; | 155 const int64 kLongIdleHandlerDelayMs = 30*1000; |
| 156 const int kIdleCPUUsageThresholdInPercents = 3; | 156 const int kIdleCPUUsageThresholdInPercents = 3; |
| 157 | 157 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 | 229 |
| 230 scoped_ptr<base::SharedMemory> AllocateSharedMemoryFunction(size_t size) { | 230 scoped_ptr<base::SharedMemory> AllocateSharedMemoryFunction(size_t size) { |
| 231 return RenderThreadImpl::Get()->HostAllocateSharedMemoryBuffer(size); | 231 return RenderThreadImpl::Get()->HostAllocateSharedMemoryBuffer(size); |
| 232 } | 232 } |
| 233 | 233 |
| 234 void EnableWebCoreLogChannels(const std::string& channels) { | 234 void EnableWebCoreLogChannels(const std::string& channels) { |
| 235 if (channels.empty()) | 235 if (channels.empty()) |
| 236 return; | 236 return; |
| 237 base::StringTokenizer t(channels, ", "); | 237 base::StringTokenizer t(channels, ", "); |
| 238 while (t.GetNext()) | 238 while (t.GetNext()) |
| 239 WebKit::enableLogChannel(t.token().c_str()); | 239 blink::enableLogChannel(t.token().c_str()); |
| 240 } | 240 } |
| 241 | 241 |
| 242 } // namespace | 242 } // namespace |
| 243 | 243 |
| 244 RenderThreadImpl::HistogramCustomizer::HistogramCustomizer() { | 244 RenderThreadImpl::HistogramCustomizer::HistogramCustomizer() { |
| 245 custom_histograms_.insert("V8.MemoryExternalFragmentationTotal"); | 245 custom_histograms_.insert("V8.MemoryExternalFragmentationTotal"); |
| 246 custom_histograms_.insert("V8.MemoryHeapSampleTotalCommitted"); | 246 custom_histograms_.insert("V8.MemoryHeapSampleTotalCommitted"); |
| 247 custom_histograms_.insert("V8.MemoryHeapSampleTotalUsed"); | 247 custom_histograms_.insert("V8.MemoryHeapSampleTotalUsed"); |
| 248 } | 248 } |
| 249 | 249 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 base::debug::TraceLog::GetInstance()->SetThreadSortIndex( | 305 base::debug::TraceLog::GetInstance()->SetThreadSortIndex( |
| 306 base::PlatformThread::CurrentId(), | 306 base::PlatformThread::CurrentId(), |
| 307 kTraceEventRendererMainThreadSortIndex); | 307 kTraceEventRendererMainThreadSortIndex); |
| 308 | 308 |
| 309 v8::V8::SetCounterFunction(base::StatsTable::FindLocation); | 309 v8::V8::SetCounterFunction(base::StatsTable::FindLocation); |
| 310 v8::V8::SetCreateHistogramFunction(CreateHistogram); | 310 v8::V8::SetCreateHistogramFunction(CreateHistogram); |
| 311 v8::V8::SetAddHistogramSampleFunction(AddHistogramSample); | 311 v8::V8::SetAddHistogramSampleFunction(AddHistogramSample); |
| 312 | 312 |
| 313 #if defined(OS_MACOSX) || defined(OS_ANDROID) | 313 #if defined(OS_MACOSX) || defined(OS_ANDROID) |
| 314 // On Mac and Android, the select popups are rendered by the browser. | 314 // On Mac and Android, the select popups are rendered by the browser. |
| 315 WebKit::WebView::setUseExternalPopupMenus(true); | 315 blink::WebView::setUseExternalPopupMenus(true); |
| 316 #endif | 316 #endif |
| 317 | 317 |
| 318 lazy_tls.Pointer()->Set(this); | 318 lazy_tls.Pointer()->Set(this); |
| 319 | 319 |
| 320 #if defined(OS_WIN) | 320 #if defined(OS_WIN) |
| 321 // If you are running plugins in this thread you need COM active but in | 321 // If you are running plugins in this thread you need COM active but in |
| 322 // the normal case you don't. | 322 // the normal case you don't. |
| 323 if (RenderProcessImpl::InProcessPlugins()) | 323 if (RenderProcessImpl::InProcessPlugins()) |
| 324 initialize_com_.reset(new base::win::ScopedCOMInitializer()); | 324 initialize_com_.reset(new base::win::ScopedCOMInitializer()); |
| 325 #endif | 325 #endif |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 } | 444 } |
| 445 | 445 |
| 446 compositor_thread_.reset(); | 446 compositor_thread_.reset(); |
| 447 input_handler_manager_.reset(); | 447 input_handler_manager_.reset(); |
| 448 if (input_event_filter_.get()) { | 448 if (input_event_filter_.get()) { |
| 449 RemoveFilter(input_event_filter_.get()); | 449 RemoveFilter(input_event_filter_.get()); |
| 450 input_event_filter_ = NULL; | 450 input_event_filter_ = NULL; |
| 451 } | 451 } |
| 452 | 452 |
| 453 if (webkit_platform_support_) | 453 if (webkit_platform_support_) |
| 454 WebKit::shutdown(); | 454 blink::shutdown(); |
| 455 | 455 |
| 456 lazy_tls.Pointer()->Set(NULL); | 456 lazy_tls.Pointer()->Set(NULL); |
| 457 | 457 |
| 458 // TODO(port) | 458 // TODO(port) |
| 459 #if defined(OS_WIN) | 459 #if defined(OS_WIN) |
| 460 // Clean up plugin channels before this thread goes away. | 460 // Clean up plugin channels before this thread goes away. |
| 461 NPChannelBase::CleanupChannels(); | 461 NPChannelBase::CleanupChannels(); |
| 462 #endif | 462 #endif |
| 463 | 463 |
| 464 // Leak shared contexts on other threads, as we can not get to the correct | 464 // Leak shared contexts on other threads, as we can not get to the correct |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 } | 629 } |
| 630 | 630 |
| 631 ScheduleIdleHandler(kLongIdleHandlerDelayMs); | 631 ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
| 632 } | 632 } |
| 633 | 633 |
| 634 void RenderThreadImpl::EnsureWebKitInitialized() { | 634 void RenderThreadImpl::EnsureWebKitInitialized() { |
| 635 if (webkit_platform_support_) | 635 if (webkit_platform_support_) |
| 636 return; | 636 return; |
| 637 | 637 |
| 638 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl); | 638 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl); |
| 639 WebKit::initialize(webkit_platform_support_.get()); | 639 blink::initialize(webkit_platform_support_.get()); |
| 640 | 640 |
| 641 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 641 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 642 | 642 |
| 643 bool enable = command_line.HasSwitch(switches::kEnableThreadedCompositing); | 643 bool enable = command_line.HasSwitch(switches::kEnableThreadedCompositing); |
| 644 if (enable) { | 644 if (enable) { |
| 645 #if defined(OS_ANDROID) | 645 #if defined(OS_ANDROID) |
| 646 if (SynchronousCompositorFactory* factory = | 646 if (SynchronousCompositorFactory* factory = |
| 647 SynchronousCompositorFactory::GetInstance()) | 647 SynchronousCompositorFactory::GetInstance()) |
| 648 compositor_message_loop_proxy_ = | 648 compositor_message_loop_proxy_ = |
| 649 factory->GetCompositorMessageLoop(); | 649 factory->GetCompositorMessageLoop(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 | 692 |
| 693 WebScriptController::enableV8SingleThreadMode(); | 693 WebScriptController::enableV8SingleThreadMode(); |
| 694 | 694 |
| 695 RenderThreadImpl::RegisterSchemes(); | 695 RenderThreadImpl::RegisterSchemes(); |
| 696 | 696 |
| 697 EnableWebCoreLogChannels( | 697 EnableWebCoreLogChannels( |
| 698 command_line.GetSwitchValueASCII(switches::kWebCoreLogChannels)); | 698 command_line.GetSwitchValueASCII(switches::kWebCoreLogChannels)); |
| 699 | 699 |
| 700 web_database_observer_impl_.reset( | 700 web_database_observer_impl_.reset( |
| 701 new WebDatabaseObserverImpl(sync_message_filter())); | 701 new WebDatabaseObserverImpl(sync_message_filter())); |
| 702 WebKit::WebDatabase::setObserver(web_database_observer_impl_.get()); | 702 blink::WebDatabase::setObserver(web_database_observer_impl_.get()); |
| 703 | 703 |
| 704 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line); | 704 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line); |
| 705 | 705 |
| 706 if (!media::IsMediaLibraryInitialized()) { | 706 if (!media::IsMediaLibraryInitialized()) { |
| 707 WebRuntimeFeatures::enableMediaPlayer(false); | 707 WebRuntimeFeatures::enableMediaPlayer(false); |
| 708 WebRuntimeFeatures::enableWebAudio(false); | 708 WebRuntimeFeatures::enableWebAudio(false); |
| 709 } | 709 } |
| 710 | 710 |
| 711 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized()); | 711 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized()); |
| 712 | 712 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 if (!gpu_va_context_provider_ || | 875 if (!gpu_va_context_provider_ || |
| 876 gpu_va_context_provider_->DestroyedOnMainThread()) { | 876 gpu_va_context_provider_->DestroyedOnMainThread()) { |
| 877 if (!gpu_channel_host) { | 877 if (!gpu_channel_host) { |
| 878 gpu_channel_host = EstablishGpuChannelSync( | 878 gpu_channel_host = EstablishGpuChannelSync( |
| 879 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZ
E); | 879 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZ
E); |
| 880 } | 880 } |
| 881 gpu_va_context_provider_ = ContextProviderCommandBuffer::Create( | 881 gpu_va_context_provider_ = ContextProviderCommandBuffer::Create( |
| 882 make_scoped_ptr( | 882 make_scoped_ptr( |
| 883 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( | 883 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( |
| 884 gpu_channel_host.get(), | 884 gpu_channel_host.get(), |
| 885 WebKit::WebGraphicsContext3D::Attributes(), | 885 blink::WebGraphicsContext3D::Attributes(), |
| 886 GURL("chrome://gpu/RenderThreadImpl::GetGpuVDAContext3D"))), | 886 GURL("chrome://gpu/RenderThreadImpl::GetGpuVDAContext3D"))), |
| 887 "GPU-VideoAccelerator-Offscreen"); | 887 "GPU-VideoAccelerator-Offscreen"); |
| 888 } | 888 } |
| 889 } | 889 } |
| 890 if (gpu_channel_host) { | 890 if (gpu_channel_host) { |
| 891 gpu_factories = new RendererGpuVideoAcceleratorFactories( | 891 gpu_factories = new RendererGpuVideoAcceleratorFactories( |
| 892 gpu_channel_host.get(), gpu_va_context_provider_); | 892 gpu_channel_host.get(), gpu_va_context_provider_); |
| 893 } | 893 } |
| 894 return gpu_factories; | 894 return gpu_factories; |
| 895 } | 895 } |
| 896 | 896 |
| 897 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> | 897 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> |
| 898 RenderThreadImpl::CreateOffscreenContext3d() { | 898 RenderThreadImpl::CreateOffscreenContext3d() { |
| 899 WebKit::WebGraphicsContext3D::Attributes attributes; | 899 blink::WebGraphicsContext3D::Attributes attributes; |
| 900 attributes.shareResources = true; | 900 attributes.shareResources = true; |
| 901 attributes.depth = false; | 901 attributes.depth = false; |
| 902 attributes.stencil = false; | 902 attributes.stencil = false; |
| 903 attributes.antialias = false; | 903 attributes.antialias = false; |
| 904 attributes.noAutomaticFlushes = true; | 904 attributes.noAutomaticFlushes = true; |
| 905 | 905 |
| 906 scoped_refptr<GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync( | 906 scoped_refptr<GpuChannelHost> gpu_channel_host(EstablishGpuChannelSync( |
| 907 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE)); | 907 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE)); |
| 908 return make_scoped_ptr( | 908 return make_scoped_ptr( |
| 909 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( | 909 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1201 // Cache some variables that are needed on the compositor thread for our | 1201 // Cache some variables that are needed on the compositor thread for our |
| 1202 // implementation of GpuChannelHostFactory. | 1202 // implementation of GpuChannelHostFactory. |
| 1203 io_message_loop_proxy_ = ChildProcess::current()->io_message_loop_proxy(); | 1203 io_message_loop_proxy_ = ChildProcess::current()->io_message_loop_proxy(); |
| 1204 shutdown_event_ = ChildProcess::current()->GetShutDownEvent(); | 1204 shutdown_event_ = ChildProcess::current()->GetShutDownEvent(); |
| 1205 | 1205 |
| 1206 gpu_channel_ = GpuChannelHost::Create( | 1206 gpu_channel_ = GpuChannelHost::Create( |
| 1207 this, 0, client_id, gpu_info, channel_handle); | 1207 this, 0, client_id, gpu_info, channel_handle); |
| 1208 return gpu_channel_.get(); | 1208 return gpu_channel_.get(); |
| 1209 } | 1209 } |
| 1210 | 1210 |
| 1211 WebKit::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( | 1211 blink::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( |
| 1212 WebKit::WebMediaStreamCenterClient* client) { | 1212 blink::WebMediaStreamCenterClient* client) { |
| 1213 #if defined(OS_ANDROID) | 1213 #if defined(OS_ANDROID) |
| 1214 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1214 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 1215 switches::kDisableWebRTC)) | 1215 switches::kDisableWebRTC)) |
| 1216 return NULL; | 1216 return NULL; |
| 1217 #endif | 1217 #endif |
| 1218 | 1218 |
| 1219 #if defined(ENABLE_WEBRTC) | 1219 #if defined(ENABLE_WEBRTC) |
| 1220 if (!media_stream_center_) { | 1220 if (!media_stream_center_) { |
| 1221 media_stream_center_ = GetContentClient()->renderer() | 1221 media_stream_center_ = GetContentClient()->renderer() |
| 1222 ->OverrideCreateWebMediaStreamCenter(client); | 1222 ->OverrideCreateWebMediaStreamCenter(client); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1252 return gpu_channel_.get(); | 1252 return gpu_channel_.get(); |
| 1253 } | 1253 } |
| 1254 | 1254 |
| 1255 void RenderThreadImpl::OnPurgePluginListCache(bool reload_pages) { | 1255 void RenderThreadImpl::OnPurgePluginListCache(bool reload_pages) { |
| 1256 EnsureWebKitInitialized(); | 1256 EnsureWebKitInitialized(); |
| 1257 // The call below will cause a GetPlugins call with refresh=true, but at this | 1257 // The call below will cause a GetPlugins call with refresh=true, but at this |
| 1258 // point we already know that the browser has refreshed its list, so disable | 1258 // point we already know that the browser has refreshed its list, so disable |
| 1259 // refresh temporarily to prevent each renderer process causing the list to be | 1259 // refresh temporarily to prevent each renderer process causing the list to be |
| 1260 // regenerated. | 1260 // regenerated. |
| 1261 webkit_platform_support_->set_plugin_refresh_allowed(false); | 1261 webkit_platform_support_->set_plugin_refresh_allowed(false); |
| 1262 WebKit::resetPluginCache(reload_pages); | 1262 blink::resetPluginCache(reload_pages); |
| 1263 webkit_platform_support_->set_plugin_refresh_allowed(true); | 1263 webkit_platform_support_->set_plugin_refresh_allowed(true); |
| 1264 | 1264 |
| 1265 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged()); | 1265 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged()); |
| 1266 } | 1266 } |
| 1267 | 1267 |
| 1268 void RenderThreadImpl::OnNetworkStateChanged(bool online) { | 1268 void RenderThreadImpl::OnNetworkStateChanged(bool online) { |
| 1269 EnsureWebKitInitialized(); | 1269 EnsureWebKitInitialized(); |
| 1270 WebNetworkStateNotifier::setOnLine(online); | 1270 WebNetworkStateNotifier::setOnLine(online); |
| 1271 } | 1271 } |
| 1272 | 1272 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1285 | 1285 |
| 1286 void RenderThreadImpl::OnMemoryPressure( | 1286 void RenderThreadImpl::OnMemoryPressure( |
| 1287 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { | 1287 base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
| 1288 base::allocator::ReleaseFreeMemory(); | 1288 base::allocator::ReleaseFreeMemory(); |
| 1289 | 1289 |
| 1290 if (memory_pressure_level == | 1290 if (memory_pressure_level == |
| 1291 base::MemoryPressureListener::MEMORY_PRESSURE_CRITICAL) { | 1291 base::MemoryPressureListener::MEMORY_PRESSURE_CRITICAL) { |
| 1292 // Trigger full v8 garbage collection on critical memory notification. | 1292 // Trigger full v8 garbage collection on critical memory notification. |
| 1293 v8::V8::LowMemoryNotification(); | 1293 v8::V8::LowMemoryNotification(); |
| 1294 // Clear the image cache. | 1294 // Clear the image cache. |
| 1295 WebKit::WebImageCache::clear(); | 1295 blink::WebImageCache::clear(); |
| 1296 // Purge Skia font cache, by setting it to 0 and then again to the previous | 1296 // Purge Skia font cache, by setting it to 0 and then again to the previous |
| 1297 // limit. | 1297 // limit. |
| 1298 size_t font_cache_limit = SkGraphics::SetFontCacheLimit(0); | 1298 size_t font_cache_limit = SkGraphics::SetFontCacheLimit(0); |
| 1299 SkGraphics::SetFontCacheLimit(font_cache_limit); | 1299 SkGraphics::SetFontCacheLimit(font_cache_limit); |
| 1300 } else { | 1300 } else { |
| 1301 // Otherwise trigger a couple of v8 GCs using IdleNotification. | 1301 // Otherwise trigger a couple of v8 GCs using IdleNotification. |
| 1302 if (!v8::V8::IdleNotification()) | 1302 if (!v8::V8::IdleNotification()) |
| 1303 v8::V8::IdleNotification(); | 1303 v8::V8::IdleNotification(); |
| 1304 } | 1304 } |
| 1305 } | 1305 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1330 } | 1330 } |
| 1331 | 1331 |
| 1332 void RenderThreadImpl::SetFlingCurveParameters( | 1332 void RenderThreadImpl::SetFlingCurveParameters( |
| 1333 const std::vector<float>& new_touchpad, | 1333 const std::vector<float>& new_touchpad, |
| 1334 const std::vector<float>& new_touchscreen) { | 1334 const std::vector<float>& new_touchscreen) { |
| 1335 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, | 1335 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, |
| 1336 new_touchscreen); | 1336 new_touchscreen); |
| 1337 | 1337 |
| 1338 } | 1338 } |
| 1339 | 1339 |
| 1340 void RenderThreadImpl::SampleGamepads(WebKit::WebGamepads* data) { | 1340 void RenderThreadImpl::SampleGamepads(blink::WebGamepads* data) { |
| 1341 if (!gamepad_shared_memory_reader_) | 1341 if (!gamepad_shared_memory_reader_) |
| 1342 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); | 1342 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); |
| 1343 gamepad_shared_memory_reader_->SampleGamepads(*data); | 1343 gamepad_shared_memory_reader_->SampleGamepads(*data); |
| 1344 } | 1344 } |
| 1345 | 1345 |
| 1346 base::ProcessId RenderThreadImpl::renderer_process_id() const { | 1346 base::ProcessId RenderThreadImpl::renderer_process_id() const { |
| 1347 return renderer_process_id_; | 1347 return renderer_process_id_; |
| 1348 } | 1348 } |
| 1349 | 1349 |
| 1350 } // namespace content | 1350 } // namespace content |
| OLD | NEW |