15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CONTENT_PUBLIC_TEST_ASYNC_FILE_TEST_HELPER_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CONTENT_PUBLIC_TEST_ASYNC_FILE_TEST_HELPER_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/basictypes.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/file_system_operation.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/common/fileapi/file_system_types.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/common/quota/quota_status_code.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class QuotaManager; 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class FileSystemContext; 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class FileSystemURL; 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace content { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// A helper class to perform async file operations in a synchronous way. 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class AsyncFileTestHelper { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) typedef storage::FileSystemOperation::FileEntryList FileEntryList; 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) typedef storage::FileSystemOperation::CopyProgressCallback 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CopyProgressCallback; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static const int64 kDontCheckSize; 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Performs Copy from |src| to |dest| and returns the status code. 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error Copy(storage::FileSystemContext* context, 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& src, 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& dest); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Same as Copy, but this supports |progress_callback|. 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static base::File::Error CopyWithProgress( 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemContext* context, 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& src, 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& dest, 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const CopyProgressCallback& progress_callback); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Performs Move from |src| to |dest| and returns the status code. 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error Move(storage::FileSystemContext* context, 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& src, 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& dest); 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Removes the given |url|. 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error Remove(storage::FileSystemContext* context, 5203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool recursive); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Performs ReadDirectory on |url|. 5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error ReadDirectory(storage::FileSystemContext* context, 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) FileEntryList* entries); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Creates a directory at |url|. 6103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error CreateDirectory(storage::FileSystemContext* context, 6203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Creates a file at |url|. 6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error CreateFile(storage::FileSystemContext* context, 6603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url); 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Creates a file at |url| and fills with |buf|. 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static base::File::Error CreateFileWithData( 7003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemContext* context, 7103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* buf, 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int buf_size); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Truncates the file |url| to |size|. 7603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error TruncateFile(storage::FileSystemContext* context, 7703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) size_t size); 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Retrieves File::Info for |url| and populates |file_info|. 8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error GetMetadata(storage::FileSystemContext* context, 8203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::File::Info* file_info); 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Retrieves FilePath for |url| and populates |platform_path|. 8603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static base::File::Error GetPlatformPath(storage::FileSystemContext* context, 8703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::FilePath* platform_path); 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns true if a file exists at |url| with |size|. If |size| is 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // kDontCheckSize it doesn't check the file size (but just check its 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // existence). 9303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static bool FileExists(storage::FileSystemContext* context, 9403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url, 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int64 size); 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns true if a directory exists at |url|. 9803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static bool DirectoryExists(storage::FileSystemContext* context, 9903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const storage::FileSystemURL& url); 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns usage and quota. It's valid to pass NULL to |usage| and/or |quota|. 10203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) static storage::QuotaStatusCode GetUsageAndQuota( 10303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::QuotaManager* quota_manager, 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL& origin, 10503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) storage::FileSystemType type, 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int64* usage, 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int64* quota); 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace content 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CONTENT_PUBLIC_TEST_ASYNC_FILE_TEST_HELPER_H_ 113