Index: chrome/browser/sessions/tab_loader.h |
diff --git a/chrome/browser/sessions/tab_loader.h b/chrome/browser/sessions/tab_loader.h |
index 1ae274c7ef7f742e8bdae3ecffba8c12f726028f..5c6316f81b204f1c601eda37d7e8bc92820fd85d 100644 |
--- a/chrome/browser/sessions/tab_loader.h |
+++ b/chrome/browser/sessions/tab_loader.h |
@@ -12,6 +12,7 @@ |
#include <set> |
#include "base/macros.h" |
+#include "base/memory/memory_coordinator_client.h" |
#include "base/memory/memory_pressure_listener.h" |
#include "base/timer/timer.h" |
#include "chrome/browser/sessions/session_restore_delegate.h" |
@@ -40,7 +41,8 @@ class SessionRestoreStatsCollector; |
// of SessionRestoreImpl doesn't have timing problems. |
class TabLoader : public content::NotificationObserver, |
public base::RefCounted<TabLoader>, |
- public TabLoaderCallback { |
+ public TabLoaderCallback, |
+ public base::MemoryCoordinatorClient { |
public: |
using RestoredTab = SessionRestoreDelegate::RestoredTab; |
@@ -103,20 +105,28 @@ class TabLoader : public content::NotificationObserver, |
// Called when a tab goes away or a load completes. |
void HandleTabClosedOrLoaded(content::NavigationController* controller); |
- // Convenience function returning the current memory pressure level. |
- base::MemoryPressureListener::MemoryPressureLevel |
- CurrentMemoryPressureLevel(); |
+ // Returns true when this is under memory pressure and required to purge |
+ // memory. |
+ bool ShouldPurgeMemory() const; |
// React to memory pressure by stopping to load any more tabs. |
void OnMemoryPressure( |
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level); |
+ // base::MemoryCoordinatorClient implementation: |
+ void OnMemoryStateChange(base::MemoryState state) override; |
+ |
+ // Purges memory by stopping to load any more tabs. |
+ void PurgeMemory(); |
+ |
std::unique_ptr<TabLoaderDelegate> delegate_; |
// Listens for system under memory pressure notifications and stops loading |
// of tabs when we start running out of memory. |
base::MemoryPressureListener memory_pressure_listener_; |
+ base::MemoryState memory_state_; |
+ |
content::NotificationRegistrar registrar_; |
// The delay timer multiplier. See class description for details. |