summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'webkit')
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util.cc12
-rw-r--r--webkit/fileapi/obfuscated_file_system_file_util.h3
2 files changed, 15 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(
diff --git a/webkit/fileapi/obfuscated_file_system_file_util.h b/webkit/fileapi/obfuscated_file_system_file_util.h
index 63e8712..86fc853 100644
--- a/webkit/fileapi/obfuscated_file_system_file_util.h
+++ b/webkit/fileapi/obfuscated_file_system_file_util.h
@@ -11,6 +11,7 @@
#include "base/file_path.h"
#include "base/file_util_proxy.h"
#include "base/platform_file.h"
+#include "base/timer.h"
#include "webkit/fileapi/file_system_directory_database.h"
#include "webkit/fileapi/file_system_file_util.h"
#include "webkit/fileapi/file_system_origin_database.h"
@@ -146,12 +147,14 @@ class ObfuscatedFileSystemFileUtil : public FileSystemFileUtil {
FilePath GetTopDir(const GURL& origin, FileSystemType type);
FileSystemDirectoryDatabase* GetDirectoryDatabase(
const GURL& origin_url, FileSystemType type);
+ void MarkUsed();
void DropDatabases();
typedef std::map<std::string, FileSystemDirectoryDatabase*> DirectoryMap;
DirectoryMap directories_;
scoped_ptr<FileSystemOriginDatabase> origin_database_;
FilePath file_system_directory_;
+ base::OneShotTimer<ObfuscatedFileSystemFileUtil> timer_;
DISALLOW_COPY_AND_ASSIGN(ObfuscatedFileSystemFileUtil);
};