| Index: base/memory/memory_pressure_monitor.cc
|
| diff --git a/base/memory/memory_pressure_monitor.cc b/base/memory/memory_pressure_monitor.cc
|
| index 00633f1dd61981af41c7738d9c182d97367b9aef..e9ff406585e38922b989ab18dd5358cd99818594 100644
|
| --- a/base/memory/memory_pressure_monitor.cc
|
| +++ b/base/memory/memory_pressure_monitor.cc
|
| @@ -5,12 +5,39 @@
|
| #include "base/memory/memory_pressure_monitor.h"
|
|
|
| #include "base/logging.h"
|
| +#include "base/metrics/histogram_macros.h"
|
|
|
| namespace base {
|
| namespace {
|
|
|
| MemoryPressureMonitor* g_monitor = nullptr;
|
|
|
| +// Enumeration of UMA memory pressure levels. This needs to be kept in sync with
|
| +// histograms.xml and the memory pressure levels defined in
|
| +// MemoryPressureListener.
|
| +enum MemoryPressureLevelUMA {
|
| + UMA_MEMORY_PRESSURE_LEVEL_NONE = 0,
|
| + UMA_MEMORY_PRESSURE_LEVEL_MODERATE = 1,
|
| + UMA_MEMORY_PRESSURE_LEVEL_CRITICAL = 2,
|
| + // This must be the last value in the enum.
|
| + UMA_MEMORY_PRESSURE_LEVEL_COUNT,
|
| +};
|
| +
|
| +// Converts a memory pressure level to an UMA enumeration value.
|
| +MemoryPressureLevelUMA MemoryPressureLevelToUmaEnumValue(
|
| + base::MemoryPressureListener::MemoryPressureLevel level) {
|
| + switch (level) {
|
| + case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
|
| + return UMA_MEMORY_PRESSURE_LEVEL_NONE;
|
| + case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
|
| + return UMA_MEMORY_PRESSURE_LEVEL_MODERATE;
|
| + case MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
|
| + return UMA_MEMORY_PRESSURE_LEVEL_CRITICAL;
|
| + }
|
| + NOTREACHED();
|
| + return UMA_MEMORY_PRESSURE_LEVEL_NONE;
|
| +}
|
| +
|
| } // namespace
|
|
|
| MemoryPressureMonitor::MemoryPressureMonitor() {
|
| @@ -27,5 +54,11 @@ MemoryPressureMonitor::~MemoryPressureMonitor() {
|
| MemoryPressureMonitor* MemoryPressureMonitor::Get() {
|
| return g_monitor;
|
| }
|
| +void MemoryPressureMonitor::RecordMemoryPressure(
|
| + base::MemoryPressureListener::MemoryPressureLevel level) {
|
| + UMA_HISTOGRAM_ENUMERATION("Memory.PressureLevel",
|
| + MemoryPressureLevelToUmaEnumValue(level),
|
| + UMA_MEMORY_PRESSURE_LEVEL_COUNT);
|
| +}
|
|
|
| } // namespace base
|
|
|