15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/sync_file_system/drive_backend/drive_uploader_on_worker.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <string> 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/location.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/single_thread_task_runner.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/sync_file_system/drive_backend/callback_helper.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/sync_file_system/drive_backend/drive_uploader_wrapper.h" 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "google_apis/drive/drive_api_parser.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace sync_file_system { 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace drive_backend { 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDriveUploaderOnWorker::DriveUploaderOnWorker( 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::WeakPtr<DriveUploaderWrapper>& wrapper, 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::SingleThreadTaskRunner* ui_task_runner, 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::SequencedTaskRunner* worker_task_runner) 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : wrapper_(wrapper), 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ui_task_runner_(ui_task_runner), 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) worker_task_runner_(worker_task_runner) { 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) sequece_checker_.DetachFromSequence(); 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDriveUploaderOnWorker::~DriveUploaderOnWorker() {} 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liugoogle_apis::CancelCallback DriveUploaderOnWorker::UploadNewFile( 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& parent_resource_id, 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::FilePath& local_file_path, 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& title, 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& content_type, 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const UploadNewFileOptions& options, 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const drive::UploadCompletionCallback& callback, 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const google_apis::ProgressCallback& progress_callback) { 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DCHECK(sequece_checker_.CalledOnValidSequencedThread()); 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ui_task_runner_->PostTask( 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu FROM_HERE, 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Bind(&DriveUploaderWrapper::UploadNewFile, 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu wrapper_, 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu parent_resource_id, 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu local_file_path, 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu title, 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu content_type, 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu options, 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu RelayCallbackToTaskRunner( 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci worker_task_runner_.get(), FROM_HERE, callback))); 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return google_apis::CancelCallback(); 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liugoogle_apis::CancelCallback DriveUploaderOnWorker::UploadExistingFile( 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& resource_id, 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::FilePath& local_file_path, 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& content_type, 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const UploadExistingFileOptions& options, 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const drive::UploadCompletionCallback& callback, 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const google_apis::ProgressCallback& progress_callback) { 6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) DCHECK(sequece_checker_.CalledOnValidSequencedThread()); 6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ui_task_runner_->PostTask( 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu FROM_HERE, 675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::Bind(&DriveUploaderWrapper::UploadExistingFile, 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu wrapper_, 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu resource_id, 705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu local_file_path, 715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu content_type, 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu options, 735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu RelayCallbackToTaskRunner( 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci worker_task_runner_.get(), FROM_HERE, callback))); 755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return google_apis::CancelCallback(); 775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liugoogle_apis::CancelCallback DriveUploaderOnWorker::ResumeUploadFile( 805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const GURL& upload_location, 815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::FilePath& local_file_path, 825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& content_type, 835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const drive::UploadCompletionCallback& callback, 845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const google_apis::ProgressCallback& progress_callback) { 855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NOTREACHED(); 865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return google_apis::CancelCallback(); 875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace drive_backend 905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace sync_file_system 91