| 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(¶ms_);
|
| +}
|
| +
|
| bool MemoryCoordinatorImpl::ValidateParameters() {
|
| return (new_renderers_until_throttled_ > new_renderers_until_suspended_) &&
|
| (new_renderers_back_to_normal_ > new_renderers_back_to_throttled_) &&
|
|
|