diff options
Diffstat (limited to 'src/com/android/providers/downloads')
-rw-r--r-- | src/com/android/providers/downloads/DownloadThread.java | 21 | ||||
-rw-r--r-- | src/com/android/providers/downloads/Helpers.java | 2 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index bd347e42..0d427fdd 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -65,7 +65,6 @@ import java.net.URL; import java.net.URLConnection; import libcore.io.IoUtils; -import libcore.net.http.HttpEngine; /** * Task which executes a given {@link DownloadInfo}: making network requests, @@ -275,9 +274,7 @@ public class DownloadThread implements Runnable { return; } - // TODO: compare mInfo.mNumFailed against Constants.MAX_RETRIES - - while (state.mRedirectionCount++ < HttpEngine.MAX_REDIRECTS) { + while (state.mRedirectionCount++ < Constants.MAX_REDIRECTS) { // Open connection and follow any redirects until we have a useful // response with body. HttpURLConnection conn = null; @@ -315,18 +312,16 @@ public class DownloadThread implements Runnable { case HTTP_TEMP_REDIRECT: final String location = conn.getHeaderField("Location"); state.mUrl = new URL(state.mUrl, location); + if (responseCode == HTTP_MOVED_PERM) { + // Push updated URL back to database + state.mRequestUri = state.mUrl.toString(); + } continue; case HTTP_REQUESTED_RANGE_NOT_SATISFIABLE: throw new StopRequestException( STATUS_CANNOT_RESUME, "Requested range not satisfiable"); - case HTTP_PRECON_FAILED: - // TODO: probably means our etag precondition was - // changed; flush and retry again - StopRequestException.throwUnhandledHttpError( - responseCode, conn.getResponseMessage()); - case HTTP_UNAVAILABLE: parseRetryAfterHeaders(state, conn); throw new StopRequestException( @@ -645,7 +640,7 @@ public class DownloadThread implements Runnable { state.mMimeType, mInfo.mDestination, state.mContentLength, - mInfo.mIsPublicApi, mStorageManager); + mStorageManager); updateDatabaseFromHeaders(state); // check connectivity again now that we know the total size @@ -826,6 +821,10 @@ public class DownloadThread implements Runnable { values.put(Downloads.Impl.COLUMN_FAILED_CONNECTIONS, numFailed); values.put(Constants.RETRY_AFTER_X_REDIRECT_COUNT, state.mRetryAfter); + if (!TextUtils.equals(mInfo.mUri, state.mRequestUri)) { + values.put(Downloads.Impl.COLUMN_URI, state.mRequestUri); + } + // save the error message. could be useful to developers. if (!TextUtils.isEmpty(errorMsg)) { values.put(Downloads.Impl.COLUMN_ERROR_MSG, errorMsg); diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index 059e9703..5c34ebe1 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -77,7 +77,7 @@ public class Helpers { String mimeType, int destination, long contentLength, - boolean isPublicApi, StorageManager storageManager) throws StopRequestException { + StorageManager storageManager) throws StopRequestException { if (contentLength < 0) { contentLength = 0; } |