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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_file_system_interface.h

Issue 10874028: Rename GDataFileSystem* to DriveFileSystem* (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase. Created 8 years, 4 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 (c) 2012 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_GDATA_GDATA_FILE_SYSTEM_INTERFACE_H_
6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_INTERFACE_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/chromeos/gdata/drive_cache.h"
13 #include "chrome/browser/chromeos/gdata/drive_resource_metadata.h"
14 #include "chrome/browser/chromeos/gdata/gdata_operations.h"
15 #include "chrome/browser/chromeos/gdata/gdata_upload_file_info.h"
16
17 namespace gdata {
18
19 class DocumentEntry;
20 class DriveEntryProto;
21
22 typedef std::vector<DriveEntryProto> DriveEntryProtoVector;
23
24 // Information about search result returned by Search Async callback.
25 // This is data needed to create a file system entry that will be used by file
26 // browser.
27 struct SearchResultInfo {
28 SearchResultInfo(const FilePath& in_path, bool in_is_directory)
29 : path(in_path),
30 is_directory(in_is_directory) {
31 }
32
33 FilePath path;
34 bool is_directory;
35 };
36
37 // Used to get files from the file system.
38 typedef base::Callback<void(DriveFileError error,
39 const FilePath& file_path,
40 const std::string& mime_type,
41 DriveFileType file_type)> GetFileCallback;
42
43 // Used to read a directory from the file system.
44 // Similar to ReadDirectoryCallback but this one provides
45 // |hide_hosted_documents|
46 // If |error| is not DRIVE_FILE_OK, |entries| is set to NULL.
47 // |entries| are contents, both files and directories, of the directory.
48 typedef base::Callback<void(DriveFileError error,
49 bool hide_hosted_documents,
50 scoped_ptr<DriveEntryProtoVector> entries)>
51 ReadDirectoryWithSettingCallback;
52
53 // Used to get drive content search results.
54 // If |error| is not DRIVE_FILE_OK, |result_paths| is empty.
55 typedef base::Callback<void(
56 DriveFileError error,
57 const GURL& next_feed,
58 scoped_ptr<std::vector<SearchResultInfo> > result_paths)> SearchCallback;
59
60 // Used to open files from the file system. |file_path| is the path on the local
61 // file system for the opened file.
62 typedef base::Callback<void(DriveFileError error,
63 const FilePath& file_path)> OpenFileCallback;
64
65 // Used to get available space for the account from GData.
66 typedef base::Callback<void(DriveFileError error,
67 int64 bytes_total,
68 int64 bytes_used)> GetAvailableSpaceCallback;
69
70 // GData file system abstraction layer.
71 // The interface is defined to make GDataFileSystem mockable.
72 class GDataFileSystemInterface {
73 public:
74 virtual ~GDataFileSystemInterface() {}
75
76 // Used to notify events on the file system.
77 // All events are notified on UI thread.
78 class Observer {
79 public:
80 // Triggered when a content of a directory has been changed.
81 // |directory_path| is a virtual directory path (/gdata/...) representing
82 // changed directory.
83 virtual void OnDirectoryChanged(const FilePath& directory_path) {}
84
85 // Triggered when the file system is initially loaded.
86 virtual void OnInitialLoadFinished() {}
87
88 // Triggered when a document feed is fetched. |num_accumulated_entries|
89 // tells the number of entries fetched so far.
90 virtual void OnDocumentFeedFetched(int num_accumulated_entries) {}
91
92 // Triggered when the feed from the server is loaded.
93 virtual void OnFeedFromServerLoaded() {}
94
95 // Triggered when the file system is mounted.
96 virtual void OnFileSystemMounted() {}
97 // Triggered when the file system is being unmounted.
98 virtual void OnFileSystemBeingUnmounted() {}
99
100 protected:
101 virtual ~Observer() {}
102 };
103
104 // Initializes the object. This function should be called before any
105 // other functions.
106 virtual void Initialize() = 0;
107
108 // Adds and removes the observer.
109 virtual void AddObserver(Observer* observer) = 0;
110 virtual void RemoveObserver(Observer* observer) = 0;
111
112 // Starts and stops periodic updates.
113 virtual void StartUpdates() = 0;
114 virtual void StopUpdates() = 0;
115
116 // Notifies the file system was just mounted.
117 virtual void NotifyFileSystemMounted() = 0;
118
119 // Notifies the file system is going to be unmounted.
120 virtual void NotifyFileSystemToBeUnmounted() = 0;
121
122 // Checks for updates on the server.
123 virtual void CheckForUpdates() = 0;
124
125 // Finds an entry (file or directory) by using |resource_id|. This call
126 // does not initiate content refreshing.
127 //
128 // Can be called from UI/IO thread. |callback| is run on the calling thread.
129 // |callback| must not be null.
130 virtual void GetEntryInfoByResourceId(
131 const std::string& resource_id,
132 const GetEntryInfoWithFilePathCallback& callback) = 0;
133
134 // Initiates transfer of |remote_src_file_path| to |local_dest_file_path|.
135 // |remote_src_file_path| is the virtual source path on the gdata file system.
136 // |local_dest_file_path| is the destination path on the local file system.
137 //
138 // Must be called from *UI* thread. |callback| is run on the calling thread.
139 // |callback| must not be null.
140 virtual void TransferFileFromRemoteToLocal(
141 const FilePath& remote_src_file_path,
142 const FilePath& local_dest_file_path,
143 const FileOperationCallback& callback) = 0;
144
145 // Initiates transfer of |local_src_file_path| to |remote_dest_file_path|.
146 // |local_src_file_path| must be a file from the local file system.
147 // |remote_dest_file_path| is the virtual destination path within gdata file
148 // system.
149 //
150 // Must be called from *UI* thread. |callback| is run on the calling thread.
151 // |callback| must not be null.
152 virtual void TransferFileFromLocalToRemote(
153 const FilePath& local_src_file_path,
154 const FilePath& remote_dest_file_path,
155 const FileOperationCallback& callback) = 0;
156
157 // Retrieves a file at the virtual path |file_path| on the gdata file system
158 // onto the cache, and mark it dirty. The local path to the cache file is
159 // returned to |callback|. After opening the file, both read and write
160 // on the file can be done with normal local file operations.
161 //
162 // |CloseFile| must be called when the modification to the cache is done.
163 // Otherwise, GData file system does not pick up the file for uploading.
164 //
165 // Can be called from UI/IO thread. |callback| is run on the calling thread.
166 virtual void OpenFile(const FilePath& file_path,
167 const OpenFileCallback& callback) = 0;
168
169 // Closes a file at the virtual path |file_path| on the gdata file system,
170 // which is opened via OpenFile(). It commits the dirty flag on the cache.
171 //
172 // Can be called from UI/IO thread. |callback| is run on the calling thread.
173 // |callback| must not be null.
174 virtual void CloseFile(const FilePath& file_path,
175 const FileOperationCallback& callback) = 0;
176
177 // Copies |src_file_path| to |dest_file_path| on the file system.
178 // |src_file_path| can be a hosted document (see limitations below).
179 // |dest_file_path| is expected to be of the same type of |src_file_path|
180 // (i.e. if |src_file_path| is a file, |dest_file_path| will be created as
181 // a file).
182 //
183 // This method also has the following assumptions/limitations that may be
184 // relaxed or addressed later:
185 // - |src_file_path| cannot be a regular file (i.e. non-hosted document)
186 // or a directory.
187 // - |dest_file_path| must not exist.
188 // - The parent of |dest_file_path| must already exist.
189 //
190 // The file entries represented by |src_file_path| and the parent directory
191 // of |dest_file_path| need to be present in the in-memory representation
192 // of the file system.
193 //
194 // Can be called from UI/IO thread. |callback| is run on the calling thread.
195 // |callback| must not be null.
196 virtual void Copy(const FilePath& src_file_path,
197 const FilePath& dest_file_path,
198 const FileOperationCallback& callback) = 0;
199
200 // Moves |src_file_path| to |dest_file_path| on the file system.
201 // |src_file_path| can be a file (regular or hosted document) or a directory.
202 // |dest_file_path| is expected to be of the same type of |src_file_path|
203 // (i.e. if |src_file_path| is a file, |dest_file_path| will be created as
204 // a file).
205 //
206 // This method also has the following assumptions/limitations that may be
207 // relaxed or addressed later:
208 // - |dest_file_path| must not exist.
209 // - The parent of |dest_file_path| must already exist.
210 //
211 // The file entries represented by |src_file_path| and the parent directory
212 // of |dest_file_path| need to be present in the in-memory representation
213 // of the file system.
214 //
215 // Can be called from UI/IO thread. |callback| is run on the calling thread.
216 // |callback| must not be null.
217 virtual void Move(const FilePath& src_file_path,
218 const FilePath& dest_file_path,
219 const FileOperationCallback& callback) = 0;
220
221 // Removes |file_path| from the file system. If |is_recursive| is set and
222 // |file_path| represents a directory, we will also delete all of its
223 // contained children elements. The file entry represented by |file_path|
224 // needs to be present in in-memory representation of the file system that
225 // in order to be removed.
226 //
227 // TODO(satorux): is_recursive is not supported yet. crbug.com/138282
228 //
229 // Can be called from UI/IO thread. |callback| is run on the calling thread.
230 virtual void Remove(const FilePath& file_path,
231 bool is_recursive,
232 const FileOperationCallback& callback) = 0;
233
234 // Creates new directory under |directory_path|. If |is_exclusive| is true,
235 // an error is raised in case a directory is already present at the
236 // |directory_path|. If |is_recursive| is true, the call creates parent
237 // directories as needed just like mkdir -p does.
238 //
239 // Can be called from UI/IO thread. |callback| is run on the calling thread.
240 virtual void CreateDirectory(const FilePath& directory_path,
241 bool is_exclusive,
242 bool is_recursive,
243 const FileOperationCallback& callback) = 0;
244
245 // Creates a file at |file_path|. If the flag |is_exclusive| is true, an
246 // error is raised when a file already exists at the path. It is
247 // an error if a directory or a hosted document is already present at the
248 // path, or the parent directory of the path is not present yet.
249 //
250 // Can be called from UI/IO thread. |callback| is run on the calling thread
251 // |callback| must not be null.
252 virtual void CreateFile(const FilePath& file_path,
253 bool is_exclusive,
254 const FileOperationCallback& callback) = 0;
255
256 // Gets |file_path| from the file system. The file entry represented by
257 // |file_path| needs to be present in in-memory representation of the file
258 // system in order to be retrieved. If the file is not cached, the file
259 // will be downloaded through gdata api.
260 //
261 // Can be called from UI/IO thread. |get_file_callback| and
262 // |get_content_callback| are run on the calling thread.
263 virtual void GetFileByPath(
264 const FilePath& file_path,
265 const GetFileCallback& get_file_callback,
266 const GetContentCallback& get_content_callback) = 0;
267
268 // Gets a file by the given |resource_id| from the gdata server. Used for
269 // fetching pinned-but-not-fetched files.
270 //
271 // Can be called from UI/IO thread. |get_file_callback| and
272 // |get_content_callback| are run on the calling thread.
273 virtual void GetFileByResourceId(
274 const std::string& resource_id,
275 const GetFileCallback& get_file_callback,
276 const GetContentCallback& get_content_callback) = 0;
277
278 // Updates a file by the given |resource_id| on the gdata server by
279 // uploading an updated version. Used for uploading dirty files. The file
280 // should already be present in the cache.
281 //
282 // TODO(satorux): As of now, the function only handles files with the dirty
283 // bit committed. We should eliminate the restriction. crbug.com/134558.
284 //
285 // Can be called from UI/IO thread. |callback| and is run on the calling
286 // thread. |callback| must not be null.
287 virtual void UpdateFileByResourceId(
288 const std::string& resource_id,
289 const FileOperationCallback& callback) = 0;
290
291 // Finds an entry (a file or a directory) by |file_path|. This call will also
292 // retrieve and refresh file system content from server and disk cache.
293 //
294 // Can be called from UI/IO thread. |callback| is run on the calling thread.
295 // |callback| must not be null.
296 virtual void GetEntryInfoByPath(const FilePath& file_path,
297 const GetEntryInfoCallback& callback) = 0;
298
299 // Finds and reads a directory by |file_path|. This call will also retrieve
300 // and refresh file system content from server and disk cache.
301 //
302 // Can be called from UI/IO thread. |callback| is run on the calling thread.
303 // |callback| must not be null.
304 virtual void ReadDirectoryByPath(
305 const FilePath& file_path,
306 const ReadDirectoryWithSettingCallback& callback) = 0;
307
308 // Requests a refresh of the directory pointed by |file_path| (i.e. fetches
309 // the latest metadata of files in the target directory).
310 //
311 // In particular, this function is used to get the latest thumbnail
312 // URLs. Thumbnail URLs change periodically even if contents of files are
313 // not changed, hence we should get the new thumbnail URLs manually if we
314 // detect that the existing thumbnail URLs are stale.
315 //
316 // Upon success, the metadata of files in the target directory is updated,
317 // and the change is notified via Observer::OnDirectoryChanged(). Note that
318 // this function ignores changes in directories in the target
319 // directory. Changes in directories are handled via the delta feeds.
320 //
321 // Can be called from UI/IO thread.
322 virtual void RequestDirectoryRefresh(const FilePath& file_path) = 0;
323
324 // Does server side content search for |search_query|.
325 // If |next_feed| is set, this is the feed url that will be fetched.
326 // Search results will be returned as a list of results' |SearchResultInfo|
327 // structs, which contains file's path and is_directory flag.
328 //
329 // Can be called from UI/IO thread. |callback| is run on the calling thread.
330 virtual void Search(const std::string& search_query,
331 const GURL& next_feed,
332 const SearchCallback& callback) = 0;
333
334 // Fetches the user's Account Metadata to find out current quota information
335 // and returns it to the callback.
336 virtual void GetAvailableSpace(const GetAvailableSpaceCallback& callback) = 0;
337
338 // Adds a file entry from |entry| under |virtual_dir_path|, and modifies
339 // the cache state.
340 //
341 // When uploading a new file, adds a new file entry, and store its content
342 // from |file_content_path| into the cache.
343 //
344 // When uploading an existing file, replaces the file entry with a new one,
345 // and clears the dirty bit in the cache.
346 //
347 // |callback| will be called on the UI thread upon completion of operation.
348 virtual void AddUploadedFile(UploadMode upload_mode,
349 const FilePath& virtual_dir_path,
350 scoped_ptr<DocumentEntry> entry,
351 const FilePath& file_content_path,
352 DriveCache::FileOperationType cache_operation,
353 const base::Closure& callback) = 0;
354
355 // Updates the data associated with the file referenced by |resource_id| and
356 // |md5|. The data is copied from |file_content_path|.
357 //
358 // |callback| will be called on the UI thread upon completion of operation.
359 virtual void UpdateEntryData(const std::string& resource_id,
360 const std::string& md5,
361 scoped_ptr<DocumentEntry> entry,
362 const FilePath& file_content_path,
363 const base::Closure& callback) = 0;
364 };
365
366 } // namespace gdata
367
368 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_INTERFACE_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_file_system.cc ('k') | chrome/browser/chromeos/gdata/gdata_file_system_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698