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#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_WRAPPER_H_
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_WRAPPER_H_
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/memory/weak_ptr.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/sequence_checker.h"
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/drive/drive_uploader.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace sync_file_system {
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace drive_backend {
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// This class wraps a part of DriveUploaderInterface class to support weak
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// pointer.  Each method wraps corresponding name method of
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// DriveUploaderInterface.  See comments in drive_uploader_interface.h
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// for details.
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass DriveUploaderWrapper
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    : public base::SupportsWeakPtr<DriveUploaderWrapper> {
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public:
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  explicit DriveUploaderWrapper(drive::DriveUploaderInterface* drive_uploader);
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void UploadExistingFile(
255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const std::string& resource_id,
265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const base::FilePath& local_file_path,
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const std::string& content_type,
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const drive::DriveUploaderInterface::UploadExistingFileOptions& options,
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const drive::UploadCompletionCallback& callback);
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void 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 drive::DriveUploaderInterface::UploadNewFileOptions& options,
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      const drive::UploadCompletionCallback& callback);
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private:
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  drive::DriveUploaderInterface* drive_uploader_;
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::SequenceChecker sequence_checker_;
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  DISALLOW_COPY_AND_ASSIGN(DriveUploaderWrapper);
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu};
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace drive_backend
475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace sync_file_system
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif  // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_DRIVE_UPLOADER_WRAPPER_H_
50