Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / drive / job_list.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/drive/job_list.h"
6
7 #include "base/logging.h"
8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/stringprintf.h"
10
11 namespace drive {
12
13 std::string JobTypeToString(JobType type) {
14   switch (type){
15     case TYPE_GET_ABOUT_RESOURCE:
16       return "TYPE_GET_ABOUT_RESOURCE";
17     case TYPE_GET_APP_LIST:
18       return "TYPE_GET_APP_LIST";
19     case TYPE_GET_ALL_RESOURCE_LIST:
20       return "TYPE_GET_ALL_RESOURCE_LIST";
21     case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY:
22       return "TYPE_GET_RESOURCE_LIST_IN_DIRECTORY";
23     case TYPE_SEARCH:
24       return "TYPE_SEARCH";
25     case TYPE_GET_CHANGE_LIST:
26       return "TYPE_GET_CHANGE_LIST";
27     case TYPE_GET_REMAINING_CHANGE_LIST:
28       return "TYPE_GET_REMAINING_CHANGE_LIST";
29     case TYPE_GET_REMAINING_FILE_LIST:
30       return "TYPE_GET_REMAINING_FILE_LIST";
31     case TYPE_GET_RESOURCE_ENTRY:
32       return "TYPE_GET_RESOURCE_ENTRY";
33     case TYPE_GET_SHARE_URL:
34       return "TYPE_GET_SHARE_URL";
35     case TYPE_TRASH_RESOURCE:
36       return "TYPE_TRASH_RESOURCE";
37     case TYPE_COPY_RESOURCE:
38       return "TYPE_COPY_RESOURCE";
39     case TYPE_UPDATE_RESOURCE:
40       return "TYPE_UPDATE_RESOURCE";
41     case TYPE_RENAME_RESOURCE:
42       return "TYPE_RENAME_RESOURCE";
43     case TYPE_ADD_RESOURCE_TO_DIRECTORY:
44       return "TYPE_ADD_RESOURCE_TO_DIRECTORY";
45     case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY:
46       return "TYPE_REMOVE_RESOURCE_FROM_DIRECTORY";
47     case TYPE_ADD_NEW_DIRECTORY:
48       return "TYPE_ADD_NEW_DIRECTORY";
49     case TYPE_DOWNLOAD_FILE:
50       return "TYPE_DOWNLOAD_FILE";
51     case TYPE_UPLOAD_NEW_FILE:
52       return "TYPE_UPLOAD_NEW_FILE";
53     case TYPE_UPLOAD_EXISTING_FILE:
54       return "TYPE_UPLOAD_EXISTING_FILE";
55     case TYPE_CREATE_FILE:
56       return "TYPE_CREATE_FILE";
57     case TYPE_ADD_PERMISSION:
58       return "TYPE_ADD_PERMISSION";
59   }
60   NOTREACHED();
61   return "(unknown job type)";
62 }
63
64 std::string JobStateToString(JobState state) {
65   switch (state) {
66     case STATE_NONE:
67       return "STATE_NONE";
68     case STATE_RUNNING:
69       return "STATE_RUNNING";
70     case STATE_RETRY:
71       return "STATE_RETRY";
72   }
73   NOTREACHED();
74   return "(unknown job state)";
75 }
76
77 JobInfo::JobInfo(JobType in_job_type)
78     : job_type(in_job_type),
79       job_id(-1),
80       state(STATE_NONE),
81       num_completed_bytes(0),
82       num_total_bytes(0) {
83 }
84
85 std::string JobInfo::ToString() const {
86   std::string output = base::StringPrintf(
87       "%s %s [%d]",
88       JobTypeToString(job_type).c_str(),
89       JobStateToString(state).c_str(),
90       job_id);
91   if (job_type == TYPE_DOWNLOAD_FILE ||
92       job_type == TYPE_UPLOAD_NEW_FILE ||
93       job_type == TYPE_UPLOAD_EXISTING_FILE) {
94     base::StringAppendF(&output,
95                         " bytes: %s/%s",
96                         base::Int64ToString(num_completed_bytes).c_str(),
97                         base::Int64ToString(num_total_bytes).c_str());
98   }
99   return output;
100 }
101
102 bool IsActiveFileTransferJobInfo(const JobInfo& job_info) {
103   // Using switch statement so that compiler can warn when new states or types
104   // are added.
105   switch (job_info.state) {
106     case STATE_NONE:
107       return false;
108     case STATE_RUNNING:
109     case STATE_RETRY:
110       break;
111   }
112
113   switch (job_info.job_type) {
114     case TYPE_GET_ABOUT_RESOURCE:
115     case TYPE_GET_APP_LIST:
116     case TYPE_GET_ALL_RESOURCE_LIST:
117     case TYPE_GET_RESOURCE_LIST_IN_DIRECTORY:
118     case TYPE_SEARCH:
119     case TYPE_GET_CHANGE_LIST:
120     case TYPE_GET_REMAINING_CHANGE_LIST:
121     case TYPE_GET_REMAINING_FILE_LIST:
122     case TYPE_GET_RESOURCE_ENTRY:
123     case TYPE_GET_SHARE_URL:
124     case TYPE_TRASH_RESOURCE:
125     case TYPE_COPY_RESOURCE:
126     case TYPE_UPDATE_RESOURCE:
127     case TYPE_RENAME_RESOURCE:
128     case TYPE_ADD_RESOURCE_TO_DIRECTORY:
129     case TYPE_REMOVE_RESOURCE_FROM_DIRECTORY:
130     case TYPE_ADD_NEW_DIRECTORY:
131     case TYPE_CREATE_FILE:
132     case TYPE_ADD_PERMISSION:
133       return false;
134     case TYPE_DOWNLOAD_FILE:
135     case TYPE_UPLOAD_NEW_FILE:
136     case TYPE_UPLOAD_EXISTING_FILE:
137       break;
138   }
139
140   return true;
141 }
142
143 }  // namespace drive