sync_file_system_backend.h revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
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_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ 6#define CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ 7 8#include "webkit/browser/fileapi/file_system_backend.h" 9#include "webkit/browser/fileapi/file_system_quota_util.h" 10#include "webkit/browser/fileapi/sandbox_context.h" 11 12namespace sync_file_system { 13 14class LocalFileChangeTracker; 15class LocalFileSyncContext; 16 17class SyncFileSystemBackend 18 : public fileapi::FileSystemBackend, 19 public fileapi::FileSystemQuotaUtil { 20 public: 21 SyncFileSystemBackend(); 22 virtual ~SyncFileSystemBackend(); 23 24 // FileSystemBackend overrides. 25 virtual bool CanHandleType(fileapi::FileSystemType type) const OVERRIDE; 26 virtual void Initialize(fileapi::FileSystemContext* context) OVERRIDE; 27 virtual void OpenFileSystem( 28 const GURL& origin_url, 29 fileapi::FileSystemType type, 30 fileapi::OpenFileSystemMode mode, 31 const OpenFileSystemCallback& callback) OVERRIDE; 32 virtual fileapi::FileSystemFileUtil* GetFileUtil( 33 fileapi::FileSystemType type) OVERRIDE; 34 virtual fileapi::AsyncFileUtil* GetAsyncFileUtil( 35 fileapi::FileSystemType type) OVERRIDE; 36 virtual fileapi::CopyOrMoveFileValidatorFactory* 37 GetCopyOrMoveFileValidatorFactory( 38 fileapi::FileSystemType type, 39 base::PlatformFileError* error_code) OVERRIDE; 40 virtual fileapi::FileSystemOperation* CreateFileSystemOperation( 41 const fileapi::FileSystemURL& url, 42 fileapi::FileSystemContext* context, 43 base::PlatformFileError* error_code) const OVERRIDE; 44 virtual scoped_ptr<webkit_blob::FileStreamReader> CreateFileStreamReader( 45 const fileapi::FileSystemURL& url, 46 int64 offset, 47 const base::Time& expected_modification_time, 48 fileapi::FileSystemContext* context) const OVERRIDE; 49 virtual scoped_ptr<fileapi::FileStreamWriter> CreateFileStreamWriter( 50 const fileapi::FileSystemURL& url, 51 int64 offset, 52 fileapi::FileSystemContext* context) const OVERRIDE; 53 virtual fileapi::FileSystemQuotaUtil* GetQuotaUtil() OVERRIDE; 54 55 // FileSystemQuotaUtil overrides. 56 virtual base::PlatformFileError DeleteOriginDataOnFileThread( 57 fileapi::FileSystemContext* context, 58 quota::QuotaManagerProxy* proxy, 59 const GURL& origin_url, 60 fileapi::FileSystemType type) OVERRIDE; 61 virtual void GetOriginsForTypeOnFileThread( 62 fileapi::FileSystemType type, 63 std::set<GURL>* origins) OVERRIDE; 64 virtual void GetOriginsForHostOnFileThread( 65 fileapi::FileSystemType type, 66 const std::string& host, 67 std::set<GURL>* origins) OVERRIDE; 68 virtual int64 GetOriginUsageOnFileThread( 69 fileapi::FileSystemContext* context, 70 const GURL& origin_url, 71 fileapi::FileSystemType type) OVERRIDE; 72 virtual void InvalidateUsageCache( 73 const GURL& origin_url, 74 fileapi::FileSystemType type) OVERRIDE; 75 virtual void StickyInvalidateUsageCache( 76 const GURL& origin_url, 77 fileapi::FileSystemType type) OVERRIDE; 78 virtual void AddFileUpdateObserver( 79 fileapi::FileSystemType type, 80 fileapi::FileUpdateObserver* observer, 81 base::SequencedTaskRunner* task_runner) OVERRIDE; 82 virtual void AddFileChangeObserver( 83 fileapi::FileSystemType type, 84 fileapi::FileChangeObserver* observer, 85 base::SequencedTaskRunner* task_runner) OVERRIDE; 86 virtual void AddFileAccessObserver( 87 fileapi::FileSystemType type, 88 fileapi::FileAccessObserver* observer, 89 base::SequencedTaskRunner* task_runner) OVERRIDE; 90 virtual const fileapi::UpdateObserverList* GetUpdateObservers( 91 fileapi::FileSystemType type) const OVERRIDE; 92 virtual const fileapi::ChangeObserverList* GetChangeObservers( 93 fileapi::FileSystemType type) const OVERRIDE; 94 virtual const fileapi::AccessObserverList* GetAccessObservers( 95 fileapi::FileSystemType type) const OVERRIDE; 96 97 static SyncFileSystemBackend* GetBackend( 98 const fileapi::FileSystemContext* context); 99 100 sync_file_system::LocalFileChangeTracker* change_tracker() { 101 return change_tracker_.get(); 102 } 103 void SetLocalFileChangeTracker( 104 scoped_ptr<sync_file_system::LocalFileChangeTracker> tracker); 105 106 sync_file_system::LocalFileSyncContext* sync_context() { 107 return sync_context_.get(); 108 } 109 void set_sync_context(sync_file_system::LocalFileSyncContext* sync_context); 110 111 private: 112 // Observers for internal sync. 113 fileapi::UpdateObserverList update_observers_; 114 fileapi::ChangeObserverList change_observers_; 115 116 fileapi::UpdateObserverList syncable_update_observers_; 117 fileapi::ChangeObserverList syncable_change_observers_; 118 119 // Owned by FileSystemContext. 120 fileapi::SandboxContext* sandbox_context_; 121 122 scoped_ptr<sync_file_system::LocalFileChangeTracker> change_tracker_; 123 scoped_refptr<sync_file_system::LocalFileSyncContext> sync_context_; 124 125 DISALLOW_COPY_AND_ASSIGN(SyncFileSystemBackend); 126}; 127 128} // namespace sync_file_system 129 130#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ 131