-// Converts drive::JobInfo to ash::DriveOperationStatus.
-// If the job is not of type that ash tray is interested, returns false.
-bool ConvertToDriveOperationStatus(const drive::JobInfo& info,
- ash::DriveOperationStatus* status) {
- if (info.job_type == drive::TYPE_DOWNLOAD_FILE) {
- status->type = ash::DriveOperationStatus::OPERATION_DOWNLOAD;
- } else if (info.job_type == drive::TYPE_UPLOAD_NEW_FILE ||
- info.job_type == drive::TYPE_UPLOAD_EXISTING_FILE) {
- status->type = ash::DriveOperationStatus::OPERATION_UPLOAD;
- } else {
- return false;
- }
-
- if (info.state == drive::STATE_NONE)
- status->state = ash::DriveOperationStatus::OPERATION_NOT_STARTED;
- else
- status->state = ash::DriveOperationStatus::OPERATION_IN_PROGRESS;
-
- status->id = info.job_id;
- status->file_path = info.file_path;
- status->progress = info.num_total_bytes == 0 ? 0.0 :
- static_cast<double>(info.num_completed_bytes) /
- static_cast<double>(info.num_total_bytes);
- return true;
-}
-
-// Converts drive::JobInfo that has finished in |error| state
-// to ash::DriveOperationStatus.
-// If the job is not of type that ash tray is interested, returns false.
-bool ConvertToFinishedDriveOperationStatus(const drive::JobInfo& info,
- drive::FileError error,
- ash::DriveOperationStatus* status) {
- if (!ConvertToDriveOperationStatus(info, status))
- return false;
- status->state = (error == drive::FILE_ERROR_OK)
- ? ash::DriveOperationStatus::OPERATION_COMPLETED
- : ash::DriveOperationStatus::OPERATION_FAILED;
- return true;
-}
-
-// Converts a list of drive::JobInfo to a list of ash::DriveOperationStatusList.
-ash::DriveOperationStatusList ConvertToDriveStatusList(
- const std::vector<drive::JobInfo>& list) {
- ash::DriveOperationStatusList results;
- for (size_t i = 0; i < list.size(); ++i) {
- ash::DriveOperationStatus status;
- if (ConvertToDriveOperationStatus(list[i], &status))
- results.push_back(status);
- }
- return results;
-}
-