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_uploader_on_worker.h"
6
7#include <string>
8
9#include "base/bind.h"
10#include "base/location.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_uploader_wrapper.h"
14#include "google_apis/drive/drive_api_parser.h"
15
16namespace sync_file_system {
17namespace drive_backend {
18
19DriveUploaderOnWorker::DriveUploaderOnWorker(
20      const base::WeakPtr<DriveUploaderWrapper>& wrapper,
21      base::SingleThreadTaskRunner* ui_task_runner,
22      base::SequencedTaskRunner* worker_task_runner)
23    : wrapper_(wrapper),
24      ui_task_runner_(ui_task_runner),
25      worker_task_runner_(worker_task_runner) {
26  sequece_checker_.DetachFromSequence();
27}
28
29DriveUploaderOnWorker::~DriveUploaderOnWorker() {}
30
31google_apis::CancelCallback DriveUploaderOnWorker::UploadNewFile(
32      const std::string& parent_resource_id,
33      const base::FilePath& local_file_path,
34      const std::string& title,
35      const std::string& content_type,
36      const UploadNewFileOptions& options,
37      const drive::UploadCompletionCallback& callback,
38      const google_apis::ProgressCallback& progress_callback) {
39  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
40
41  ui_task_runner_->PostTask(
42      FROM_HERE,
43      base::Bind(&DriveUploaderWrapper::UploadNewFile,
44                 wrapper_,
45                 parent_resource_id,
46                 local_file_path,
47                 title,
48                 content_type,
49                 options,
50                 RelayCallbackToTaskRunner(
51                     worker_task_runner_.get(), FROM_HERE, callback)));
52
53  return google_apis::CancelCallback();
54}
55
56google_apis::CancelCallback DriveUploaderOnWorker::UploadExistingFile(
57      const std::string& resource_id,
58      const base::FilePath& local_file_path,
59      const std::string& content_type,
60      const UploadExistingFileOptions& options,
61      const drive::UploadCompletionCallback& callback,
62      const google_apis::ProgressCallback& progress_callback) {
63  DCHECK(sequece_checker_.CalledOnValidSequencedThread());
64
65  ui_task_runner_->PostTask(
66      FROM_HERE,
67      base::Bind(&DriveUploaderWrapper::UploadExistingFile,
68                 wrapper_,
69                 resource_id,
70                 local_file_path,
71                 content_type,
72                 options,
73                 RelayCallbackToTaskRunner(
74                     worker_task_runner_.get(), FROM_HERE, callback)));
75
76  return google_apis::CancelCallback();
77}
78
79google_apis::CancelCallback DriveUploaderOnWorker::ResumeUploadFile(
80      const GURL& upload_location,
81      const base::FilePath& local_file_path,
82      const std::string& content_type,
83      const drive::UploadCompletionCallback& callback,
84      const google_apis::ProgressCallback& progress_callback) {
85  NOTREACHED();
86  return google_apis::CancelCallback();
87}
88
89}  // namespace drive_backend
90}  // namespace sync_file_system
91