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.
5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_JOB_LIST_H_
6 #define CHROME_BROWSER_CHROMEOS_DRIVE_JOB_LIST_H_
10 #include "base/basictypes.h"
11 #include "base/files/file_path.h"
12 #include "chrome/browser/chromeos/drive/file_errors.h"
16 // Enum representing the type of job.
18 TYPE_GET_ABOUT_RESOURCE
,
20 TYPE_GET_ALL_RESOURCE_LIST
,
21 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY
,
24 TYPE_GET_REMAINING_CHANGE_LIST
,
25 TYPE_GET_REMAINING_FILE_LIST
,
26 TYPE_GET_RESOURCE_ENTRY
,
32 TYPE_ADD_RESOURCE_TO_DIRECTORY
,
33 TYPE_REMOVE_RESOURCE_FROM_DIRECTORY
,
34 TYPE_ADD_NEW_DIRECTORY
,
37 TYPE_UPLOAD_EXISTING_FILE
,
39 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY_BY_WAPI
,
40 TYPE_GET_REMAINING_RESOURCE_LIST
,
43 // Returns the string representation of |type|.
44 std::string
JobTypeToString(JobType type
);
46 // Current state of the job.
48 // The job is queued, but not yet executed.
51 // The job is in the process of being handled.
54 // The job failed, but has been re-added to the queue.
58 // Returns the string representation of |state|.
59 std::string
JobStateToString(JobState state
);
61 // Unique ID assigned to each job.
64 // Information about a specific job that is visible to other systems.
66 explicit JobInfo(JobType job_type
);
71 // Id of the job, which can be used to query or modify it.
74 // Current state of the operation.
77 // The fields below are available only for jobs with job_type:
78 // TYPE_DOWNLOAD_FILE, TYPE_UPLOAD_NEW_FILE, or TYPE_UPLOAD_EXISTING_FILE.
80 // Number of bytes completed.
81 int64 num_completed_bytes
;
83 // Total bytes of this operation.
84 int64 num_total_bytes
;
86 // Drive path of the file that this job acts on.
87 base::FilePath file_path
;
89 // Time when the job is started (i.e. the request is sent to the server).
90 base::Time start_time
;
92 // Returns the string representation of the job info.
93 std::string
ToString() const;
96 // Checks if |job_info| represents a job for currently active file transfer.
97 bool IsActiveFileTransferJobInfo(const JobInfo
& job_info
);
99 // The interface for observing JobListInterface.
100 // All events are notified in the UI thread.
101 class JobListObserver
{
103 // Called when a new job id added.
104 virtual void OnJobAdded(const JobInfo
& job_info
) {}
106 // Called when a job id finished.
107 // |error| is FILE_ERROR_OK when the job successfully finished, and a value
108 // telling the reason of failure when the jobs is failed.
109 virtual void OnJobDone(const JobInfo
& job_info
,
112 // Called when a job status is updated.
113 virtual void OnJobUpdated(const JobInfo
& job_info
) {}
116 virtual ~JobListObserver() {}
119 // The interface to expose the list of issued Drive jobs.
120 class JobListInterface
{
122 virtual ~JobListInterface() {}
124 // Returns the list of jobs currently managed by the scheduler.
125 virtual std::vector
<JobInfo
> GetJobInfoList() = 0;
128 virtual void AddObserver(JobListObserver
* observer
) = 0;
130 // Removes an observer.
131 virtual void RemoveObserver(JobListObserver
* observer
) = 0;
134 virtual void CancelJob(JobID job_id
) = 0;
136 // Cancels all the jobs.
137 virtual void CancelAllJobs() = 0;
142 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_JOB_LIST_H_