summaryrefslogtreecommitdiffstats
path: root/webkit/fileapi/local_file_system_file_util.h
diff options
context:
space:
mode:
authorericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-24 00:49:40 +0000
committerericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-24 00:49:40 +0000
commit073a04f0599beb27670d8a6738fcbbc22fa97bcf (patch)
treed7393b3cd3463dbfaf4bbdc02fdd0a4de0c83995 /webkit/fileapi/local_file_system_file_util.h
parent6bcd5f36cd94649887eff0c87df4f4496001984a (diff)
downloadchromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.zip
chromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.tar.gz
chromium_src-073a04f0599beb27670d8a6738fcbbc22fa97bcf.tar.bz2
Stop returning the true root path of each filesystem from openFileSystem.
Instead, return the FileSystem URI of the root. This will make it easier to swap in different filesystem implementations. BUG=71635 TEST=Just a couple in FileSystemUtilTests, but a bunch of existing ones [this doesn't add much new functionality]. Review URL: http://codereview.chromium.org/6603034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79228 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/fileapi/local_file_system_file_util.h')
-rw-r--r--webkit/fileapi/local_file_system_file_util.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/webkit/fileapi/local_file_system_file_util.h b/webkit/fileapi/local_file_system_file_util.h
new file mode 100644
index 0000000..6fc2e11
--- /dev/null
+++ b/webkit/fileapi/local_file_system_file_util.h
@@ -0,0 +1,112 @@
+// Copyright (c) 2011 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.
+
+#ifndef WEBKIT_FILEAPI_LOCAL_FILE_SYSTEM_FILE_UTIL_H_
+#define WEBKIT_FILEAPI_LOCAL_FILE_SYSTEM_FILE_UTIL_H_
+
+#include <vector>
+
+#include "base/callback.h"
+#include "base/file_path.h"
+#include "base/file_util.h"
+#include "base/file_util_proxy.h"
+#include "base/logging.h"
+#include "base/platform_file.h"
+#include "base/ref_counted.h"
+#include "base/singleton.h"
+#include "base/tracked_objects.h"
+#include "webkit/fileapi/file_system_file_util.h"
+#include "webkit/fileapi/file_system_types.h"
+
+namespace base {
+struct PlatformFileInfo;
+class MessageLoopProxy;
+class Time;
+}
+
+class GURL;
+
+namespace fileapi {
+
+using base::PlatformFile;
+using base::PlatformFileError;
+
+class FileSystemOperationContext;
+
+class LocalFileSystemFileUtil : public FileSystemFileUtil {
+ public:
+ static LocalFileSystemFileUtil* GetInstance();
+
+ virtual PlatformFileError CreateOrOpen(
+ FileSystemOperationContext* context,
+ const FilePath& file_path,
+ int file_flags,
+ PlatformFile* file_handle,
+ bool* created);
+
+ virtual PlatformFileError EnsureFileExists(
+ FileSystemOperationContext* context,
+ const FilePath& file_path, bool* created);
+
+ virtual PlatformFileError GetFileInfo(
+ FileSystemOperationContext* context,
+ const FilePath& file_, base::PlatformFileInfo* file_info);
+
+ virtual PlatformFileError ReadDirectory(
+ FileSystemOperationContext* context,
+ const FilePath& file_path,
+ std::vector<base::FileUtilProxy::Entry>* entries);
+
+ virtual PlatformFileError CreateDirectory(
+ FileSystemOperationContext* context,
+ const FilePath& file_path,
+ bool exclusive,
+ bool recursive);
+
+ virtual PlatformFileError Copy(
+ FileSystemOperationContext* context,
+ const FilePath& src_file_path,
+ const FilePath& dest_file_path);
+
+ virtual PlatformFileError Move(
+ FileSystemOperationContext* context,
+ const FilePath& src_file_path,
+ const FilePath& dest_file_path);
+
+ virtual PlatformFileError Delete(
+ FileSystemOperationContext* context,
+ const FilePath& file_path,
+ bool recursive);
+
+ virtual PlatformFileError Touch(
+ FileSystemOperationContext* context,
+ const FilePath& file_path,
+ const base::Time& last_access_time,
+ const base::Time& last_modified_time);
+
+ virtual PlatformFileError Truncate(
+ FileSystemOperationContext* context,
+ const FilePath& path,
+ int64 length);
+
+ protected:
+ LocalFileSystemFileUtil() { }
+
+ friend struct DefaultSingletonTraits<LocalFileSystemFileUtil>;
+ DISALLOW_COPY_AND_ASSIGN(LocalFileSystemFileUtil);
+
+ private:
+ // Given the filesystem's root URL and a virtual path, produces a real, full
+ // local path.
+ FilePath GetLocalPath(
+ FileSystemOperationContext* context,
+ const GURL& origin_url,
+ FileSystemType type,
+ const FilePath& virtual_path);
+
+};
+
+} // namespace fileapi
+
+#endif // WEBKIT_FILEAPI_LOCAL_FILE_SYSTEM_FILE_UTIL_H_