blob: 14262a07f815896608e84d92c835ed13a3736132 [file] [log] [blame]
// Copyright 2016 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 CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_
#define CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_
#include "base/macros.h"
#include "base/memory/memory_pressure_monitor.h"
#include "base/memory/weak_ptr.h"
namespace chromecast {
// Memory pressure monitor for Cast: polls for current memory
// usage periodically and sends memory pressure notifications.
class CastMemoryPressureMonitor : public base::MemoryPressureMonitor {
public:
CastMemoryPressureMonitor();
~CastMemoryPressureMonitor() override;
// base::MemoryPressureMonitor implementation:
MemoryPressureLevel GetCurrentPressureLevel() const override;
void SetDispatchCallback(const DispatchCallback& callback) override;
private:
void PollPressureLevel();
void UpdateMemoryPressureLevel(MemoryPressureLevel new_level);
const float critical_memory_fraction_;
const float moderate_memory_fraction_;
MemoryPressureLevel current_level_;
const int system_reserved_kb_;
DispatchCallback dispatch_callback_;
base::WeakPtrFactory<CastMemoryPressureMonitor> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(CastMemoryPressureMonitor);
};
} // namespace chromecast
#endif // CHROMECAST_BROWSER_CAST_MEMORY_PRESSURE_MONITOR_H_