Home | History | Annotate | Download | only in drive_backend
      1 // Copyright 2014 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 #include "chrome/browser/sync_file_system/drive_backend/drive_service_on_worker.h"
      6 
      7 #include <string>
      8 
      9 #include "base/bind.h"
     10 #include "base/logging.h"
     11 #include "base/single_thread_task_runner.h"
     12 #include "chrome/browser/sync_file_system/drive_backend/callback_helper.h"
     13 #include "chrome/browser/sync_file_system/drive_backend/drive_service_wrapper.h"
     14 #include "google_apis/drive/drive_api_parser.h"
     15 #include "google_apis/drive/gdata_wapi_parser.h"
     16 
     17 namespace sync_file_system {
     18 namespace drive_backend {
     19 
     20 DriveServiceOnWorker::DriveServiceOnWorker(
     21     const base::WeakPtr<DriveServiceWrapper>& wrapper,
     22     base::SingleThreadTaskRunner* ui_task_runner,
     23     base::SequencedTaskRunner* worker_task_runner)
     24     : wrapper_(wrapper),
     25       ui_task_runner_(ui_task_runner),
     26       worker_task_runner_(worker_task_runner) {
     27   sequence_checker_.DetachFromSequence();
     28 }
     29 
     30 DriveServiceOnWorker::~DriveServiceOnWorker() {}
     31 
     32 google_apis::CancelCallback DriveServiceOnWorker::AddNewDirectory(
     33     const std::string& parent_resource_id,
     34     const std::string& directory_title,
     35     const AddNewDirectoryOptions& options,
     36     const google_apis::FileResourceCallback& callback) {
     37   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     38 
     39   ui_task_runner_->PostTask(
     40       FROM_HERE,
     41       base::Bind(&DriveServiceWrapper::AddNewDirectory,
     42                  wrapper_,
     43                  parent_resource_id,
     44                  directory_title,
     45                  options,
     46                  RelayCallbackToTaskRunner(
     47                      worker_task_runner_.get(), FROM_HERE, callback)));
     48 
     49   return google_apis::CancelCallback();
     50 }
     51 
     52 google_apis::CancelCallback DriveServiceOnWorker::DeleteResource(
     53     const std::string& resource_id,
     54     const std::string& etag,
     55     const google_apis::EntryActionCallback& callback) {
     56   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     57 
     58   ui_task_runner_->PostTask(
     59       FROM_HERE,
     60       base::Bind(&DriveServiceWrapper::DeleteResource,
     61                  wrapper_,
     62                  resource_id,
     63                  etag,
     64                  RelayCallbackToTaskRunner(
     65                      worker_task_runner_.get(), FROM_HERE, callback)));
     66 
     67   return google_apis::CancelCallback();
     68 }
     69 
     70 google_apis::CancelCallback DriveServiceOnWorker::DownloadFile(
     71     const base::FilePath& local_cache_path,
     72     const std::string& resource_id,
     73     const google_apis::DownloadActionCallback& download_action_callback,
     74     const google_apis::GetContentCallback& get_content_callback,
     75     const google_apis::ProgressCallback& progress_callback) {
     76   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     77 
     78   ui_task_runner_->PostTask(
     79       FROM_HERE,
     80       base::Bind(
     81           &DriveServiceWrapper::DownloadFile,
     82           wrapper_,
     83           local_cache_path,
     84           resource_id,
     85           RelayCallbackToTaskRunner(
     86               worker_task_runner_.get(), FROM_HERE, download_action_callback),
     87           RelayCallbackToTaskRunner(
     88               worker_task_runner_.get(), FROM_HERE, get_content_callback),
     89           RelayCallbackToTaskRunner(
     90               worker_task_runner_.get(), FROM_HERE, progress_callback)));
     91 
     92   return google_apis::CancelCallback();
     93 }
     94 
     95 google_apis::CancelCallback DriveServiceOnWorker::GetAboutResource(
     96     const google_apis::AboutResourceCallback& callback) {
     97   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
     98 
     99   ui_task_runner_->PostTask(
    100       FROM_HERE,
    101       base::Bind(&DriveServiceWrapper::GetAboutResource,
    102                  wrapper_,
    103                  RelayCallbackToTaskRunner(
    104                      worker_task_runner_.get(), FROM_HERE, callback)));
    105 
    106   return google_apis::CancelCallback();
    107 }
    108 
    109 google_apis::CancelCallback DriveServiceOnWorker::GetChangeList(
    110     int64 start_changestamp,
    111     const google_apis::ChangeListCallback& callback) {
    112   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    113 
    114   ui_task_runner_->PostTask(
    115       FROM_HERE,
    116       base::Bind(&DriveServiceWrapper::GetChangeList,
    117                  wrapper_,
    118                  start_changestamp,
    119                  RelayCallbackToTaskRunner(
    120                      worker_task_runner_.get(), FROM_HERE, callback)));
    121 
    122   return google_apis::CancelCallback();
    123 }
    124 
    125 google_apis::CancelCallback DriveServiceOnWorker::GetRemainingChangeList(
    126     const GURL& next_link,
    127     const google_apis::ChangeListCallback& callback) {
    128   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    129 
    130   ui_task_runner_->PostTask(
    131       FROM_HERE,
    132       base::Bind(&DriveServiceWrapper::GetRemainingChangeList,
    133                  wrapper_,
    134                  next_link,
    135                  RelayCallbackToTaskRunner(
    136                      worker_task_runner_.get(), FROM_HERE, callback)));
    137 
    138   return google_apis::CancelCallback();
    139 }
    140 
    141 std::string DriveServiceOnWorker::GetRootResourceId() const {
    142   NOTREACHED();
    143   // This method is expected to be called only on unit tests.
    144   return "root";
    145 }
    146 
    147 google_apis::CancelCallback DriveServiceOnWorker::GetRemainingFileList(
    148     const GURL& next_link,
    149     const google_apis::FileListCallback& callback) {
    150   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    151 
    152   ui_task_runner_->PostTask(
    153       FROM_HERE,
    154       base::Bind(&DriveServiceWrapper::GetRemainingFileList,
    155                  wrapper_,
    156                  next_link,
    157                  RelayCallbackToTaskRunner(
    158                      worker_task_runner_.get(), FROM_HERE, callback)));
    159 
    160   return google_apis::CancelCallback();
    161 }
    162 
    163 
    164 google_apis::CancelCallback DriveServiceOnWorker::GetFileResource(
    165     const std::string& resource_id,
    166     const google_apis::FileResourceCallback& callback) {
    167   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    168 
    169   ui_task_runner_->PostTask(
    170       FROM_HERE,
    171       base::Bind(&DriveServiceWrapper::GetFileResource,
    172                  wrapper_,
    173                  resource_id,
    174                  RelayCallbackToTaskRunner(
    175                      worker_task_runner_.get(), FROM_HERE, callback)));
    176 
    177   return google_apis::CancelCallback();
    178 }
    179 
    180 google_apis::CancelCallback DriveServiceOnWorker::GetFileListInDirectory(
    181     const std::string& directory_resource_id,
    182     const google_apis::FileListCallback& callback) {
    183   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    184 
    185   ui_task_runner_->PostTask(
    186       FROM_HERE,
    187       base::Bind(&DriveServiceWrapper::GetFileListInDirectory,
    188                  wrapper_,
    189                  directory_resource_id,
    190                  RelayCallbackToTaskRunner(
    191                      worker_task_runner_.get(), FROM_HERE, callback)));
    192 
    193   return google_apis::CancelCallback();
    194 }
    195 
    196 google_apis::CancelCallback DriveServiceOnWorker::RemoveResourceFromDirectory(
    197     const std::string& parent_resource_id,
    198     const std::string& resource_id,
    199     const google_apis::EntryActionCallback& callback) {
    200   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    201 
    202   ui_task_runner_->PostTask(
    203       FROM_HERE,
    204       base::Bind(&DriveServiceWrapper::RemoveResourceFromDirectory,
    205                  wrapper_,
    206                  parent_resource_id,
    207                  resource_id,
    208                  RelayCallbackToTaskRunner(
    209                      worker_task_runner_.get(), FROM_HERE, callback)));
    210 
    211   return google_apis::CancelCallback();
    212 }
    213 
    214 google_apis::CancelCallback DriveServiceOnWorker::SearchByTitle(
    215     const std::string& title,
    216     const std::string& directory_resource_id,
    217     const google_apis::FileListCallback& callback) {
    218   DCHECK(sequence_checker_.CalledOnValidSequencedThread());
    219 
    220   ui_task_runner_->PostTask(
    221       FROM_HERE,
    222       base::Bind(&DriveServiceWrapper::SearchByTitle,
    223                  wrapper_,
    224                  title,
    225                  directory_resource_id,
    226                  RelayCallbackToTaskRunner(
    227                      worker_task_runner_.get(), FROM_HERE, callback)));
    228 
    229   return google_apis::CancelCallback();
    230 }
    231 
    232 bool DriveServiceOnWorker::HasRefreshToken() const {
    233   NOTREACHED();
    234   return false;
    235 }
    236 
    237 void DriveServiceOnWorker::Initialize(const std::string& account_id) {
    238   NOTREACHED();
    239 }
    240 
    241 void DriveServiceOnWorker::AddObserver(drive::DriveServiceObserver* observer) {
    242   NOTREACHED();
    243 }
    244 
    245 void DriveServiceOnWorker::RemoveObserver(
    246     drive::DriveServiceObserver* observer) {
    247   NOTREACHED();
    248 }
    249 
    250 bool DriveServiceOnWorker::CanSendRequest() const {
    251   NOTREACHED();
    252   return false;
    253 }
    254 
    255 bool DriveServiceOnWorker::HasAccessToken() const {
    256   NOTREACHED();
    257   return false;
    258 }
    259 
    260 void DriveServiceOnWorker::RequestAccessToken(
    261     const google_apis::AuthStatusCallback& callback) {
    262   NOTREACHED();
    263 }
    264 
    265 void DriveServiceOnWorker::ClearAccessToken() {
    266   NOTREACHED();
    267 }
    268 
    269 void DriveServiceOnWorker::ClearRefreshToken() {
    270   NOTREACHED();
    271 }
    272 
    273 google_apis::CancelCallback DriveServiceOnWorker::GetAllFileList(
    274     const google_apis::FileListCallback& callback) {
    275   NOTREACHED();
    276   return google_apis::CancelCallback();
    277 }
    278 
    279 google_apis::CancelCallback DriveServiceOnWorker::Search(
    280     const std::string& search_query,
    281     const google_apis::FileListCallback& callback) {
    282   NOTREACHED();
    283   return google_apis::CancelCallback();
    284 }
    285 
    286 google_apis::CancelCallback DriveServiceOnWorker::GetShareUrl(
    287     const std::string& resource_id,
    288     const GURL& embed_origin,
    289     const google_apis::GetShareUrlCallback& callback) {
    290   NOTREACHED();
    291   return google_apis::CancelCallback();
    292 }
    293 
    294 google_apis::CancelCallback DriveServiceOnWorker::GetAppList(
    295     const google_apis::AppListCallback& callback) {
    296   NOTREACHED();
    297   return google_apis::CancelCallback();
    298 }
    299 
    300 google_apis::CancelCallback DriveServiceOnWorker::TrashResource(
    301     const std::string& resource_id,
    302     const google_apis::EntryActionCallback& callback) {
    303   NOTREACHED();
    304   return google_apis::CancelCallback();
    305 }
    306 
    307 google_apis::CancelCallback DriveServiceOnWorker::CopyResource(
    308     const std::string& resource_id,
    309     const std::string& parent_resource_id,
    310     const std::string& new_title,
    311     const base::Time& last_modified,
    312     const google_apis::FileResourceCallback& callback) {
    313   NOTREACHED();
    314   return google_apis::CancelCallback();
    315 }
    316 
    317 google_apis::CancelCallback DriveServiceOnWorker::UpdateResource(
    318     const std::string& resource_id,
    319     const std::string& parent_resource_id,
    320     const std::string& new_title,
    321     const base::Time& last_modified,
    322     const base::Time& last_viewed_by_me,
    323     const google_apis::FileResourceCallback& callback) {
    324   NOTREACHED();
    325   return google_apis::CancelCallback();
    326 }
    327 
    328 google_apis::CancelCallback DriveServiceOnWorker::AddResourceToDirectory(
    329     const std::string& parent_resource_id,
    330     const std::string& resource_id,
    331     const google_apis::EntryActionCallback& callback) {
    332   NOTREACHED();
    333   return google_apis::CancelCallback();
    334 }
    335 
    336 google_apis::CancelCallback DriveServiceOnWorker::InitiateUploadNewFile(
    337     const std::string& content_type,
    338     int64 content_length,
    339     const std::string& parent_resource_id,
    340     const std::string& title,
    341     const InitiateUploadNewFileOptions& options,
    342     const google_apis::InitiateUploadCallback& callback) {
    343   NOTREACHED();
    344   return google_apis::CancelCallback();
    345 }
    346 
    347 google_apis::CancelCallback DriveServiceOnWorker::InitiateUploadExistingFile(
    348     const std::string& content_type,
    349     int64 content_length,
    350     const std::string& resource_id,
    351     const InitiateUploadExistingFileOptions& options,
    352     const google_apis::InitiateUploadCallback& callback) {
    353   NOTREACHED();
    354   return google_apis::CancelCallback();
    355 }
    356 
    357 google_apis::CancelCallback DriveServiceOnWorker::ResumeUpload(
    358     const GURL& upload_url,
    359     int64 start_position,
    360     int64 end_position,
    361     int64 content_length,
    362     const std::string& content_type,
    363     const base::FilePath& local_file_path,
    364     const google_apis::drive::UploadRangeCallback& callback,
    365     const google_apis::ProgressCallback& progress_callback) {
    366   NOTREACHED();
    367   return google_apis::CancelCallback();
    368 }
    369 
    370 google_apis::CancelCallback DriveServiceOnWorker::GetUploadStatus(
    371     const GURL& upload_url,
    372     int64 content_length,
    373     const google_apis::drive::UploadRangeCallback& callback) {
    374   NOTREACHED();
    375   return google_apis::CancelCallback();
    376 }
    377 
    378 google_apis::CancelCallback DriveServiceOnWorker::AuthorizeApp(
    379     const std::string& resource_id,
    380     const std::string& app_id,
    381     const google_apis::AuthorizeAppCallback& callback) {
    382   NOTREACHED();
    383   return google_apis::CancelCallback();
    384 }
    385 
    386 google_apis::CancelCallback DriveServiceOnWorker::UninstallApp(
    387     const std::string& app_id,
    388     const google_apis::EntryActionCallback& callback) {
    389   NOTREACHED();
    390   return google_apis::CancelCallback();
    391 }
    392 
    393 google_apis::CancelCallback DriveServiceOnWorker::AddPermission(
    394     const std::string& resource_id,
    395     const std::string& email,
    396     google_apis::drive::PermissionRole role,
    397     const google_apis::EntryActionCallback& callback) {
    398   NOTREACHED();
    399   return google_apis::CancelCallback();
    400 }
    401 
    402 }  // namespace drive_backend
    403 }  // namespace sync_file_system
    404