Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(671)

Unified Diff: webkit/fileapi/obfuscated_file_util.cc

Issue 8728029: Update mtime of directory when containee changed. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: style fix Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/fileapi/obfuscated_file_util.h ('k') | webkit/fileapi/obfuscated_file_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « webkit/fileapi/obfuscated_file_util.h ('k') | webkit/fileapi/obfuscated_file_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698