summaryrefslogtreecommitdiffstats
path: root/chrome/browser/history/history_backend.cc
diff options
context:
space:
mode:
authorrmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-18 18:49:14 +0000
committerrmcilroy@chromium.org <rmcilroy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-18 18:49:14 +0000
commitbe7995f117df5ca5d4b60d918cd419aa08724e53 (patch)
tree1e1448f36dd539797e51d079f3e42e7ad2bb56fb /chrome/browser/history/history_backend.cc
parent3b0403687b604e396d57fc4eea6029b02de030ee (diff)
downloadchromium_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.cc14
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.