Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 11232014: Move a bunch of code in content\renderer to the content namespace. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix mac Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_thread_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 #endif 111 #endif
112 112
113 using WebKit::WebDocument; 113 using WebKit::WebDocument;
114 using WebKit::WebFrame; 114 using WebKit::WebFrame;
115 using WebKit::WebNetworkStateNotifier; 115 using WebKit::WebNetworkStateNotifier;
116 using WebKit::WebRuntimeFeatures; 116 using WebKit::WebRuntimeFeatures;
117 using WebKit::WebScriptController; 117 using WebKit::WebScriptController;
118 using WebKit::WebSecurityPolicy; 118 using WebKit::WebSecurityPolicy;
119 using WebKit::WebString; 119 using WebKit::WebString;
120 using WebKit::WebView; 120 using WebKit::WebView;
121 using content::AudioRendererMixerManager; 121
122 using content::RenderProcessObserver; 122 namespace content {
123 123
124 namespace { 124 namespace {
125 125
126 const int64 kInitialIdleHandlerDelayMs = 1000; 126 const int64 kInitialIdleHandlerDelayMs = 1000;
127 const int64 kShortIdleHandlerDelayMs = 1000; 127 const int64 kShortIdleHandlerDelayMs = 1000;
128 const int64 kLongIdleHandlerDelayMs = 30*1000; 128 const int64 kLongIdleHandlerDelayMs = 30*1000;
129 const int kIdleCPUUsageThresholdInPercents = 3; 129 const int kIdleCPUUsageThresholdInPercents = 3;
130 130
131 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access 131 // Keep the global RenderThreadImpl in a TLS slot so it is impossible to access
132 // incorrectly from the wrong thread. 132 // incorrectly from the wrong thread.
133 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl> > 133 base::LazyInstance<base::ThreadLocalPointer<RenderThreadImpl> >
134 lazy_tls = LAZY_INSTANCE_INITIALIZER; 134 lazy_tls = LAZY_INSTANCE_INITIALIZER;
135 135
136 class RenderViewZoomer : public content::RenderViewVisitor { 136 class RenderViewZoomer : public RenderViewVisitor {
137 public: 137 public:
138 RenderViewZoomer(const std::string& host, double zoom_level) 138 RenderViewZoomer(const std::string& host, double zoom_level)
139 : host_(host), zoom_level_(zoom_level) { 139 : host_(host), zoom_level_(zoom_level) {
140 } 140 }
141 141
142 virtual bool Visit(content::RenderView* render_view) { 142 virtual bool Visit(RenderView* render_view) {
143 WebView* webview = render_view->GetWebView(); 143 WebView* webview = render_view->GetWebView();
144 WebDocument document = webview->mainFrame()->document(); 144 WebDocument document = webview->mainFrame()->document();
145 145
146 // Don't set zoom level for full-page plugin since they don't use the same 146 // Don't set zoom level for full-page plugin since they don't use the same
147 // zoom settings. 147 // zoom settings.
148 if (document.isPluginDocument()) 148 if (document.isPluginDocument())
149 return true; 149 return true;
150 150
151 if (net::GetHostOrSpecFromURL(GURL(document.url())) == host_) 151 if (net::GetHostOrSpecFromURL(GURL(document.url())) == host_)
152 webview->setZoomLevel(false, zoom_level_); 152 webview->setZoomLevel(false, zoom_level_);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 widget_count_ = 0; 290 widget_count_ = 0;
291 hidden_widget_count_ = 0; 291 hidden_widget_count_ = 0;
292 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 292 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
293 idle_notifications_to_skip_ = 0; 293 idle_notifications_to_skip_ = 0;
294 compositor_initialized_ = false; 294 compositor_initialized_ = false;
295 295
296 appcache_dispatcher_.reset(new AppCacheDispatcher(Get())); 296 appcache_dispatcher_.reset(new AppCacheDispatcher(Get()));
297 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 297 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
298 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher()); 298 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher());
299 299
300 browser_plugin_registry_.reset(new content::old::BrowserPluginRegistry()); 300 browser_plugin_registry_.reset(new old::BrowserPluginRegistry());
301 browser_plugin_channel_manager_.reset( 301 browser_plugin_channel_manager_.reset(
302 new content::old::BrowserPluginChannelManager()); 302 new old::BrowserPluginChannelManager());
303 AddObserver(browser_plugin_channel_manager_.get()); 303 AddObserver(browser_plugin_channel_manager_.get());
304 304
305 media_stream_center_ = NULL; 305 media_stream_center_ = NULL;
306 306
307 db_message_filter_ = new DBMessageFilter(); 307 db_message_filter_ = new DBMessageFilter();
308 AddFilter(db_message_filter_.get()); 308 AddFilter(db_message_filter_.get());
309 309
310 #if defined(ENABLE_WEBRTC) 310 #if defined(ENABLE_WEBRTC)
311 p2p_socket_dispatcher_ = new content::P2PSocketDispatcher( 311 p2p_socket_dispatcher_ = new P2PSocketDispatcher(GetIOMessageLoopProxy());
312 GetIOMessageLoopProxy());
313 AddFilter(p2p_socket_dispatcher_); 312 AddFilter(p2p_socket_dispatcher_);
314 #endif // defined(ENABLE_WEBRTC) 313 #endif // defined(ENABLE_WEBRTC)
315 vc_manager_ = new VideoCaptureImplManager(); 314 vc_manager_ = new VideoCaptureImplManager();
316 AddFilter(vc_manager_->video_capture_message_filter()); 315 AddFilter(vc_manager_->video_capture_message_filter());
317 316
318 audio_input_message_filter_ = new AudioInputMessageFilter(); 317 audio_input_message_filter_ = new AudioInputMessageFilter();
319 AddFilter(audio_input_message_filter_.get()); 318 AddFilter(audio_input_message_filter_.get());
320 319
321 audio_message_filter_ = new AudioMessageFilter(); 320 audio_message_filter_ = new AudioMessageFilter();
322 AddFilter(audio_message_filter_.get()); 321 AddFilter(audio_message_filter_.get());
323 322
324 AddFilter(new IndexedDBMessageFilter); 323 AddFilter(new IndexedDBMessageFilter);
325 324
326 content::GetContentClient()->renderer()->RenderThreadStarted(); 325 GetContentClient()->renderer()->RenderThreadStarted();
327 326
328 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 327 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
329 if (command_line.HasSwitch(switches::kEnableGpuBenchmarking)) 328 if (command_line.HasSwitch(switches::kEnableGpuBenchmarking))
330 RegisterExtension(content::GpuBenchmarkingExtension::Get()); 329 RegisterExtension(GpuBenchmarkingExtension::Get());
331 330
332 context_lost_cb_.reset(new GpuVDAContextLostCallback()); 331 context_lost_cb_.reset(new GpuVDAContextLostCallback());
333 332
334 // Note that under Linux, the media library will normally already have 333 // Note that under Linux, the media library will normally already have
335 // been initialized by the Zygote before this instance became a Renderer. 334 // been initialized by the Zygote before this instance became a Renderer.
336 FilePath media_path; 335 FilePath media_path;
337 PathService::Get(content::DIR_MEDIA_LIBS, &media_path); 336 PathService::Get(DIR_MEDIA_LIBS, &media_path);
338 if (!media_path.empty()) 337 if (!media_path.empty())
339 media::InitializeMediaLibrary(media_path); 338 media::InitializeMediaLibrary(media_path);
340 339
341 TRACE_EVENT_END_ETW("RenderThreadImpl::Init", 0, ""); 340 TRACE_EVENT_END_ETW("RenderThreadImpl::Init", 0, "");
342 } 341 }
343 342
344 RenderThreadImpl::~RenderThreadImpl() { 343 RenderThreadImpl::~RenderThreadImpl() {
345 FOR_EACH_OBSERVER( 344 FOR_EACH_OBSERVER(
346 RenderProcessObserver, observers_, OnRenderProcessShutdown()); 345 RenderProcessObserver, observers_, OnRenderProcessShutdown());
347 346
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 // callbacks, timers, and pending network loads that could trigger such 407 // callbacks, timers, and pending network loads that could trigger such
409 // callbacks. 408 // callbacks.
410 bool pumping_events = false; 409 bool pumping_events = false;
411 if (msg->is_sync()) { 410 if (msg->is_sync()) {
412 if (msg->is_caller_pumping_messages()) { 411 if (msg->is_caller_pumping_messages()) {
413 pumping_events = true; 412 pumping_events = true;
414 } else { 413 } else {
415 if ((msg->type() == ViewHostMsg_GetCookies::ID || 414 if ((msg->type() == ViewHostMsg_GetCookies::ID ||
416 msg->type() == ViewHostMsg_GetRawCookies::ID || 415 msg->type() == ViewHostMsg_GetRawCookies::ID ||
417 msg->type() == ViewHostMsg_CookiesEnabled::ID) && 416 msg->type() == ViewHostMsg_CookiesEnabled::ID) &&
418 content::GetContentClient()->renderer()-> 417 GetContentClient()->renderer()->
419 ShouldPumpEventsDuringCookieMessage()) { 418 ShouldPumpEventsDuringCookieMessage()) {
420 pumping_events = true; 419 pumping_events = true;
421 } 420 }
422 } 421 }
423 } 422 }
424 423
425 bool suspend_webkit_shared_timer = true; // default value 424 bool suspend_webkit_shared_timer = true; // default value
426 std::swap(suspend_webkit_shared_timer, suspend_webkit_shared_timer_); 425 std::swap(suspend_webkit_shared_timer, suspend_webkit_shared_timer_);
427 426
428 bool notify_webkit_of_modal_loop = true; // default value 427 bool notify_webkit_of_modal_loop = true; // default value
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 } 514 }
516 515
517 void RenderThreadImpl::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) { 516 void RenderThreadImpl::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) {
518 channel()->RemoveFilter(filter); 517 channel()->RemoveFilter(filter);
519 } 518 }
520 519
521 void RenderThreadImpl::SetOutgoingMessageFilter( 520 void RenderThreadImpl::SetOutgoingMessageFilter(
522 IPC::ChannelProxy::OutgoingMessageFilter* filter) { 521 IPC::ChannelProxy::OutgoingMessageFilter* filter) {
523 } 522 }
524 523
525 void RenderThreadImpl::AddObserver(content::RenderProcessObserver* observer) { 524 void RenderThreadImpl::AddObserver(RenderProcessObserver* observer) {
526 observers_.AddObserver(observer); 525 observers_.AddObserver(observer);
527 } 526 }
528 527
529 void RenderThreadImpl::RemoveObserver( 528 void RenderThreadImpl::RemoveObserver(RenderProcessObserver* observer) {
530 content::RenderProcessObserver* observer) {
531 observers_.RemoveObserver(observer); 529 observers_.RemoveObserver(observer);
532 } 530 }
533 531
534 void RenderThreadImpl::SetResourceDispatcherDelegate( 532 void RenderThreadImpl::SetResourceDispatcherDelegate(
535 content::ResourceDispatcherDelegate* delegate) { 533 ResourceDispatcherDelegate* delegate) {
536 resource_dispatcher()->set_delegate(delegate); 534 resource_dispatcher()->set_delegate(delegate);
537 } 535 }
538 536
539 void RenderThreadImpl::WidgetHidden() { 537 void RenderThreadImpl::WidgetHidden() {
540 DCHECK(hidden_widget_count_ < widget_count_); 538 DCHECK(hidden_widget_count_ < widget_count_);
541 hidden_widget_count_++; 539 hidden_widget_count_++;
542 540
543 if (!content::GetContentClient()->renderer()-> 541 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) {
544 RunIdleHandlerWhenWidgetsHidden()) {
545 return; 542 return;
546 } 543 }
547 544
548 if (widget_count_ && hidden_widget_count_ == widget_count_) 545 if (widget_count_ && hidden_widget_count_ == widget_count_)
549 ScheduleIdleHandler(kInitialIdleHandlerDelayMs); 546 ScheduleIdleHandler(kInitialIdleHandlerDelayMs);
550 } 547 }
551 548
552 void RenderThreadImpl::WidgetRestored() { 549 void RenderThreadImpl::WidgetRestored() {
553 DCHECK_GT(hidden_widget_count_, 0); 550 DCHECK_GT(hidden_widget_count_, 0);
554 hidden_widget_count_--; 551 hidden_widget_count_--;
555 if (!content::GetContentClient()->renderer()-> 552 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) {
556 RunIdleHandlerWhenWidgetsHidden()) {
557 return; 553 return;
558 } 554 }
559 555
560 ScheduleIdleHandler(kLongIdleHandlerDelayMs); 556 ScheduleIdleHandler(kLongIdleHandlerDelayMs);
561 } 557 }
562 558
563 void RenderThreadImpl::EnsureWebKitInitialized() { 559 void RenderThreadImpl::EnsureWebKitInitialized() {
564 if (webkit_platform_support_.get()) 560 if (webkit_platform_support_.get())
565 return; 561 return;
566 562
567 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl); 563 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl);
568 WebKit::initialize(webkit_platform_support_.get()); 564 WebKit::initialize(webkit_platform_support_.get());
569 565
570 WebKit::WebCompositorSupport* compositor_support = 566 WebKit::WebCompositorSupport* compositor_support =
571 WebKit::Platform::current()->compositorSupport(); 567 WebKit::Platform::current()->compositorSupport();
572 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 568 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
573 569
574 // TODO(fsamuel): Guests don't currently support threaded compositing. 570 // TODO(fsamuel): Guests don't currently support threaded compositing.
575 // This should go away with the new design of the browser plugin. 571 // This should go away with the new design of the browser plugin.
576 // The new design can be tracked at: http://crbug.com/134492. 572 // The new design can be tracked at: http://crbug.com/134492.
577 bool is_guest = CommandLine::ForCurrentProcess()->HasSwitch( 573 bool is_guest = CommandLine::ForCurrentProcess()->HasSwitch(
578 switches::kGuestRenderer); 574 switches::kGuestRenderer);
579 bool enable = content::IsThreadedCompositingEnabled() && !is_guest; 575 bool enable = IsThreadedCompositingEnabled() && !is_guest;
580 if (enable) { 576 if (enable) {
581 compositor_thread_.reset(new CompositorThread(this)); 577 compositor_thread_.reset(new CompositorThread(this));
582 AddFilter(compositor_thread_->GetMessageFilter()); 578 AddFilter(compositor_thread_->GetMessageFilter());
583 compositor_support->initialize(compositor_thread_->GetWebThread()); 579 compositor_support->initialize(compositor_thread_->GetWebThread());
584 } else { 580 } else {
585 compositor_support->initialize(NULL); 581 compositor_support->initialize(NULL);
586 } 582 }
587 compositor_initialized_ = true; 583 compositor_initialized_ = true;
588 584
589 MessageLoop* output_surface_loop = enable ? 585 MessageLoop* output_surface_loop = enable ?
590 compositor_thread_->message_loop() : 586 compositor_thread_->message_loop() :
591 MessageLoop::current(); 587 MessageLoop::current();
592 588
593 compositor_output_surface_filter_ = CompositorOutputSurface::CreateFilter( 589 compositor_output_surface_filter_ = CompositorOutputSurface::CreateFilter(
594 output_surface_loop->message_loop_proxy()); 590 output_surface_loop->message_loop_proxy());
595 AddFilter(compositor_output_surface_filter_.get()); 591 AddFilter(compositor_output_surface_filter_.get());
596 592
597 WebScriptController::enableV8SingleThreadMode(); 593 WebScriptController::enableV8SingleThreadMode();
598 594
599 RenderThreadImpl::RegisterSchemes(); 595 RenderThreadImpl::RegisterSchemes();
600 596
601 webkit_glue::EnableWebCoreLogChannels( 597 webkit_glue::EnableWebCoreLogChannels(
602 command_line.GetSwitchValueASCII(switches::kWebCoreLogChannels)); 598 command_line.GetSwitchValueASCII(switches::kWebCoreLogChannels));
603 599
604 if (CommandLine::ForCurrentProcess()->HasSwitch( 600 if (CommandLine::ForCurrentProcess()->HasSwitch(
605 switches::kDomAutomationController)) { 601 switches::kDomAutomationController)) {
606 base::StringPiece extension = content::GetContentClient()->GetDataResource( 602 base::StringPiece extension = GetContentClient()->GetDataResource(
607 IDR_DOM_AUTOMATION_JS, ui::SCALE_FACTOR_NONE); 603 IDR_DOM_AUTOMATION_JS, ui::SCALE_FACTOR_NONE);
608 RegisterExtension(new v8::Extension( 604 RegisterExtension(new v8::Extension(
609 "dom_automation.js", extension.data(), 0, NULL, extension.size())); 605 "dom_automation.js", extension.data(), 0, NULL, extension.size()));
610 } 606 }
611 607
612 web_database_observer_impl_.reset( 608 web_database_observer_impl_.reset(
613 new WebDatabaseObserverImpl(sync_message_filter())); 609 new WebDatabaseObserverImpl(sync_message_filter()));
614 WebKit::WebDatabase::setObserver(web_database_observer_impl_.get()); 610 WebKit::WebDatabase::setObserver(web_database_observer_impl_.get());
615 611
616 WebRuntimeFeatures::enableSockets( 612 WebRuntimeFeatures::enableSockets(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 command_line.HasSwitch(switches::kEnableExperimentalWebKitFeatures)); 698 command_line.HasSwitch(switches::kEnableExperimentalWebKitFeatures));
703 699
704 WebRuntimeFeatures::enableCSSExclusions( 700 WebRuntimeFeatures::enableCSSExclusions(
705 command_line.HasSwitch(switches::kEnableExperimentalWebKitFeatures)); 701 command_line.HasSwitch(switches::kEnableExperimentalWebKitFeatures));
706 702
707 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized()); 703 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, WebKitInitialized());
708 704
709 devtools_agent_message_filter_ = new DevToolsAgentFilter(); 705 devtools_agent_message_filter_ = new DevToolsAgentFilter();
710 AddFilter(devtools_agent_message_filter_.get()); 706 AddFilter(devtools_agent_message_filter_.get());
711 707
712 if (content::GetContentClient()->renderer()-> 708 if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden())
713 RunIdleHandlerWhenWidgetsHidden()) {
714 ScheduleIdleHandler(kLongIdleHandlerDelayMs); 709 ScheduleIdleHandler(kLongIdleHandlerDelayMs);
715 }
716 } 710 }
717 711
718 void RenderThreadImpl::RegisterSchemes() { 712 void RenderThreadImpl::RegisterSchemes() {
719 // swappedout: pages should not be accessible, and should also 713 // swappedout: pages should not be accessible, and should also
720 // be treated as empty documents that can commit synchronously. 714 // be treated as empty documents that can commit synchronously.
721 WebString swappedout_scheme(ASCIIToUTF16(chrome::kSwappedOutScheme)); 715 WebString swappedout_scheme(ASCIIToUTF16(chrome::kSwappedOutScheme));
722 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(swappedout_scheme); 716 WebSecurityPolicy::registerURLSchemeAsDisplayIsolated(swappedout_scheme);
723 WebSecurityPolicy::registerURLSchemeAsEmptyDocument(swappedout_scheme); 717 WebSecurityPolicy::registerURLSchemeAsEmptyDocument(swappedout_scheme);
724 } 718 }
725 719
(...skipping 16 matching lines...) Expand all
742 void RenderThreadImpl::ScheduleIdleHandler(int64 initial_delay_ms) { 736 void RenderThreadImpl::ScheduleIdleHandler(int64 initial_delay_ms) {
743 idle_notification_delay_in_ms_ = initial_delay_ms; 737 idle_notification_delay_in_ms_ = initial_delay_ms;
744 idle_timer_.Stop(); 738 idle_timer_.Stop();
745 idle_timer_.Start(FROM_HERE, 739 idle_timer_.Start(FROM_HERE,
746 base::TimeDelta::FromMilliseconds(initial_delay_ms), 740 base::TimeDelta::FromMilliseconds(initial_delay_ms),
747 this, &RenderThreadImpl::IdleHandler); 741 this, &RenderThreadImpl::IdleHandler);
748 } 742 }
749 743
750 void RenderThreadImpl::IdleHandler() { 744 void RenderThreadImpl::IdleHandler() {
751 bool run_in_foreground_tab = (widget_count_ > hidden_widget_count_) && 745 bool run_in_foreground_tab = (widget_count_ > hidden_widget_count_) &&
752 content::GetContentClient()->renderer()-> 746 GetContentClient()->renderer()->
753 RunIdleHandlerWhenWidgetsHidden(); 747 RunIdleHandlerWhenWidgetsHidden();
754 if (run_in_foreground_tab) { 748 if (run_in_foreground_tab) {
755 IdleHandlerInForegroundTab(); 749 IdleHandlerInForegroundTab();
756 return; 750 return;
757 } 751 }
758 752
759 base::allocator::ReleaseFreeMemory(); 753 base::allocator::ReleaseFreeMemory();
760 754
761 v8::V8::IdleNotification(); 755 v8::V8::IdleNotification();
762 756
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 gpu_vda_context3d_.reset( 846 gpu_vda_context3d_.reset(
853 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext( 847 WebGraphicsContext3DCommandBufferImpl::CreateOffscreenContext(
854 this, WebKit::WebGraphicsContext3D::Attributes(), 848 this, WebKit::WebGraphicsContext3D::Attributes(),
855 GURL("chrome://gpu/RenderThreadImpl::GetGpuVDAContext3D"))); 849 GURL("chrome://gpu/RenderThreadImpl::GetGpuVDAContext3D")));
856 if (gpu_vda_context3d_.get()) 850 if (gpu_vda_context3d_.get())
857 gpu_vda_context3d_->setContextLostCallback(context_lost_cb_.get()); 851 gpu_vda_context3d_->setContextLostCallback(context_lost_cb_.get());
858 } 852 }
859 return gpu_vda_context3d_.get(); 853 return gpu_vda_context3d_.get();
860 } 854 }
861 855
862 content::AudioRendererMixerManager* 856 AudioRendererMixerManager* RenderThreadImpl::GetAudioRendererMixerManager() {
863 RenderThreadImpl::GetAudioRendererMixerManager() {
864 if (!audio_renderer_mixer_manager_.get()) { 857 if (!audio_renderer_mixer_manager_.get()) {
865 audio_renderer_mixer_manager_.reset(new AudioRendererMixerManager( 858 audio_renderer_mixer_manager_.reset(new AudioRendererMixerManager(
866 audio_hardware::GetOutputSampleRate(), 859 audio_hardware::GetOutputSampleRate(),
867 audio_hardware::GetOutputBufferSize())); 860 audio_hardware::GetOutputBufferSize()));
868 } 861 }
869 862
870 return audio_renderer_mixer_manager_.get(); 863 return audio_renderer_mixer_manager_.get();
871 } 864 }
872 865
873 #if defined(OS_WIN) 866 #if defined(OS_WIN)
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 suspend_webkit_shared_timer_ = false; 963 suspend_webkit_shared_timer_ = false;
971 } 964 }
972 965
973 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() { 966 void RenderThreadImpl::DoNotNotifyWebKitOfModalLoop() {
974 notify_webkit_of_modal_loop_ = false; 967 notify_webkit_of_modal_loop_ = false;
975 } 968 }
976 969
977 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& host, 970 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& host,
978 double zoom_level) { 971 double zoom_level) {
979 RenderViewZoomer zoomer(host, zoom_level); 972 RenderViewZoomer zoomer(host, zoom_level);
980 content::RenderView::ForEach(&zoomer); 973 RenderView::ForEach(&zoomer);
981 } 974 }
982 975
983 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { 976 bool RenderThreadImpl::OnControlMessageReceived(const IPC::Message& msg) {
984 ObserverListBase<RenderProcessObserver>::Iterator it(observers_); 977 ObserverListBase<RenderProcessObserver>::Iterator it(observers_);
985 RenderProcessObserver* observer; 978 RenderProcessObserver* observer;
986 while ((observer = it.GetNext()) != NULL) { 979 while ((observer = it.GetNext()) != NULL) {
987 if (observer->OnControlMessageReceived(msg)) 980 if (observer->OnControlMessageReceived(msg))
988 return true; 981 return true;
989 } 982 }
990 983
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 false, 1043 false,
1051 params.swapped_out, 1044 params.swapped_out,
1052 params.next_page_id, 1045 params.next_page_id,
1053 params.screen_info, 1046 params.screen_info,
1054 NULL, 1047 NULL,
1055 params.accessibility_mode); 1048 params.accessibility_mode);
1056 } 1049 }
1057 } 1050 }
1058 1051
1059 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( 1052 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync(
1060 content::CauseForGpuLaunch cause_for_gpu_launch) { 1053 CauseForGpuLaunch cause_for_gpu_launch) {
1061 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); 1054 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync");
1062 1055
1063 if (gpu_channel_.get()) { 1056 if (gpu_channel_.get()) {
1064 // Do nothing if we already have a GPU channel or are already 1057 // Do nothing if we already have a GPU channel or are already
1065 // establishing one. 1058 // establishing one.
1066 if (gpu_channel_->state() == GpuChannelHost::kUnconnected || 1059 if (gpu_channel_->state() == GpuChannelHost::kUnconnected ||
1067 gpu_channel_->state() == GpuChannelHost::kConnected) 1060 gpu_channel_->state() == GpuChannelHost::kConnected)
1068 return GetGpuChannel(); 1061 return GetGpuChannel();
1069 1062
1070 // Recreate the channel if it has been lost. 1063 // Recreate the channel if it has been lost.
1071 gpu_channel_ = NULL; 1064 gpu_channel_ = NULL;
1072 } 1065 }
1073 1066
1074 // Ask the browser for the channel name. 1067 // Ask the browser for the channel name.
1075 int client_id = 0; 1068 int client_id = 0;
1076 IPC::ChannelHandle channel_handle; 1069 IPC::ChannelHandle channel_handle;
1077 content::GPUInfo gpu_info; 1070 GPUInfo gpu_info;
1078 if (!Send(new GpuHostMsg_EstablishGpuChannel(cause_for_gpu_launch, 1071 if (!Send(new GpuHostMsg_EstablishGpuChannel(cause_for_gpu_launch,
1079 &client_id, 1072 &client_id,
1080 &channel_handle, 1073 &channel_handle,
1081 &gpu_info)) || 1074 &gpu_info)) ||
1082 #if defined(OS_POSIX) 1075 #if defined(OS_POSIX)
1083 channel_handle.socket.fd == -1 || 1076 channel_handle.socket.fd == -1 ||
1084 #endif 1077 #endif
1085 channel_handle.name.empty()) { 1078 channel_handle.name.empty()) {
1086 // Otherwise cancel the connection. 1079 // Otherwise cancel the connection.
1087 gpu_channel_ = NULL; 1080 gpu_channel_ = NULL;
1088 return NULL; 1081 return NULL;
1089 } 1082 }
1090 1083
1091 gpu_channel_ = new GpuChannelHost(this, 0, client_id); 1084 gpu_channel_ = new GpuChannelHost(this, 0, client_id);
1092 gpu_channel_->set_gpu_info(gpu_info); 1085 gpu_channel_->set_gpu_info(gpu_info);
1093 content::GetContentClient()->SetGpuInfo(gpu_info); 1086 GetContentClient()->SetGpuInfo(gpu_info);
1094 1087
1095 // Connect to the GPU process if a channel name was received. 1088 // Connect to the GPU process if a channel name was received.
1096 gpu_channel_->Connect(channel_handle); 1089 gpu_channel_->Connect(channel_handle);
1097 1090
1098 return GetGpuChannel(); 1091 return GetGpuChannel();
1099 } 1092 }
1100 1093
1101 WebKit::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( 1094 WebKit::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter(
1102 WebKit::WebMediaStreamCenterClient* client) { 1095 WebKit::WebMediaStreamCenterClient* client) {
1103 #if defined(ENABLE_WEBRTC) 1096 #if defined(ENABLE_WEBRTC)
1104 if (!media_stream_center_) 1097 if (!media_stream_center_)
1105 media_stream_center_ = new content::MediaStreamCenter( 1098 media_stream_center_ = new MediaStreamCenter(
1106 client, GetMediaStreamDependencyFactory()); 1099 client, GetMediaStreamDependencyFactory());
1107 #endif 1100 #endif
1108 return media_stream_center_; 1101 return media_stream_center_;
1109 } 1102 }
1110 1103
1111 MediaStreamDependencyFactory* 1104 MediaStreamDependencyFactory*
1112 RenderThreadImpl::GetMediaStreamDependencyFactory() { 1105 RenderThreadImpl::GetMediaStreamDependencyFactory() {
1113 #if defined(ENABLE_WEBRTC) 1106 #if defined(ENABLE_WEBRTC)
1114 if (!media_stream_factory_.get()) { 1107 if (!media_stream_factory_.get()) {
1115 media_stream_factory_.reset(new MediaStreamDependencyFactory( 1108 media_stream_factory_.reset(new MediaStreamDependencyFactory(
(...skipping 25 matching lines...) Expand all
1141 1134
1142 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged()); 1135 FOR_EACH_OBSERVER(RenderProcessObserver, observers_, PluginListChanged());
1143 } 1136 }
1144 1137
1145 void RenderThreadImpl::OnNetworkStateChanged(bool online) { 1138 void RenderThreadImpl::OnNetworkStateChanged(bool online) {
1146 EnsureWebKitInitialized(); 1139 EnsureWebKitInitialized();
1147 WebNetworkStateNotifier::setOnLine(online); 1140 WebNetworkStateNotifier::setOnLine(online);
1148 } 1141 }
1149 1142
1150 void RenderThreadImpl::OnTempCrashWithData(const GURL& data) { 1143 void RenderThreadImpl::OnTempCrashWithData(const GURL& data) {
1151 content::GetContentClient()->SetActiveURL(data); 1144 GetContentClient()->SetActiveURL(data);
1152 CHECK(false); 1145 CHECK(false);
1153 } 1146 }
1154 1147
1155 scoped_refptr<base::MessageLoopProxy> 1148 scoped_refptr<base::MessageLoopProxy>
1156 RenderThreadImpl::GetFileThreadMessageLoopProxy() { 1149 RenderThreadImpl::GetFileThreadMessageLoopProxy() {
1157 DCHECK(message_loop() == MessageLoop::current()); 1150 DCHECK(message_loop() == MessageLoop::current());
1158 if (!file_thread_.get()) { 1151 if (!file_thread_.get()) {
1159 file_thread_.reset(new base::Thread("Renderer::FILE")); 1152 file_thread_.reset(new base::Thread("Renderer::FILE"));
1160 file_thread_->Start(); 1153 file_thread_->Start();
1161 } 1154 }
1162 return file_thread_->message_loop_proxy(); 1155 return file_thread_->message_loop_proxy();
1163 } 1156 }
1157
1158 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | content/renderer/render_thread_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698