From f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd Mon Sep 17 00:00:00 2001 From: "tzik@chromium.org" Date: Tue, 19 Jul 2011 05:03:03 +0000 Subject: Adding FileUtilProxy::Entry::{size,last_modified_time}, and FileEnumerator::{GetFilesize,GetLastModifiedTime}. BUG=89134 TEST=None Review URL: http://codereview.chromium.org/7355013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92975 0039d316-1c4b-4281-b951-d872f2087c98 --- base/file_util.h | 2 ++ base/file_util_posix.cc | 10 ++++++++++ base/file_util_proxy.cc | 3 +++ base/file_util_proxy.h | 2 ++ base/file_util_win.cc | 16 ++++++++++++++++ 5 files changed, 33 insertions(+) (limited to 'base') diff --git a/base/file_util.h b/base/file_util.h index 03c2396..6d786c2 100644 --- a/base/file_util.h +++ b/base/file_util.h @@ -469,6 +469,8 @@ class BASE_API FileEnumerator { static bool IsDirectory(const FindInfo& info); static FilePath GetFilename(const FindInfo& find_info); + static int64 GetFilesize(const FindInfo& find_info); + static base::Time GetLastModifiedTime(const FindInfo& find_info); private: // Returns true if the given path should be skipped in enumeration. diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc index 2e7c91e..5c9fb14 100644 --- a/base/file_util_posix.cc +++ b/base/file_util_posix.cc @@ -735,6 +735,16 @@ FilePath FileEnumerator::GetFilename(const FindInfo& find_info) { return FilePath(find_info.filename); } +// static +int64 FileEnumerator::GetFilesize(const FindInfo& find_info) { + return find_info.stat.st_size; +} + +// static +base::Time FileEnumerator::GetLastModifiedTime(const FindInfo& find_info) { + return base::Time::FromTimeT(find_info.stat.st_mtime); +} + bool FileEnumerator::ReadDirectory(std::vector* entries, const FilePath& source, bool show_links) { base::ThreadRestrictions::AssertIOAllowed(); diff --git a/base/file_util_proxy.cc b/base/file_util_proxy.cc index cff76bde..9b9ed88 100644 --- a/base/file_util_proxy.cc +++ b/base/file_util_proxy.cc @@ -451,6 +451,9 @@ class RelayReadDirectory : public MessageLoopRelay { // This will just give the entry's name instead of entire path // if we use current.value(). entry.name = file_util::FileEnumerator::GetFilename(info).value(); + entry.size = file_util::FileEnumerator::GetFilesize(info); + entry.last_modified_time = + file_util::FileEnumerator::GetLastModifiedTime(info); entries_.push_back(entry); } } diff --git a/base/file_util_proxy.h b/base/file_util_proxy.h index 72591c2..42b9cca 100644 --- a/base/file_util_proxy.h +++ b/base/file_util_proxy.h @@ -27,6 +27,8 @@ class BASE_API FileUtilProxy { struct Entry { FilePath::StringType name; bool is_directory; + int64 size; + base::Time last_modified_time; }; // This callback is used by methods that report only an error code. It is diff --git a/base/file_util_win.cc b/base/file_util_win.cc index 93bfe1d..9a138a3 100644 --- a/base/file_util_win.cc +++ b/base/file_util_win.cc @@ -10,6 +10,8 @@ #include #include #include + +#include #include #include "base/file_path.h" @@ -893,6 +895,20 @@ FilePath FileEnumerator::GetFilename(const FindInfo& find_info) { return FilePath(find_info.cFileName); } +// static +int64 FileEnumerator::GetFilesize(const FindInfo& find_info) { + ULARGE_INTEGER size; + size.HighPart = find_info.nFileSizeHigh; + size.LowPart = find_info.nFileSizeLow; + DCHECK_LE(size.QuadPart, std::numeric_limits::max()); + return static_cast(size.QuadPart); +} + +// static +base::Time FileEnumerator::GetLastModifiedTime(const FindInfo& find_info) { + return base::Time::FromFileTime(find_info.ftLastWriteTime); +} + FilePath FileEnumerator::Next() { base::ThreadRestrictions::AssertIOAllowed(); -- cgit v1.1