drive_service_on_worker.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg// Copyright 2014 The Chromium Authors. All rights reserved.
2afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg// Use of this source code is governed by a BSD-style license that can be
3be91a0be5899a1c542096f545ccd78a43794d4acBrian Paul// found in the LICENSE file.
4afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
5cdde03efe2164b4bd23a8f59a797144c14ec6cceBrian Paul#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_SERVICE_ON_WORKER_H_
6afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_SERVICE_ON_WORKER_H_
7afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
8afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "base/memory/ref_counted.h"
9afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "base/memory/weak_ptr.h"
10afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "base/sequence_checker.h"
11afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg#include "chrome/browser/drive/drive_service_interface.h"
12afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
13afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgnamespace base {
14afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgclass SingleThreadTaskRunner;
15afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgclass SequencedTaskRunner;
16afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg}
17afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
18afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgnamespace sync_file_system {
19afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgnamespace drive_backend {
20afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
21afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtgclass DriveServiceWrapper;
22afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
23afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg// This class wraps a part of DriveServiceInterface class to post actual
24afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg// tasks to DriveServiceWrapper which lives in another thread.
25afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg// Each method wraps corresponding name method of DriveServiceInterface.
26e23e2759fc67973c0d2e3318f79837f88f8bad0dBrian Paul// See comments in drive_service_interface.h for details.
27e23e2759fc67973c0d2e3318f79837f88f8bad0dBrian Paulclass DriveServiceOnWorker : public drive::DriveServiceInterface {
28afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg public:
29afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  DriveServiceOnWorker(
30afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const base::WeakPtr<DriveServiceWrapper>& wrapper,
31afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      base::SingleThreadTaskRunner* ui_task_runner,
32afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      base::SequencedTaskRunner* worker_task_runner);
33afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual ~DriveServiceOnWorker();
3408f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul
35d6643331ab1a2215338be19177296d255170c798Kendall Bennett  virtual google_apis::CancelCallback AddNewDirectory(
36d6643331ab1a2215338be19177296d255170c798Kendall Bennett      const std::string& parent_resource_id,
37d6643331ab1a2215338be19177296d255170c798Kendall Bennett      const std::string& directory_title,
3808f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul      const AddNewDirectoryOptions& options,
39d6643331ab1a2215338be19177296d255170c798Kendall Bennett      const google_apis::FileResourceCallback& callback) OVERRIDE;
4091b6a4aa901e09b395cf6d81ed29dfe281dbc9f7Brian Paul
4178c58413649838ff83e416e5a76d5cf15ee89b87Brian Paul  virtual google_apis::CancelCallback DeleteResource(
4291b6a4aa901e09b395cf6d81ed29dfe281dbc9f7Brian Paul      const std::string& resource_id,
43afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& etag,
44afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::EntryActionCallback& callback) OVERRIDE;
45afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
46afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual google_apis::CancelCallback DownloadFile(
47afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const base::FilePath& local_cache_path,
48afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& resource_id,
49afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::DownloadActionCallback& download_action_callback,
50afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::GetContentCallback& get_content_callback,
512743def830bc1dc3bedb302f13db3d65dc4705d7Brian Paul      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
5208f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul
53afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual google_apis::CancelCallback GetAboutResource(
54afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::AboutResourceCallback& callback) OVERRIDE;
552743def830bc1dc3bedb302f13db3d65dc4705d7Brian Paul
5683889ffd970a807074d834849677fd233c031dc7Brian Paul  virtual google_apis::CancelCallback GetChangeList(
57ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul      int64 start_changestamp,
5883889ffd970a807074d834849677fd233c031dc7Brian Paul      const google_apis::ChangeListCallback& callback) OVERRIDE;
59ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul
60ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul  virtual google_apis::CancelCallback GetRemainingChangeList(
61ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul      const GURL& next_link,
62ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul      const google_apis::ChangeListCallback& callback) OVERRIDE;
63ae773f612c0b9262e9cf9fb63423a44d2125ce46Brian Paul
646b869d4fe19dc0ed35bdd17c843f25553e9e887cBrian Paul  virtual std::string GetRootResourceId() const OVERRIDE;
656b869d4fe19dc0ed35bdd17c843f25553e9e887cBrian Paul
666b869d4fe19dc0ed35bdd17c843f25553e9e887cBrian Paul  virtual google_apis::CancelCallback GetRemainingFileList(
67b653aaede5abf39f91f9d1152bb411572950184fBrian Paul      const GURL& next_link,
68afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::FileListCallback& callback) OVERRIDE;
69473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul
70473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul  virtual google_apis::CancelCallback GetFileResource(
71473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul      const std::string& resource_id,
72473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul      const google_apis::FileResourceCallback& callback) OVERRIDE;
733e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz
743e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz  virtual google_apis::CancelCallback GetFileListInDirectory(
753e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const std::string& directory_resource_id,
763e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const google_apis::FileListCallback& callback) OVERRIDE;
773e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz
783e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz  virtual google_apis::CancelCallback RemoveResourceFromDirectory(
793e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const std::string& parent_resource_id,
803e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const std::string& resource_id,
813e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const google_apis::EntryActionCallback& callback) OVERRIDE;
823e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz
833e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz  virtual google_apis::CancelCallback SearchByTitle(
843e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const std::string& title,
853e2fa3fd5cafdc641138844276c4260e028684acKarl Schultz      const std::string& directory_resource_id,
862743def830bc1dc3bedb302f13db3d65dc4705d7Brian Paul      const google_apis::FileListCallback& callback) OVERRIDE;
87c3fb2558f036ca8dd9f9a62269b57636ca3b5e4cBrian Paul
88afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual bool HasRefreshToken() const OVERRIDE;
89afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg
9008f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul  // Following virtual methods are expected not to be accessed at all.
9108f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul  virtual void Initialize(const std::string& account_id) OVERRIDE;
92afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual void AddObserver(drive::DriveServiceObserver* observer) OVERRIDE;
93391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul  virtual void RemoveObserver(drive::DriveServiceObserver* observer) OVERRIDE;
94b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual bool CanSendRequest() const OVERRIDE;
95b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual bool HasAccessToken() const OVERRIDE;
96b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual void RequestAccessToken(
97b653aaede5abf39f91f9d1152bb411572950184fBrian Paul      const google_apis::AuthStatusCallback& callback) OVERRIDE;
98b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual void ClearAccessToken() OVERRIDE;
99b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual void ClearRefreshToken() OVERRIDE;
100b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual google_apis::CancelCallback GetAllFileList(
101b653aaede5abf39f91f9d1152bb411572950184fBrian Paul      const google_apis::FileListCallback& callback) OVERRIDE;
102391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul  virtual google_apis::CancelCallback Search(
103391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& search_query,
104391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const google_apis::FileListCallback& callback) OVERRIDE;
105b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual google_apis::CancelCallback GetShareUrl(
106b653aaede5abf39f91f9d1152bb411572950184fBrian Paul      const std::string& resource_id,
107b653aaede5abf39f91f9d1152bb411572950184fBrian Paul      const GURL& embed_origin,
108d6643331ab1a2215338be19177296d255170c798Kendall Bennett      const google_apis::GetShareUrlCallback& callback) OVERRIDE;
109b653aaede5abf39f91f9d1152bb411572950184fBrian Paul  virtual google_apis::CancelCallback GetAppList(
110faf4059aa8cc477732eaebffe2af2d3ace10d043Alan Hourihane      const google_apis::AppListCallback& callback) OVERRIDE;
111faf4059aa8cc477732eaebffe2af2d3ace10d043Alan Hourihane  virtual google_apis::CancelCallback TrashResource(
112f82c775fff7974ef9537332cdb5ade70703ba38cAlan Hourihane      const std::string& resource_id,
113faf4059aa8cc477732eaebffe2af2d3ace10d043Alan Hourihane      const google_apis::EntryActionCallback& callback) OVERRIDE;
114391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul  virtual google_apis::CancelCallback CopyResource(
115391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& resource_id,
116391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& parent_resource_id,
117391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& new_title,
118391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const base::Time& last_modified,
119473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul      const google_apis::FileResourceCallback& callback) OVERRIDE;
120391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul  virtual google_apis::CancelCallback UpdateResource(
121391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& resource_id,
122473e51f2fbfb003717bb88616ea585fc8d76f75eBrian Paul      const std::string& parent_resource_id,
123d6643331ab1a2215338be19177296d255170c798Kendall Bennett      const std::string& new_title,
12408f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul      const base::Time& last_modified,
12508f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul      const base::Time& last_viewed_by_me,
12608f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul      const google_apis::FileResourceCallback& callback) OVERRIDE;
12708f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul  virtual google_apis::CancelCallback AddResourceToDirectory(
128afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& parent_resource_id,
129afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& resource_id,
13008f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul      const google_apis::EntryActionCallback& callback) OVERRIDE;
13108f0374bfaccc41a497f18a6535fa0d13277abdeBrian Paul  virtual google_apis::CancelCallback InitiateUploadNewFile(
132afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& content_type,
133afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      int64 content_length,
134afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& parent_resource_id,
135afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& title,
136afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const InitiateUploadNewFileOptions& options,
137391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const google_apis::InitiateUploadCallback& callback) OVERRIDE;
138391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul  virtual google_apis::CancelCallback InitiateUploadExistingFile(
139391876e5e6a710ba99b0752bbcc1b3b8af0469b6Brian Paul      const std::string& content_type,
140afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      int64 content_length,
141fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const std::string& resource_id,
142afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const InitiateUploadExistingFileOptions& options,
143fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::InitiateUploadCallback& callback) OVERRIDE;
144afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg  virtual google_apis::CancelCallback ResumeUpload(
145fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const GURL& upload_url,
146fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      int64 start_position,
147fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      int64 end_position,
148fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      int64 content_length,
149fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const std::string& content_type,
150fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const base::FilePath& local_file_path,
151fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::drive::UploadRangeCallback& callback,
152fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
153fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  virtual google_apis::CancelCallback GetUploadStatus(
154fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const GURL& upload_url,
155fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      int64 content_length,
156fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::drive::UploadRangeCallback& callback) OVERRIDE;
157fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  virtual google_apis::CancelCallback AuthorizeApp(
158fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const std::string& resource_id,
159fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const std::string& app_id,
160afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const google_apis::AuthorizeAppCallback& callback) OVERRIDE;
161fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  virtual google_apis::CancelCallback UninstallApp(
162fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const std::string& app_id,
163fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::EntryActionCallback& callback) OVERRIDE;
164fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  virtual google_apis::CancelCallback AddPermission(
165afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& resource_id,
166afb833d4e89c312460a4ab9ed6a7a8ca4ebbfe1cjtg      const std::string& email,
167fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      google_apis::drive::PermissionRole role,
168fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul      const google_apis::EntryActionCallback& callback) OVERRIDE;
169fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
170fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul private:
171fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  base::WeakPtr<DriveServiceWrapper> wrapper_;
172fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
173fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
174fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
175fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  base::SequenceChecker sequence_checker_;
176fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
177fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul  DISALLOW_COPY_AND_ASSIGN(DriveServiceOnWorker);
178fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul};
179fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul
180fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}  // namespace drive_backend
181fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul}  // namespace sync_file_system
182199972cef06476d308c62c9b21f1ccffeb72cdb6Brian Paul
183fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_SERVICE_ON_WORKER_H_
184fbd8f212c3866ec98c1d8c9d3db3ddb7e7c479a5Brian Paul