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..48f65d7a78775a6cacf7ff1ee9f83edaa51feb26 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,30 @@ 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 by stopping loading tabs. |
+ bool ShouldStopLoadingTabs() 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; |
+ |
+ // Stops loading tabs to purge memory by stopping to load any more tabs. |
+ void StopLoadingTabs(); |
+ |
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_; |
+ // TODO(hajimehoshi): Remove this after implementing new API to get its |
+ // current state instead. |
+ base::MemoryState memory_state_; |
haraken
2016/10/11 08:36:23
Is it hard to implement the API to get MemoryState
sky
2016/10/11 17:47:42
+1
hajimehoshi
2016/10/24 10:16:57
Done.
|
+ |
content::NotificationRegistrar registrar_; |
// The delay timer multiplier. See class description for details. |