diff options
author | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-13 23:54:43 +0000 |
---|---|---|
committer | ericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-13 23:54:43 +0000 |
commit | 0a732853f44b2aec0de4e53307b16fc8b3d88365 (patch) | |
tree | bfef0cb4e51e8e8c87ab77cfeb552add9eebf789 /webkit/fileapi/obfuscated_file_system_file_util.cc | |
parent | 99e245069175bb380785b1594316d7d855e91795 (diff) | |
download | chromium_src-0a732853f44b2aec0de4e53307b16fc8b3d88365.zip chromium_src-0a732853f44b2aec0de4e53307b16fc8b3d88365.tar.gz chromium_src-0a732853f44b2aec0de4e53307b16fc8b3d88365.tar.bz2 |
Timer to drop in-memory databases when they're not in use.
Advice on how best to test this is welcome.
BUG=none
TEST=parts tested via existing unit tests; I'm not sure how to test the rest
Review URL: http://codereview.chromium.org/7011014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85351 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/obfuscated_file_system_file_util.cc')
-rw-r--r-- | webkit/fileapi/obfuscated_file_system_file_util.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/webkit/fileapi/obfuscated_file_system_file_util.cc b/webkit/fileapi/obfuscated_file_system_file_util.cc index 2421547..0d61ed3 100644 --- a/webkit/fileapi/obfuscated_file_system_file_util.cc +++ b/webkit/fileapi/obfuscated_file_system_file_util.cc @@ -8,6 +8,7 @@ #include "base/file_util.h" #include "base/logging.h" +#include "base/message_loop.h" #include "base/string_number_conversions.h" #include "base/sys_string_conversions.h" #include "base/stl_util-inl.h" @@ -23,6 +24,8 @@ // SandboxMountPointProvider's lookups of the root path for a filesystem. namespace { +const int64 kFlushDelaySeconds = 10 * 60; // 10 minutes + const char kOriginDatabaseName[] = "Origins"; const char kDirectoryDatabaseName[] = "Paths"; @@ -732,6 +735,7 @@ FilePath ObfuscatedFileSystemFileUtil::GetTopDir( FileSystemDirectoryDatabase* ObfuscatedFileSystemFileUtil::GetDirectoryDatabase( const GURL& origin, FileSystemType type) { + MarkUsed(); std::string type_string = FileSystemPathManager::GetFileSystemTypeString(type); if (type_string.empty()) { @@ -756,6 +760,14 @@ FileSystemDirectoryDatabase* ObfuscatedFileSystemFileUtil::GetDirectoryDatabase( return database; } +void ObfuscatedFileSystemFileUtil::MarkUsed() { + if (timer_.IsRunning()) + timer_.Reset(); + else + timer_.Start(base::TimeDelta::FromSeconds(kFlushDelaySeconds), this, + &ObfuscatedFileSystemFileUtil::DropDatabases); +} + void ObfuscatedFileSystemFileUtil::DropDatabases() { origin_database_.reset(); STLDeleteContainerPairSecondPointers( |