summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steve Howard <showard@google.com> 2010-08-02 17:51:29 -0700
committer Steve Howard <showard@google.com> 2010-08-16 14:28:17 -0700
commit33bbd12a05005ac92a0ecf82695893148227bb22 (patch)
tree4e78a5bd369a773bb5463ed33a3dfd47144dd57b
parent80810f86e93866674f3a4ca61f84887e7717aa63 (diff)
New download manager error code when we can't resume.
Adding DownloadManager.ERROR_CANNOT_RESUME for when we can't resume an interrupted download (because the server didn't provide an ETag or doesn't support range requests), as well as the necessary private status code in Downloads.Impl. Change-Id: I5a66f1e1964198552ab2216aa6d3cc0db2254e21
-rw-r--r--api/current.xml11
-rw-r--r--core/java/android/net/DownloadManager.java12
-rw-r--r--core/java/android/provider/Downloads.java10
3 files changed, 32 insertions, 1 deletions
diff --git a/api/current.xml b/api/current.xml
index 392ea95c2276..f49477571b16 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -96284,6 +96284,17 @@
visibility="public"
>
</field>
+<field name="ERROR_CANNOT_RESUME"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="ERROR_DEVICE_NOT_FOUND"
type="int"
transient="false"
diff --git a/core/java/android/net/DownloadManager.java b/core/java/android/net/DownloadManager.java
index e69c3241350b..447e64208ce2 100644
--- a/core/java/android/net/DownloadManager.java
+++ b/core/java/android/net/DownloadManager.java
@@ -185,6 +185,12 @@ public class DownloadManager {
public final static int ERROR_DEVICE_NOT_FOUND = 1007;
/**
+ * Value of {@link #COLUMN_ERROR_CODE} when some possibly transient error occurred but we can't
+ * resume the download.
+ */
+ public final static int ERROR_CANNOT_RESUME = 1008;
+
+ /**
* Broadcast intent action sent by the download manager when a download completes.
*/
public final static String ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE";
@@ -715,7 +721,8 @@ public class DownloadManager {
if (translateStatus(status) != STATUS_FAILED) {
return 0; // arbitrary value when status is not an error
}
- if ((400 <= status && status < 490) || (500 <= status && status < 600)) {
+ if ((400 <= status && status < Downloads.Impl.MIN_ARTIFICIAL_ERROR_STATUS)
+ || (500 <= status && status < 600)) {
// HTTP status code
return status;
}
@@ -740,6 +747,9 @@ public class DownloadManager {
case Downloads.STATUS_DEVICE_NOT_FOUND_ERROR:
return ERROR_DEVICE_NOT_FOUND;
+ case Downloads.Impl.STATUS_CANNOT_RESUME:
+ return ERROR_CANNOT_RESUME;
+
default:
return ERROR_UNKNOWN;
}
diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java
index c9b55121aa84..6bf0d5b7ad8c 100644
--- a/core/java/android/provider/Downloads.java
+++ b/core/java/android/provider/Downloads.java
@@ -1060,6 +1060,16 @@ public final class Downloads {
public static final int STATUS_PRECONDITION_FAILED = 412;
/**
+ * The lowest-valued error status that is not an actual HTTP status code.
+ */
+ public static final int MIN_ARTIFICIAL_ERROR_STATUS = 489;
+
+ /**
+ * Some possibly transient error occurred, but we can't resume the download.
+ */
+ public static final int STATUS_CANNOT_RESUME = 489;
+
+ /**
* This download was canceled
*/
public static final int STATUS_CANCELED = 490;