| 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 |