diff options
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 19a47631..2d0c807a 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -37,17 +37,22 @@ import android.os.Binder; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.Process; +import android.provider.BaseColumns; import android.provider.Downloads; import android.provider.OpenableColumns; import android.text.TextUtils; +import android.text.format.DateUtils; import android.util.Log; +import com.android.internal.util.IndentingPrintWriter; import com.google.android.collect.Maps; import com.google.common.annotations.VisibleForTesting; import java.io.File; +import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -1199,6 +1204,41 @@ public final class DownloadProvider extends ContentProvider { return ret; } + @Override + public void dump(FileDescriptor fd, PrintWriter writer, String[] args) { + final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ", 120); + + pw.println("Downloads updated in last hour:"); + pw.increaseIndent(); + + final SQLiteDatabase db = mOpenHelper.getReadableDatabase(); + final long modifiedAfter = mSystemFacade.currentTimeMillis() - DateUtils.HOUR_IN_MILLIS; + final Cursor cursor = db.query(DB_TABLE, null, + Downloads.Impl.COLUMN_LAST_MODIFICATION + ">" + modifiedAfter, null, null, null, + Downloads.Impl._ID + " ASC"); + try { + final String[] cols = cursor.getColumnNames(); + final int idCol = cursor.getColumnIndex(BaseColumns._ID); + while (cursor.moveToNext()) { + pw.println("Download #" + cursor.getInt(idCol) + ":"); + pw.increaseIndent(); + for (int i = 0; i < cols.length; i++) { + // Omit sensitive data when dumping + if (Downloads.Impl.COLUMN_COOKIE_DATA.equals(cols[i])) { + continue; + } + pw.printPair(cols[i], cursor.getString(i)); + } + pw.println(); + pw.decreaseIndent(); + } + } finally { + cursor.close(); + } + + pw.decreaseIndent(); + } + private void logVerboseOpenFileInfo(Uri uri, String mode) { Log.v(Constants.TAG, "openFile uri: " + uri + ", mode: " + mode + ", uid: " + Binder.getCallingUid()); @@ -1229,7 +1269,7 @@ public final class DownloadProvider extends ContentProvider { Log.v(Constants.TAG, "file exists in openFile"); } } - cursor.close(); + cursor.close(); } } |