Chromium Code Reviews| 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 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 583 } | 583 } |
| 584 } | 584 } |
| 585 return false; | 585 return false; |
| 586 } | 586 } |
| 587 | 587 |
| 588 // static | 588 // static |
| 589 RenderThreadImpl* RenderThreadImpl::Create( | 589 RenderThreadImpl* RenderThreadImpl::Create( |
| 590 const InProcessChildThreadParams& params) { | 590 const InProcessChildThreadParams& params) { |
| 591 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler = | 591 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler = |
| 592 scheduler::RendererScheduler::Create(); | 592 scheduler::RendererScheduler::Create(); |
| 593 return new RenderThreadImpl(params, std::move(renderer_scheduler)); | 593 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; |
| 594 return new RenderThreadImpl( | |
| 595 params, std::move(renderer_scheduler), test_task_counter); | |
| 594 } | 596 } |
| 595 | 597 |
| 596 // static | 598 // static |
| 597 RenderThreadImpl* RenderThreadImpl::Create( | 599 RenderThreadImpl* RenderThreadImpl::Create( |
| 598 scoped_ptr<base::MessageLoop> main_message_loop, | 600 scoped_ptr<base::MessageLoop> main_message_loop, |
| 599 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler) { | 601 scoped_ptr<scheduler::RendererScheduler> renderer_scheduler) { |
| 600 return new RenderThreadImpl(std::move(main_message_loop), | 602 return new RenderThreadImpl(std::move(main_message_loop), |
| 601 std::move(renderer_scheduler)); | 603 std::move(renderer_scheduler)); |
| 602 } | 604 } |
| 603 | 605 |
| 604 RenderThreadImpl* RenderThreadImpl::current() { | 606 RenderThreadImpl* RenderThreadImpl::current() { |
| 605 return lazy_tls.Pointer()->Get(); | 607 return lazy_tls.Pointer()->Get(); |
| 606 } | 608 } |
| 607 | 609 |
| 608 RenderThreadImpl::RenderThreadImpl( | 610 RenderThreadImpl::RenderThreadImpl( |
| 609 const InProcessChildThreadParams& params, | 611 const InProcessChildThreadParams& params, |
| 610 scoped_ptr<scheduler::RendererScheduler> scheduler) | 612 scoped_ptr<scheduler::RendererScheduler> scheduler, |
| 613 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) | |
| 611 : ChildThreadImpl(Options::Builder() | 614 : ChildThreadImpl(Options::Builder() |
| 612 .InBrowserProcess(params) | 615 .InBrowserProcess(params) |
| 613 .UseMojoChannel(ShouldUseMojoChannel()) | 616 .UseMojoChannel(ShouldUseMojoChannel()) |
| 614 .Build()), | 617 .Build()), |
| 615 renderer_scheduler_(std::move(scheduler)), | 618 renderer_scheduler_(std::move(scheduler)), |
| 616 raster_worker_pool_(new RasterWorkerPool()) { | 619 raster_worker_pool_(new RasterWorkerPool()) { |
| 617 Init(); | 620 Init(resource_task_queue); |
| 618 } | 621 } |
| 619 | 622 |
| 620 // When we run plugins in process, we actually run them on the render thread, | 623 // When we run plugins in process, we actually run them on the render thread, |
| 621 // which means that we need to make the render thread pump UI events. | 624 // which means that we need to make the render thread pump UI events. |
| 622 RenderThreadImpl::RenderThreadImpl( | 625 RenderThreadImpl::RenderThreadImpl( |
| 623 scoped_ptr<base::MessageLoop> main_message_loop, | 626 scoped_ptr<base::MessageLoop> main_message_loop, |
| 624 scoped_ptr<scheduler::RendererScheduler> scheduler) | 627 scoped_ptr<scheduler::RendererScheduler> scheduler) |
| 625 : ChildThreadImpl(Options::Builder() | 628 : ChildThreadImpl(Options::Builder() |
| 626 .UseMojoChannel(ShouldUseMojoChannel()) | 629 .UseMojoChannel(ShouldUseMojoChannel()) |
| 627 .Build()), | 630 .Build()), |
| 628 renderer_scheduler_(std::move(scheduler)), | 631 renderer_scheduler_(std::move(scheduler)), |
| 629 main_message_loop_(std::move(main_message_loop)), | 632 main_message_loop_(std::move(main_message_loop)), |
| 630 raster_worker_pool_(new RasterWorkerPool()) { | 633 raster_worker_pool_(new RasterWorkerPool()) { |
| 631 Init(); | 634 scoped_refptr<base::SingleThreadTaskRunner> test_task_counter; |
| 635 Init(test_task_counter); | |
| 632 } | 636 } |
| 633 | 637 |
| 634 void RenderThreadImpl::Init() { | 638 void RenderThreadImpl::Init( |
| 639 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { | |
| 635 TRACE_EVENT0("startup", "RenderThreadImpl::Init"); | 640 TRACE_EVENT0("startup", "RenderThreadImpl::Init"); |
| 636 | 641 |
| 637 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( | 642 base::trace_event::TraceLog::GetInstance()->SetThreadSortIndex( |
| 638 base::PlatformThread::CurrentId(), | 643 base::PlatformThread::CurrentId(), |
| 639 kTraceEventRendererMainThreadSortIndex); | 644 kTraceEventRendererMainThreadSortIndex); |
| 640 | 645 |
| 641 #if defined(OS_MACOSX) || (defined(OS_ANDROID) && !defined(USE_AURA)) | 646 #if defined(OS_MACOSX) || (defined(OS_ANDROID) && !defined(USE_AURA)) |
| 642 // On Mac and Android Java UI, the select popups are rendered by the browser. | 647 // On Mac and Android Java UI, the select popups are rendered by the browser. |
| 643 blink::WebView::setUseExternalPopupMenus(true); | 648 blink::WebView::setUseExternalPopupMenus(true); |
| 644 #endif | 649 #endif |
| 645 | 650 |
| 646 lazy_tls.Pointer()->Set(this); | 651 lazy_tls.Pointer()->Set(this); |
| 647 | 652 |
| 648 // Register this object as the main thread. | 653 // Register this object as the main thread. |
| 649 ChildProcess::current()->set_main_thread(this); | 654 ChildProcess::current()->set_main_thread(this); |
| 650 | 655 |
| 656 InitializeWebKit(resource_task_queue); | |
|
Avi (use Gerrit)
2016/03/23 00:10:38
Can we rename this to InitializeBlink while we're
| |
| 657 | |
| 651 // In single process the single process is all there is. | 658 // In single process the single process is all there is. |
| 652 notify_webkit_of_modal_loop_ = true; | 659 notify_webkit_of_modal_loop_ = true; |
| 653 webkit_shared_timer_suspended_ = false; | 660 webkit_shared_timer_suspended_ = false; |
| 654 widget_count_ = 0; | 661 widget_count_ = 0; |
| 655 hidden_widget_count_ = 0; | 662 hidden_widget_count_ = 0; |
| 656 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; | 663 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; |
| 657 idle_notifications_to_skip_ = 0; | 664 idle_notifications_to_skip_ = 0; |
| 658 layout_test_mode_ = false; | 665 layout_test_mode_ = false; |
| 659 | 666 |
| 660 appcache_dispatcher_.reset( | 667 appcache_dispatcher_.reset( |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1149 | 1156 |
| 1150 void RenderThreadImpl::RemoveObserver(RenderProcessObserver* observer) { | 1157 void RenderThreadImpl::RemoveObserver(RenderProcessObserver* observer) { |
| 1151 observers_.RemoveObserver(observer); | 1158 observers_.RemoveObserver(observer); |
| 1152 } | 1159 } |
| 1153 | 1160 |
| 1154 void RenderThreadImpl::SetResourceDispatcherDelegate( | 1161 void RenderThreadImpl::SetResourceDispatcherDelegate( |
| 1155 ResourceDispatcherDelegate* delegate) { | 1162 ResourceDispatcherDelegate* delegate) { |
| 1156 resource_dispatcher()->set_delegate(delegate); | 1163 resource_dispatcher()->set_delegate(delegate); |
| 1157 } | 1164 } |
| 1158 | 1165 |
| 1159 void RenderThreadImpl::SetResourceDispatchTaskQueue( | |
| 1160 const scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { | |
| 1161 // Add a filter that forces resource messages to be dispatched via a | |
| 1162 // particular task runner. | |
| 1163 scoped_refptr<ResourceSchedulingFilter> filter( | |
| 1164 new ResourceSchedulingFilter(resource_task_queue, resource_dispatcher())); | |
| 1165 channel()->AddFilter(filter.get()); | |
| 1166 resource_dispatcher()->SetResourceSchedulingFilter(filter); | |
| 1167 | |
| 1168 // The ChildResourceMessageFilter and the ResourceDispatcher need to use the | |
| 1169 // same queue to ensure tasks are executed in the expected order. | |
| 1170 child_resource_message_filter()->SetMainThreadTaskRunner(resource_task_queue); | |
| 1171 resource_dispatcher()->SetMainThreadTaskRunner(resource_task_queue); | |
| 1172 } | |
| 1173 | |
| 1174 void RenderThreadImpl::InitializeCompositorThread() { | 1166 void RenderThreadImpl::InitializeCompositorThread() { |
| 1175 #if defined(OS_ANDROID) | 1167 #if defined(OS_ANDROID) |
| 1176 SynchronousCompositorFactory* sync_compositor_factory = | 1168 SynchronousCompositorFactory* sync_compositor_factory = |
| 1177 SynchronousCompositorFactory::GetInstance(); | 1169 SynchronousCompositorFactory::GetInstance(); |
| 1178 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | 1170 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
| 1179 bool using_ipc_sync_compositing = | 1171 bool using_ipc_sync_compositing = |
| 1180 cmd_line->HasSwitch(switches::kIPCSyncCompositing); | 1172 cmd_line->HasSwitch(switches::kIPCSyncCompositing); |
| 1181 bool sync_input_for_sync_compositing = | 1173 bool sync_input_for_sync_compositing = |
| 1182 cmd_line->HasSwitch(switches::kSyncInputForSyncCompositor); | 1174 cmd_line->HasSwitch(switches::kSyncInputForSyncCompositor); |
| 1183 DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); | 1175 DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1227 main_thread_compositor_task_runner_, | 1219 main_thread_compositor_task_runner_, |
| 1228 compositor_task_runner_)); | 1220 compositor_task_runner_)); |
| 1229 input_handler_manager_client = compositor_input_event_filter.get(); | 1221 input_handler_manager_client = compositor_input_event_filter.get(); |
| 1230 input_event_filter_ = compositor_input_event_filter; | 1222 input_event_filter_ = compositor_input_event_filter; |
| 1231 } | 1223 } |
| 1232 input_handler_manager_.reset(new InputHandlerManager( | 1224 input_handler_manager_.reset(new InputHandlerManager( |
| 1233 compositor_task_runner_, input_handler_manager_client, | 1225 compositor_task_runner_, input_handler_manager_client, |
| 1234 synchronous_input_handler_proxy_client, renderer_scheduler_.get())); | 1226 synchronous_input_handler_proxy_client, renderer_scheduler_.get())); |
| 1235 } | 1227 } |
| 1236 | 1228 |
| 1237 void RenderThreadImpl::EnsureWebKitInitialized() { | 1229 void RenderThreadImpl::InitializeWebKit( |
|
Avi (use Gerrit)
2016/03/23 00:10:38
s/WebKit/Blink/?
| |
| 1238 if (blink_platform_impl_) | 1230 scoped_refptr<base::SingleThreadTaskRunner>& resource_task_queue) { |
| 1239 return; | 1231 DCHECK(!blink_platform_impl_); |
| 1240 | 1232 |
| 1241 const base::CommandLine& command_line = | 1233 const base::CommandLine& command_line = |
| 1242 *base::CommandLine::ForCurrentProcess(); | 1234 *base::CommandLine::ForCurrentProcess(); |
| 1243 | 1235 |
| 1244 #ifdef ENABLE_VTUNE_JIT_INTERFACE | 1236 #ifdef ENABLE_VTUNE_JIT_INTERFACE |
| 1245 if (command_line.HasSwitch(switches::kEnableVtune)) | 1237 if (command_line.HasSwitch(switches::kEnableVtune)) |
| 1246 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler()); | 1238 gin::Debug::SetJitCodeEventHandler(vTune::GetVtuneCodeEventHandler()); |
| 1247 #endif | 1239 #endif |
| 1248 | 1240 |
| 1249 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line); | 1241 SetRuntimeFeaturesDefaultsAndUpdateFromArgs(command_line); |
| 1250 | 1242 |
| 1251 blink_platform_impl_.reset( | 1243 blink_platform_impl_.reset( |
| 1252 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); | 1244 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); |
| 1253 blink::initialize(blink_platform_impl_.get()); | 1245 blink::initialize(blink_platform_impl_.get()); |
| 1254 | 1246 |
| 1255 v8::Isolate* isolate = blink::mainThreadIsolate(); | 1247 v8::Isolate* isolate = blink::mainThreadIsolate(); |
| 1256 isolate->SetCreateHistogramFunction(CreateHistogram); | 1248 isolate->SetCreateHistogramFunction(CreateHistogram); |
| 1257 isolate->SetAddHistogramSampleFunction(AddHistogramSample); | 1249 isolate->SetAddHistogramSampleFunction(AddHistogramSample); |
| 1258 | 1250 |
| 1259 main_thread_compositor_task_runner_ = | 1251 main_thread_compositor_task_runner_ = |
| 1260 renderer_scheduler_->CompositorTaskRunner(); | 1252 renderer_scheduler_->CompositorTaskRunner(); |
| 1261 | 1253 |
| 1262 main_input_callback_.Reset( | 1254 main_input_callback_.Reset( |
| 1263 base::Bind(base::IgnoreResult(&RenderThreadImpl::OnMessageReceived), | 1255 base::Bind(base::IgnoreResult(&RenderThreadImpl::OnMessageReceived), |
| 1264 base::Unretained(this))); | 1256 base::Unretained(this))); |
| 1265 | 1257 |
| 1266 SetResourceDispatchTaskQueue(renderer_scheduler_->LoadingTaskRunner()); | 1258 scoped_refptr<base::SingleThreadTaskRunner> resource_task_queue2; |
| 1259 if (resource_task_queue) { | |
| 1260 resource_task_queue2 = resource_task_queue; | |
| 1261 } else { | |
| 1262 resource_task_queue2 = renderer_scheduler_->LoadingTaskRunner(); | |
| 1263 } | |
| 1264 // Add a filter that forces resource messages to be dispatched via a | |
| 1265 // particular task runner. | |
| 1266 scoped_refptr<ResourceSchedulingFilter> filter( | |
| 1267 new ResourceSchedulingFilter( | |
| 1268 resource_task_queue2, resource_dispatcher())); | |
| 1269 channel()->AddFilter(filter.get()); | |
| 1270 resource_dispatcher()->SetResourceSchedulingFilter(filter); | |
| 1271 | |
| 1272 // The ChildResourceMessageFilter and the ResourceDispatcher need to use the | |
| 1273 // same queue to ensure tasks are executed in the expected order. | |
| 1274 child_resource_message_filter()->SetMainThreadTaskRunner( | |
| 1275 resource_task_queue2); | |
| 1276 resource_dispatcher()->SetMainThreadTaskRunner(resource_task_queue2); | |
| 1277 | |
| 1267 if (!command_line.HasSwitch(switches::kDisableThreadedCompositing) && | 1278 if (!command_line.HasSwitch(switches::kDisableThreadedCompositing) && |
| 1268 !command_line.HasSwitch(switches::kUseRemoteCompositing)) | 1279 !command_line.HasSwitch(switches::kUseRemoteCompositing)) |
| 1269 InitializeCompositorThread(); | 1280 InitializeCompositorThread(); |
| 1270 | 1281 |
| 1271 if (!input_event_filter_.get()) { | 1282 if (!input_event_filter_.get()) { |
| 1272 // Always provide an input event filter implementation to ensure consistent | 1283 // Always provide an input event filter implementation to ensure consistent |
| 1273 // input event scheduling and prioritization. | 1284 // input event scheduling and prioritization. |
| 1274 // TODO(jdduke): Merge InputEventFilter, InputHandlerManager and | 1285 // TODO(jdduke): Merge InputEventFilter, InputHandlerManager and |
| 1275 // MainThreadInputEventFilter, crbug.com/436057. | 1286 // MainThreadInputEventFilter, crbug.com/436057. |
| 1276 input_event_filter_ = new MainThreadInputEventFilter( | 1287 input_event_filter_ = new MainThreadInputEventFilter( |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 1288 compositor_impl_side_task_runner.get()); | 1299 compositor_impl_side_task_runner.get()); |
| 1289 AddFilter(compositor_message_filter_.get()); | 1300 AddFilter(compositor_message_filter_.get()); |
| 1290 | 1301 |
| 1291 RenderThreadImpl::RegisterSchemes(); | 1302 RenderThreadImpl::RegisterSchemes(); |
| 1292 | 1303 |
| 1293 EnableBlinkPlatformLogChannels( | 1304 EnableBlinkPlatformLogChannels( |
| 1294 command_line.GetSwitchValueASCII(switches::kBlinkPlatformLogChannels)); | 1305 command_line.GetSwitchValueASCII(switches::kBlinkPlatformLogChannels)); |
| 1295 | 1306 |
| 1296 RenderMediaClient::Initialize(); | 1307 RenderMediaClient::Initialize(); |
| 1297 | 1308 |
| 1298 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized()); | |
| 1299 | |
| 1300 devtools_agent_message_filter_ = new DevToolsAgentFilter(); | 1309 devtools_agent_message_filter_ = new DevToolsAgentFilter(); |
| 1301 AddFilter(devtools_agent_message_filter_.get()); | 1310 AddFilter(devtools_agent_message_filter_.get()); |
| 1302 | 1311 |
| 1303 v8_sampling_profiler_.reset(new V8SamplingProfiler()); | 1312 v8_sampling_profiler_.reset(new V8SamplingProfiler()); |
| 1304 | 1313 |
| 1305 if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { | 1314 if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
| 1306 ScheduleIdleHandler(kLongIdleHandlerDelayMs); | 1315 ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
| 1307 } else { | 1316 } else { |
| 1308 // If we do not track widget visibility, then assume conservatively that | 1317 // If we do not track widget visibility, then assume conservatively that |
| 1309 // the isolate is in background. This reduces memory usage. | 1318 // the isolate is in background. This reduces memory usage. |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1372 scoped_ptr<base::SharedMemory> | 1381 scoped_ptr<base::SharedMemory> |
| 1373 RenderThreadImpl::HostAllocateSharedMemoryBuffer(size_t size) { | 1382 RenderThreadImpl::HostAllocateSharedMemoryBuffer(size_t size) { |
| 1374 return ChildThreadImpl::AllocateSharedMemory(size, thread_safe_sender()); | 1383 return ChildThreadImpl::AllocateSharedMemory(size, thread_safe_sender()); |
| 1375 } | 1384 } |
| 1376 | 1385 |
| 1377 cc::SharedBitmapManager* RenderThreadImpl::GetSharedBitmapManager() { | 1386 cc::SharedBitmapManager* RenderThreadImpl::GetSharedBitmapManager() { |
| 1378 return shared_bitmap_manager(); | 1387 return shared_bitmap_manager(); |
| 1379 } | 1388 } |
| 1380 | 1389 |
| 1381 void RenderThreadImpl::RegisterExtension(v8::Extension* extension) { | 1390 void RenderThreadImpl::RegisterExtension(v8::Extension* extension) { |
| 1382 EnsureWebKitInitialized(); | |
| 1383 WebScriptController::registerExtension(extension); | 1391 WebScriptController::registerExtension(extension); |
| 1384 } | 1392 } |
| 1385 | 1393 |
| 1386 void RenderThreadImpl::ScheduleIdleHandler(int64_t initial_delay_ms) { | 1394 void RenderThreadImpl::ScheduleIdleHandler(int64_t initial_delay_ms) { |
| 1387 idle_notification_delay_in_ms_ = initial_delay_ms; | 1395 idle_notification_delay_in_ms_ = initial_delay_ms; |
| 1388 idle_timer_.Stop(); | 1396 idle_timer_.Stop(); |
| 1389 idle_timer_.Start(FROM_HERE, | 1397 idle_timer_.Start(FROM_HERE, |
| 1390 base::TimeDelta::FromMilliseconds(initial_delay_ms), | 1398 base::TimeDelta::FromMilliseconds(initial_delay_ms), |
| 1391 this, &RenderThreadImpl::IdleHandler); | 1399 this, &RenderThreadImpl::IdleHandler); |
| 1392 } | 1400 } |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1831 } | 1839 } |
| 1832 | 1840 |
| 1833 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme, | 1841 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme, |
| 1834 const std::string& host, | 1842 const std::string& host, |
| 1835 double zoom_level) { | 1843 double zoom_level) { |
| 1836 RenderViewZoomer zoomer(scheme, host, zoom_level); | 1844 RenderViewZoomer zoomer(scheme, host, zoom_level); |
| 1837 RenderView::ForEach(&zoomer); | 1845 RenderView::ForEach(&zoomer); |
| 1838 } | 1846 } |
| 1839 | 1847 |
| 1840 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { | 1848 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { |
| 1841 EnsureWebKitInitialized(); | |
| 1842 CompositorDependencies* compositor_deps = this; | 1849 CompositorDependencies* compositor_deps = this; |
| 1843 // When bringing in render_view, also bring in webkit's glue and jsbindings. | 1850 // When bringing in render_view, also bring in webkit's glue and jsbindings. |
| 1844 RenderViewImpl::Create(compositor_deps, params, false); | 1851 RenderViewImpl::Create(compositor_deps, params, false); |
| 1845 } | 1852 } |
| 1846 | 1853 |
| 1847 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( | 1854 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( |
| 1848 CauseForGpuLaunch cause_for_gpu_launch) { | 1855 CauseForGpuLaunch cause_for_gpu_launch) { |
| 1849 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); | 1856 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); |
| 1850 | 1857 |
| 1851 if (gpu_channel_.get()) { | 1858 if (gpu_channel_.get()) { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1917 return NULL; | 1924 return NULL; |
| 1918 | 1925 |
| 1919 if (gpu_channel_->IsLost()) | 1926 if (gpu_channel_->IsLost()) |
| 1920 return NULL; | 1927 return NULL; |
| 1921 | 1928 |
| 1922 return gpu_channel_.get(); | 1929 return gpu_channel_.get(); |
| 1923 } | 1930 } |
| 1924 | 1931 |
| 1925 #if defined(ENABLE_PLUGINS) | 1932 #if defined(ENABLE_PLUGINS) |
| 1926 void RenderThreadImpl::OnPurgePluginListCache(bool reload_pages) { | 1933 void RenderThreadImpl::OnPurgePluginListCache(bool reload_pages) { |
| 1927 EnsureWebKitInitialized(); | |
| 1928 // The call below will cause a GetPlugins call with refresh=true, but at this | 1934 // The call below will cause a GetPlugins call with refresh=true, but at this |
| 1929 // point we already know that the browser has refreshed its list, so disable | 1935 // point we already know that the browser has refreshed its list, so disable |
| 1930 // refresh temporarily to prevent each renderer process causing the list to be | 1936 // refresh temporarily to prevent each renderer process causing the list to be |
| 1931 // regenerated. | 1937 // regenerated. |
| 1932 blink_platform_impl_->set_plugin_refresh_allowed(false); | 1938 blink_platform_impl_->set_plugin_refresh_allowed(false); |
| 1933 blink::resetPluginCache(reload_pages); | 1939 blink::resetPluginCache(reload_pages); |
| 1934 blink_platform_impl_->set_plugin_refresh_allowed(true); | 1940 blink_platform_impl_->set_plugin_refresh_allowed(true); |
| 1935 | 1941 |
| 1936 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged()); | 1942 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged()); |
| 1937 } | 1943 } |
| 1938 #endif | 1944 #endif |
| 1939 | 1945 |
| 1940 void RenderThreadImpl::OnNetworkConnectionChanged( | 1946 void RenderThreadImpl::OnNetworkConnectionChanged( |
| 1941 net::NetworkChangeNotifier::ConnectionType type, | 1947 net::NetworkChangeNotifier::ConnectionType type, |
| 1942 double max_bandwidth_mbps) { | 1948 double max_bandwidth_mbps) { |
| 1943 EnsureWebKitInitialized(); | |
| 1944 bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE; | 1949 bool online = type != net::NetworkChangeNotifier::CONNECTION_NONE; |
| 1945 WebNetworkStateNotifier::setOnLine(online); | 1950 WebNetworkStateNotifier::setOnLine(online); |
| 1946 FOR_EACH_OBSERVER( | 1951 FOR_EACH_OBSERVER( |
| 1947 RenderProcessObserver, observers_, NetworkStateChanged(online)); | 1952 RenderProcessObserver, observers_, NetworkStateChanged(online)); |
| 1948 WebNetworkStateNotifier::setWebConnection( | 1953 WebNetworkStateNotifier::setWebConnection( |
| 1949 NetConnectionTypeToWebConnectionType(type), max_bandwidth_mbps); | 1954 NetConnectionTypeToWebConnectionType(type), max_bandwidth_mbps); |
| 1950 } | 1955 } |
| 1951 | 1956 |
| 1952 void RenderThreadImpl::OnUpdateTimezone(const std::string& zone_id) { | 1957 void RenderThreadImpl::OnUpdateTimezone(const std::string& zone_id) { |
| 1953 if (!blink_platform_impl_) | 1958 if (!blink_platform_impl_) |
| 1954 return; | 1959 return; |
| 1955 if (!zone_id.empty()) { | 1960 if (!zone_id.empty()) { |
| 1956 icu::TimeZone *new_zone = icu::TimeZone::createTimeZone( | 1961 icu::TimeZone *new_zone = icu::TimeZone::createTimeZone( |
| 1957 icu::UnicodeString::fromUTF8(zone_id)); | 1962 icu::UnicodeString::fromUTF8(zone_id)); |
| 1958 icu::TimeZone::adoptDefault(new_zone); | 1963 icu::TimeZone::adoptDefault(new_zone); |
| 1959 VLOG(1) << "ICU default timezone is set to " << zone_id; | 1964 VLOG(1) << "ICU default timezone is set to " << zone_id; |
| 1960 } | 1965 } |
| 1961 NotifyTimezoneChange(); | 1966 NotifyTimezoneChange(); |
| 1962 } | 1967 } |
| 1963 | 1968 |
| 1964 #if defined(OS_ANDROID) | 1969 #if defined(OS_ANDROID) |
| 1965 void RenderThreadImpl::OnSetWebKitSharedTimersSuspended(bool suspend) { | 1970 void RenderThreadImpl::OnSetWebKitSharedTimersSuspended(bool suspend) { |
| 1966 EnsureWebKitInitialized(); | |
| 1967 if (suspend) { | 1971 if (suspend) { |
| 1968 renderer_scheduler_->SuspendTimerQueue(); | 1972 renderer_scheduler_->SuspendTimerQueue(); |
| 1969 } else { | 1973 } else { |
| 1970 renderer_scheduler_->ResumeTimerQueue(); | 1974 renderer_scheduler_->ResumeTimerQueue(); |
| 1971 } | 1975 } |
| 1972 webkit_shared_timer_suspended_ = suspend; | 1976 webkit_shared_timer_suspended_ = suspend; |
| 1973 } | 1977 } |
| 1974 #endif | 1978 #endif |
| 1975 | 1979 |
| 1976 #if defined(OS_MACOSX) | 1980 #if defined(OS_MACOSX) |
| 1977 void RenderThreadImpl::OnUpdateScrollbarTheme( | 1981 void RenderThreadImpl::OnUpdateScrollbarTheme( |
| 1978 const ViewMsg_UpdateScrollbarTheme_Params& params) { | 1982 const ViewMsg_UpdateScrollbarTheme_Params& params) { |
| 1979 EnsureWebKitInitialized(); | |
| 1980 static_cast<WebScrollbarBehaviorImpl*>( | 1983 static_cast<WebScrollbarBehaviorImpl*>( |
| 1981 blink_platform_impl_->scrollbarBehavior()) | 1984 blink_platform_impl_->scrollbarBehavior()) |
| 1982 ->set_jump_on_track_click(params.jump_on_track_click); | 1985 ->set_jump_on_track_click(params.jump_on_track_click); |
| 1983 | 1986 |
| 1984 blink::WebScrollbarTheme::updateScrollbarsWithNSDefaults( | 1987 blink::WebScrollbarTheme::updateScrollbarsWithNSDefaults( |
| 1985 params.initial_button_delay, params.autoscroll_button_delay, | 1988 params.initial_button_delay, params.autoscroll_button_delay, |
| 1986 params.preferred_scroller_style, params.redraw, | 1989 params.preferred_scroller_style, params.redraw, |
| 1987 params.button_placement); | 1990 params.button_placement); |
| 1988 } | 1991 } |
| 1989 | 1992 |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2175 } | 2178 } |
| 2176 | 2179 |
| 2177 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { | 2180 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { |
| 2178 size_t erased = | 2181 size_t erased = |
| 2179 RenderThreadImpl::current()->pending_render_frame_connects_.erase( | 2182 RenderThreadImpl::current()->pending_render_frame_connects_.erase( |
| 2180 routing_id_); | 2183 routing_id_); |
| 2181 DCHECK_EQ(1u, erased); | 2184 DCHECK_EQ(1u, erased); |
| 2182 } | 2185 } |
| 2183 | 2186 |
| 2184 } // namespace content | 2187 } // namespace content |
| OLD | NEW |