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