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 |