Index: net/ssl/ssl_client_session_cache.cc |
diff --git a/net/ssl/ssl_client_session_cache.cc b/net/ssl/ssl_client_session_cache.cc |
index 82526a5ae4d1a022b0fdbd47c981b592a814cf0a..650d98948a2cacd2093d5fd49faef46fd62a6744 100644 |
--- a/net/ssl/ssl_client_session_cache.cc |
+++ b/net/ssl/ssl_client_session_cache.cc |
@@ -15,7 +15,10 @@ SSLClientSessionCache::SSLClientSessionCache(const Config& config) |
: clock_(new base::DefaultClock), |
config_(config), |
cache_(config.max_entries), |
- lookups_since_flush_(0) {} |
+ lookups_since_flush_(0) { |
+ memory_pressure_listener_.reset(new base::MemoryPressureListener(base::Bind( |
+ &SSLClientSessionCache::OnMemoryPressure, base::Unretained(this)))); |
+} |
SSLClientSessionCache::~SSLClientSessionCache() { |
Flush(); |
@@ -91,4 +94,18 @@ void SSLClientSessionCache::FlushExpiredSessions() { |
} |
} |
+void SSLClientSessionCache::OnMemoryPressure( |
+ base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
+ switch (memory_pressure_level) { |
+ case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE: |
+ break; |
+ case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE: |
+ FlushExpiredSessions(); |
+ break; |
+ case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL: |
+ Flush(); |
+ break; |
+ } |
+} |
+ |
} // namespace net |