Home | History | Annotate | Download | only in fileapi
      1 // Copyright (c) 2013 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 WEBKIT_BROWSER_FILEAPI_ASYNC_FILE_TEST_HELPER_H_
      6 #define WEBKIT_BROWSER_FILEAPI_ASYNC_FILE_TEST_HELPER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "webkit/browser/fileapi/file_system_operation.h"
     10 #include "webkit/common/fileapi/file_system_types.h"
     11 #include "webkit/common/quota/quota_status_code.h"
     12 
     13 namespace quota {
     14 class QuotaManager;
     15 }
     16 
     17 namespace fileapi {
     18 
     19 class FileSystemContext;
     20 class FileSystemURL;
     21 
     22 // A helper class to perform async file operations in a synchronous way.
     23 class AsyncFileTestHelper {
     24  public:
     25   typedef FileSystemOperation::FileEntryList FileEntryList;
     26   typedef FileSystemOperation::CopyProgressCallback CopyProgressCallback;
     27 
     28   static const int64 kDontCheckSize;
     29 
     30   // Performs Copy from |src| to |dest| and returns the status code.
     31   static base::PlatformFileError Copy(FileSystemContext* context,
     32                                       const FileSystemURL& src,
     33                                       const FileSystemURL& dest);
     34 
     35   // Same as Copy, but this supports |progress_callback|.
     36   static base::PlatformFileError CopyWithProgress(
     37       FileSystemContext* context,
     38       const FileSystemURL& src,
     39       const FileSystemURL& dest,
     40       const CopyProgressCallback& progress_callback);
     41 
     42   // Performs Move from |src| to |dest| and returns the status code.
     43   static base::PlatformFileError Move(FileSystemContext* context,
     44                                       const FileSystemURL& src,
     45                                       const FileSystemURL& dest);
     46 
     47   // Removes the given |url|.
     48   static base::PlatformFileError Remove(FileSystemContext* context,
     49                                         const FileSystemURL& url,
     50                                         bool recursive);
     51 
     52   // Performs ReadDirectory on |url|.
     53   static base::PlatformFileError ReadDirectory(FileSystemContext* context,
     54                                                const FileSystemURL& url,
     55                                                FileEntryList* entries);
     56 
     57   // Creates a directory at |url|.
     58   static base::PlatformFileError CreateDirectory(FileSystemContext* context,
     59                                                  const FileSystemURL& url);
     60 
     61   // Creates a file at |url|.
     62   static base::PlatformFileError CreateFile(FileSystemContext* context,
     63                                             const FileSystemURL& url);
     64 
     65   // Creates a file at |url| and fills with |buf|.
     66   static base::PlatformFileError CreateFileWithData(
     67       FileSystemContext* context,
     68       const FileSystemURL& url,
     69       const char* buf,
     70       int buf_size);
     71 
     72   // Truncates the file |url| to |size|.
     73   static base::PlatformFileError TruncateFile(FileSystemContext* context,
     74                                               const FileSystemURL& url,
     75                                               size_t size);
     76 
     77   // Retrieves PlatformFileInfo for |url| and populates |file_info|.
     78   static base::PlatformFileError GetMetadata(FileSystemContext* context,
     79                                              const FileSystemURL& url,
     80                                              base::PlatformFileInfo* file_info);
     81 
     82   // Retrieves FilePath for |url| and populates |platform_path|.
     83   static base::PlatformFileError GetPlatformPath(FileSystemContext* context,
     84                                                  const FileSystemURL& url,
     85                                                  base::FilePath* platform_path);
     86 
     87   // Returns true if a file exists at |url| with |size|. If |size| is
     88   // kDontCheckSize it doesn't check the file size (but just check its
     89   // existence).
     90   static bool FileExists(FileSystemContext* context,
     91                          const FileSystemURL& url,
     92                          int64 size);
     93 
     94   // Returns true if a directory exists at |url|.
     95   static bool DirectoryExists(FileSystemContext* context,
     96                               const FileSystemURL& url);
     97 
     98   // Returns usage and quota. It's valid to pass NULL to |usage| and/or |quota|.
     99   static quota::QuotaStatusCode GetUsageAndQuota(
    100       quota::QuotaManager* quota_manager,
    101       const GURL& origin,
    102       FileSystemType type,
    103       int64* usage,
    104       int64* quota);
    105 };
    106 
    107 }  // namespace fileapi
    108 
    109 #endif  // WEBKIT_BROWSER_FILEAPI_ASYNC_FILE_TEST_HELPER_H_
    110