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

Unified Diff: content/browser/memory/memory_coordinator_impl.cc

Issue 2518653002: memory coordinator: Set variation parameters if available (Closed)
Patch Set: Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/memory/memory_coordinator_impl.cc
diff --git a/content/browser/memory/memory_coordinator_impl.cc b/content/browser/memory/memory_coordinator_impl.cc
index c5bf7f1e8afb655fbc89da76a044745565a69ae9..87ea58303b49163b2fa4c7198a6edbb9d54a4f93 100644
--- a/content/browser/memory/memory_coordinator_impl.cc
+++ b/content/browser/memory/memory_coordinator_impl.cc
@@ -138,17 +138,7 @@ MemoryCoordinatorImpl::MemoryCoordinatorImpl(
DCHECK(memory_monitor_.get());
update_state_callback_ = base::Bind(&MemoryCoordinatorImpl::UpdateState,
weak_ptr_factory_.GetWeakPtr());
-
- // Set initial parameters for calculating the global state.
- expected_renderer_size_ = kDefaultExpectedRendererSizeMB;
- new_renderers_until_throttled_ = kDefaultNewRenderersUntilThrottled;
- new_renderers_until_suspended_ = kDefaultNewRenderersUntilSuspended;
- new_renderers_back_to_normal_ = kDefaultNewRenderersBackToNormal;
- new_renderers_back_to_throttled_ = kDefaultNewRenderersBackToThrottled;
- minimum_transition_period_ =
- base::TimeDelta::FromSeconds(kDefaultMinimumTransitionPeriodSeconds);
- monitoring_interval_ =
- base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds);
+ InitializeParameters();
}
MemoryCoordinatorImpl::~MemoryCoordinatorImpl() {}
@@ -221,25 +211,25 @@ base::MemoryState MemoryCoordinatorImpl::CalculateNextState() {
if (available <= 0)
return MemoryState::SUSPENDED;
- int expected_renderer_count = available / expected_renderer_size_;
+ int expected_renderer_count = available / params_.expected_renderer_size;
switch (current_state_) {
case MemoryState::NORMAL:
- if (expected_renderer_count <= new_renderers_until_suspended_)
+ if (expected_renderer_count <= params_.new_renderers_until_suspended)
return MemoryState::SUSPENDED;
- if (expected_renderer_count <= new_renderers_until_throttled_)
+ if (expected_renderer_count <= params_.new_renderers_until_throttled)
return MemoryState::THROTTLED;
return MemoryState::NORMAL;
case MemoryState::THROTTLED:
- if (expected_renderer_count <= new_renderers_until_suspended_)
+ if (expected_renderer_count <= params_.new_renderers_until_suspended)
return MemoryState::SUSPENDED;
- if (expected_renderer_count >= new_renderers_back_to_normal_)
+ if (expected_renderer_count >= params_.new_renderers_back_to_normal)
return MemoryState::NORMAL;
return MemoryState::THROTTLED;
case MemoryState::SUSPENDED:
- if (expected_renderer_count >= new_renderers_back_to_normal_)
+ if (expected_renderer_count >= params_.new_renderers_back_to_normal)
return MemoryState::NORMAL;
- if (expected_renderer_count >= new_renderers_back_to_throttled_)
+ if (expected_renderer_count >= params_.new_renderers_back_to_throttled)
return MemoryState::THROTTLED;
return MemoryState::SUSPENDED;
case MemoryState::UNKNOWN:
@@ -269,9 +259,9 @@ void MemoryCoordinatorImpl::UpdateState() {
RecordStateChange(prev_state, next_state, now - prev_last_state_change);
NotifyStateToClients();
NotifyStateToChildren();
- ScheduleUpdateState(minimum_transition_period_);
+ ScheduleUpdateState(params_.minimum_transition_period);
} else {
- ScheduleUpdateState(monitoring_interval_);
+ ScheduleUpdateState(params_.monitoring_interval);
}
}
@@ -320,6 +310,21 @@ void MemoryCoordinatorImpl::ScheduleUpdateState(base::TimeDelta delta) {
task_runner_->PostDelayedTask(FROM_HERE, update_state_callback_, delta);
}
+void MemoryCoordinatorImpl::InitializeParameters() {
+ params_.expected_renderer_size = kDefaultExpectedRendererSizeMB;
+ params_.new_renderers_until_throttled = kDefaultNewRenderersUntilThrottled;
+ params_.new_renderers_until_suspended = kDefaultNewRenderersUntilSuspended;
+ params_.new_renderers_back_to_normal = kDefaultNewRenderersBackToNormal;
+ params_.new_renderers_back_to_throttled = kDefaultNewRenderersBackToThrottled;
+ params_.minimum_transition_period =
+ base::TimeDelta::FromSeconds(kDefaultMinimumTransitionPeriodSeconds);
+ params_.monitoring_interval =
+ base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds);
+
+ if (delegate())
+ delegate()->OverrideParameters(&params_);
+}
+
bool MemoryCoordinatorImpl::ValidateParameters() {
return (new_renderers_until_throttled_ > new_renderers_until_suspended_) &&
(new_renderers_back_to_normal_ > new_renderers_back_to_throttled_) &&

Powered by Google App Engine
This is Rietveld 408576698