diff options
Diffstat (limited to 'src')
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; |