Chromium Code Reviews| 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. |