15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/files/file_path.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/file_system_file_util.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/storage_browser_export.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Time;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileSystemOperationContext;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileSystemURL;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// An instance of this class is created and owned by *FileSystemBackend.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass STORAGE_EXPORT LocalFileUtil
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    : public FileSystemFileUtil {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocalFileUtil();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~LocalFileUtil();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual base::File CreateOrOpen(
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      int file_flags) OVERRIDE;
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error EnsureFileExists(
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url, bool* created) OVERRIDE;
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error CreateDirectory(
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool exclusive,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool recursive) OVERRIDE;
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error GetFileInfo(
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::File::Info* file_info,
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      base::FilePath* platform_file) OVERRIDE;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual scoped_ptr<AbstractFileEnumerator> CreateFileEnumerator(
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const FileSystemURL& root_url) OVERRIDE;
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error GetLocalFilePath(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& file_system_url,
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      base::FilePath* local_file_path) OVERRIDE;
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error Touch(
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Time& last_access_time,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::Time& last_modified_time) OVERRIDE;
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error Truncate(
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int64 length) OVERRIDE;
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error CopyOrMoveFile(
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& src_url,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& dest_url,
6968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      CopyOrMoveOption option,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      bool copy) OVERRIDE;
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error CopyInForeignFile(
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& src_file_path,
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& dest_url) OVERRIDE;
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error DeleteFile(
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url) OVERRIDE;
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual base::File::Error DeleteDirectory(
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url) OVERRIDE;
8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  virtual storage::ScopedFile CreateSnapshotFile(
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      FileSystemOperationContext* context,
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const FileSystemURL& url,
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::File::Error* error,
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::File::Info* file_info,
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      base::FilePath* platform_path) OVERRIDE;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(LocalFileUtil);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace storage
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // STORAGE_BROWSER_FILEAPI_LOCAL_FILE_UTIL_H_
95