Cast: Stop logging kVideoFrameSentToEncoder and rename a couple events.
[chromium-blink-merge.git] / chrome / browser / drive / drive_service_interface.h
blob1b393d6a0f1a17182e648d751fe1dfe35e24234e
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.
5 #ifndef CHROME_BROWSER_DRIVE_DRIVE_SERVICE_INTERFACE_H_
6 #define CHROME_BROWSER_DRIVE_DRIVE_SERVICE_INTERFACE_H_
8 #include <string>
10 #include "base/time/time.h"
11 #include "google_apis/drive/auth_service_interface.h"
12 #include "google_apis/drive/base_requests.h"
13 #include "google_apis/drive/drive_api_requests.h"
14 #include "google_apis/drive/drive_common_callbacks.h"
16 namespace base {
17 class Time;
20 namespace drive {
22 // Function which converts the given resource ID into the desired format.
23 typedef base::Callback<std::string(
24 const std::string& resource_id)> ResourceIdCanonicalizer;
26 // Observer interface for DriveServiceInterface.
27 class DriveServiceObserver {
28 public:
29 // Triggered when the service gets ready to send requests.
30 virtual void OnReadyToSendRequests() {}
32 // Called when the refresh token was found to be invalid.
33 virtual void OnRefreshTokenInvalid() {}
35 protected:
36 virtual ~DriveServiceObserver() {}
39 // This defines an interface for sharing by DriveService and MockDriveService
40 // so that we can do testing of clients of DriveService.
42 // All functions must be called on UI thread. DriveService is built on top of
43 // URLFetcher that runs on UI thread.
44 class DriveServiceInterface {
45 public:
46 // Optional parameters for AddNewDirectory().
47 struct AddNewDirectoryOptions {
48 AddNewDirectoryOptions();
49 ~AddNewDirectoryOptions();
51 // modified_date of the directory.
52 // Pass the null Time if you are not interested in setting this property.
53 base::Time modified_date;
55 // last_viewed_by_me_date of the directory.
56 // Pass the null Time if you are not interested in setting this property.
57 base::Time last_viewed_by_me_date;
60 // Optional parameters for InitiateUploadNewFile().
61 struct InitiateUploadNewFileOptions {
62 InitiateUploadNewFileOptions();
63 ~InitiateUploadNewFileOptions();
65 // modified_date of the file.
66 // Pass the null Time if you are not interested in setting this property.
67 base::Time modified_date;
69 // last_viewed_by_me_date of the file.
70 // Pass the null Time if you are not interested in setting this property.
71 base::Time last_viewed_by_me_date;
74 // Optional parameters for InitiateUploadExistingFile().
75 struct InitiateUploadExistingFileOptions {
76 InitiateUploadExistingFileOptions();
77 ~InitiateUploadExistingFileOptions();
79 // Expected ETag of the file. UPLOAD_ERROR_CONFLICT error is generated when
80 // matching fails.
81 // Pass the empty string to disable this behavior.
82 std::string etag;
84 // New parent of the file.
85 // Pass the empty string to keep the property unchanged.
86 std::string parent_resource_id;
88 // New title of the file.
89 // Pass the empty string to keep the property unchanged.
90 std::string title;
92 // New modified_date of the file.
93 // Pass the null Time if you are not interested in setting this property.
94 base::Time modified_date;
96 // New last_viewed_by_me_date of the file.
97 // Pass the null Time if you are not interested in setting this property.
98 base::Time last_viewed_by_me_date;
101 virtual ~DriveServiceInterface() {}
103 // Common service:
105 // Initializes the documents service with |account_id|.
106 virtual void Initialize(const std::string& account_id) = 0;
108 // Adds an observer.
109 virtual void AddObserver(DriveServiceObserver* observer) = 0;
111 // Removes an observer.
112 virtual void RemoveObserver(DriveServiceObserver* observer) = 0;
114 // True if ready to send requests.
115 virtual bool CanSendRequest() const = 0;
117 // Returns a function which converts the given resource ID into the desired
118 // format.
119 virtual ResourceIdCanonicalizer GetResourceIdCanonicalizer() const = 0;
121 // Authentication service:
123 // True if OAuth2 access token is retrieved and believed to be fresh.
124 virtual bool HasAccessToken() const = 0;
126 // Gets the cached OAuth2 access token or if empty, then fetches a new one.
127 virtual void RequestAccessToken(
128 const google_apis::AuthStatusCallback& callback) = 0;
130 // True if OAuth2 refresh token is present.
131 virtual bool HasRefreshToken() const = 0;
133 // Clears OAuth2 access token.
134 virtual void ClearAccessToken() = 0;
136 // Clears OAuth2 refresh token.
137 virtual void ClearRefreshToken() = 0;
139 // Document access:
141 // Returns the resource id for the root directory.
142 virtual std::string GetRootResourceId() const = 0;
144 // Fetches a resource list of the account. |callback| will be called upon
145 // completion.
146 // If the list is too long, it may be paged. In such a case, a URL to fetch
147 // remaining results will be included in the returned result. See also
148 // GetRemainingFileList.
150 // |callback| must not be null.
151 virtual google_apis::CancelCallback GetAllResourceList(
152 const google_apis::GetResourceListCallback& callback) = 0;
154 // Fetches a resource list in the directory with |directory_resource_id|.
155 // |callback| will be called upon completion.
156 // If the list is too long, it may be paged. In such a case, a URL to fetch
157 // remaining results will be included in the returned result. See also
158 // GetRemainingFileList.
160 // |directory_resource_id| must not be empty.
161 // |callback| must not be null.
162 virtual google_apis::CancelCallback GetResourceListInDirectory(
163 const std::string& directory_resource_id,
164 const google_apis::GetResourceListCallback& callback) = 0;
166 // Searches the resources for the |search_query| from all the user's
167 // resources. |callback| will be called upon completion.
168 // If the list is too long, it may be paged. In such a case, a URL to fetch
169 // remaining results will be included in the returned result. See also
170 // GetRemainingFileList.
172 // |search_query| must not be empty.
173 // |callback| must not be null.
174 virtual google_apis::CancelCallback Search(
175 const std::string& search_query,
176 const google_apis::GetResourceListCallback& callback) = 0;
178 // Searches the resources with the |title|.
179 // |directory_resource_id| is an optional parameter. If it is empty,
180 // the search target is all the existing resources. Otherwise, it is
181 // the resources directly under the directory with |directory_resource_id|.
182 // If the list is too long, it may be paged. In such a case, a URL to fetch
183 // remaining results will be included in the returned result. See also
184 // GetRemainingFileList.
186 // |title| must not be empty, and |callback| must not be null.
187 virtual google_apis::CancelCallback SearchByTitle(
188 const std::string& title,
189 const std::string& directory_resource_id,
190 const google_apis::GetResourceListCallback& callback) = 0;
192 // Fetches change list since |start_changestamp|. |callback| will be
193 // called upon completion.
194 // If the list is too long, it may be paged. In such a case, a URL to fetch
195 // remaining results will be included in the returned result. See also
196 // GetRemainingChangeList.
198 // |callback| must not be null.
199 virtual google_apis::CancelCallback GetChangeList(
200 int64 start_changestamp,
201 const google_apis::GetResourceListCallback& callback) = 0;
203 // The result of GetChangeList() and GetAllResourceList() may be paged.
204 // In such a case, a next link to fetch remaining result is returned.
205 // The page token can be used for this method. |callback| will be called upon
206 // completion.
208 // |next_link| must not be empty. |callback| must not be null.
209 virtual google_apis::CancelCallback GetRemainingChangeList(
210 const GURL& next_link,
211 const google_apis::GetResourceListCallback& callback) = 0;
213 // The result of GetResourceListInDirectory(), Search() and SearchByTitle()
214 // may be paged. In such a case, a next link to fetch remaining result is
215 // returned. The page token can be used for this method. |callback| will be
216 // called upon completion.
218 // |next_link| must not be empty. |callback| must not be null.
219 virtual google_apis::CancelCallback GetRemainingFileList(
220 const GURL& next_link,
221 const google_apis::GetResourceListCallback& callback) = 0;
223 // Fetches single entry metadata from server. The entry's resource id equals
224 // |resource_id|.
225 // Upon completion, invokes |callback| with results on the calling thread.
226 // |callback| must not be null.
227 virtual google_apis::CancelCallback GetResourceEntry(
228 const std::string& resource_id,
229 const google_apis::GetResourceEntryCallback& callback) = 0;
231 // Fetches an url for the sharing dialog for a single entry with id
232 // |resource_id|, to be embedded in a webview or an iframe with origin
233 // |embed_origin|. The url is returned via |callback| with results on the
234 // calling thread. |callback| must not be null.
235 virtual google_apis::CancelCallback GetShareUrl(
236 const std::string& resource_id,
237 const GURL& embed_origin,
238 const google_apis::GetShareUrlCallback& callback) = 0;
240 // Gets the about resource information from the server.
241 // Upon completion, invokes |callback| with results on the calling thread.
242 // |callback| must not be null.
243 virtual google_apis::CancelCallback GetAboutResource(
244 const google_apis::AboutResourceCallback& callback) = 0;
246 // Gets the application information from the server.
247 // Upon completion, invokes |callback| with results on the calling thread.
248 // |callback| must not be null.
249 virtual google_apis::CancelCallback GetAppList(
250 const google_apis::AppListCallback& callback) = 0;
252 // Permanently deletes a resource identified by its |resource_id|.
253 // If |etag| is not empty and did not match, the deletion fails with
254 // HTTP_PRECONDITION error.
255 // Upon completion, invokes |callback| with results on the calling thread.
256 // |callback| must not be null.
257 virtual google_apis::CancelCallback DeleteResource(
258 const std::string& resource_id,
259 const std::string& etag,
260 const google_apis::EntryActionCallback& callback) = 0;
262 // Trashes a resource identified by its |resource_id|.
263 // Upon completion, invokes |callback| with results on the calling thread.
264 // |callback| must not be null.
265 virtual google_apis::CancelCallback TrashResource(
266 const std::string& resource_id,
267 const google_apis::EntryActionCallback& callback) = 0;
269 // Makes a copy of a resource with |resource_id|.
270 // The new resource will be put under a directory with |parent_resource_id|,
271 // and it'll be named |new_title|.
272 // If |last_modified| is not null, the modified date of the resource on the
273 // server will be set to the date.
274 // This request is supported only on DriveAPIService, because GData WAPI
275 // doesn't support the function unfortunately.
276 // Upon completion, invokes |callback| with results on the calling thread.
277 // |callback| must not be null.
278 virtual google_apis::CancelCallback CopyResource(
279 const std::string& resource_id,
280 const std::string& parent_resource_id,
281 const std::string& new_title,
282 const base::Time& last_modified,
283 const google_apis::GetResourceEntryCallback& callback) = 0;
285 // Updates a resource with |resource_id| to the directory of
286 // |parent_resource_id| with renaming to |new_title|.
287 // If |last_modified| or |last_accessed| is not null, the modified/accessed
288 // date of the resource on the server will be set to the date.
289 // This request is supported only on DriveAPIService, because GData WAPI
290 // doesn't support the function unfortunately.
291 // Upon completion, invokes |callback| with results on the calling thread.
292 // |callback| must not be null.
293 virtual google_apis::CancelCallback UpdateResource(
294 const std::string& resource_id,
295 const std::string& parent_resource_id,
296 const std::string& new_title,
297 const base::Time& last_modified,
298 const base::Time& last_viewed_by_me,
299 const google_apis::GetResourceEntryCallback& callback) = 0;
301 // Renames a document or collection identified by its |resource_id|
302 // to the UTF-8 encoded |new_title|. Upon completion,
303 // invokes |callback| with results on the calling thread.
304 // |callback| must not be null.
305 virtual google_apis::CancelCallback RenameResource(
306 const std::string& resource_id,
307 const std::string& new_title,
308 const google_apis::EntryActionCallback& callback) = 0;
310 // Adds a resource (document, file, or collection) identified by its
311 // |resource_id| to a collection represented by the |parent_resource_id|.
312 // Upon completion, invokes |callback| with results on the calling thread.
313 // |callback| must not be null.
314 virtual google_apis::CancelCallback AddResourceToDirectory(
315 const std::string& parent_resource_id,
316 const std::string& resource_id,
317 const google_apis::EntryActionCallback& callback) = 0;
319 // Removes a resource (document, file, collection) identified by its
320 // |resource_id| from a collection represented by the |parent_resource_id|.
321 // Upon completion, invokes |callback| with results on the calling thread.
322 // |callback| must not be null.
323 virtual google_apis::CancelCallback RemoveResourceFromDirectory(
324 const std::string& parent_resource_id,
325 const std::string& resource_id,
326 const google_apis::EntryActionCallback& callback) = 0;
328 // Adds new collection with |directory_title| under parent directory
329 // identified with |parent_resource_id|. |parent_resource_id| can be the
330 // value returned by GetRootResourceId to represent the root directory.
331 // Upon completion, invokes |callback| and passes newly created entry on
332 // the calling thread.
333 // This function cannot be named as "CreateDirectory" as it conflicts with
334 // a macro on Windows.
335 // |callback| must not be null.
336 virtual google_apis::CancelCallback AddNewDirectory(
337 const std::string& parent_resource_id,
338 const std::string& directory_title,
339 const AddNewDirectoryOptions& options,
340 const google_apis::GetResourceEntryCallback& callback) = 0;
342 // Downloads a file with |resourced_id|. The downloaded file will
343 // be stored at |local_cache_path| location. Upon completion, invokes
344 // |download_action_callback| with results on the calling thread.
345 // If |get_content_callback| is not empty,
346 // URLFetcherDelegate::OnURLFetchDownloadData will be called, which will in
347 // turn invoke |get_content_callback| on the calling thread.
348 // If |progress_callback| is not empty, it is invoked periodically when
349 // the download made some progress.
351 // |download_action_callback| must not be null.
352 // |get_content_callback| and |progress_callback| may be null.
353 virtual google_apis::CancelCallback DownloadFile(
354 const base::FilePath& local_cache_path,
355 const std::string& resource_id,
356 const google_apis::DownloadActionCallback& download_action_callback,
357 const google_apis::GetContentCallback& get_content_callback,
358 const google_apis::ProgressCallback& progress_callback) = 0;
360 // Initiates uploading of a new document/file.
361 // |content_type| and |content_length| should be the ones of the file to be
362 // uploaded.
363 // |callback| must not be null.
364 virtual google_apis::CancelCallback InitiateUploadNewFile(
365 const std::string& content_type,
366 int64 content_length,
367 const std::string& parent_resource_id,
368 const std::string& title,
369 const InitiateUploadNewFileOptions& options,
370 const google_apis::InitiateUploadCallback& callback) = 0;
372 // Initiates uploading of an existing document/file.
373 // |content_type| and |content_length| should be the ones of the file to be
374 // uploaded.
375 // |callback| must not be null.
376 virtual google_apis::CancelCallback InitiateUploadExistingFile(
377 const std::string& content_type,
378 int64 content_length,
379 const std::string& resource_id,
380 const InitiateUploadExistingFileOptions& options,
381 const google_apis::InitiateUploadCallback& callback) = 0;
383 // Resumes uploading of a document/file on the calling thread.
384 // |callback| must not be null. |progress_callback| may be null.
385 virtual google_apis::CancelCallback ResumeUpload(
386 const GURL& upload_url,
387 int64 start_position,
388 int64 end_position,
389 int64 content_length,
390 const std::string& content_type,
391 const base::FilePath& local_file_path,
392 const google_apis::UploadRangeCallback& callback,
393 const google_apis::ProgressCallback& progress_callback) = 0;
395 // Gets the current status of the uploading to |upload_url| from the server.
396 // |drive_file_path| and |content_length| should be set to the same value
397 // which is used for ResumeUpload.
398 // |callback| must not be null.
399 virtual google_apis::CancelCallback GetUploadStatus(
400 const GURL& upload_url,
401 int64 content_length,
402 const google_apis::UploadRangeCallback& callback) = 0;
404 // Authorizes a Drive app with the id |app_id| to open the given file.
405 // Upon completion, invokes |callback| with the link to open the file with
406 // the provided app. |callback| must not be null.
407 virtual google_apis::CancelCallback AuthorizeApp(
408 const std::string& resource_id,
409 const std::string& app_id,
410 const google_apis::AuthorizeAppCallback& callback) = 0;
412 // Uninstalls a Drive app with the id |app_id|. |callback| must not be null.
413 virtual google_apis::CancelCallback UninstallApp(
414 const std::string& app_id,
415 const google_apis::EntryActionCallback& callback) = 0;
417 // Authorizes the account |email| to access |resource_id| as a |role|.
419 // |callback| must not be null.
420 virtual google_apis::CancelCallback AddPermission(
421 const std::string& resource_id,
422 const std::string& email,
423 google_apis::drive::PermissionRole role,
424 const google_apis::EntryActionCallback& callback) = 0;
427 } // namespace drive
429 #endif // CHROME_BROWSER_DRIVE_DRIVE_SERVICE_INTERFACE_H_