// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/drive/job_list.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" namespace drive { std::string JobTypeToString(JobType type) { switch (type){ case TYPE_GET_ABOUT_RESOURCE: return "TYPE_GET_ABOUT_RESOURCE"; case TYPE_GET_APP_LIST: return "TYPE_GET_APP_LIST"; case TYPE_GET_ALL_RESOURCE_LIST: return "TYPE_GET_ALL_RESOURCE_LIST"; case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY: return "TYPE_GET_RESOURCE_LIST_IN_DIRECTORY"; case TYPE_SEARCH: return "TYPE_SEARCH"; case TYPE_GET_CHANGE_LIST: return "TYPE_GET_CHANGE_LIST"; case TYPE_GET_REMAINING_CHANGE_LIST: return "TYPE_GET_REMAINING_CHANGE_LIST"; case TYPE_GET_REMAINING_FILE_LIST: return "TYPE_GET_REMAINING_FILE_LIST"; case TYPE_GET_RESOURCE_ENTRY: return "TYPE_GET_RESOURCE_ENTRY"; case TYPE_GET_SHARE_URL: return "TYPE_GET_SHARE_URL"; case TYPE_TRASH_RESOURCE: return "TYPE_TRASH_RESOURCE"; case TYPE_COPY_RESOURCE: return "TYPE_COPY_RESOURCE"; case TYPE_UPDATE_RESOURCE: return "TYPE_UPDATE_RESOURCE"; case TYPE_ADD_RESOURCE_TO_DIRECTORY: return "TYPE_ADD_RESOURCE_TO_DIRECTORY"; case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY: return "TYPE_REMOVE_RESOURCE_FROM_DIRECTORY"; case TYPE_ADD_NEW_DIRECTORY: return "TYPE_ADD_NEW_DIRECTORY"; case TYPE_DOWNLOAD_FILE: return "TYPE_DOWNLOAD_FILE"; case TYPE_UPLOAD_NEW_FILE: return "TYPE_UPLOAD_NEW_FILE"; case TYPE_UPLOAD_EXISTING_FILE: return "TYPE_UPLOAD_EXISTING_FILE"; case TYPE_ADD_PERMISSION: return "TYPE_ADD_PERMISSION"; } NOTREACHED(); return "(unknown job type)"; } std::string JobStateToString(JobState state) { switch (state) { case STATE_NONE: return "STATE_NONE"; case STATE_RUNNING: return "STATE_RUNNING"; case STATE_RETRY: return "STATE_RETRY"; } NOTREACHED(); return "(unknown job state)"; } JobInfo::JobInfo(JobType in_job_type) : job_type(in_job_type), job_id(-1), state(STATE_NONE), num_completed_bytes(0), num_total_bytes(0) { } std::string JobInfo::ToString() const { std::string output = base::StringPrintf( "%s %s [%d]", JobTypeToString(job_type).c_str(), JobStateToString(state).c_str(), job_id); if (job_type == TYPE_DOWNLOAD_FILE || job_type == TYPE_UPLOAD_NEW_FILE || job_type == TYPE_UPLOAD_EXISTING_FILE) { base::StringAppendF(&output, " bytes: %s/%s", base::Int64ToString(num_completed_bytes).c_str(), base::Int64ToString(num_total_bytes).c_str()); } return output; } bool IsActiveFileTransferJobInfo(const JobInfo& job_info) { // Using switch statement so that compiler can warn when new states or types // are added. switch (job_info.job_type) { case TYPE_GET_ABOUT_RESOURCE: case TYPE_GET_APP_LIST: case TYPE_GET_ALL_RESOURCE_LIST: case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY: case TYPE_SEARCH: case TYPE_GET_CHANGE_LIST: case TYPE_GET_REMAINING_CHANGE_LIST: case TYPE_GET_REMAINING_FILE_LIST: case TYPE_GET_RESOURCE_ENTRY: case TYPE_GET_SHARE_URL: case TYPE_TRASH_RESOURCE: case TYPE_COPY_RESOURCE: case TYPE_UPDATE_RESOURCE: case TYPE_ADD_RESOURCE_TO_DIRECTORY: case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY: case TYPE_ADD_NEW_DIRECTORY: case TYPE_ADD_PERMISSION: return false; case TYPE_DOWNLOAD_FILE: case TYPE_UPLOAD_NEW_FILE: case TYPE_UPLOAD_EXISTING_FILE: break; } return true; } } // namespace drive