chromium/components/drive/service/drive_service_interface.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_DRIVE_SERVICE_DRIVE_SERVICE_INTERFACE_H_
#define COMPONENTS_DRIVE_SERVICE_DRIVE_SERVICE_INTERFACE_H_

#include <stdint.h>

#include <memory>
#include <string>

#include "base/time/time.h"
#include "google_apis/common/auth_service_interface.h"
#include "google_apis/drive/drive_api_requests.h"
#include "google_apis/drive/drive_base_requests.h"
#include "google_apis/drive/drive_common_callbacks.h"
#include "google_apis/gaia/core_account_id.h"

namespace base {
class Time;
}

namespace drive {

// Observer interface for DriveServiceInterface.
class DriveServiceObserver {};

// Optional parameters for AddNewDirectory().
struct AddNewDirectoryOptions {};

// Optional parameters for InitiateUploadNewFile() and
// MultipartUploadNewFile().
struct UploadNewFileOptions {};

// Optional parameters for InitiateUploadExistingFile() and
// MultipartUploadExistingFile().
struct UploadExistingFileOptions {};

// Interface where we define operations that can be sent in batch requests.
class DriveServiceBatchOperationsInterface {};

// Builder returned by DriveServiceInterface to build batch request.
class BatchRequestConfiguratorInterface
    : public DriveServiceBatchOperationsInterface {};

// This defines an interface for sharing by DriveService and MockDriveService
// so that we can do testing of clients of DriveService.
//
// All functions must be called on UI thread. DriveService is built on top of
// URLFetcher that runs on UI thread.
class DriveServiceInterface : public DriveServiceBatchOperationsInterface {};

}  // namespace drive

#endif  // COMPONENTS_DRIVE_SERVICE_DRIVE_SERVICE_INTERFACE_H_