summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-19 05:03:03 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-19 05:03:03 +0000
commitf1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd (patch)
tree31e0799180f03a47db0f3e0377b9eadcec7dcf7c /base
parent4012362511707f3f1db4fb63248f0cc5b6d7f990 (diff)
downloadchromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.zip
chromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.tar.gz
chromium_src-f1ddaa4a69d5e6d17d1fc9a1062c26be4712d4fd.tar.bz2
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
Diffstat (limited to 'base')
-rw-r--r--base/file_util.h2
-rw-r--r--base/file_util_posix.cc10
-rw-r--r--base/file_util_proxy.cc3
-rw-r--r--base/file_util_proxy.h2
-rw-r--r--base/file_util_win.cc16
5 files changed, 33 insertions, 0 deletions
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<DirectoryEntryInfo>* 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 <shellapi.h>
#include <shlobj.h>
#include <time.h>
+
+#include <limits>
#include <string>
#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<int64>::max());
+ return static_cast<int64>(size.QuadPart);
+}
+
+// static
+base::Time FileEnumerator::GetLastModifiedTime(const FindInfo& find_info) {
+ return base::Time::FromFileTime(find_info.ftLastWriteTime);
+}
+
FilePath FileEnumerator::Next() {
base::ThreadRestrictions::AssertIOAllowed();