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 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
815 // We may not have a MojoShellConnection object in tests that directly | 815 // We may not have a MojoShellConnection object in tests that directly |
816 // instantiate a RenderThreadImpl. | 816 // instantiate a RenderThreadImpl. |
817 if (MojoShellConnection::Get() && | 817 if (MojoShellConnection::Get() && |
818 base::CommandLine::ForCurrentProcess()->HasSwitch( | 818 base::CommandLine::ForCurrentProcess()->HasSwitch( |
819 switches::kUseMusInRenderer)) | 819 switches::kUseMusInRenderer)) |
820 CreateRenderWidgetWindowTreeClientFactory(); | 820 CreateRenderWidgetWindowTreeClientFactory(); |
821 #endif | 821 #endif |
822 | 822 |
823 service_registry()->ConnectToRemoteService( | 823 service_registry()->ConnectToRemoteService( |
824 mojo::GetProxy(&storage_partition_service_)); | 824 mojo::GetProxy(&storage_partition_service_)); |
| 825 |
| 826 is_renderer_suspended_ = false; |
825 } | 827 } |
826 | 828 |
827 RenderThreadImpl::~RenderThreadImpl() { | 829 RenderThreadImpl::~RenderThreadImpl() { |
828 } | 830 } |
829 | 831 |
830 void RenderThreadImpl::Shutdown() { | 832 void RenderThreadImpl::Shutdown() { |
831 FOR_EACH_OBSERVER( | 833 FOR_EACH_OBSERVER( |
832 RenderThreadObserver, observers_, OnRenderProcessShutdown()); | 834 RenderThreadObserver, observers_, OnRenderProcessShutdown()); |
833 | 835 |
834 if (memory_observer_) { | 836 if (memory_observer_) { |
(...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1700 IPC_MESSAGE_HANDLER(ViewMsg_PurgePluginListCache, OnPurgePluginListCache) | 1702 IPC_MESSAGE_HANDLER(ViewMsg_PurgePluginListCache, OnPurgePluginListCache) |
1701 #endif | 1703 #endif |
1702 IPC_MESSAGE_UNHANDLED(handled = false) | 1704 IPC_MESSAGE_UNHANDLED(handled = false) |
1703 IPC_END_MESSAGE_MAP() | 1705 IPC_END_MESSAGE_MAP() |
1704 return handled; | 1706 return handled; |
1705 } | 1707 } |
1706 | 1708 |
1707 void RenderThreadImpl::OnProcessBackgrounded(bool backgrounded) { | 1709 void RenderThreadImpl::OnProcessBackgrounded(bool backgrounded) { |
1708 ChildThreadImpl::OnProcessBackgrounded(backgrounded); | 1710 ChildThreadImpl::OnProcessBackgrounded(backgrounded); |
1709 | 1711 |
1710 if (backgrounded) | 1712 if (backgrounded) { |
1711 renderer_scheduler_->OnRendererBackgrounded(); | 1713 renderer_scheduler_->OnRendererBackgrounded(); |
1712 else | 1714 } else { |
1713 renderer_scheduler_->OnRendererForegrounded(); | 1715 renderer_scheduler_->OnRendererForegrounded(); |
| 1716 is_renderer_suspended_ = false; |
| 1717 } |
| 1718 } |
| 1719 |
| 1720 void RenderThreadImpl::OnProcessPurgeAndSuspend() { |
| 1721 ChildThreadImpl::OnProcessPurgeAndSuspend(); |
| 1722 if (is_renderer_suspended_) |
| 1723 return; |
| 1724 // TODO(hajimehoshi): Implement purging e.g. cache (crbug/607077) |
| 1725 is_renderer_suspended_ = true; |
| 1726 renderer_scheduler_->SuspendRenderer(); |
1714 } | 1727 } |
1715 | 1728 |
1716 void RenderThreadImpl::OnCreateNewFrame(FrameMsg_NewFrame_Params params) { | 1729 void RenderThreadImpl::OnCreateNewFrame(FrameMsg_NewFrame_Params params) { |
1717 CompositorDependencies* compositor_deps = this; | 1730 CompositorDependencies* compositor_deps = this; |
1718 RenderFrameImpl::CreateFrame( | 1731 RenderFrameImpl::CreateFrame( |
1719 params.routing_id, params.proxy_routing_id, params.opener_routing_id, | 1732 params.routing_id, params.proxy_routing_id, params.opener_routing_id, |
1720 params.parent_routing_id, params.previous_sibling_routing_id, | 1733 params.parent_routing_id, params.previous_sibling_routing_id, |
1721 params.replication_state, compositor_deps, params.widget_params, | 1734 params.replication_state, compositor_deps, params.widget_params, |
1722 params.frame_owner_properties); | 1735 params.frame_owner_properties); |
1723 } | 1736 } |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2090 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) | 2103 v8_memory_pressure_level == v8::MemoryPressureLevel::kCritical) |
2091 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; | 2104 v8_memory_pressure_level = v8::MemoryPressureLevel::kModerate; |
2092 | 2105 |
2093 blink::mainThreadIsolate()->MemoryPressureNotification( | 2106 blink::mainThreadIsolate()->MemoryPressureNotification( |
2094 v8_memory_pressure_level); | 2107 v8_memory_pressure_level); |
2095 blink::MemoryPressureNotificationToWorkerThreadIsolates( | 2108 blink::MemoryPressureNotificationToWorkerThreadIsolates( |
2096 v8_memory_pressure_level); | 2109 v8_memory_pressure_level); |
2097 } | 2110 } |
2098 | 2111 |
2099 } // namespace content | 2112 } // namespace content |
OLD | NEW |