summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/obfuscated_file_system_file_util.cc
diff options
context:
space:
mode:
authorericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-13 23:54:43 +0000
committerericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-13 23:54:43 +0000
commit0a732853f44b2aec0de4e53307b16fc8b3d88365 (patch)
treebfef0cb4e51e8e8c87ab77cfeb552add9eebf789 /webkit/fileapi/obfuscated_file_system_file_util.cc
parent99e245069175bb380785b1594316d7d855e91795 (diff)
downloadchromium_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.cc12
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(