blob: aea6f3f357926a7cbc7bd81ab6ba82bd53f677b9 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_MEMORY_PRESSURE_EVALUATOR_H_
#define FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_MEMORY_PRESSURE_EVALUATOR_H_
#include "base/memory/memory_pressure_listener.h"
#include "base/sequence_checker.h"
#include "base/timer/timer.h"
#include "base/util/memory_pressure/system_memory_pressure_evaluator.h"
namespace util {
class MemoryPressureVoter;
}
// Synthesizes MemoryPressureLevel values & notifications by comparing the total
// memory usage of the web Context processes against a target total.
class WebEngineMemoryPressureEvaluator
: public util::SystemMemoryPressureEvaluator {
public:
explicit WebEngineMemoryPressureEvaluator(
std::unique_ptr<util::MemoryPressureVoter> voter);
~WebEngineMemoryPressureEvaluator() override;
WebEngineMemoryPressureEvaluator(const WebEngineMemoryPressureEvaluator&) =
delete;
WebEngineMemoryPressureEvaluator& operator=(
const WebEngineMemoryPressureEvaluator&) = delete;
private:
void CheckMemoryPressure();
// Periodic timer used to trigger sampling of memory usage.
base::RepeatingTimer timer_;
// Next time at which to notify moderate memory pressure.
base::TimeTicks next_moderate_notify_time_;
SEQUENCE_CHECKER(sequence_checker_);
};
#endif // FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_MEMORY_PRESSURE_EVALUATOR_H_