Index: content/browser/memory/memory_state_updater.cc |
diff --git a/content/browser/memory/memory_state_updater.cc b/content/browser/memory/memory_state_updater.cc |
index fb75dbd2016aecfef0b80fb4da54a4826a0c76f2..e714ef386e44ddeace89c66bd41b581800444e2e 100644 |
--- a/content/browser/memory/memory_state_updater.cc |
+++ b/content/browser/memory/memory_state_updater.cc |
@@ -71,9 +71,14 @@ MemoryStateUpdater::MemoryStateUpdater( |
MemoryStateUpdater::~MemoryStateUpdater() {} |
-base::MemoryState MemoryStateUpdater::CalculateNextState() { |
- using MemoryState = base::MemoryState; |
+void MemoryStateUpdater::ScheduleUpdateCondition(base::TimeDelta delta) { |
+ update_condition_closure_.Reset( |
+ base::Bind(&MemoryStateUpdater::UpdateCondition, base::Unretained(this))); |
+ task_runner_->PostDelayedTask(FROM_HERE, update_condition_closure_.callback(), |
+ delta); |
+} |
+MemoryCondition MemoryStateUpdater::CalculateNextCondition() { |
int available = |
coordinator_->memory_monitor()->GetFreeMemoryUntilCriticalMB(); |
@@ -83,53 +88,37 @@ base::MemoryState MemoryStateUpdater::CalculateNextState() { |
available); |
if (available <= 0) |
- return MemoryState::SUSPENDED; |
+ return MemoryCondition::CRITICAL; |
- auto current_state = coordinator_->GetGlobalMemoryState(); |
+ auto current = coordinator_->GetMemoryCondtion(); |
int expected_renderer_count = available / expected_renderer_size_; |
- switch (current_state) { |
- case MemoryState::NORMAL: |
+ switch (current) { |
+ case MemoryCondition::NORMAL: |
if (expected_renderer_count <= new_renderers_until_suspended_) |
- return MemoryState::SUSPENDED; |
+ return MemoryCondition::CRITICAL; |
if (expected_renderer_count <= new_renderers_until_throttled_) |
- return MemoryState::THROTTLED; |
- return MemoryState::NORMAL; |
- case MemoryState::THROTTLED: |
+ return MemoryCondition::WARNING; |
+ return MemoryCondition::NORMAL; |
+ case MemoryCondition::WARNING: |
if (expected_renderer_count <= new_renderers_until_suspended_) |
- return MemoryState::SUSPENDED; |
+ return MemoryCondition::CRITICAL; |
if (expected_renderer_count >= new_renderers_back_to_normal_) |
- return MemoryState::NORMAL; |
- return MemoryState::THROTTLED; |
- case MemoryState::SUSPENDED: |
+ return MemoryCondition::NORMAL; |
+ return MemoryCondition::WARNING; |
+ case MemoryCondition::CRITICAL: |
if (expected_renderer_count >= new_renderers_back_to_normal_) |
- return MemoryState::NORMAL; |
+ return MemoryCondition::NORMAL; |
if (expected_renderer_count >= new_renderers_back_to_throttled_) |
- return MemoryState::THROTTLED; |
- return MemoryState::SUSPENDED; |
- case MemoryState::UNKNOWN: |
- // Fall through |
- default: |
- NOTREACHED(); |
- return MemoryState::UNKNOWN; |
- } |
-} |
- |
-void MemoryStateUpdater::UpdateState() { |
- auto current_state = coordinator_->GetGlobalMemoryState(); |
- auto next_state = CalculateNextState(); |
- if (coordinator_->ChangeStateIfNeeded(current_state, next_state)) { |
- ScheduleUpdateState(minimum_transition_period_); |
- } else { |
- ScheduleUpdateState(monitoring_interval_); |
+ return MemoryCondition::WARNING; |
+ return MemoryCondition::CRITICAL; |
} |
} |
-void MemoryStateUpdater::ScheduleUpdateState(base::TimeDelta delta) { |
- update_state_closure_.Reset(base::Bind(&MemoryStateUpdater::UpdateState, |
- base::Unretained(this))); |
- task_runner_->PostDelayedTask(FROM_HERE, update_state_closure_.callback(), |
- delta); |
+void MemoryStateUpdater::UpdateCondition() { |
+ auto next_condition = CalculateNextCondition(); |
+ coordinator_->UpdateConditionIfNeeded(next_condition); |
+ ScheduleUpdateCondition(monitoring_interval_); |
} |
void MemoryStateUpdater::InitializeParameters() { |