From 18c2280bd19edee2bfb10d3231eca2ab7652efac Mon Sep 17 00:00:00 2001
From: skuhne <skuhne@chromium.org>
Date: Tue, 16 Dec 2014 16:01:49 -0800
Subject: Extending the memory pressure system by adding one more state to
 denote a lack of memory pressure.

This CL is adding one more state to the resource pressure states to allow a system state query to use the pressure value.

Please see go/chromeosresourcepressure for more information.

BUG=439493
TEST=Since there are no users of the new state, this cannot be "tested" yet.

Review URL: https://codereview.chromium.org/782053002

Cr-Commit-Position: refs/heads/master@{#308696}
---
 base/memory/memory_pressure_listener.cc |  1 +
 base/memory/memory_pressure_listener.h  | 17 +++++++++--------
 2 files changed, 10 insertions(+), 8 deletions(-)

(limited to 'base/memory')

diff --git a/base/memory/memory_pressure_listener.cc b/base/memory/memory_pressure_listener.cc
index 745c985..d51d918 100644
--- a/base/memory/memory_pressure_listener.cc
+++ b/base/memory/memory_pressure_listener.cc
@@ -51,6 +51,7 @@ void MemoryPressureListener::Notify(MemoryPressureLevel memory_pressure_level) {
 // static
 void MemoryPressureListener::NotifyMemoryPressure(
     MemoryPressureLevel memory_pressure_level) {
+  DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
   TRACE_EVENT1("memory", "MemoryPressureListener::NotifyMemoryPressure",
       "level", memory_pressure_level);
   g_observers.Get().Notify(&MemoryPressureListener::Notify,
diff --git a/base/memory/memory_pressure_listener.h b/base/memory/memory_pressure_listener.h
index f586209..f159fb0 100644
--- a/base/memory/memory_pressure_listener.h
+++ b/base/memory/memory_pressure_listener.h
@@ -3,12 +3,9 @@
 // found in the LICENSE file.
 
 // MemoryPressure provides static APIs for handling memory pressure on
-// platforms that have such signals, such as Android.
+// platforms that have such signals, such as Android and ChromeOS.
 // The app will try to discard buffers that aren't deemed essential (individual
 // modules will implement their own policy).
-//
-// Refer to memory_pressure_level_list.h for information about what sorts of
-// signals can be sent under what conditions.
 
 #ifndef BASE_MEMORY_PRESSURE_LISTENER_H_
 #define BASE_MEMORY_PRESSURE_LISTENER_H_
@@ -26,12 +23,11 @@ namespace base {
 // the listener.
 // Note that even on the same thread, the callback is not guaranteed to be
 // called synchronously within the system memory pressure broadcast.
-// Please see notes on memory_pressure_level_list.h: some levels are absolutely
-// critical, and if not enough memory is returned to the system, it'll
-// potentially kill the app, and then later the app will have to be
+// Please see notes in MemoryPressureLevel enum below: some levels are
+// absolutely critical, and if not enough memory is returned to the system,
+// it'll potentially kill the app, and then later the app will have to be
 // cold-started.
 //
-//
 // Example:
 //
 //    void OnMemoryPressure(MemoryPressureLevel memory_pressure_level) {
@@ -52,6 +48,11 @@ class BASE_EXPORT MemoryPressureListener {
   // A Java counterpart will be generated for this enum.
   // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.base
   enum MemoryPressureLevel {
+    // No problems, there is enough memory to use. This event is not sent via
+    // callback, but the enum is used in other places to find out the current
+    // state of the system.
+    MEMORY_PRESSURE_LEVEL_NONE = -1,
+
     // Modules are advised to free buffers that are cheap to re-allocate and not
     // immediately needed.
     MEMORY_PRESSURE_LEVEL_MODERATE = 0,
-- 
cgit v1.1