1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/drive/job_list.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/logging.h" 8b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 95e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "base/strings/stringprintf.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace drive { 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)std::string JobTypeToString(JobType type) { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switch (type){ 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_GET_ABOUT_RESOURCE: 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_GET_ABOUT_RESOURCE"; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_GET_APP_LIST: 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_GET_APP_LIST"; 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_GET_ALL_RESOURCE_LIST: 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_GET_ALL_RESOURCE_LIST"; 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY: 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_GET_RESOURCE_LIST_IN_DIRECTORY"; 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_SEARCH: 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_SEARCH"; 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_GET_CHANGE_LIST: 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_GET_CHANGE_LIST"; 27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) case TYPE_GET_REMAINING_CHANGE_LIST: 28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return "TYPE_GET_REMAINING_CHANGE_LIST"; 29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) case TYPE_GET_REMAINING_FILE_LIST: 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) return "TYPE_GET_REMAINING_FILE_LIST"; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case TYPE_GET_RESOURCE_ENTRY: 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return "TYPE_GET_RESOURCE_ENTRY"; 33bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch case TYPE_GET_SHARE_URL: 34bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch return "TYPE_GET_SHARE_URL"; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case TYPE_TRASH_RESOURCE: 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return "TYPE_TRASH_RESOURCE"; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_COPY_RESOURCE: 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return "TYPE_COPY_RESOURCE"; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case TYPE_UPDATE_RESOURCE: 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return "TYPE_UPDATE_RESOURCE"; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_ADD_RESOURCE_TO_DIRECTORY: 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_ADD_RESOURCE_TO_DIRECTORY"; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY: 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_REMOVE_RESOURCE_FROM_DIRECTORY"; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_ADD_NEW_DIRECTORY: 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_ADD_NEW_DIRECTORY"; 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_DOWNLOAD_FILE: 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_DOWNLOAD_FILE"; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_UPLOAD_NEW_FILE: 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_UPLOAD_NEW_FILE"; 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_UPLOAD_EXISTING_FILE: 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_UPLOAD_EXISTING_FILE"; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case TYPE_CREATE_FILE: 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "TYPE_CREATE_FILE"; 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TYPE_ADD_PERMISSION: 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return "TYPE_ADD_PERMISSION"; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NOTREACHED(); 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "(unknown job type)"; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)std::string JobStateToString(JobState state) { 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switch (state) { 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case STATE_NONE: 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "STATE_NONE"; 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case STATE_RUNNING: 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "STATE_RUNNING"; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case STATE_RETRY: 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "STATE_RETRY"; 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NOTREACHED(); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return "(unknown job state)"; 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)JobInfo::JobInfo(JobType in_job_type) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : job_type(in_job_type), 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) job_id(-1), 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) state(STATE_NONE), 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) num_completed_bytes(0), 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) num_total_bytes(0) { 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 83b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)std::string JobInfo::ToString() const { 84b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) std::string output = base::StringPrintf( 85b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) "%s %s [%d]", 86b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) JobTypeToString(job_type).c_str(), 87b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) JobStateToString(state).c_str(), 88b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) job_id); 89b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (job_type == TYPE_DOWNLOAD_FILE || 90b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) job_type == TYPE_UPLOAD_NEW_FILE || 91b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) job_type == TYPE_UPLOAD_EXISTING_FILE) { 92b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::StringAppendF(&output, 93b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) " bytes: %s/%s", 94b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::Int64ToString(num_completed_bytes).c_str(), 95b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::Int64ToString(num_total_bytes).c_str()); 96b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 97b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) return output; 98b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 99b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool IsActiveFileTransferJobInfo(const JobInfo& job_info) { 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Using switch statement so that compiler can warn when new states or types 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // are added. 10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) switch (job_info.job_type) { 10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_GET_ABOUT_RESOURCE: 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_GET_APP_LIST: 10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_GET_ALL_RESOURCE_LIST: 10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY: 10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_SEARCH: 10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_GET_CHANGE_LIST: 110424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) case TYPE_GET_REMAINING_CHANGE_LIST: 111424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) case TYPE_GET_REMAINING_FILE_LIST: 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case TYPE_GET_RESOURCE_ENTRY: 113bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch case TYPE_GET_SHARE_URL: 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case TYPE_TRASH_RESOURCE: 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_COPY_RESOURCE: 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) case TYPE_UPDATE_RESOURCE: 11790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_ADD_RESOURCE_TO_DIRECTORY: 11890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY: 11990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_ADD_NEW_DIRECTORY: 12090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_CREATE_FILE: 12123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) case TYPE_ADD_PERMISSION: 12290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return false; 12390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_DOWNLOAD_FILE: 12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_UPLOAD_NEW_FILE: 12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) case TYPE_UPLOAD_EXISTING_FILE: 12690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) break; 12790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 12890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 12990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return true; 13090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 13190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace drive 133