drive_uploader_on_worker.h revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/sequence_checker.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/drive/drive_uploader.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SingleThreadTaskRunner;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SequencedTaskRunner;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace sync_file_system {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace drive_backend {
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DriveUploaderWrapper;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class wraps a part of DriveUploaderInterface class to post actual
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// tasks to DriveUploaderWrapper which lives in another thread.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Each method wraps corresponding name method of DriveUploaderInterface.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See comments in drive_uploader.h for details.
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class DriveUploaderOnWorker : public drive::DriveUploaderInterface {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DriveUploaderOnWorker(
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::WeakPtr<DriveUploaderWrapper>& wrapper,
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::SingleThreadTaskRunner* ui_task_runner,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base::SequencedTaskRunner* worker_task_runner);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~DriveUploaderOnWorker();
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual google_apis::CancelCallback UploadNewFile(
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& parent_resource_id,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const base::FilePath& local_file_path,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& title,
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& content_type,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const UploadNewFileOptions& options,
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const drive::UploadCompletionCallback& callback,
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual google_apis::CancelCallback UploadExistingFile(
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const std::string& resource_id,
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& local_file_path,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& content_type,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const UploadExistingFileOptions& options,
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const drive::UploadCompletionCallback& callback,
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Following method is expected not to be used.
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual google_apis::CancelCallback ResumeUploadFile(
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const GURL& upload_location,
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& local_file_path,
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const std::string& content_type,
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const drive::UploadCompletionCallback& callback,
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const google_apis::ProgressCallback& progress_callback) OVERRIDE;
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::WeakPtr<DriveUploaderWrapper> wrapper_;
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::SequenceChecker sequece_checker_;
662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(DriveUploaderOnWorker);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70}  // namespace drive_backend
71}  // namespace sync_file_system
72
73#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_ON_WORKER_H_
74