| Index: base/memory/memory_pressure_listener.cc
|
| diff --git a/base/memory/memory_pressure_listener.cc b/base/memory/memory_pressure_listener.cc
|
| index 9fd675aa4e52a0dd679c0d26456da990c31589d3..19a074ab2c4a2ad188fad4de084305ac32d256d7 100644
|
| --- a/base/memory/memory_pressure_listener.cc
|
| +++ b/base/memory/memory_pressure_listener.cc
|
| @@ -44,6 +44,14 @@ MemoryPressureListener::MemoryPressureListener(
|
| g_observers.Get().AddObserver(this);
|
| }
|
|
|
| +MemoryPressureListener::MemoryPressureListener(
|
| + const MemoryPressureListener::MemoryPressureCallback& callback,
|
| + const MemoryPressureListener::SyncMemoryPressuredCallback& sync_callback)
|
| + : callback_(callback),
|
| + sync_memory_pressured_callback_(sync_callback) {
|
| + g_observers.Get().AddObserver(this);
|
| +}
|
| +
|
| MemoryPressureListener::~MemoryPressureListener() {
|
| g_observers.Get().RemoveObserver(this);
|
| }
|
| @@ -52,6 +60,13 @@ void MemoryPressureListener::Notify(MemoryPressureLevel memory_pressure_level) {
|
| callback_.Run(memory_pressure_level);
|
| }
|
|
|
| +void MemoryPressureListener::SyncNotify(
|
| + MemoryPressureLevel memory_pressure_level) {
|
| + if (!sync_memory_pressured_callback_.is_null()) {
|
| + sync_memory_pressured_callback_.Run(true);
|
| + }
|
| +}
|
| +
|
| // static
|
| void MemoryPressureListener::NotifyMemoryPressure(
|
| MemoryPressureLevel memory_pressure_level) {
|
| @@ -84,6 +99,9 @@ void MemoryPressureListener::SimulatePressureNotification(
|
| void MemoryPressureListener::DoNotifyMemoryPressure(
|
| MemoryPressureLevel memory_pressure_level) {
|
| DCHECK_NE(memory_pressure_level, MEMORY_PRESSURE_LEVEL_NONE);
|
| +
|
| + g_observers.Get().SyncNotify(FROM_HERE, &MemoryPressureListener::SyncNotify,
|
| + memory_pressure_level);
|
| g_observers.Get().Notify(FROM_HERE, &MemoryPressureListener::Notify,
|
| memory_pressure_level);
|
| }
|
|
|