summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-10 00:18:31 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-10 00:18:31 +0000
commit011352fdfe5524e72ea9aff9cc21b553ff4dc351 (patch)
treef0e8e764ee6000fc21c56d7f0c68df1dcff4ea39
parentf5f2d8978f8074dde9acd199e60e9586d549bf56 (diff)
downloadchromium_src-011352fdfe5524e72ea9aff9cc21b553ff4dc351.zip
chromium_src-011352fdfe5524e72ea9aff9cc21b553ff4dc351.tar.gz
chromium_src-011352fdfe5524e72ea9aff9cc21b553ff4dc351.tar.bz2
Add symbolic link support to FileSystemFileUtil::AbstractFileEnumerator.
BUG=114732 TEST="existing tests" Review URL: http://codereview.chromium.org/9638002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125949 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/file_util.h1
-rw-r--r--base/file_util_posix.cc8
-rw-r--r--base/file_util_win.cc6
-rw-r--r--webkit/fileapi/file_system_file_util.h2
-rw-r--r--webkit/fileapi/local_file_util.cc5
-rw-r--r--webkit/fileapi/native_file_util.cc5
-rw-r--r--webkit/fileapi/obfuscated_file_util.cc4
7 files changed, 30 insertions, 1 deletions
diff --git a/base/file_util.h b/base/file_util.h
index 54969f6..9daea37 100644
--- a/base/file_util.h
+++ b/base/file_util.h
@@ -515,6 +515,7 @@ class BASE_EXPORT FileEnumerator {
// Looks inside a FindInfo and determines if it's a directory.
static bool IsDirectory(const FindInfo& info);
+ static bool IsLink(const FindInfo& info);
static FilePath GetFilename(const FindInfo& find_info);
static int64 GetFilesize(const FindInfo& find_info);
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index 58cd732..00c96fd 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -774,11 +774,17 @@ void FileEnumerator::GetFindInfo(FindInfo* info) {
info->filename.assign(cur_entry->filename.value());
}
+// static
bool FileEnumerator::IsDirectory(const FindInfo& info) {
return S_ISDIR(info.stat.st_mode);
}
// static
+bool FileEnumerator::IsLink(const FindInfo& info) {
+ return S_ISLNK(info.stat.st_mode);
+}
+
+// static
FilePath FileEnumerator::GetFilename(const FindInfo& find_info) {
return FilePath(find_info.filename);
}
diff --git a/base/file_util_win.cc b/base/file_util_win.cc
index 7a31d16..db21d32 100644
--- a/base/file_util_win.cc
+++ b/base/file_util_win.cc
@@ -827,11 +827,17 @@ void FileEnumerator::GetFindInfo(FindInfo* info) {
memcpy(info, &find_data_, sizeof(*info));
}
+// static
bool FileEnumerator::IsDirectory(const FindInfo& info) {
return (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
}
// static
+bool FileEnumerator::IsLink(const FindInfo& info) {
+ return false;
+}
+
+// static
FilePath FileEnumerator::GetFilename(const FindInfo& find_info) {
return FilePath(find_info.cFileName);
}
diff --git a/webkit/fileapi/file_system_file_util.h b/webkit/fileapi/file_system_file_util.h
index 9d098a0..cccf1b7 100644
--- a/webkit/fileapi/file_system_file_util.h
+++ b/webkit/fileapi/file_system_file_util.h
@@ -37,12 +37,14 @@ class FileSystemFileUtil {
virtual int64 Size() = 0;
virtual bool IsDirectory() = 0;
+ virtual bool IsLink() = 0;
};
class EmptyFileEnumerator : public AbstractFileEnumerator {
virtual FilePath Next() OVERRIDE { return FilePath(); }
virtual int64 Size() OVERRIDE { return 0; }
virtual bool IsDirectory() OVERRIDE { return false; }
+ virtual bool IsLink() OVERRIDE { return false; }
};
virtual ~FileSystemFileUtil();
diff --git a/webkit/fileapi/local_file_util.cc b/webkit/fileapi/local_file_util.cc
index bb52ba9..2e6770b 100644
--- a/webkit/fileapi/local_file_util.cc
+++ b/webkit/fileapi/local_file_util.cc
@@ -34,6 +34,7 @@ class LocalFileEnumerator : public FileSystemFileUtil::AbstractFileEnumerator {
virtual FilePath Next() OVERRIDE;
virtual int64 Size() OVERRIDE;
virtual bool IsDirectory() OVERRIDE;
+ virtual bool IsLink() OVERRIDE;
private:
file_util::FileEnumerator file_enum_;
@@ -61,6 +62,10 @@ bool LocalFileEnumerator::IsDirectory() {
return file_util::FileEnumerator::IsDirectory(file_util_info_);
}
+bool LocalFileEnumerator::IsLink() {
+ return file_util::FileEnumerator::IsLink(file_util_info_);
+}
+
LocalFileUtil::LocalFileUtil(FileSystemFileUtil* underlying_file_util)
: FileSystemFileUtil(underlying_file_util) {
}
diff --git a/webkit/fileapi/native_file_util.cc b/webkit/fileapi/native_file_util.cc
index 1482448..2567ad9 100644
--- a/webkit/fileapi/native_file_util.cc
+++ b/webkit/fileapi/native_file_util.cc
@@ -28,6 +28,7 @@ class NativeFileEnumerator : public FileSystemFileUtil::AbstractFileEnumerator {
virtual FilePath Next() OVERRIDE;
virtual int64 Size() OVERRIDE;
virtual bool IsDirectory() OVERRIDE;
+ virtual bool IsLink() OVERRIDE;
private:
file_util::FileEnumerator file_enum_;
@@ -49,6 +50,10 @@ bool NativeFileEnumerator::IsDirectory() {
return file_util::FileEnumerator::IsDirectory(file_util_info_);
}
+bool NativeFileEnumerator::IsLink() {
+ return file_util::FileEnumerator::IsLink(file_util_info_);
+}
+
PlatformFileError NativeFileUtil::CreateOrOpen(
FileSystemOperationContext* unused,
const FileSystemPath& path, int file_flags,
diff --git a/webkit/fileapi/obfuscated_file_util.cc b/webkit/fileapi/obfuscated_file_util.cc
index 5f5cb09..07b7fb0 100644
--- a/webkit/fileapi/obfuscated_file_util.cc
+++ b/webkit/fileapi/obfuscated_file_util.cc
@@ -180,6 +180,10 @@ class ObfuscatedFileEnumerator
return current_.file_info.is_directory();
}
+ virtual bool IsLink() OVERRIDE {
+ return false;
+ }
+
private:
typedef FileSystemDirectoryDatabase::FileId FileId;
typedef FileSystemDirectoryDatabase::FileInfo FileInfo;