Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/api_util.h

Issue 23787003: [SyncFS] Move SyncFS V1 files from drive_backend to drive_backend_v1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move back metadata_db_migration_util* Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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_DRIVE_BACKEND_API_UTIL_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_API_UTIL_H_
7
8 #include <map>
9 #include <string>
10
11 #include "base/memory/weak_ptr.h"
12 #include "base/threading/non_thread_safe.h"
13 #include "chrome/browser/drive/drive_service_interface.h"
14 #include "chrome/browser/google_apis/drive_api_url_generator.h"
15 #include "chrome/browser/google_apis/gdata_wapi_url_generator.h"
16 #include "chrome/browser/sync_file_system/drive_backend/api_util_interface.h"
17 #include "net/base/network_change_notifier.h"
18 #include "webkit/common/blob/scoped_file.h"
19
20 class GURL;
21 class Profile;
22
23 namespace drive { class DriveUploaderInterface; }
24
25 namespace sync_file_system {
26 namespace drive_backend {
27
28 // This class is responsible for talking to the Drive service to get and put
29 // Drive directories, files and metadata.
30 // This class is owned by DriveFileSyncService.
31 class APIUtil : public APIUtilInterface,
32 public drive::DriveServiceObserver,
33 public net::NetworkChangeNotifier::ConnectionTypeObserver,
34 public base::NonThreadSafe,
35 public base::SupportsWeakPtr<APIUtil> {
36 public:
37 // The resulting status of EnsureTitleUniqueness.
38 enum EnsureUniquenessStatus {
39 NO_DUPLICATES_FOUND,
40 RESOLVED_DUPLICATES,
41 };
42
43 typedef base::Callback<void(google_apis::GDataErrorCode,
44 EnsureUniquenessStatus status,
45 scoped_ptr<google_apis::ResourceEntry> entry)>
46 EnsureUniquenessCallback;
47
48 APIUtil(Profile* profile, const base::FilePath& temp_dir_path);
49 virtual ~APIUtil();
50
51 virtual void AddObserver(APIUtilObserver* observer) OVERRIDE;
52 virtual void RemoveObserver(APIUtilObserver* observer) OVERRIDE;
53
54 static scoped_ptr<APIUtil> CreateForTesting(
55 const base::FilePath& temp_dir_path,
56 scoped_ptr<drive::DriveServiceInterface> drive_service,
57 scoped_ptr<drive::DriveUploaderInterface> drive_uploader);
58
59 // APIUtilInterface overrides.
60 virtual void GetDriveDirectoryForSyncRoot(const ResourceIdCallback& callback)
61 OVERRIDE;
62 virtual void GetDriveDirectoryForOrigin(
63 const std::string& sync_root_resource_id,
64 const GURL& origin,
65 const ResourceIdCallback& callback) OVERRIDE;
66 virtual void GetLargestChangeStamp(const ChangeStampCallback& callback)
67 OVERRIDE;
68 virtual void GetResourceEntry(const std::string& resource_id,
69 const ResourceEntryCallback& callback) OVERRIDE;
70 virtual void ListFiles(const std::string& directory_resource_id,
71 const ResourceListCallback& callback) OVERRIDE;
72 virtual void ListChanges(int64 start_changestamp,
73 const ResourceListCallback& callback) OVERRIDE;
74 virtual void ContinueListing(const GURL& next_link,
75 const ResourceListCallback& callback) OVERRIDE;
76 virtual void DownloadFile(const std::string& resource_id,
77 const std::string& local_file_md5,
78 const DownloadFileCallback& callback) OVERRIDE;
79 virtual void UploadNewFile(const std::string& directory_resource_id,
80 const base::FilePath& local_file_path,
81 const std::string& title,
82 const UploadFileCallback& callback) OVERRIDE;
83 virtual void UploadExistingFile(const std::string& resource_id,
84 const std::string& remote_file_md5,
85 const base::FilePath& local_file_path,
86 const UploadFileCallback& callback) OVERRIDE;
87 virtual void CreateDirectory(const std::string& parent_resource_id,
88 const std::string& title,
89 const ResourceIdCallback& callback) OVERRIDE;
90 virtual bool IsAuthenticated() const OVERRIDE;
91 virtual void DeleteFile(const std::string& resource_id,
92 const std::string& remote_file_md5,
93 const GDataErrorCallback& callback) OVERRIDE;
94 virtual GURL ResourceIdToResourceLink(const std::string& resource_id) const
95 OVERRIDE;
96 virtual void EnsureSyncRootIsNotInMyDrive(
97 const std::string& sync_root_resource_id) OVERRIDE;
98
99 static std::string GetSyncRootDirectoryName();
100 static std::string OriginToDirectoryTitle(const GURL& origin);
101 static GURL DirectoryTitleToOrigin(const std::string& title);
102
103 // DriveServiceObserver overrides.
104 virtual void OnReadyToSendRequests() OVERRIDE;
105
106 // ConnectionTypeObserver overrides.
107 virtual void OnConnectionTypeChanged(
108 net::NetworkChangeNotifier::ConnectionType type) OVERRIDE;
109
110 private:
111 typedef int64 UploadKey;
112 typedef std::map<UploadKey, UploadFileCallback> UploadCallbackMap;
113
114 friend class APIUtilTest;
115
116 // Constructor for test use.
117 APIUtil(const base::FilePath& temp_dir_path,
118 const GURL& base_url,
119 const GURL& base_download_url,
120 scoped_ptr<drive::DriveServiceInterface> drive_service,
121 scoped_ptr<drive::DriveUploaderInterface> drive_uploader);
122
123 void GetDriveRootResourceId(const GDataErrorCallback& callback);
124 void DidGetDriveRootResourceId(
125 const GDataErrorCallback& callback,
126 google_apis::GDataErrorCode error,
127 scoped_ptr<google_apis::AboutResource> about_resource);
128
129 void DidGetDriveRootResourceIdForGetSyncRoot(
130 const ResourceIdCallback& callback,
131 google_apis::GDataErrorCode error);
132
133 void DidGetDirectory(const std::string& parent_resource_id,
134 const std::string& directory_name,
135 const ResourceIdCallback& callback,
136 google_apis::GDataErrorCode error,
137 scoped_ptr<google_apis::ResourceList> feed);
138
139 void DidCreateDirectory(const std::string& parent_resource_id,
140 const std::string& title,
141 const ResourceIdCallback& callback,
142 google_apis::GDataErrorCode error,
143 scoped_ptr<google_apis::ResourceEntry> entry);
144
145 void DidEnsureUniquenessForCreateDirectory(
146 const ResourceIdCallback& callback,
147 google_apis::GDataErrorCode error,
148 EnsureUniquenessStatus status,
149 scoped_ptr<google_apis::ResourceEntry> entry);
150
151 void SearchByTitle(const std::string& title,
152 const std::string& directory_resource_id,
153 const ResourceListCallback& callback);
154
155 void DidGetLargestChangeStamp(
156 const ChangeStampCallback& callback,
157 google_apis::GDataErrorCode error,
158 scoped_ptr<google_apis::AboutResource> about_resource);
159
160 void DidGetDriveRootResourceIdForEnsureSyncRoot(
161 const std::string& sync_root_resource_id,
162 google_apis::GDataErrorCode error);
163
164 void DidGetResourceList(const ResourceListCallback& callback,
165 google_apis::GDataErrorCode error,
166 scoped_ptr<google_apis::ResourceList> resource_list);
167
168 void DidGetResourceEntry(const ResourceEntryCallback& callback,
169 google_apis::GDataErrorCode error,
170 scoped_ptr<google_apis::ResourceEntry> entry);
171
172 void DidGetTemporaryFileForDownload(
173 const std::string& resource_id,
174 const std::string& local_file_md5,
175 scoped_ptr<webkit_blob::ScopedFile> local_file,
176 const DownloadFileCallback& callback,
177 bool success);
178
179 void DownloadFileInternal(const std::string& local_file_md5,
180 scoped_ptr<webkit_blob::ScopedFile> local_file,
181 const DownloadFileCallback& callback,
182 google_apis::GDataErrorCode error,
183 scoped_ptr<google_apis::ResourceEntry> entry);
184
185 void DidDownloadFile(scoped_ptr<google_apis::ResourceEntry> entry,
186 scoped_ptr<webkit_blob::ScopedFile> local_file,
187 const DownloadFileCallback& callback,
188 google_apis::GDataErrorCode error,
189 const base::FilePath& downloaded_file_path);
190
191 void DidUploadNewFile(const std::string& parent_resource_id,
192 const std::string& title,
193 UploadKey upload_key,
194 google_apis::GDataErrorCode error,
195 scoped_ptr<google_apis::ResourceEntry> entry);
196
197 void DidEnsureUniquenessForCreateFile(
198 const std::string& expected_resource_id,
199 const UploadFileCallback& callback,
200 google_apis::GDataErrorCode error,
201 EnsureUniquenessStatus status,
202 scoped_ptr<google_apis::ResourceEntry> entry);
203
204 void UploadExistingFileInternal(const std::string& remote_file_md5,
205 const base::FilePath& local_file_path,
206 const UploadFileCallback& callback,
207 google_apis::GDataErrorCode error,
208 scoped_ptr<google_apis::ResourceEntry> entry);
209
210 void DidUploadExistingFile(UploadKey upload_key,
211 google_apis::GDataErrorCode error,
212 scoped_ptr<google_apis::ResourceEntry> entry);
213
214 void DeleteFileInternal(const std::string& remote_file_md5,
215 const GDataErrorCallback& callback,
216 google_apis::GDataErrorCode error,
217 scoped_ptr<google_apis::ResourceEntry> entry);
218
219 void DidDeleteFile(const GDataErrorCallback& callback,
220 google_apis::GDataErrorCode error);
221
222 void EnsureTitleUniqueness(const std::string& parent_resource_id,
223 const std::string& expected_title,
224 const EnsureUniquenessCallback& callback);
225 void DidListEntriesToEnsureUniqueness(
226 const std::string& parent_resource_id,
227 const std::string& expected_title,
228 const EnsureUniquenessCallback& callback,
229 google_apis::GDataErrorCode error,
230 scoped_ptr<google_apis::ResourceList> feed);
231 void DeleteEntriesForEnsuringTitleUniqueness(
232 ScopedVector<google_apis::ResourceEntry> entries,
233 const GDataErrorCallback& callback);
234 void DidDeleteEntriesForEnsuringTitleUniqueness(
235 ScopedVector<google_apis::ResourceEntry> entries,
236 const GDataErrorCallback& callback,
237 google_apis::GDataErrorCode error);
238
239 UploadKey RegisterUploadCallback(const UploadFileCallback& callback);
240 UploadFileCallback GetAndUnregisterUploadCallback(UploadKey key);
241 void CancelAllUploads(google_apis::GDataErrorCode error);
242
243 std::string GetRootResourceId() const;
244
245 scoped_ptr<drive::DriveServiceInterface> drive_service_;
246 scoped_ptr<drive::DriveUploaderInterface> drive_uploader_;
247
248 google_apis::GDataWapiUrlGenerator wapi_url_generator_;
249 google_apis::DriveApiUrlGenerator drive_api_url_generator_;
250
251 UploadCallbackMap upload_callback_map_;
252 UploadKey upload_next_key_;
253
254 base::FilePath temp_dir_path_;
255
256 std::string root_resource_id_;
257
258 ObserverList<APIUtilObserver> observers_;
259
260 DISALLOW_COPY_AND_ASSIGN(APIUtil);
261 };
262
263 } // namespace drive_backend
264 } // namespace sync_file_system
265
266 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_API_UTIL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698