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/callback_forward.h" 10#include "base/memory/scoped_ptr.h" 11#include "storage/browser/fileapi/file_system_backend.h" 12#include "storage/common/fileapi/file_system_types.h" 13 14class GURL; 15 16namespace base { 17class Time; 18} // namespace base 19 20namespace storage { 21class AsyncFileUtil; 22class FileSystemContext; 23class FileStreamReader; 24class FileSystemURL; 25class FileStreamWriter; 26class WatcherManager; 27} // namespace storage 28 29namespace chromeos { 30 31// This is delegate interface to inject the implementation of the some methods 32// of FileSystemBackend. 33class FileSystemBackendDelegate { 34 public: 35 virtual ~FileSystemBackendDelegate() {} 36 37 // Called from FileSystemBackend::GetAsyncFileUtil(). 38 virtual storage::AsyncFileUtil* GetAsyncFileUtil( 39 storage::FileSystemType type) = 0; 40 41 // Called from FileSystemBackend::CreateFileStreamReader(). 42 virtual scoped_ptr<storage::FileStreamReader> CreateFileStreamReader( 43 const storage::FileSystemURL& url, 44 int64 offset, 45 int64 max_bytes_to_read, 46 const base::Time& expected_modification_time, 47 storage::FileSystemContext* context) = 0; 48 49 // Called from FileSystemBackend::CreateFileStreamWriter(). 50 virtual scoped_ptr<storage::FileStreamWriter> CreateFileStreamWriter( 51 const storage::FileSystemURL& url, 52 int64 offset, 53 storage::FileSystemContext* context) = 0; 54 55 // Called from the FileSystemWatcherService class. The returned pointer must 56 // stay valid until shutdown. 57 virtual storage::WatcherManager* GetWatcherManager( 58 const storage::FileSystemURL& url) = 0; 59 60 // Called from FileSystemBackend::GetRedirectURLForContents. Please ensure 61 // that the returned URL is secure to be opened in a browser tab, or referred 62 // from <img>, <video>, XMLHttpRequest, etc... 63 virtual void GetRedirectURLForContents( 64 const storage::FileSystemURL& url, 65 const storage::URLCallback& callback) = 0; 66}; 67 68} // namespace chromeos 69 70#endif // CHROME_BROWSER_CHROMEOS_FILEAPI_FILE_SYSTEM_BACKEND_DELEGATE_H_ 71