Chromium Code Reviews| Index: content/renderer/render_thread_impl.cc |
| diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
| index 9b7524af4a21da31d78ae81f15c2b08da7e478ed..f67efccd7051b8150ae5b802ce2d64bb051cf39e 100644 |
| --- a/content/renderer/render_thread_impl.cc |
| +++ b/content/renderer/render_thread_impl.cc |
| @@ -118,6 +118,12 @@ |
| #include "third_party/webrtc/system_wrappers/interface/event_tracer.h" |
| #endif |
| +#if !defined(OS_ANDROID) && !defined(OS_MACOSX) |
| +#include "base/memory/discardable_memory.h" |
| +#include "content/renderer/render_process_discardable_memory_provider.h" |
| +#include "content/renderer/render_process_visibility_manager.h" |
| +#endif |
| + |
| using base::ThreadRestrictions; |
| using WebKit::WebDocument; |
| using WebKit::WebFrame; |
| @@ -404,6 +410,13 @@ void RenderThreadImpl::Init() { |
| RegisterExtension(MemoryBenchmarkingExtension::Get()); |
| #endif // USE_TCMALLOC |
| +#if !defined(OS_ANDROID) && !defined(OS_MACOSX) |
| + discardable_provider_.reset(new RenderProcessDiscardableMemoryProvider); |
| + RenderProcessVisibilityManager::GetInstance()->AddObserver( |
| + discardable_provider_.get()); |
|
jonathan.backer
2013/05/29 14:02:54
I don't see the advantage of a singleton here. Re
|
| + base::DiscardableMemory::SetProvider(discardable_provider_.get()); |
|
jonathan.backer
2013/05/29 14:02:54
I suspect that you may have many RenderThreadImpls
|
| +#endif |
| + |
| if (command_line.HasSwitch(switches::kEnableSkiaBenchmarking)) { |
| LOG(WARNING) << "Enabling unsafe Skia benchmarking extension."; |
| RegisterExtension(SkiaBenchmarkingExtension::Get()); |
| @@ -621,6 +634,10 @@ void RenderThreadImpl::WidgetHidden() { |
| DCHECK(hidden_widget_count_ < widget_count_); |
| hidden_widget_count_++; |
| +#if !defined(OS_ANDROID) && !defined(OS_MACOSX) |
| + RenderProcessVisibilityManager::GetInstance()->WidgetVisibilityChanged(false); |
| +#endif |
| + |
| if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
| return; |
| } |
| @@ -632,6 +649,11 @@ void RenderThreadImpl::WidgetHidden() { |
| void RenderThreadImpl::WidgetRestored() { |
| DCHECK_GT(hidden_widget_count_, 0); |
| hidden_widget_count_--; |
| + |
| +#if !defined(OS_ANDROID) && !defined(OS_MACOSX) |
| + RenderProcessVisibilityManager::GetInstance()->WidgetVisibilityChanged(true); |
| +#endif |
| + |
| if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
| return; |
| } |