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