summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVasu Nori <vnori@google.com>2011-02-08 17:16:41 -0800
committerVasu Nori <vnori@google.com>2011-02-08 18:10:11 -0800
commit789745f667c65661d82ccbd5ef49fdb132911736 (patch)
treec264e45bc316434d3af7f9915828fb45f0441e5b /src
parent7806290088fbd6f802288021ec551ddd9469892a (diff)
downloadandroid_packages_providers_DownloadProvider-789745f667c65661d82ccbd5ef49fdb132911736.tar.gz
android_packages_providers_DownloadProvider-789745f667c65661d82ccbd5ef49fdb132911736.tar.bz2
android_packages_providers_DownloadProvider-789745f667c65661d82ccbd5ef49fdb132911736.zip
bug:3435895 listen to media_mounted broadcast intent
and retry downloads that failed due to the error "sdcard media not mounted" Change-Id: Id181b8167d331214f72679c85f18cc8b9b969e40
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/Constants.java4
-rw-r--r--src/com/android/providers/downloads/DownloadInfo.java10
-rw-r--r--src/com/android/providers/downloads/DownloadReceiver.java10
-rw-r--r--src/com/android/providers/downloads/DownloadService.java9
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java5
5 files changed, 34 insertions, 4 deletions
diff --git a/src/com/android/providers/downloads/Constants.java b/src/com/android/providers/downloads/Constants.java
index ef0c6dbb..acf9732a 100644
--- a/src/com/android/providers/downloads/Constants.java
+++ b/src/com/android/providers/downloads/Constants.java
@@ -144,10 +144,10 @@ public class Constants {
static final boolean LOGX = false;
/** Enable verbose logging - use with "setprop log.tag.DownloadManager VERBOSE" */
- private static final boolean LOCAL_LOGV = false;
+ private static final boolean LOCAL_LOGV = true; // STOPSHIP change this to false
public static final boolean LOGV = LOCAL_LOGV && Log.isLoggable(TAG, Log.VERBOSE);
/** Enable super-verbose logging */
- private static final boolean LOCAL_LOGVV = false;
+ private static final boolean LOCAL_LOGVV = true; // STOPSHIP change this to false
public static final boolean LOGVV = LOCAL_LOGVV && LOGV;
}
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java
index 3587dbfb..2973937e 100644
--- a/src/com/android/providers/downloads/DownloadInfo.java
+++ b/src/com/android/providers/downloads/DownloadInfo.java
@@ -26,6 +26,7 @@ import android.database.Cursor;
import android.drm.mobile1.DrmRawContent;
import android.net.ConnectivityManager;
import android.net.Uri;
+import android.os.Environment;
import android.provider.Downloads;
import android.provider.Downloads.Impl;
import android.text.TextUtils;
@@ -300,6 +301,15 @@ public class DownloadInfo {
case Downloads.Impl.STATUS_WAITING_TO_RETRY:
// download was waiting for a delayed restart
return restartTime(now) <= now;
+ case Downloads.Impl.STATUS_DEVICE_NOT_FOUND_ERROR:
+ // is the media mounted?
+ return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
+ case Downloads.Impl.STATUS_INSUFFICIENT_SPACE_ERROR:
+ // should check space to make sure it is worth retrying the download.
+ // but thats the first thing done by the thread when it retries to download
+ // it will fail pretty quickly if there is no space.
+ // so, it is not that bad to skip checking space availability here.
+ return true;
}
return false;
}
diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java
index 33066393..7372e4ac 100644
--- a/src/com/android/providers/downloads/DownloadReceiver.java
+++ b/src/com/android/providers/downloads/DownloadReceiver.java
@@ -49,6 +49,16 @@ public class DownloadReceiver extends BroadcastReceiver {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
+ if (Constants.LOGVV) {
+ Log.v(Constants.TAG, "Received broadcast intent for " +
+ Intent.ACTION_BOOT_COMPLETED);
+ }
+ startService(context);
+ } else if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
+ if (Constants.LOGVV) {
+ Log.v(Constants.TAG, "Received broadcast intent for " +
+ Intent.ACTION_MEDIA_MOUNTED);
+ }
startService(context);
} else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo info = (NetworkInfo)
diff --git a/src/com/android/providers/downloads/DownloadService.java b/src/com/android/providers/downloads/DownloadService.java
index d06c8803..83001fd1 100644
--- a/src/com/android/providers/downloads/DownloadService.java
+++ b/src/com/android/providers/downloads/DownloadService.java
@@ -301,7 +301,10 @@ public class DownloadService extends Service {
DownloadInfo.Reader reader =
new DownloadInfo.Reader(getContentResolver(), cursor);
int idColumn = cursor.getColumnIndexOrThrow(Downloads.Impl._ID);
-
+ if (Constants.LOGVV) {
+ Log.i(Constants.TAG, "number of rows from downloads-db: " +
+ cursor.getCount());
+ }
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
long id = cursor.getLong(idColumn);
idsNoLongerInDatabase.remove(id);
@@ -425,7 +428,7 @@ public class DownloadService extends Service {
mDownloads.put(info.mId, info);
if (Constants.LOGVV) {
- info.logVerboseInfo();
+ Log.v(Constants.TAG, "processing inserted download " + info.mId);
}
info.startIfReady(now, mStorageManager);
@@ -440,6 +443,8 @@ public class DownloadService extends Service {
int oldStatus = info.mStatus;
reader.updateFromDatabase(info);
+ Log.v(Constants.TAG, "processing updated download " + info.mId +
+ ", status: " + info.mStatus);
boolean lostVisibility =
oldVisibility == Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 960765dd..de570ff5 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -836,6 +836,7 @@ public class DownloadThread extends Thread {
innerState.mContinuingDownload = true;
if (Constants.LOGV) {
Log.i(Constants.TAG, "resuming download for id: " + mInfo.mId +
+ ", innerState.mBytesSoFar: " + innerState.mBytesSoFar +
", and setting mContinuingDownload to true: ");
}
}
@@ -861,6 +862,10 @@ public class DownloadThread extends Thread {
request.addHeader("If-Match", innerState.mHeaderETag);
}
request.addHeader("Range", "bytes=" + innerState.mBytesSoFar + "-");
+ if (Constants.LOGV) {
+ Log.i(Constants.TAG, "Adding Range header: " +
+ "bytes=" + innerState.mBytesSoFar + "-");
+ }
}
}