diff options
author | rmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-18 18:49:14 +0000 |
---|---|---|
committer | rmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-18 18:49:14 +0000 |
commit | be7995f117df5ca5d4b60d918cd419aa08724e53 (patch) | |
tree | 1e1448f36dd539797e51d079f3e42e7ad2bb56fb /chrome/browser/history/history_backend.cc | |
parent | 3b0403687b604e396d57fc4eea6029b02de030ee (diff) | |
download | chromium_src-be7995f117df5ca5d4b60d918cd419aa08724e53.zip chromium_src-be7995f117df5ca5d4b60d918cd419aa08724e53.tar.gz chromium_src-be7995f117df5ca5d4b60d918cd419aa08724e53.tar.bz2 |
Adds a MemoryPressureListener to sql::Connection.
This will allow SQLite database to reduce their page cache memory on systems
which provide a MemoryPressureListener signal.
BUG=243769
Review URL: https://chromiumcodereview.appspot.com/17071007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212374 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/history/history_backend.cc')
-rw-r--r-- | chrome/browser/history/history_backend.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/chrome/browser/history/history_backend.cc b/chrome/browser/history/history_backend.cc index a5a0cca..adaff5a 100644 --- a/chrome/browser/history/history_backend.cc +++ b/chrome/browser/history/history_backend.cc @@ -260,6 +260,8 @@ void HistoryBackend::Init(const std::string& languages, bool force_fail) { InitImpl(languages); delegate_->DBLoaded(id_); typed_url_syncable_service_.reset(new TypedUrlSyncableService(this)); + memory_pressure_listener_.reset(new base::MemoryPressureListener( + base::Bind(&HistoryBackend::OnMemoryPressure, base::Unretained(this)))); #if defined(OS_ANDROID) PopulateMostVisitedURLMap(); #endif @@ -766,6 +768,18 @@ void HistoryBackend::InitImpl(const std::string& languages) { TimeTicks::Now() - beginning_time); } +void HistoryBackend::OnMemoryPressure( + base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { + bool trim_aggressively = memory_pressure_level == + base::MemoryPressureListener::MEMORY_PRESSURE_CRITICAL; + if (db_) + db_->TrimMemory(trim_aggressively); + if (thumbnail_db_) + thumbnail_db_->TrimMemory(trim_aggressively); + if (archived_db_) + archived_db_->TrimMemory(trim_aggressively); +} + void HistoryBackend::CloseAllDatabases() { if (db_) { // Commit the long-running transaction. |