OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ | 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_ | 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ |
7 | 7 |
| 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/sync_file_system/sync_callbacks.h" |
| 10 #include "chrome/browser/sync_file_system/sync_status_code.h" |
| 11 #include "content/public/browser/notification_observer.h" |
| 12 #include "content/public/browser/notification_registrar.h" |
8 #include "webkit/browser/fileapi/file_system_backend.h" | 13 #include "webkit/browser/fileapi/file_system_backend.h" |
9 #include "webkit/browser/fileapi/file_system_quota_util.h" | 14 #include "webkit/browser/fileapi/file_system_quota_util.h" |
10 #include "webkit/browser/fileapi/sandbox_file_system_backend_delegate.h" | 15 #include "webkit/browser/fileapi/sandbox_file_system_backend_delegate.h" |
11 | 16 |
12 namespace sync_file_system { | 17 namespace sync_file_system { |
13 | 18 |
14 class LocalFileChangeTracker; | 19 class LocalFileChangeTracker; |
15 class LocalFileSyncContext; | 20 class LocalFileSyncContext; |
16 | 21 |
17 class SyncFileSystemBackend | 22 class SyncFileSystemBackend |
18 : public fileapi::FileSystemBackend { | 23 : public fileapi::FileSystemBackend { |
19 public: | 24 public: |
20 SyncFileSystemBackend(); | 25 explicit SyncFileSystemBackend(Profile* profile); |
21 virtual ~SyncFileSystemBackend(); | 26 virtual ~SyncFileSystemBackend(); |
22 | 27 |
| 28 static SyncFileSystemBackend* CreateForTesting(); |
| 29 |
23 // FileSystemBackend overrides. | 30 // FileSystemBackend overrides. |
24 virtual bool CanHandleType(fileapi::FileSystemType type) const OVERRIDE; | 31 virtual bool CanHandleType(fileapi::FileSystemType type) const OVERRIDE; |
25 virtual void Initialize(fileapi::FileSystemContext* context) OVERRIDE; | 32 virtual void Initialize(fileapi::FileSystemContext* context) OVERRIDE; |
26 virtual void OpenFileSystem( | 33 virtual void OpenFileSystem( |
27 const GURL& origin_url, | 34 const GURL& origin_url, |
28 fileapi::FileSystemType type, | 35 fileapi::FileSystemType type, |
29 fileapi::OpenFileSystemMode mode, | 36 fileapi::OpenFileSystemMode mode, |
30 const OpenFileSystemCallback& callback) OVERRIDE; | 37 const OpenFileSystemCallback& callback) OVERRIDE; |
31 virtual fileapi::FileSystemFileUtil* GetFileUtil( | 38 virtual fileapi::FileSystemFileUtil* GetFileUtil( |
32 fileapi::FileSystemType type) OVERRIDE; | 39 fileapi::FileSystemType type) OVERRIDE; |
(...skipping 14 matching lines...) Expand all Loading... |
47 fileapi::FileSystemContext* context) const OVERRIDE; | 54 fileapi::FileSystemContext* context) const OVERRIDE; |
48 virtual scoped_ptr<fileapi::FileStreamWriter> CreateFileStreamWriter( | 55 virtual scoped_ptr<fileapi::FileStreamWriter> CreateFileStreamWriter( |
49 const fileapi::FileSystemURL& url, | 56 const fileapi::FileSystemURL& url, |
50 int64 offset, | 57 int64 offset, |
51 fileapi::FileSystemContext* context) const OVERRIDE; | 58 fileapi::FileSystemContext* context) const OVERRIDE; |
52 virtual fileapi::FileSystemQuotaUtil* GetQuotaUtil() OVERRIDE; | 59 virtual fileapi::FileSystemQuotaUtil* GetQuotaUtil() OVERRIDE; |
53 | 60 |
54 static SyncFileSystemBackend* GetBackend( | 61 static SyncFileSystemBackend* GetBackend( |
55 const fileapi::FileSystemContext* context); | 62 const fileapi::FileSystemContext* context); |
56 | 63 |
57 sync_file_system::LocalFileChangeTracker* change_tracker() { | 64 LocalFileChangeTracker* change_tracker() { return change_tracker_.get(); } |
58 return change_tracker_.get(); | 65 void SetLocalFileChangeTracker(scoped_ptr<LocalFileChangeTracker> tracker); |
59 } | |
60 void SetLocalFileChangeTracker( | |
61 scoped_ptr<sync_file_system::LocalFileChangeTracker> tracker); | |
62 | 66 |
63 sync_file_system::LocalFileSyncContext* sync_context() { | 67 LocalFileSyncContext* sync_context() { return sync_context_.get(); } |
64 return sync_context_.get(); | 68 void set_sync_context(LocalFileSyncContext* sync_context); |
65 } | |
66 void set_sync_context(sync_file_system::LocalFileSyncContext* sync_context); | |
67 | 69 |
68 private: | 70 private: |
69 // Owned by FileSystemContext. | 71 class ProfileHolder : public content::NotificationObserver { |
70 fileapi::SandboxFileSystemBackendDelegate* delegate_; | 72 public: |
| 73 explicit ProfileHolder(Profile* profile); |
71 | 74 |
72 scoped_ptr<sync_file_system::LocalFileChangeTracker> change_tracker_; | 75 // NotificationObserver override. |
73 scoped_refptr<sync_file_system::LocalFileSyncContext> sync_context_; | 76 virtual void Observe(int type, |
| 77 const content::NotificationSource& source, |
| 78 const content::NotificationDetails& details) OVERRIDE; |
| 79 |
| 80 Profile* GetProfile(); |
| 81 |
| 82 private: |
| 83 content::NotificationRegistrar registrar_; |
| 84 Profile* profile_; |
| 85 }; |
| 86 |
| 87 // Not owned. |
| 88 fileapi::FileSystemContext* context_; |
| 89 |
| 90 scoped_ptr<LocalFileChangeTracker> change_tracker_; |
| 91 scoped_refptr<LocalFileSyncContext> sync_context_; |
| 92 |
| 93 // Should be accessed on the UI thread. |
| 94 scoped_ptr<ProfileHolder> profile_holder_; |
| 95 |
| 96 // A flag to skip the initialization sequence of SyncFileSystemService for |
| 97 // testing. |
| 98 bool skip_initialize_syncfs_service_for_testing_; |
| 99 |
| 100 fileapi::SandboxFileSystemBackendDelegate* GetDelegate() const; |
| 101 |
| 102 void InitializeSyncFileSystemService( |
| 103 const GURL& origin_url, |
| 104 const SyncStatusCallback& callback); |
| 105 void DidInitializeSyncFileSystemService( |
| 106 fileapi::FileSystemContext* context, |
| 107 const GURL& origin_url, |
| 108 fileapi::FileSystemType type, |
| 109 fileapi::OpenFileSystemMode mode, |
| 110 const OpenFileSystemCallback& callback, |
| 111 SyncStatusCode status); |
74 | 112 |
75 DISALLOW_COPY_AND_ASSIGN(SyncFileSystemBackend); | 113 DISALLOW_COPY_AND_ASSIGN(SyncFileSystemBackend); |
76 }; | 114 }; |
77 | 115 |
78 } // namespace sync_file_system | 116 } // namespace sync_file_system |
79 | 117 |
80 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ | 118 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_LOCAL_SYNC_FILE_SYSTEM_BACKEND_H_ |
OLD | NEW |