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

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

Issue 15650016: [Not for review] Discardable memory emulation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 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
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 #if defined(OS_POSIX) 113 #if defined(OS_POSIX)
114 #include "ipc/ipc_channel_posix.h" 114 #include "ipc/ipc_channel_posix.h"
115 #endif 115 #endif
116 116
117 #if defined(ENABLE_WEBRTC) 117 #if defined(ENABLE_WEBRTC)
118 #include "third_party/webrtc/system_wrappers/interface/event_tracer.h" 118 #include "third_party/webrtc/system_wrappers/interface/event_tracer.h"
119 #endif 119 #endif
120 120
121 #if !defined(OS_ANDROID) && !defined(OS_MACOSX)
122 #include "base/memory/discardable_memory.h"
123 #include "content/renderer/render_process_discardable_memory_provider.h"
124 #include "content/renderer/render_process_visibility_manager.h"
125 #endif
126
121 using base::ThreadRestrictions; 127 using base::ThreadRestrictions;
122 using WebKit::WebDocument; 128 using WebKit::WebDocument;
123 using WebKit::WebFrame; 129 using WebKit::WebFrame;
124 using WebKit::WebNetworkStateNotifier; 130 using WebKit::WebNetworkStateNotifier;
125 using WebKit::WebRuntimeFeatures; 131 using WebKit::WebRuntimeFeatures;
126 using WebKit::WebScriptController; 132 using WebKit::WebScriptController;
127 using WebKit::WebSecurityPolicy; 133 using WebKit::WebSecurityPolicy;
128 using WebKit::WebString; 134 using WebKit::WebString;
129 using WebKit::WebView; 135 using WebKit::WebView;
130 136
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 403
398 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 404 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
399 if (command_line.HasSwitch(switches::kEnableGpuBenchmarking)) 405 if (command_line.HasSwitch(switches::kEnableGpuBenchmarking))
400 RegisterExtension(GpuBenchmarkingExtension::Get()); 406 RegisterExtension(GpuBenchmarkingExtension::Get());
401 407
402 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID)) 408 #if defined(USE_TCMALLOC) && (defined(OS_LINUX) || defined(OS_ANDROID))
403 if (command_line.HasSwitch(switches::kEnableMemoryBenchmarking)) 409 if (command_line.HasSwitch(switches::kEnableMemoryBenchmarking))
404 RegisterExtension(MemoryBenchmarkingExtension::Get()); 410 RegisterExtension(MemoryBenchmarkingExtension::Get());
405 #endif // USE_TCMALLOC 411 #endif // USE_TCMALLOC
406 412
413 #if !defined(OS_ANDROID) && !defined(OS_MACOSX)
414 discardable_provider_.reset(new RenderProcessDiscardableMemoryProvider);
415 RenderProcessVisibilityManager::GetInstance()->AddObserver(
416 discardable_provider_.get());
jonathan.backer 2013/05/29 14:02:54 I don't see the advantage of a singleton here. Re
417 base::DiscardableMemory::SetProvider(discardable_provider_.get());
jonathan.backer 2013/05/29 14:02:54 I suspect that you may have many RenderThreadImpls
418 #endif
419
407 if (command_line.HasSwitch(switches::kEnableSkiaBenchmarking)) { 420 if (command_line.HasSwitch(switches::kEnableSkiaBenchmarking)) {
408 LOG(WARNING) << "Enabling unsafe Skia benchmarking extension."; 421 LOG(WARNING) << "Enabling unsafe Skia benchmarking extension.";
409 RegisterExtension(SkiaBenchmarkingExtension::Get()); 422 RegisterExtension(SkiaBenchmarkingExtension::Get());
410 } 423 }
411 424
412 context_lost_cb_.reset(new GpuVDAContextLostCallback()); 425 context_lost_cb_.reset(new GpuVDAContextLostCallback());
413 426
414 // Note that under Linux, the media library will normally already have 427 // Note that under Linux, the media library will normally already have
415 // been initialized by the Zygote before this instance became a Renderer. 428 // been initialized by the Zygote before this instance became a Renderer.
416 base::FilePath media_path; 429 base::FilePath media_path;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 627
615 void RenderThreadImpl::SetResourceDispatcherDelegate( 628 void RenderThreadImpl::SetResourceDispatcherDelegate(
616 ResourceDispatcherDelegate* delegate) { 629 ResourceDispatcherDelegate* delegate) {
617 resource_dispatcher()->set_delegate(delegate); 630 resource_dispatcher()->set_delegate(delegate);
618 } 631 }
619 632
620 void RenderThreadImpl::WidgetHidden() { 633 void RenderThreadImpl::WidgetHidden() {
621 DCHECK(hidden_widget_count_ < widget_count_); 634 DCHECK(hidden_widget_count_ < widget_count_);
622 hidden_widget_count_++; 635 hidden_widget_count_++;
623 636
637 #if !defined(OS_ANDROID) && !defined(OS_MACOSX)
638 RenderProcessVisibilityManager::GetInstance()->WidgetVisibilityChanged(false);
639 #endif
640
624 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { 641 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) {
625 return; 642 return;
626 } 643 }
627 644
628 if (widget_count_ && hidden_widget_count_ == widget_count_) 645 if (widget_count_ && hidden_widget_count_ == widget_count_)
629 ScheduleIdleHandler(kInitialIdleHandlerDelayMs); 646 ScheduleIdleHandler(kInitialIdleHandlerDelayMs);
630 } 647 }
631 648
632 void RenderThreadImpl::WidgetRestored() { 649 void RenderThreadImpl::WidgetRestored() {
633 DCHECK_GT(hidden_widget_count_, 0); 650 DCHECK_GT(hidden_widget_count_, 0);
634 hidden_widget_count_--; 651 hidden_widget_count_--;
652
653 #if !defined(OS_ANDROID) && !defined(OS_MACOSX)
654 RenderProcessVisibilityManager::GetInstance()->WidgetVisibilityChanged(true);
655 #endif
656
635 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { 657 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) {
636 return; 658 return;
637 } 659 }
638 660
639 ScheduleIdleHandler(kLongIdleHandlerDelayMs); 661 ScheduleIdleHandler(kLongIdleHandlerDelayMs);
640 } 662 }
641 663
642 static void AdjustRuntimeFeatureDefaultsForPlatform() { 664 static void AdjustRuntimeFeatureDefaultsForPlatform() {
643 #if defined(OS_ANDROID) && !defined(GOOGLE_TV) 665 #if defined(OS_ANDROID) && !defined(GOOGLE_TV)
644 WebRuntimeFeatures::enableWebKitMediaSource(false); 666 WebRuntimeFeatures::enableWebKitMediaSource(false);
(...skipping 685 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 1352
1331 void RenderThreadImpl::SetFlingCurveParameters( 1353 void RenderThreadImpl::SetFlingCurveParameters(
1332 const std::vector<float>& new_touchpad, 1354 const std::vector<float>& new_touchpad,
1333 const std::vector<float>& new_touchscreen) { 1355 const std::vector<float>& new_touchscreen) {
1334 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, 1356 webkit_platform_support_->SetFlingCurveParameters(new_touchpad,
1335 new_touchscreen); 1357 new_touchscreen);
1336 1358
1337 } 1359 }
1338 1360
1339 } // namespace content 1361 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698