• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 package org.chromium.content.browser;
6 
7 /**
8  * Class representing the state of a single download.
9  */
10 public final class DownloadInfo {
11     private final String mUrl;
12     private final String mUserAgent;
13     private final String mMimeType;
14     private final String mCookie;
15     private final String mFileName;
16     private final String mDescription;
17     private final String mFilePath;
18     private final String mReferer;
19     private final long mContentLength;
20     private final boolean mHasDownloadId;
21     private final int mDownloadId;
22     private final boolean mHasUserGesture;
23     private final String mContentDisposition;
24     private final boolean mIsGETRequest;
25     private final boolean mIsSuccessful;
26     private final int mPercentCompleted;
27     private final long mTimeRemainingInMillis;
28 
DownloadInfo(Builder builder)29     private DownloadInfo(Builder builder) {
30         mUrl = builder.mUrl;
31         mUserAgent = builder.mUserAgent;
32         mMimeType = builder.mMimeType;
33         mCookie = builder.mCookie;
34         mFileName = builder.mFileName;
35         mDescription = builder.mDescription;
36         mFilePath = builder.mFilePath;
37         mReferer = builder.mReferer;
38         mContentLength = builder.mContentLength;
39         mHasDownloadId = builder.mHasDownloadId;
40         mDownloadId = builder.mDownloadId;
41         mHasUserGesture = builder.mHasUserGesture;
42         mIsSuccessful = builder.mIsSuccessful;
43         mIsGETRequest = builder.mIsGETRequest;
44         mContentDisposition = builder.mContentDisposition;
45         mPercentCompleted = builder.mPercentCompleted;
46         mTimeRemainingInMillis = builder.mTimeRemainingInMillis;
47     }
48 
getUrl()49     public String getUrl() {
50         return mUrl;
51     }
52 
getUserAgent()53     public String getUserAgent() {
54         return mUserAgent;
55     }
56 
getMimeType()57     public String getMimeType() {
58         return mMimeType;
59     }
60 
getCookie()61     public String getCookie() {
62         return mCookie;
63     }
64 
getFileName()65     public String getFileName() {
66         return mFileName;
67     }
68 
getDescription()69     public String getDescription() {
70         return mDescription;
71     }
72 
getFilePath()73     public String getFilePath() {
74         return mFilePath;
75     }
76 
getReferer()77     public String getReferer() {
78         return mReferer;
79     }
80 
getContentLength()81     public long getContentLength() {
82         return mContentLength;
83     }
84 
isGETRequest()85     public boolean isGETRequest() {
86         return mIsGETRequest;
87     }
88 
hasDownloadId()89     public boolean hasDownloadId() {
90         return mHasDownloadId;
91     }
92 
getDownloadId()93     public int getDownloadId() {
94         return mDownloadId;
95     }
96 
hasUserGesture()97     public boolean hasUserGesture() {
98         return mHasUserGesture;
99     }
100 
isSuccessful()101     public boolean isSuccessful() {
102         return mIsSuccessful;
103     }
104 
getContentDisposition()105     public String getContentDisposition() {
106         return mContentDisposition;
107     }
108 
109     /**
110      * @return percent completed as an integer, -1 if there is no download progress.
111      */
getPercentCompleted()112     public int getPercentCompleted() {
113         return mPercentCompleted;
114     }
115 
getTimeRemainingInMillis()116     public long getTimeRemainingInMillis() {
117         return mTimeRemainingInMillis;
118     }
119 
120     public static class Builder {
121         private String mUrl;
122         private String mUserAgent;
123         private String mMimeType;
124         private String mCookie;
125         private String mFileName;
126         private String mDescription;
127         private String mFilePath;
128         private String mReferer;
129         private long mContentLength;
130         private boolean mIsGETRequest;
131         private boolean mHasDownloadId;
132         private int mDownloadId;
133         private boolean mHasUserGesture;
134         private boolean mIsSuccessful;
135         private String mContentDisposition;
136         private int mPercentCompleted = -1;
137         private long mTimeRemainingInMillis;
138 
setUrl(String url)139         public Builder setUrl(String url) {
140             mUrl = url;
141             return this;
142         }
143 
setUserAgent(String userAgent)144         public Builder setUserAgent(String userAgent) {
145             mUserAgent = userAgent;
146             return this;
147         }
148 
setMimeType(String mimeType)149         public Builder setMimeType(String mimeType) {
150             mMimeType = mimeType;
151             return this;
152         }
153 
setCookie(String cookie)154         public Builder setCookie(String cookie) {
155             mCookie = cookie;
156             return this;
157         }
158 
setFileName(String fileName)159         public Builder setFileName(String fileName) {
160             mFileName = fileName;
161             return this;
162         }
163 
setDescription(String description)164         public Builder setDescription(String description) {
165             mDescription = description;
166             return this;
167         }
168 
setFilePath(String filePath)169         public Builder setFilePath(String filePath) {
170             mFilePath = filePath;
171             return this;
172         }
173 
setReferer(String referer)174         public Builder setReferer(String referer) {
175             mReferer = referer;
176             return this;
177         }
178 
setContentLength(long contentLength)179         public Builder setContentLength(long contentLength) {
180             mContentLength = contentLength;
181             return this;
182         }
183 
setIsGETRequest(boolean isGETRequest)184         public Builder setIsGETRequest(boolean isGETRequest) {
185             mIsGETRequest = isGETRequest;
186             return this;
187         }
188 
setHasDownloadId(boolean hasDownloadId)189         public Builder setHasDownloadId(boolean hasDownloadId) {
190             mHasDownloadId = hasDownloadId;
191             return this;
192         }
193 
setDownloadId(int downloadId)194         public Builder setDownloadId(int downloadId) {
195             mDownloadId = downloadId;
196             return this;
197         }
198 
setHasUserGesture(boolean hasUserGesture)199         public Builder setHasUserGesture(boolean hasUserGesture) {
200             mHasUserGesture = hasUserGesture;
201             return this;
202         }
203 
setIsSuccessful(boolean isSuccessful)204         public Builder setIsSuccessful(boolean isSuccessful) {
205             mIsSuccessful = isSuccessful;
206             return this;
207         }
208 
setContentDisposition(String contentDisposition)209         public Builder setContentDisposition(String contentDisposition) {
210             mContentDisposition = contentDisposition;
211             return this;
212         }
213 
setPercentCompleted(int percentCompleted)214         public Builder setPercentCompleted(int percentCompleted) {
215             assert percentCompleted <= 100;
216             mPercentCompleted = percentCompleted;
217             return this;
218         }
219 
setTimeRemainingInMillis(long timeRemainingInMillis)220         public Builder setTimeRemainingInMillis(long timeRemainingInMillis) {
221             mTimeRemainingInMillis = timeRemainingInMillis;
222             return this;
223         }
224 
build()225         public DownloadInfo build() {
226             return new DownloadInfo(this);
227         }
228 
229         /**
230          * Create a builder from the DownloadInfo object.
231          * @param downloadInfo DownloadInfo object from which builder fields are populated.
232          * @return A builder initialized with fields from downloadInfo object.
233          */
fromDownloadInfo(final DownloadInfo downloadInfo)234         public static Builder fromDownloadInfo(final DownloadInfo downloadInfo) {
235             Builder builder = new Builder();
236             builder
237                     .setUrl(downloadInfo.getUrl())
238                     .setUserAgent(downloadInfo.getUserAgent())
239                     .setMimeType(downloadInfo.getMimeType())
240                     .setCookie(downloadInfo.getCookie())
241                     .setFileName(downloadInfo.getFileName())
242                     .setDescription(downloadInfo.getDescription())
243                     .setFilePath(downloadInfo.getFilePath())
244                     .setReferer(downloadInfo.getReferer())
245                     .setContentLength(downloadInfo.getContentLength())
246                     .setHasDownloadId(downloadInfo.hasDownloadId())
247                     .setDownloadId(downloadInfo.getDownloadId())
248                     .setHasUserGesture(downloadInfo.hasUserGesture())
249                     .setContentDisposition(downloadInfo.getContentDisposition())
250                     .setIsGETRequest(downloadInfo.isGETRequest())
251                     .setIsSuccessful(downloadInfo.isSuccessful())
252                     .setPercentCompleted(downloadInfo.getPercentCompleted())
253                     .setTimeRemainingInMillis(downloadInfo.getTimeRemainingInMillis());
254             return builder;
255         }
256 
257     }
258 }
259