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 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 IPC::SyncMessageFilter* RenderThreadImpl::GetSyncMessageFilter() { | 597 IPC::SyncMessageFilter* RenderThreadImpl::GetSyncMessageFilter() { |
598 return sync_message_filter(); | 598 return sync_message_filter(); |
599 } | 599 } |
600 | 600 |
601 scoped_refptr<base::MessageLoopProxy> | 601 scoped_refptr<base::MessageLoopProxy> |
602 RenderThreadImpl::GetIOMessageLoopProxy() { | 602 RenderThreadImpl::GetIOMessageLoopProxy() { |
603 return ChildProcess::current()->io_message_loop_proxy(); | 603 return ChildProcess::current()->io_message_loop_proxy(); |
604 } | 604 } |
605 | 605 |
606 void RenderThreadImpl::AddRoute(int32 routing_id, IPC::Listener* listener) { | 606 void RenderThreadImpl::AddRoute(int32 routing_id, IPC::Listener* listener) { |
607 widget_count_++; | 607 ChildThread::AddRoute(routing_id, listener); |
608 return ChildThread::AddRoute(routing_id, listener); | |
609 } | 608 } |
610 | 609 |
611 void RenderThreadImpl::RemoveRoute(int32 routing_id) { | 610 void RenderThreadImpl::RemoveRoute(int32 routing_id) { |
612 widget_count_--; | 611 ChildThread::RemoveRoute(routing_id); |
613 return ChildThread::RemoveRoute(routing_id); | |
614 } | 612 } |
615 | |
616 int RenderThreadImpl::GenerateRoutingID() { | 613 int RenderThreadImpl::GenerateRoutingID() { |
617 int routing_id = MSG_ROUTING_NONE; | 614 int routing_id = MSG_ROUTING_NONE; |
618 Send(new ViewHostMsg_GenerateRoutingID(&routing_id)); | 615 Send(new ViewHostMsg_GenerateRoutingID(&routing_id)); |
619 return routing_id; | 616 return routing_id; |
620 } | 617 } |
621 | 618 |
622 void RenderThreadImpl::AddFilter(IPC::ChannelProxy::MessageFilter* filter) { | 619 void RenderThreadImpl::AddFilter(IPC::ChannelProxy::MessageFilter* filter) { |
623 channel()->AddFilter(filter); | 620 channel()->AddFilter(filter); |
624 } | 621 } |
625 | 622 |
626 void RenderThreadImpl::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) { | 623 void RenderThreadImpl::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) { |
627 channel()->RemoveFilter(filter); | 624 channel()->RemoveFilter(filter); |
628 } | 625 } |
629 | 626 |
630 void RenderThreadImpl::AddObserver(RenderProcessObserver* observer) { | 627 void RenderThreadImpl::AddObserver(RenderProcessObserver* observer) { |
631 observers_.AddObserver(observer); | 628 observers_.AddObserver(observer); |
632 } | 629 } |
633 | 630 |
634 void RenderThreadImpl::RemoveObserver(RenderProcessObserver* observer) { | 631 void RenderThreadImpl::RemoveObserver(RenderProcessObserver* observer) { |
635 observers_.RemoveObserver(observer); | 632 observers_.RemoveObserver(observer); |
636 } | 633 } |
637 | 634 |
638 void RenderThreadImpl::SetResourceDispatcherDelegate( | 635 void RenderThreadImpl::SetResourceDispatcherDelegate( |
639 ResourceDispatcherDelegate* delegate) { | 636 ResourceDispatcherDelegate* delegate) { |
640 resource_dispatcher()->set_delegate(delegate); | 637 resource_dispatcher()->set_delegate(delegate); |
641 } | 638 } |
642 | 639 |
643 void RenderThreadImpl::WidgetHidden() { | |
644 DCHECK_LT(hidden_widget_count_, widget_count_); | |
645 hidden_widget_count_++; | |
646 | |
647 if (widget_count_ && hidden_widget_count_ == widget_count_) { | |
648 #if !defined(SYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE) | |
649 // TODO(vollick): Remove this this heavy-handed approach once we're polling | |
650 // the real system memory pressure. | |
651 base::MemoryPressureListener::NotifyMemoryPressure( | |
652 base::MemoryPressureListener::MEMORY_PRESSURE_MODERATE); | |
653 #endif | |
654 if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) | |
655 ScheduleIdleHandler(kInitialIdleHandlerDelayMs); | |
656 } | |
657 } | |
658 | |
659 void RenderThreadImpl::WidgetRestored() { | |
660 DCHECK_GT(hidden_widget_count_, 0); | |
661 hidden_widget_count_--; | |
662 | |
663 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { | |
664 return; | |
665 } | |
666 | |
667 ScheduleIdleHandler(kLongIdleHandlerDelayMs); | |
668 } | |
669 | |
670 void RenderThreadImpl::EnsureWebKitInitialized() { | 640 void RenderThreadImpl::EnsureWebKitInitialized() { |
671 if (webkit_platform_support_) | 641 if (webkit_platform_support_) |
672 return; | 642 return; |
673 | 643 |
674 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl); | 644 webkit_platform_support_.reset(new RendererWebKitPlatformSupportImpl); |
675 blink::initialize(webkit_platform_support_.get()); | 645 blink::initialize(webkit_platform_support_.get()); |
676 | 646 |
677 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 647 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
678 | 648 |
679 bool enable = command_line.HasSwitch(switches::kEnableThreadedCompositing); | 649 bool enable = command_line.HasSwitch(switches::kEnableThreadedCompositing); |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1396 void RenderThreadImpl::SampleGamepads(blink::WebGamepads* data) { | 1366 void RenderThreadImpl::SampleGamepads(blink::WebGamepads* data) { |
1397 if (!gamepad_shared_memory_reader_) | 1367 if (!gamepad_shared_memory_reader_) |
1398 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); | 1368 gamepad_shared_memory_reader_.reset(new GamepadSharedMemoryReader); |
1399 gamepad_shared_memory_reader_->SampleGamepads(*data); | 1369 gamepad_shared_memory_reader_->SampleGamepads(*data); |
1400 } | 1370 } |
1401 | 1371 |
1402 base::ProcessId RenderThreadImpl::renderer_process_id() const { | 1372 base::ProcessId RenderThreadImpl::renderer_process_id() const { |
1403 return renderer_process_id_; | 1373 return renderer_process_id_; |
1404 } | 1374 } |
1405 | 1375 |
| 1376 void RenderThreadImpl::WidgetCreated() { |
| 1377 widget_count_++; |
| 1378 } |
| 1379 |
| 1380 void RenderThreadImpl::WidgetDestroyed() { |
| 1381 widget_count_--; |
| 1382 } |
| 1383 |
| 1384 void RenderThreadImpl::WidgetHidden() { |
| 1385 DCHECK_LT(hidden_widget_count_, widget_count_); |
| 1386 hidden_widget_count_++; |
| 1387 |
| 1388 if (widget_count_ && hidden_widget_count_ == widget_count_) { |
| 1389 #if !defined(SYSTEM_NATIVELY_SIGNALS_MEMORY_PRESSURE) |
| 1390 // TODO(vollick): Remove this this heavy-handed approach once we're polling |
| 1391 // the real system memory pressure. |
| 1392 base::MemoryPressureListener::NotifyMemoryPressure( |
| 1393 base::MemoryPressureListener::MEMORY_PRESSURE_MODERATE); |
| 1394 #endif |
| 1395 if (GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) |
| 1396 ScheduleIdleHandler(kInitialIdleHandlerDelayMs); |
| 1397 } |
| 1398 } |
| 1399 |
| 1400 void RenderThreadImpl::WidgetRestored() { |
| 1401 DCHECK_GT(hidden_widget_count_, 0); |
| 1402 hidden_widget_count_--; |
| 1403 |
| 1404 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
| 1405 return; |
| 1406 } |
| 1407 |
| 1408 ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
| 1409 } |
| 1410 |
1406 } // namespace content | 1411 } // namespace content |
OLD | NEW |