15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Copyright 2014 The Chromium Authors. All rights reserved.
25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Use of this source code is governed by a BSD-style license that can be
35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// found in the LICENSE file.
45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/memory/ref_counted.h"
95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/memory/weak_ptr.h"
105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/sequence_checker.h"
115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "chrome/browser/drive/drive_uploader.h"
125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencernamespace base {
145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass SingleThreadTaskRunner;
155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass SequencedTaskRunner;
165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}
172eefd8657c233bc7c9330acfe475fc270bbe7cabTed Kremenek
1828019772db70d4547be05a042eb950bc910f134fDouglas Gregornamespace sync_file_system {
19eaea925e70e3ee85809e572aa8474b8dfc491af7Daniel Dunbarnamespace drive_backend {
203f09327b26033d0a9676d52d80cf92c48f581affDouglas Gregor
215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencerclass DriveUploaderWrapper;
2204ae2df026b275aae5dddfc0db5ca55ff4e62179Chris Lattner
23f86638365f4801ec2d2970f7c0663e94590618b8Chris Lattner// This class wraps a part of DriveUploaderInterface class to post actual
245f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// tasks to DriveUploaderWrapper which lives in another thread.
25f4c839657742b823cea1a95b18422f1ba74d3dddChris Lattner// Each method wraps corresponding name method of DriveUploaderInterface.
26f4c839657742b823cea1a95b18422f1ba74d3dddChris Lattner// See comments in drive_uploader.h for details.
27d93256e55673a17d18543397ec462416acb13792Douglas Gregorclass DriveUploaderOnWorker : public drive::DriveUploaderInterface {
28f4c839657742b823cea1a95b18422f1ba74d3dddChris Lattner public:
29f4c839657742b823cea1a95b18422f1ba74d3dddChris Lattner  DriveUploaderOnWorker(
305f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer      const base::WeakPtr<DriveUploaderWrapper>& wrapper,
313f09327b26033d0a9676d52d80cf92c48f581affDouglas Gregor      base::SingleThreadTaskRunner* ui_task_runner,
323cbfe2c4159e0a219ae660d50625c013aa4afbd0Chris Lattner      base::SequencedTaskRunner* worker_task_runner);
33b2153946fff330e54abfdc740c0a83aedd485b33Anders Carlsson  virtual ~DriveUploaderOnWorker();
34d93256e55673a17d18543397ec462416acb13792Douglas Gregor
35d42ffbd22fc7eb61321f6a88173ee424991f01c6Ted Kremenek  virtual google_apis::CancelCallback UploadNewFile(
3640469651a3f8379dc0f32df69e9bade06a2aad36Chris Lattner      const std::string& parent_resource_id,
37b2153946fff330e54abfdc740c0a83aedd485b33Anders Carlsson      const base::FilePath& local_file_path,
387d90199f109290e9d587479a481a2850d390b552Daniel Dunbar      const std::string& title,
39d93256e55673a17d18543397ec462416acb13792Douglas Gregor      const std::string& content_type,
40b2153946fff330e54abfdc740c0a83aedd485b33Anders Carlsson      const UploadNewFileOptions& options,
411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump      const drive::UploadCompletionCallback& callback,
425f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
435f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
4419e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner  virtual google_apis::CancelCallback UploadExistingFile(
4519e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner      const std::string& resource_id,
464ad4b3ebbe5769143389dccfcfadb666a4ba5940Daniel Dunbar      const base::FilePath& local_file_path,
4750f4f469024928670f2d634c445686d00eeb89b7Daniel Dunbar      const std::string& content_type,
4850f4f469024928670f2d634c445686d00eeb89b7Daniel Dunbar      const UploadExistingFileOptions& options,
4919e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner      const drive::UploadCompletionCallback& callback,
5019e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
5119e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner
52bb092bafa984e9fa05136b5cef40fd4374dea0f6Douglas Gregor  // Following method is expected not to be used.
5319e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner  virtual google_apis::CancelCallback ResumeUploadFile(
5419e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner      const GURL& upload_location,
5519e8e2cffc19606d0f44e7c2897cd126ffd3f9b0Chris Lattner      const base::FilePath& local_file_path,
56182745ae7892bca0842d9c023370ade5f8d1c6e8Chris Lattner      const std::string& content_type,
571eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump      const drive::UploadCompletionCallback& callback,
585f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
5920c6b3b85e186cd52d5d99489132d71d498159ebChris Lattner
6020c6b3b85e186cd52d5d99489132d71d498159ebChris Lattner private:
6188eccaf06f9d88191723e71bdf5ca68409393be6Chris Lattner  base::WeakPtr<DriveUploaderWrapper> wrapper_;
6288eccaf06f9d88191723e71bdf5ca68409393be6Chris Lattner  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
635e9f35c7cb61aea46f56d46c77cbcf47c0cf28baDouglas Gregor  scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
644d7a089144f336b11e5e8ce437b3b27bce2b310dSebastian Redl
6588eccaf06f9d88191723e71bdf5ca68409393be6Chris Lattner  base::SequenceChecker sequece_checker_;
6688eccaf06f9d88191723e71bdf5ca68409393be6Chris Lattner
6788eccaf06f9d88191723e71bdf5ca68409393be6Chris Lattner  DISALLOW_COPY_AND_ASSIGN(DriveUploaderOnWorker);
681eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump};
695f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer
705f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer}  // namespace drive_backend
7127ceb9d77d929f02a8a811d189a96885629c7c0cChris Lattner}  // namespace sync_file_system
7227ceb9d77d929f02a8a811d189a96885629c7c0cChris Lattner
7327ceb9d77d929f02a8a811d189a96885629c7c0cChris Lattner#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
745f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer