summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/downloads/DownloadInfo.java51
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java12
-rw-r--r--src/com/android/providers/downloads/DownloadService.java9
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java19
-rw-r--r--src/com/android/providers/downloads/Helpers.java3
5 files changed, 57 insertions, 37 deletions
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java
index 2f703e63..313386fe 100644
--- a/src/com/android/providers/downloads/DownloadInfo.java
+++ b/src/com/android/providers/downloads/DownloadInfo.java
@@ -32,6 +32,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
+import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -80,6 +81,7 @@ public class DownloadInfo {
info.mTotalBytes = getLong(Downloads.Impl.COLUMN_TOTAL_BYTES);
info.mCurrentBytes = getLong(Downloads.Impl.COLUMN_CURRENT_BYTES);
info.mETag = getString(Constants.ETAG);
+ info.mUid = getInt(Constants.UID);
info.mMediaScanned = getInt(Constants.MEDIA_SCANNED);
info.mDeleted = getInt(Downloads.Impl.COLUMN_DELETED) == 1;
info.mMediaProviderUri = getString(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI);
@@ -203,6 +205,7 @@ public class DownloadInfo {
public long mTotalBytes;
public long mCurrentBytes;
public String mETag;
+ public int mUid;
public int mMediaScanned;
public boolean mDeleted;
public String mMediaProviderUri;
@@ -463,33 +466,29 @@ public class DownloadInfo {
return ContentUris.withAppendedId(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, mId);
}
+ public void dump(PrintWriter writer) {
+ writer.println("DownloadInfo:");
- public void logVerboseInfo() {
- Log.v(Constants.TAG, "Service adding new entry");
- Log.v(Constants.TAG, "ID : " + mId);
- Log.v(Constants.TAG, "URI : " + ((mUri != null) ? "yes" : "no"));
- Log.v(Constants.TAG, "NO_INTEG: " + mNoIntegrity);
- Log.v(Constants.TAG, "HINT : " + mHint);
- Log.v(Constants.TAG, "FILENAME: " + mFileName);
- Log.v(Constants.TAG, "MIMETYPE: " + mMimeType);
- Log.v(Constants.TAG, "DESTINAT: " + mDestination);
- Log.v(Constants.TAG, "VISIBILI: " + mVisibility);
- Log.v(Constants.TAG, "CONTROL : " + mControl);
- Log.v(Constants.TAG, "STATUS : " + mStatus);
- Log.v(Constants.TAG, "FAILED_C: " + mNumFailed);
- Log.v(Constants.TAG, "RETRY_AF: " + mRetryAfter);
- Log.v(Constants.TAG, "LAST_MOD: " + mLastMod);
- Log.v(Constants.TAG, "PACKAGE : " + mPackage);
- Log.v(Constants.TAG, "CLASS : " + mClass);
- Log.v(Constants.TAG, "COOKIES : " + ((mCookies != null) ? "yes" : "no"));
- Log.v(Constants.TAG, "AGENT : " + mUserAgent);
- Log.v(Constants.TAG, "REFERER : " + ((mReferer != null) ? "yes" : "no"));
- Log.v(Constants.TAG, "TOTAL : " + mTotalBytes);
- Log.v(Constants.TAG, "CURRENT : " + mCurrentBytes);
- Log.v(Constants.TAG, "ETAG : " + mETag);
- Log.v(Constants.TAG, "SCANNED : " + mMediaScanned);
- Log.v(Constants.TAG, "DELETED : " + mDeleted);
- Log.v(Constants.TAG, "MEDIAPROVIDER_URI : " + mMediaProviderUri);
+ writer.print(" mId="); writer.print(mId);
+ writer.print(" mLastMod="); writer.print(mLastMod);
+ writer.print(" mPackage="); writer.print(mPackage);
+ writer.print(" mUid="); writer.println(mUid);
+
+ writer.print(" mUri="); writer.print(mUri);
+ writer.print(" mMimeType="); writer.print(mMimeType);
+ writer.print(" mCookies="); writer.print((mCookies != null) ? "yes" : "no");
+ writer.print(" mReferer="); writer.println((mReferer != null) ? "yes" : "no");
+
+ writer.print(" mUserAgent="); writer.println(mUserAgent);
+
+ writer.print(" mFileName="); writer.println(mFileName);
+
+ writer.print(" mStatus="); writer.print(mStatus);
+ writer.print(" mCurrentBytes="); writer.print(mCurrentBytes);
+ writer.print(" mTotalBytes="); writer.println(mTotalBytes);
+
+ writer.print(" mNumFailed="); writer.print(mNumFailed);
+ writer.print(" mRetryAfter="); writer.println(mRetryAfter);
}
/**
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index 8a2634f7..2c6d362a 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -17,6 +17,7 @@
package com.android.providers.downloads;
import android.app.DownloadManager;
+import android.app.DownloadManager.Request;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
@@ -725,12 +726,15 @@ public final class DownloadProvider extends ContentProvider {
if (getContext().checkCallingOrSelfPermission(Downloads.Impl.PERMISSION_NO_NOTIFICATION)
== PackageManager.PERMISSION_GRANTED) {
enforceAllowedValues(values, Downloads.Impl.COLUMN_VISIBILITY,
- Downloads.Impl.VISIBILITY_HIDDEN, Downloads.Impl.VISIBILITY_VISIBLE,
- DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
+ Request.VISIBILITY_HIDDEN,
+ Request.VISIBILITY_VISIBLE,
+ Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED,
+ Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
} else {
enforceAllowedValues(values, Downloads.Impl.COLUMN_VISIBILITY,
- Downloads.Impl.VISIBILITY_VISIBLE,
- DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
+ Request.VISIBILITY_VISIBLE,
+ Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED,
+ Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION);
}
// remove the rest of the columns that are allowed (with any value)
diff --git a/src/com/android/providers/downloads/DownloadService.java b/src/com/android/providers/downloads/DownloadService.java
index 035eaff4..bdbd388b 100644
--- a/src/com/android/providers/downloads/DownloadService.java
+++ b/src/com/android/providers/downloads/DownloadService.java
@@ -41,6 +41,8 @@ import android.text.TextUtils;
import android.util.Log;
import java.io.File;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -555,4 +557,11 @@ public class DownloadService extends Service {
Log.w(Constants.TAG, "file: '" + path + "' couldn't be deleted", e);
}
}
+
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
+ for (DownloadInfo info : mDownloads.values()) {
+ info.dump(writer);
+ }
+ }
}
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 2e3543dc..7ddfe959 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.http.AndroidHttpClient;
import android.net.Proxy;
+import android.net.TrafficStats;
import android.os.FileUtils;
import android.os.PowerManager;
import android.os.Process;
@@ -137,13 +138,17 @@ public class DownloadThread extends Thread {
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG);
wakeLock.acquire();
-
if (Constants.LOGV) {
Log.v(Constants.TAG, "initiating download for " + mInfo.mUri);
}
client = AndroidHttpClient.newInstance(userAgent(), mContext);
+ // network traffic on this thread should be counted against the
+ // requesting uid, and is tagged with well-known value.
+ TrafficStats.setThreadStatsTag("android:DownloadManager");
+ TrafficStats.setThreadStatsUid(mInfo.mUid);
+
boolean finished = false;
while(!finished) {
Log.i(Constants.TAG, "Initiating request for download " + mInfo.mId);
@@ -185,10 +190,9 @@ public class DownloadThread extends Thread {
finalStatus = Downloads.Impl.STATUS_UNKNOWN_ERROR;
// falls through to the code that reports an error
} finally {
- if (wakeLock != null) {
- wakeLock.release();
- wakeLock = null;
- }
+ TrafficStats.clearThreadStatsTag();
+ TrafficStats.clearThreadStatsUid();
+
if (client != null) {
client.close();
client = null;
@@ -198,6 +202,11 @@ public class DownloadThread extends Thread {
state.mGotData, state.mFilename,
state.mNewUri, state.mMimeType, errorMsg);
DownloadHandler.getInstance().dequeueDownload(mInfo.mId);
+
+ if (wakeLock != null) {
+ wakeLock.release();
+ wakeLock = null;
+ }
}
mStorageManager.incrementNumDownloadsSoFar();
}
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index ab09551a..543b652d 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -24,7 +24,6 @@ import android.net.Uri;
import android.os.Environment;
import android.os.SystemClock;
import android.provider.Downloads;
-import android.util.Config;
import android.util.Log;
import android.webkit.MimeTypeMap;
@@ -387,7 +386,7 @@ public class Helpers {
} catch (RuntimeException ex) {
if (Constants.LOGV) {
Log.d(Constants.TAG, "invalid selection [" + selection + "] triggered " + ex);
- } else if (Config.LOGD) {
+ } else if (false) {
Log.d(Constants.TAG, "invalid selection triggered " + ex);
}
throw ex;