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