1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
6#define STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
7
8#include "base/compiler_specific.h"
9#include "base/files/file_path.h"
10#include "base/memory/scoped_ptr.h"
11#include "storage/browser/fileapi/file_system_file_util.h"
12#include "storage/browser/storage_browser_export.h"
13
14namespace base {
15class Time;
16}
17
18class GURL;
19
20namespace storage {
21
22class FileSystemOperationContext;
23class FileSystemURL;
24
25// An instance of this class is created and owned by *FileSystemBackend.
26class STORAGE_EXPORT LocalFileUtil
27    : public FileSystemFileUtil {
28 public:
29  LocalFileUtil();
30  virtual ~LocalFileUtil();
31
32  virtual base::File CreateOrOpen(
33      FileSystemOperationContext* context,
34      const FileSystemURL& url,
35      int file_flags) OVERRIDE;
36  virtual base::File::Error EnsureFileExists(
37      FileSystemOperationContext* context,
38      const FileSystemURL& url, bool* created) OVERRIDE;
39  virtual base::File::Error CreateDirectory(
40      FileSystemOperationContext* context,
41      const FileSystemURL& url,
42      bool exclusive,
43      bool recursive) OVERRIDE;
44  virtual base::File::Error GetFileInfo(
45      FileSystemOperationContext* context,
46      const FileSystemURL& url,
47      base::File::Info* file_info,
48      base::FilePath* platform_file) OVERRIDE;
49  virtual scoped_ptr<AbstractFileEnumerator> CreateFileEnumerator(
50      FileSystemOperationContext* context,
51      const FileSystemURL& root_url) OVERRIDE;
52  virtual base::File::Error GetLocalFilePath(
53      FileSystemOperationContext* context,
54      const FileSystemURL& file_system_url,
55      base::FilePath* local_file_path) OVERRIDE;
56  virtual base::File::Error Touch(
57      FileSystemOperationContext* context,
58      const FileSystemURL& url,
59      const base::Time& last_access_time,
60      const base::Time& last_modified_time) OVERRIDE;
61  virtual base::File::Error Truncate(
62      FileSystemOperationContext* context,
63      const FileSystemURL& url,
64      int64 length) OVERRIDE;
65  virtual base::File::Error CopyOrMoveFile(
66      FileSystemOperationContext* context,
67      const FileSystemURL& src_url,
68      const FileSystemURL& dest_url,
69      CopyOrMoveOption option,
70      bool copy) OVERRIDE;
71  virtual base::File::Error CopyInForeignFile(
72      FileSystemOperationContext* context,
73      const base::FilePath& src_file_path,
74      const FileSystemURL& dest_url) OVERRIDE;
75  virtual base::File::Error DeleteFile(
76      FileSystemOperationContext* context,
77      const FileSystemURL& url) OVERRIDE;
78  virtual base::File::Error DeleteDirectory(
79      FileSystemOperationContext* context,
80      const FileSystemURL& url) OVERRIDE;
81  virtual storage::ScopedFile CreateSnapshotFile(
82      FileSystemOperationContext* context,
83      const FileSystemURL& url,
84      base::File::Error* error,
85      base::File::Info* file_info,
86      base::FilePath* platform_path) OVERRIDE;
87
88 private:
89  DISALLOW_COPY_AND_ASSIGN(LocalFileUtil);
90};
91
92}  // namespace storage
93
94#endif  // STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
95