| Index: webkit/fileapi/obfuscated_file_util.cc
|
| diff --git a/webkit/fileapi/obfuscated_file_util.cc b/webkit/fileapi/obfuscated_file_util.cc
|
| index 385393b9db01ff630b29dd345acb4510d95b0bc8..2b44d4f9d6f6e673ea6d6ecfba07492d35624f02 100644
|
| --- a/webkit/fileapi/obfuscated_file_util.cc
|
| +++ b/webkit/fileapi/obfuscated_file_util.cc
|
| @@ -92,6 +92,13 @@ void UpdatePathQuotaUsage(
|
| type, growth);
|
| }
|
|
|
| +void TouchDirectory(fileapi::FileSystemDirectoryDatabase* db,
|
| + fileapi::FileSystemDirectoryDatabase::FileId dir_id) {
|
| + DCHECK(db);
|
| + if (!db->UpdateModificationTime(dir_id, base::Time::Now()))
|
| + NOTREACHED();
|
| +}
|
| +
|
| const FilePath::CharType kLegacyDataDirectory[] = FILE_PATH_LITERAL("Legacy");
|
|
|
| const FilePath::CharType kTemporaryDirectoryName[] = FILE_PATH_LITERAL("t");
|
| @@ -391,6 +398,7 @@ PlatformFileError ObfuscatedFileUtil::CreateDirectory(
|
| }
|
| if (!recursive && components.size() - index > 1)
|
| return base::PLATFORM_FILE_ERROR_NOT_FOUND;
|
| + bool first = true;
|
| for (; index < components.size(); ++index) {
|
| FileInfo file_info;
|
| file_info.name = components[index];
|
| @@ -406,6 +414,10 @@ PlatformFileError ObfuscatedFileUtil::CreateDirectory(
|
| }
|
| UpdatePathQuotaUsage(context, context->src_origin_url(),
|
| context->src_type(), 1, file_info.name.size());
|
| + if (first) {
|
| + first = false;
|
| + TouchDirectory(db, file_info.parent_id);
|
| + }
|
| }
|
| return base::PLATFORM_FILE_OK;
|
| }
|
| @@ -533,8 +545,7 @@ PlatformFileError ObfuscatedFileUtil::Touch(
|
| return base::PLATFORM_FILE_ERROR_FAILED;
|
| }
|
| if (file_info.is_directory()) {
|
| - file_info.modification_time = last_modified_time;
|
| - if (!db->UpdateFileInfo(file_id, file_info))
|
| + if (!db->UpdateModificationTime(file_id, last_modified_time))
|
| return base::PLATFORM_FILE_ERROR_FAILED;
|
| return base::PLATFORM_FILE_OK;
|
| }
|
| @@ -682,8 +693,11 @@ PlatformFileError ObfuscatedFileUtil::CopyOrMoveFile(
|
| if (overwrite) {
|
| FilePath dest_data_path = DataPathToLocalPath(context->src_origin_url(),
|
| context->src_type(), dest_file_info.data_path);
|
| - return underlying_file_util()->CopyOrMoveFile(context,
|
| + PlatformFileError error = underlying_file_util()->CopyOrMoveFile(context,
|
| src_data_path, dest_data_path, copy);
|
| + if (error == base::PLATFORM_FILE_OK)
|
| + TouchDirectory(db, dest_file_info.parent_id);
|
| + return error;
|
| } else {
|
| FileId dest_parent_id;
|
| if (!db->GetFileWithPath(dest_file_path.DirName(), &dest_parent_id)) {
|
| @@ -712,6 +726,8 @@ PlatformFileError ObfuscatedFileUtil::CopyOrMoveFile(
|
| UpdatePathQuotaUsage(context, context->src_origin_url(),
|
| context->src_type(), -1,
|
| -static_cast<int64>(src_file_info.name.size()));
|
| + TouchDirectory(db, src_file_info.parent_id);
|
| + TouchDirectory(db, dest_file_info.parent_id);
|
| return base::PLATFORM_FILE_OK;
|
| } else {
|
| FileId dest_parent_id;
|
| @@ -724,6 +740,7 @@ PlatformFileError ObfuscatedFileUtil::CopyOrMoveFile(
|
| static_cast<int64>(dest_file_path.BaseName().value().size())
|
| - static_cast<int64>(src_file_info.name.size())))
|
| return base::PLATFORM_FILE_ERROR_NO_SPACE;
|
| + FileId src_parent_id = src_file_info.parent_id;
|
| src_file_info.parent_id = dest_parent_id;
|
| src_file_info.name = dest_file_path.BaseName().value();
|
| if (!db->UpdateFileInfo(src_file_id, src_file_info))
|
| @@ -732,6 +749,8 @@ PlatformFileError ObfuscatedFileUtil::CopyOrMoveFile(
|
| context, context->src_origin_url(), context->src_type(), 0,
|
| static_cast<int64>(dest_file_path.BaseName().value().size()) -
|
| static_cast<int64>(src_file_path.BaseName().value().size()));
|
| + TouchDirectory(db, src_parent_id);
|
| + TouchDirectory(db, dest_parent_id);
|
| return base::PLATFORM_FILE_OK;
|
| }
|
| }
|
| @@ -803,6 +822,7 @@ PlatformFileError ObfuscatedFileUtil::DeleteFile(
|
| if (base::PLATFORM_FILE_OK !=
|
| underlying_file_util()->DeleteFile(context, data_path))
|
| LOG(WARNING) << "Leaked a backing file.";
|
| + TouchDirectory(db, file_info.parent_id);
|
| return base::PLATFORM_FILE_OK;
|
| }
|
|
|
| @@ -826,6 +846,7 @@ PlatformFileError ObfuscatedFileUtil::DeleteSingleDirectory(
|
| AllocateQuotaForPath(context, -1, -static_cast<int64>(file_info.name.size()));
|
| UpdatePathQuotaUsage(context, context->src_origin_url(), context->src_type(),
|
| -1, -static_cast<int64>(file_info.name.size()));
|
| + TouchDirectory(db, file_info.parent_id);
|
| return base::PLATFORM_FILE_OK;
|
| }
|
|
|
| @@ -1117,6 +1138,7 @@ PlatformFileError ObfuscatedFileUtil::CreateFile(
|
| return base::PLATFORM_FILE_ERROR_FAILED;
|
| }
|
| UpdatePathQuotaUsage(context, origin_url, type, 1, file_info->name.size());
|
| + TouchDirectory(db, file_info->parent_id);
|
|
|
| return base::PLATFORM_FILE_OK;
|
| }
|
|
|