1 // Copyright 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 CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_DELEGATE_H_ 6 #define CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_DELEGATE_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "webkit/common/fileapi/file_system_types.h" 11 12 namespace base { 13 class Time; 14 } // namespace base 15 16 namespace fileapi { 17 class AsyncFileUtil; 18 class FileSystemContext; 19 class FileSystemURL; 20 class FileStreamWriter; 21 } // namespace fileapi 22 23 namespace webkit_blob { 24 class FileStreamReader; 25 } // namespace webkit_blob 26 27 namespace chromeos { 28 29 // This is delegate interface to inject the implementation of the some methods 30 // of FileSystemBackend. The main goal is to inject Drive File System. 31 class FileSystemBackendDelegate { 32 public: 33 virtual ~FileSystemBackendDelegate() {} 34 35 // Called from FileSystemBackend::GetAsyncFileUtil(). 36 virtual fileapi::AsyncFileUtil* GetAsyncFileUtil( 37 fileapi::FileSystemType type) = 0; 38 39 // Called from FileSystemBackend::CreateFileStreamReader(). 40 virtual scoped_ptr<webkit_blob::FileStreamReader> CreateFileStreamReader( 41 const fileapi::FileSystemURL& url, 42 int64 offset, 43 const base::Time& expected_modification_time, 44 fileapi::FileSystemContext* context) = 0; 45 46 // Called from FileSystemBackend::CreateFileStreamWriter(). 47 virtual scoped_ptr<fileapi::FileStreamWriter> CreateFileStreamWriter( 48 const fileapi::FileSystemURL& url, 49 int64 offset, 50 fileapi::FileSystemContext* context) = 0; 51 }; 52 53 } // namespace chromeos 54 55 #endif // CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_DELEGATE_H_ 56