diff options
author | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-10 00:18:31 +0000 |
---|---|---|
committer | tzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-10 00:18:31 +0000 |
commit | 011352fdfe5524e72ea9aff9cc21b553ff4dc351 (patch) | |
tree | f0e8e764ee6000fc21c56d7f0c68df1dcff4ea39 | |
parent | f5f2d8978f8074dde9acd199e60e9586d549bf56 (diff) | |
download | chromium_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.h | 1 | ||||
-rw-r--r-- | base/file_util_posix.cc | 8 | ||||
-rw-r--r-- | base/file_util_win.cc | 6 | ||||
-rw-r--r-- | webkit/fileapi/file_system_file_util.h | 2 | ||||
-rw-r--r-- | webkit/fileapi/local_file_util.cc | 5 | ||||
-rw-r--r-- | webkit/fileapi/native_file_util.cc | 5 | ||||
-rw-r--r-- | webkit/fileapi/obfuscated_file_util.cc | 4 |
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; |