| Index: memory/memory_pressure_listener.cc
|
| diff --git a/memory/memory_pressure_listener.cc b/memory/memory_pressure_listener.cc
|
| index 2a1be74ebb99bfb6eaa00af8005ec44d19c57d6f..8071d378ec00a2d4176c60b8d12a87a138f01a58 100644
|
| --- a/memory/memory_pressure_listener.cc
|
| +++ b/memory/memory_pressure_listener.cc
|
| @@ -32,6 +32,10 @@ LazyInstance<
|
| ObserverListThreadSafe<MemoryPressureListener>,
|
| LeakyLazyObserverListTraits> g_observers = LAZY_INSTANCE_INITIALIZER;
|
|
|
| +// All memory pressure notifications within this process will be suppressed if
|
| +// this variable is set to 1.
|
| +subtle::Atomic32 g_notifications_suppressed = 0;
|
| +
|
| } // namespace
|
|
|
| MemoryPressureListener::MemoryPressureListener(
|
| @@ -54,8 +58,20 @@ void MemoryPressureListener::NotifyMemoryPressure(
|
| DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
|
| TRACE_EVENT1("memory", "MemoryPressureListener::NotifyMemoryPressure",
|
| "level", memory_pressure_level);
|
| + if (AreNotificationsSuppressed())
|
| + return;
|
| g_observers.Get().Notify(FROM_HERE, &MemoryPressureListener::Notify,
|
| memory_pressure_level);
|
| }
|
|
|
| +// static
|
| +bool MemoryPressureListener::AreNotificationsSuppressed() {
|
| + return subtle::Acquire_Load(&g_notifications_suppressed) == 1;
|
| +}
|
| +
|
| +// static
|
| +void MemoryPressureListener::SetNotificationsSuppressed(bool suppress) {
|
| + subtle::Release_Store(&g_notifications_suppressed, suppress ? 1 : 0);
|
| +}
|
| +
|
| } // namespace base
|
|
|