diff options
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/fileapi/obfuscated_file_system_file_util.cc | 12 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_system_file_util.h | 3 |
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); }; |