diff options
8 files changed, 336 insertions, 320 deletions
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java index 88cdede2..81895439 100644 --- a/src/com/android/providers/downloads/DownloadInfo.java +++ b/src/com/android/providers/downloads/DownloadInfo.java @@ -90,10 +90,10 @@ public class DownloadInfo { public void sendIntentIfRequested(Uri contentUri, Context context) { if (mPackage != null && mClass != null) { - Intent intent = new Intent(Downloads.ACTION_DOWNLOAD_COMPLETED); + Intent intent = new Intent(Downloads.Impl.ACTION_DOWNLOAD_COMPLETED); intent.setClassName(mPackage, mClass); if (mExtras != null) { - intent.putExtra(Downloads.COLUMN_NOTIFICATION_EXTRAS, mExtras); + intent.putExtra(Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS, mExtras); } // We only send the content: URI, for security reasons. Otherwise, malicious // applications would have an easier time spoofing download results by @@ -121,7 +121,7 @@ public class DownloadInfo { * should be started. */ public boolean isReadyToStart(long now) { - if (mControl == Downloads.CONTROL_PAUSED) { + if (mControl == Downloads.Impl.CONTROL_PAUSED) { // the download is paused, so it's not going to start return false; } @@ -129,16 +129,16 @@ public class DownloadInfo { // status hasn't been initialized yet, this is a new download return true; } - if (mStatus == Downloads.STATUS_PENDING) { + if (mStatus == Downloads.Impl.STATUS_PENDING) { // download is explicit marked as ready to start return true; } - if (mStatus == Downloads.STATUS_RUNNING) { + if (mStatus == Downloads.Impl.STATUS_RUNNING) { // download was interrupted (process killed, loss of power) while it was running, // without a chance to update the database return true; } - if (mStatus == Downloads.STATUS_RUNNING_PAUSED) { + if (mStatus == Downloads.Impl.STATUS_RUNNING_PAUSED) { if (mNumFailed == 0) { // download is waiting for network connectivity to return before it can resume return true; @@ -160,7 +160,7 @@ public class DownloadInfo { * by checking the status. */ public boolean isReadyToRestart(long now) { - if (mControl == Downloads.CONTROL_PAUSED) { + if (mControl == Downloads.Impl.CONTROL_PAUSED) { // the download is paused, so it's not going to restart return false; } @@ -168,11 +168,11 @@ public class DownloadInfo { // download hadn't been initialized yet return true; } - if (mStatus == Downloads.STATUS_PENDING) { + if (mStatus == Downloads.Impl.STATUS_PENDING) { // download is explicit marked as ready to start return true; } - if (mStatus == Downloads.STATUS_RUNNING_PAUSED) { + if (mStatus == Downloads.Impl.STATUS_RUNNING_PAUSED) { if (mNumFailed == 0) { // download is waiting for network connectivity to return before it can resume return true; @@ -190,10 +190,10 @@ public class DownloadInfo { * completion. */ public boolean hasCompletionNotification() { - if (!Downloads.isStatusCompleted(mStatus)) { + if (!Downloads.Impl.isStatusCompleted(mStatus)) { return false; } - if (mVisibility == Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { + if (mVisibility == Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { return true; } return false; @@ -206,7 +206,7 @@ public class DownloadInfo { if (!available) { return false; } - if (mDestination == Downloads.DESTINATION_CACHE_PARTITION_NOROAMING) { + if (mDestination == Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING) { return !roaming; } else { return true; diff --git a/src/com/android/providers/downloads/DownloadNotification.java b/src/com/android/providers/downloads/DownloadNotification.java index fe5217f0..a9362e8d 100644 --- a/src/com/android/providers/downloads/DownloadNotification.java +++ b/src/com/android/providers/downloads/DownloadNotification.java @@ -43,15 +43,16 @@ class DownloadNotification { static final String LOGTAG = "DownloadNotification"; static final String WHERE_RUNNING = - "(" + Downloads.COLUMN_STATUS + " >= '100') AND (" + - Downloads.COLUMN_STATUS + " <= '199') AND (" + - Downloads.COLUMN_VISIBILITY + " IS NULL OR " + - Downloads.COLUMN_VISIBILITY + " == '" + Downloads.VISIBILITY_VISIBLE + "' OR " + - Downloads.COLUMN_VISIBILITY + - " == '" + Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + "')"; + "(" + Downloads.Impl.COLUMN_STATUS + " >= '100') AND (" + + Downloads.Impl.COLUMN_STATUS + " <= '199') AND (" + + Downloads.Impl.COLUMN_VISIBILITY + " IS NULL OR " + + Downloads.Impl.COLUMN_VISIBILITY + " == '" + Downloads.Impl.VISIBILITY_VISIBLE + "' OR " + + Downloads.Impl.COLUMN_VISIBILITY + + " == '" + Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + "')"; static final String WHERE_COMPLETED = - Downloads.COLUMN_STATUS + " >= '200' AND " + - Downloads.COLUMN_VISIBILITY + " == '" + Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + "'"; + Downloads.Impl.COLUMN_STATUS + " >= '200' AND " + + Downloads.Impl.COLUMN_VISIBILITY + + " == '" + Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + "'"; /** @@ -110,17 +111,17 @@ class DownloadNotification { private void updateActiveNotification() { // Active downloads Cursor c = mContext.getContentResolver().query( - Downloads.CONTENT_URI, new String [] { - Downloads._ID, - Downloads.COLUMN_TITLE, - Downloads.COLUMN_DESCRIPTION, - Downloads.COLUMN_NOTIFICATION_PACKAGE, - Downloads.COLUMN_NOTIFICATION_CLASS, - Downloads.COLUMN_CURRENT_BYTES, - Downloads.COLUMN_TOTAL_BYTES, - Downloads.COLUMN_STATUS, Downloads._DATA + Downloads.Impl.CONTENT_URI, new String [] { + Downloads.Impl._ID, + Downloads.Impl.COLUMN_TITLE, + Downloads.Impl.COLUMN_DESCRIPTION, + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, + Downloads.Impl.COLUMN_NOTIFICATION_CLASS, + Downloads.Impl.COLUMN_CURRENT_BYTES, + Downloads.Impl.COLUMN_TOTAL_BYTES, + Downloads.Impl.COLUMN_STATUS, Downloads.Impl._DATA }, - WHERE_RUNNING, null, Downloads._ID); + WHERE_RUNNING, null, Downloads.Impl._ID); if (c == null) { return; @@ -202,7 +203,7 @@ class DownloadNotification { Intent intent = new Intent(Constants.ACTION_LIST); intent.setClassName("com.android.providers.downloads", DownloadReceiver.class.getName()); - intent.setData(Uri.parse(Downloads.CONTENT_URI + "/" + item.mId)); + intent.setData(Uri.parse(Downloads.Impl.CONTENT_URI + "/" + item.mId)); intent.putExtra("multiple", item.mTitleCount > 1); n.contentIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0); @@ -215,20 +216,20 @@ class DownloadNotification { private void updateCompletedNotification() { // Completed downloads Cursor c = mContext.getContentResolver().query( - Downloads.CONTENT_URI, new String [] { - Downloads._ID, - Downloads.COLUMN_TITLE, - Downloads.COLUMN_DESCRIPTION, - Downloads.COLUMN_NOTIFICATION_PACKAGE, - Downloads.COLUMN_NOTIFICATION_CLASS, - Downloads.COLUMN_CURRENT_BYTES, - Downloads.COLUMN_TOTAL_BYTES, - Downloads.COLUMN_STATUS, - Downloads._DATA, - Downloads.COLUMN_LAST_MODIFICATION, - Downloads.COLUMN_DESTINATION + Downloads.Impl.CONTENT_URI, new String [] { + Downloads.Impl._ID, + Downloads.Impl.COLUMN_TITLE, + Downloads.Impl.COLUMN_DESCRIPTION, + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, + Downloads.Impl.COLUMN_NOTIFICATION_CLASS, + Downloads.Impl.COLUMN_CURRENT_BYTES, + Downloads.Impl.COLUMN_TOTAL_BYTES, + Downloads.Impl.COLUMN_STATUS, + Downloads.Impl._DATA, + Downloads.Impl.COLUMN_LAST_MODIFICATION, + Downloads.Impl.COLUMN_DESTINATION }, - WHERE_COMPLETED, null, Downloads._ID); + WHERE_COMPLETED, null, Downloads.Impl._ID); if (c == null) { return; @@ -257,17 +258,17 @@ class DownloadNotification { title = mContext.getResources().getString( R.string.download_unknown_title); } - Uri contentUri = Uri.parse(Downloads.CONTENT_URI + "/" + c.getInt(idColumn)); + Uri contentUri = Uri.parse(Downloads.Impl.CONTENT_URI + "/" + c.getInt(idColumn)); String caption; Intent intent; - if (Downloads.isStatusError(c.getInt(statusColumn))) { + if (Downloads.Impl.isStatusError(c.getInt(statusColumn))) { caption = mContext.getResources() .getString(R.string.notification_download_failed); intent = new Intent(Constants.ACTION_LIST); } else { caption = mContext.getResources() .getString(R.string.notification_download_complete); - if (c.getInt(destinationColumnId) == Downloads.DESTINATION_EXTERNAL) { + if (c.getInt(destinationColumnId) == Downloads.Impl.DESTINATION_EXTERNAL) { intent = new Intent(Constants.ACTION_OPEN); } else { intent = new Intent(Constants.ACTION_LIST); diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index f0190fd1..850059ef 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -76,21 +76,21 @@ public final class DownloadProvider extends ContentProvider { } private static final String[] sAppReadableColumnsArray = new String[] { - Downloads._ID, - Downloads.COLUMN_APP_DATA, - Downloads._DATA, - Downloads.COLUMN_MIME_TYPE, - Downloads.COLUMN_VISIBILITY, - Downloads.COLUMN_DESTINATION, - Downloads.COLUMN_CONTROL, - Downloads.COLUMN_STATUS, - Downloads.COLUMN_LAST_MODIFICATION, - Downloads.COLUMN_NOTIFICATION_PACKAGE, - Downloads.COLUMN_NOTIFICATION_CLASS, - Downloads.COLUMN_TOTAL_BYTES, - Downloads.COLUMN_CURRENT_BYTES, - Downloads.COLUMN_TITLE, - Downloads.COLUMN_DESCRIPTION + Downloads.Impl._ID, + Downloads.Impl.COLUMN_APP_DATA, + Downloads.Impl._DATA, + Downloads.Impl.COLUMN_MIME_TYPE, + Downloads.Impl.COLUMN_VISIBILITY, + Downloads.Impl.COLUMN_DESTINATION, + Downloads.Impl.COLUMN_CONTROL, + Downloads.Impl.COLUMN_STATUS, + Downloads.Impl.COLUMN_LAST_MODIFICATION, + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, + Downloads.Impl.COLUMN_NOTIFICATION_CLASS, + Downloads.Impl.COLUMN_TOTAL_BYTES, + Downloads.Impl.COLUMN_CURRENT_BYTES, + Downloads.Impl.COLUMN_TITLE, + Downloads.Impl.COLUMN_DESCRIPTION }; private static HashSet<String> sAppReadableColumnsSet; @@ -199,35 +199,35 @@ public final class DownloadProvider extends ContentProvider { private void createTable(SQLiteDatabase db) { try { db.execSQL("CREATE TABLE " + DB_TABLE + "(" + - Downloads._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + - Downloads.COLUMN_URI + " TEXT, " + + Downloads.Impl._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + + Downloads.Impl.COLUMN_URI + " TEXT, " + Constants.RETRY_AFTER_X_REDIRECT_COUNT + " INTEGER, " + - Downloads.COLUMN_APP_DATA + " TEXT, " + - Downloads.COLUMN_NO_INTEGRITY + " BOOLEAN, " + - Downloads.COLUMN_FILE_NAME_HINT + " TEXT, " + + Downloads.Impl.COLUMN_APP_DATA + " TEXT, " + + Downloads.Impl.COLUMN_NO_INTEGRITY + " BOOLEAN, " + + Downloads.Impl.COLUMN_FILE_NAME_HINT + " TEXT, " + Constants.OTA_UPDATE + " BOOLEAN, " + - Downloads._DATA + " TEXT, " + - Downloads.COLUMN_MIME_TYPE + " TEXT, " + - Downloads.COLUMN_DESTINATION + " INTEGER, " + + Downloads.Impl._DATA + " TEXT, " + + Downloads.Impl.COLUMN_MIME_TYPE + " TEXT, " + + Downloads.Impl.COLUMN_DESTINATION + " INTEGER, " + Constants.NO_SYSTEM_FILES + " BOOLEAN, " + - Downloads.COLUMN_VISIBILITY + " INTEGER, " + - Downloads.COLUMN_CONTROL + " INTEGER, " + - Downloads.COLUMN_STATUS + " INTEGER, " + + Downloads.Impl.COLUMN_VISIBILITY + " INTEGER, " + + Downloads.Impl.COLUMN_CONTROL + " INTEGER, " + + Downloads.Impl.COLUMN_STATUS + " INTEGER, " + Constants.FAILED_CONNECTIONS + " INTEGER, " + - Downloads.COLUMN_LAST_MODIFICATION + " BIGINT, " + - Downloads.COLUMN_NOTIFICATION_PACKAGE + " TEXT, " + - Downloads.COLUMN_NOTIFICATION_CLASS + " TEXT, " + - Downloads.COLUMN_NOTIFICATION_EXTRAS + " TEXT, " + - Downloads.COLUMN_COOKIE_DATA + " TEXT, " + - Downloads.COLUMN_USER_AGENT + " TEXT, " + - Downloads.COLUMN_REFERER + " TEXT, " + - Downloads.COLUMN_TOTAL_BYTES + " INTEGER, " + - Downloads.COLUMN_CURRENT_BYTES + " INTEGER, " + + Downloads.Impl.COLUMN_LAST_MODIFICATION + " BIGINT, " + + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE + " TEXT, " + + Downloads.Impl.COLUMN_NOTIFICATION_CLASS + " TEXT, " + + Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS + " TEXT, " + + Downloads.Impl.COLUMN_COOKIE_DATA + " TEXT, " + + Downloads.Impl.COLUMN_USER_AGENT + " TEXT, " + + Downloads.Impl.COLUMN_REFERER + " TEXT, " + + Downloads.Impl.COLUMN_TOTAL_BYTES + " INTEGER, " + + Downloads.Impl.COLUMN_CURRENT_BYTES + " INTEGER, " + Constants.ETAG + " TEXT, " + Constants.UID + " INTEGER, " + - Downloads.COLUMN_OTHER_UID + " INTEGER, " + - Downloads.COLUMN_TITLE + " TEXT, " + - Downloads.COLUMN_DESCRIPTION + " TEXT, " + + Downloads.Impl.COLUMN_OTHER_UID + " INTEGER, " + + Downloads.Impl.COLUMN_TITLE + " TEXT, " + + Downloads.Impl.COLUMN_DESCRIPTION + " TEXT, " + Constants.MEDIA_SCANNED + " BOOLEAN);"); } catch (SQLException ex) { Log.e(Constants.TAG, "couldn't create table in downloads database"); @@ -263,70 +263,71 @@ public final class DownloadProvider extends ContentProvider { ContentValues filteredValues = new ContentValues(); - copyString(Downloads.COLUMN_URI, values, filteredValues); - copyString(Downloads.COLUMN_APP_DATA, values, filteredValues); - copyBoolean(Downloads.COLUMN_NO_INTEGRITY, values, filteredValues); - copyString(Downloads.COLUMN_FILE_NAME_HINT, values, filteredValues); - copyString(Downloads.COLUMN_MIME_TYPE, values, filteredValues); - Integer dest = values.getAsInteger(Downloads.COLUMN_DESTINATION); + copyString(Downloads.Impl.COLUMN_URI, values, filteredValues); + copyString(Downloads.Impl.COLUMN_APP_DATA, values, filteredValues); + copyBoolean(Downloads.Impl.COLUMN_NO_INTEGRITY, values, filteredValues); + copyString(Downloads.Impl.COLUMN_FILE_NAME_HINT, values, filteredValues); + copyString(Downloads.Impl.COLUMN_MIME_TYPE, values, filteredValues); + Integer dest = values.getAsInteger(Downloads.Impl.COLUMN_DESTINATION); if (dest != null) { - if (getContext().checkCallingPermission(Downloads.PERMISSION_ACCESS_ADVANCED) + if (getContext().checkCallingPermission(Downloads.Impl.PERMISSION_ACCESS_ADVANCED) != PackageManager.PERMISSION_GRANTED - && dest != Downloads.DESTINATION_EXTERNAL - && dest != Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE) { + && dest != Downloads.Impl.DESTINATION_EXTERNAL + && dest != Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE) { throw new SecurityException("unauthorized destination code"); } - filteredValues.put(Downloads.COLUMN_DESTINATION, dest); + filteredValues.put(Downloads.Impl.COLUMN_DESTINATION, dest); } - Integer vis = values.getAsInteger(Downloads.COLUMN_VISIBILITY); + Integer vis = values.getAsInteger(Downloads.Impl.COLUMN_VISIBILITY); if (vis == null) { - if (dest == Downloads.DESTINATION_EXTERNAL) { - filteredValues.put(Downloads.COLUMN_VISIBILITY, - Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); + if (dest == Downloads.Impl.DESTINATION_EXTERNAL) { + filteredValues.put(Downloads.Impl.COLUMN_VISIBILITY, + Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } else { - filteredValues.put(Downloads.COLUMN_VISIBILITY, Downloads.VISIBILITY_HIDDEN); + filteredValues.put(Downloads.Impl.COLUMN_VISIBILITY, + Downloads.Impl.VISIBILITY_HIDDEN); } } else { - filteredValues.put(Downloads.COLUMN_VISIBILITY, vis); + filteredValues.put(Downloads.Impl.COLUMN_VISIBILITY, vis); } - copyInteger(Downloads.COLUMN_CONTROL, values, filteredValues); - filteredValues.put(Downloads.COLUMN_STATUS, Downloads.STATUS_PENDING); - filteredValues.put(Downloads.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); - String pckg = values.getAsString(Downloads.COLUMN_NOTIFICATION_PACKAGE); - String clazz = values.getAsString(Downloads.COLUMN_NOTIFICATION_CLASS); + copyInteger(Downloads.Impl.COLUMN_CONTROL, values, filteredValues); + filteredValues.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_PENDING); + filteredValues.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); + String pckg = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE); + String clazz = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_CLASS); if (pckg != null && clazz != null) { int uid = Binder.getCallingUid(); try { if (uid == 0 || getContext().getPackageManager().getApplicationInfo(pckg, 0).uid == uid) { - filteredValues.put(Downloads.COLUMN_NOTIFICATION_PACKAGE, pckg); - filteredValues.put(Downloads.COLUMN_NOTIFICATION_CLASS, clazz); + filteredValues.put(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, pckg); + filteredValues.put(Downloads.Impl.COLUMN_NOTIFICATION_CLASS, clazz); } } catch (PackageManager.NameNotFoundException ex) { /* ignored for now */ } } - copyString(Downloads.COLUMN_NOTIFICATION_EXTRAS, values, filteredValues); - copyString(Downloads.COLUMN_COOKIE_DATA, values, filteredValues); - copyString(Downloads.COLUMN_USER_AGENT, values, filteredValues); - copyString(Downloads.COLUMN_REFERER, values, filteredValues); - if (getContext().checkCallingPermission(Downloads.PERMISSION_ACCESS_ADVANCED) + copyString(Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS, values, filteredValues); + copyString(Downloads.Impl.COLUMN_COOKIE_DATA, values, filteredValues); + copyString(Downloads.Impl.COLUMN_USER_AGENT, values, filteredValues); + copyString(Downloads.Impl.COLUMN_REFERER, values, filteredValues); + if (getContext().checkCallingPermission(Downloads.Impl.PERMISSION_ACCESS_ADVANCED) == PackageManager.PERMISSION_GRANTED) { - copyInteger(Downloads.COLUMN_OTHER_UID, values, filteredValues); + copyInteger(Downloads.Impl.COLUMN_OTHER_UID, values, filteredValues); } filteredValues.put(Constants.UID, Binder.getCallingUid()); if (Binder.getCallingUid() == 0) { copyInteger(Constants.UID, values, filteredValues); } - copyString(Downloads.COLUMN_TITLE, values, filteredValues); - copyString(Downloads.COLUMN_DESCRIPTION, values, filteredValues); + copyString(Downloads.Impl.COLUMN_TITLE, values, filteredValues); + copyString(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues); if (Constants.LOGVV) { Log.v(Constants.TAG, "initiating download with UID " + filteredValues.getAsInteger(Constants.UID)); - if (filteredValues.containsKey(Downloads.COLUMN_OTHER_UID)) { + if (filteredValues.containsKey(Downloads.Impl.COLUMN_OTHER_UID)) { Log.v(Constants.TAG, "other UID " + - filteredValues.getAsInteger(Downloads.COLUMN_OTHER_UID)); + filteredValues.getAsInteger(Downloads.Impl.COLUMN_OTHER_UID)); } } @@ -339,7 +340,7 @@ public final class DownloadProvider extends ContentProvider { if (rowID != -1) { context.startService(new Intent(context, DownloadService.class)); - ret = Uri.parse(Downloads.CONTENT_URI + "/" + rowID); + ret = Uri.parse(Downloads.Impl.CONTENT_URI + "/" + rowID); context.getContentResolver().notifyChange(uri, null); } else { if (Config.LOGD) { @@ -373,7 +374,7 @@ public final class DownloadProvider extends ContentProvider { } case DOWNLOADS_ID: { qb.setTables(DB_TABLE); - qb.appendWhere(Downloads._ID + "="); + qb.appendWhere(Downloads.Impl._ID + "="); qb.appendWhere(uri.getPathSegments().get(1)); emptyWhere = false; break; @@ -392,7 +393,7 @@ public final class DownloadProvider extends ContentProvider { qb.appendWhere(" AND "); } qb.appendWhere("( " + Constants.UID + "=" + Binder.getCallingUid() + " OR " - + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )"); + + Downloads.Impl.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )"); emptyWhere = false; if (projection == null) { @@ -489,16 +490,16 @@ public final class DownloadProvider extends ContentProvider { ContentValues filteredValues; if (Binder.getCallingPid() != Process.myPid()) { filteredValues = new ContentValues(); - copyString(Downloads.COLUMN_APP_DATA, values, filteredValues); - copyInteger(Downloads.COLUMN_VISIBILITY, values, filteredValues); - Integer i = values.getAsInteger(Downloads.COLUMN_CONTROL); + copyString(Downloads.Impl.COLUMN_APP_DATA, values, filteredValues); + copyInteger(Downloads.Impl.COLUMN_VISIBILITY, values, filteredValues); + Integer i = values.getAsInteger(Downloads.Impl.COLUMN_CONTROL); if (i != null) { - filteredValues.put(Downloads.COLUMN_CONTROL, i); + filteredValues.put(Downloads.Impl.COLUMN_CONTROL, i); startService = true; } - copyInteger(Downloads.COLUMN_CONTROL, values, filteredValues); - copyString(Downloads.COLUMN_TITLE, values, filteredValues); - copyString(Downloads.COLUMN_DESCRIPTION, values, filteredValues); + copyInteger(Downloads.Impl.COLUMN_CONTROL, values, filteredValues); + copyString(Downloads.Impl.COLUMN_TITLE, values, filteredValues); + copyString(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues); } else { filteredValues = values; } @@ -519,11 +520,11 @@ public final class DownloadProvider extends ContentProvider { if (match == DOWNLOADS_ID) { String segment = uri.getPathSegments().get(1); rowId = Long.parseLong(segment); - myWhere += " ( " + Downloads._ID + " = " + rowId + " ) "; + myWhere += " ( " + Downloads.Impl._ID + " = " + rowId + " ) "; } if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0) { myWhere += " AND ( " + Constants.UID + "=" + Binder.getCallingUid() + " OR " - + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )"; + + Downloads.Impl.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )"; } if (filteredValues.size() > 0) { count = db.update(DB_TABLE, filteredValues, myWhere, whereArgs); @@ -575,11 +576,12 @@ public final class DownloadProvider extends ContentProvider { if (match == DOWNLOADS_ID) { String segment = uri.getPathSegments().get(1); long rowId = Long.parseLong(segment); - myWhere += " ( " + Downloads._ID + " = " + rowId + " ) "; + myWhere += " ( " + Downloads.Impl._ID + " = " + rowId + " ) "; } if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0) { myWhere += " AND ( " + Constants.UID + "=" + Binder.getCallingUid() + " OR " - + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )"; + + Downloads.Impl.COLUMN_OTHER_UID + "=" + + Binder.getCallingUid() + " )"; } count = db.delete(DB_TABLE, myWhere, whereArgs); break; @@ -604,7 +606,8 @@ public final class DownloadProvider extends ContentProvider { if (Constants.LOGVV) { Log.v(Constants.TAG, "openFile uri: " + uri + ", mode: " + mode + ", uid: " + Binder.getCallingUid()); - Cursor cursor = query(Downloads.CONTENT_URI, new String[] { "_id" }, null, null, "_id"); + Cursor cursor = query(Downloads.Impl.CONTENT_URI, + new String[] { "_id" }, null, null, "_id"); if (cursor == null) { Log.v(Constants.TAG, "null cursor in openFile"); } else { @@ -673,7 +676,7 @@ public final class DownloadProvider extends ContentProvider { throw new FileNotFoundException("couldn't open file"); } else { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); + values.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); update(uri, values, null, null); } return ret; diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java index 2065c649..e8f10e7d 100644 --- a/src/com/android/providers/downloads/DownloadReceiver.java +++ b/src/com/android/providers/downloads/DownloadReceiver.java @@ -86,22 +86,23 @@ public class DownloadReceiver extends BroadcastReceiver { intent.getData(), null, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { - int statusColumn = cursor.getColumnIndexOrThrow(Downloads.COLUMN_STATUS); + int statusColumn = cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS); int status = cursor.getInt(statusColumn); int visibilityColumn = - cursor.getColumnIndexOrThrow(Downloads.COLUMN_VISIBILITY); + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_VISIBILITY); int visibility = cursor.getInt(visibilityColumn); - if (Downloads.isStatusCompleted(status) - && visibility == Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { + if (Downloads.Impl.isStatusCompleted(status) + && visibility == Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_VISIBILITY, Downloads.VISIBILITY_VISIBLE); + values.put(Downloads.Impl.COLUMN_VISIBILITY, + Downloads.Impl.VISIBILITY_VISIBLE); context.getContentResolver().update(intent.getData(), values, null, null); } if (intent.getAction().equals(Constants.ACTION_OPEN)) { - int filenameColumn = cursor.getColumnIndexOrThrow(Downloads._DATA); + int filenameColumn = cursor.getColumnIndexOrThrow(Downloads.Impl._DATA); int mimetypeColumn = - cursor.getColumnIndexOrThrow(Downloads.COLUMN_MIME_TYPE); + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE); String filename = cursor.getString(filenameColumn); String mimetype = cursor.getString(mimetypeColumn); Uri path = Uri.parse(filename); @@ -122,17 +123,18 @@ public class DownloadReceiver extends BroadcastReceiver { // swallow the exception entirely } } else { - int packageColumn = - cursor.getColumnIndexOrThrow(Downloads.COLUMN_NOTIFICATION_PACKAGE); - int classColumn = - cursor.getColumnIndexOrThrow(Downloads.COLUMN_NOTIFICATION_CLASS); + int packageColumn = cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE); + int classColumn = cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_NOTIFICATION_CLASS); String pckg = cursor.getString(packageColumn); String clazz = cursor.getString(classColumn); if (pckg != null && clazz != null) { - Intent appIntent = new Intent(Downloads.ACTION_NOTIFICATION_CLICKED); + Intent appIntent = + new Intent(Downloads.Impl.ACTION_NOTIFICATION_CLICKED); appIntent.setClassName(pckg, clazz); if (intent.getBooleanExtra("multiple", true)) { - appIntent.setData(Downloads.CONTENT_URI); + appIntent.setData(Downloads.Impl.CONTENT_URI); } else { appIntent.setData(intent.getData()); } @@ -155,15 +157,16 @@ public class DownloadReceiver extends BroadcastReceiver { intent.getData(), null, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { - int statusColumn = cursor.getColumnIndexOrThrow(Downloads.COLUMN_STATUS); + int statusColumn = cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS); int status = cursor.getInt(statusColumn); int visibilityColumn = - cursor.getColumnIndexOrThrow(Downloads.COLUMN_VISIBILITY); + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_VISIBILITY); int visibility = cursor.getInt(visibilityColumn); - if (Downloads.isStatusCompleted(status) - && visibility == Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { + if (Downloads.Impl.isStatusCompleted(status) + && visibility == Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_VISIBILITY, Downloads.VISIBILITY_VISIBLE); + values.put(Downloads.Impl.COLUMN_VISIBILITY, + Downloads.Impl.VISIBILITY_VISIBLE); context.getContentResolver().update(intent.getData(), values, null, null); } } diff --git a/src/com/android/providers/downloads/DownloadService.java b/src/com/android/providers/downloads/DownloadService.java index a246d29f..c451d3c6 100644 --- a/src/com/android/providers/downloads/DownloadService.java +++ b/src/com/android/providers/downloads/DownloadService.java @@ -203,7 +203,7 @@ public class DownloadService extends Service { mDownloads = Lists.newArrayList(); mObserver = new DownloadManagerContentObserver(); - getContentResolver().registerContentObserver(Downloads.CONTENT_URI, + getContentResolver().registerContentObserver(Downloads.Impl.CONTENT_URI, true, mObserver); mMediaScannerService = null; @@ -307,8 +307,8 @@ public class DownloadService extends Service { boolean networkRoaming = Helpers.isNetworkRoaming(DownloadService.this); long now = System.currentTimeMillis(); - Cursor cursor = getContentResolver().query(Downloads.CONTENT_URI, - null, null, null, Downloads._ID); + Cursor cursor = getContentResolver().query(Downloads.Impl.CONTENT_URI, + null, null, null, Downloads.Impl._ID); if (cursor == null) { // TODO: this doesn't look right, it'd leave the loop in an inconsistent state @@ -325,7 +325,7 @@ public class DownloadService extends Service { boolean isAfterLast = cursor.isAfterLast(); - int idColumn = cursor.getColumnIndexOrThrow(Downloads._ID); + int idColumn = cursor.getColumnIndexOrThrow(Downloads.Impl._ID); /* * Walk the cursor and the local array to keep them in sync. The key @@ -491,8 +491,8 @@ public class DownloadService extends Service { fileSet.add(files[i].getPath()); } - Cursor cursor = getContentResolver().query(Downloads.CONTENT_URI, - new String[] { Downloads._DATA }, null, null, null); + Cursor cursor = getContentResolver().query(Downloads.Impl.CONTENT_URI, + new String[] { Downloads.Impl._DATA }, null, null, null); if (cursor != null) { if (cursor.moveToFirst()) { do { @@ -515,10 +515,10 @@ public class DownloadService extends Service { * Drops old rows from the database to prevent it from growing too large */ private void trimDatabase() { - Cursor cursor = getContentResolver().query(Downloads.CONTENT_URI, - new String[] { Downloads._ID }, - Downloads.COLUMN_STATUS + " >= '200'", null, - Downloads.COLUMN_LAST_MODIFICATION); + Cursor cursor = getContentResolver().query(Downloads.Impl.CONTENT_URI, + new String[] { Downloads.Impl._ID }, + Downloads.Impl.COLUMN_STATUS + " >= '200'", null, + Downloads.Impl.COLUMN_LAST_MODIFICATION); if (cursor == null) { // This isn't good - if we can't do basic queries in our database, nothing's gonna work Log.e(Constants.TAG, "null cursor in trimDatabase"); @@ -526,11 +526,11 @@ public class DownloadService extends Service { } if (cursor.moveToFirst()) { int numDelete = cursor.getCount() - Constants.MAX_DOWNLOADS; - int columnId = cursor.getColumnIndexOrThrow(Downloads._ID); + int columnId = cursor.getColumnIndexOrThrow(Downloads.Impl._ID); while (numDelete > 0) { getContentResolver().delete( - ContentUris.withAppendedId(Downloads.CONTENT_URI, cursor.getLong(columnId)), - null, null); + ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, + cursor.getLong(columnId)), null, null); if (!cursor.moveToNext()) { break; } @@ -547,35 +547,39 @@ public class DownloadService extends Service { private void insertDownload( Cursor cursor, int arrayPos, boolean networkAvailable, boolean networkRoaming, long now) { - int statusColumn = cursor.getColumnIndexOrThrow(Downloads.COLUMN_STATUS); + int statusColumn = cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS); int failedColumn = cursor.getColumnIndexOrThrow(Constants.FAILED_CONNECTIONS); int retryRedirect = cursor.getInt(cursor.getColumnIndexOrThrow(Constants.RETRY_AFTER_X_REDIRECT_COUNT)); DownloadInfo info = new DownloadInfo( - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads._ID)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_URI)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_NO_INTEGRITY)) == 1, - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_FILE_NAME_HINT)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads._DATA)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_MIME_TYPE)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_DESTINATION)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_VISIBILITY)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_CONTROL)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl._ID)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_URI)), + cursor.getInt(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_NO_INTEGRITY)) == 1, + cursor.getString(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_FILE_NAME_HINT)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl._DATA)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_DESTINATION)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_VISIBILITY)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_CONTROL)), cursor.getInt(statusColumn), cursor.getInt(failedColumn), retryRedirect & 0xfffffff, retryRedirect >> 28, - cursor.getLong(cursor.getColumnIndexOrThrow(Downloads.COLUMN_LAST_MODIFICATION)), + cursor.getLong(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_LAST_MODIFICATION)), + cursor.getString(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE)), cursor.getString(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_NOTIFICATION_PACKAGE)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_NOTIFICATION_CLASS)), + Downloads.Impl.COLUMN_NOTIFICATION_CLASS)), cursor.getString(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_NOTIFICATION_EXTRAS)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_COOKIE_DATA)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_USER_AGENT)), - cursor.getString(cursor.getColumnIndexOrThrow(Downloads.COLUMN_REFERER)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_TOTAL_BYTES)), - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_CURRENT_BYTES)), + Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_COOKIE_DATA)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_USER_AGENT)), + cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_REFERER)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_TOTAL_BYTES)), + cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_CURRENT_BYTES)), cursor.getString(cursor.getColumnIndexOrThrow(Constants.ETAG)), cursor.getInt(cursor.getColumnIndexOrThrow(Constants.MEDIA_SCANNED)) == 1); @@ -609,8 +613,8 @@ public class DownloadService extends Service { mDownloads.add(arrayPos, info); if (info.mStatus == 0 - && (info.mDestination == Downloads.DESTINATION_EXTERNAL - || info.mDestination == Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE) + && (info.mDestination == Downloads.Impl.DESTINATION_EXTERNAL + || info.mDestination == Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE) && info.mMimeType != null && !DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING.equalsIgnoreCase(info.mMimeType)) { // Check to see if we are allowed to download this file. Only files @@ -634,11 +638,11 @@ public class DownloadService extends Service { if (Config.LOGD) { Log.d(Constants.TAG, "no application to handle MIME type " + info.mMimeType); } - info.mStatus = Downloads.STATUS_NOT_ACCEPTABLE; + info.mStatus = Downloads.Impl.STATUS_NOT_ACCEPTABLE; - Uri uri = ContentUris.withAppendedId(Downloads.CONTENT_URI, info.mId); + Uri uri = ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, info.mId); ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_STATUS, Downloads.STATUS_NOT_ACCEPTABLE); + values.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_NOT_ACCEPTABLE); getContentResolver().update(uri, values, null, null); info.sendIntentIfRequested(uri, this); return; @@ -654,12 +658,12 @@ public class DownloadService extends Service { if (info.mHasActiveThread) { throw new IllegalStateException("Multiple threads on same download on insert"); } - if (info.mStatus != Downloads.STATUS_RUNNING) { - info.mStatus = Downloads.STATUS_RUNNING; + if (info.mStatus != Downloads.Impl.STATUS_RUNNING) { + info.mStatus = Downloads.Impl.STATUS_RUNNING; ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_STATUS, info.mStatus); + values.put(Downloads.Impl.COLUMN_STATUS, info.mStatus); getContentResolver().update( - ContentUris.withAppendedId(Downloads.CONTENT_URI, info.mId), + ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, info.mId), values, null, null); } DownloadThread downloader = new DownloadThread(this, info); @@ -668,12 +672,12 @@ public class DownloadService extends Service { } } else { if (info.mStatus == 0 - || info.mStatus == Downloads.STATUS_PENDING - || info.mStatus == Downloads.STATUS_RUNNING) { - info.mStatus = Downloads.STATUS_RUNNING_PAUSED; - Uri uri = ContentUris.withAppendedId(Downloads.CONTENT_URI, info.mId); + || info.mStatus == Downloads.Impl.STATUS_PENDING + || info.mStatus == Downloads.Impl.STATUS_RUNNING) { + info.mStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; + Uri uri = ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, info.mId); ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_STATUS, Downloads.STATUS_RUNNING_PAUSED); + values.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_RUNNING_PAUSED); getContentResolver().update(uri, values, null, null); } } @@ -686,30 +690,32 @@ public class DownloadService extends Service { Cursor cursor, int arrayPos, boolean networkAvailable, boolean networkRoaming, long now) { DownloadInfo info = (DownloadInfo) mDownloads.get(arrayPos); - int statusColumn = cursor.getColumnIndexOrThrow(Downloads.COLUMN_STATUS); + int statusColumn = cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS); int failedColumn = cursor.getColumnIndexOrThrow(Constants.FAILED_CONNECTIONS); - info.mId = cursor.getInt(cursor.getColumnIndexOrThrow(Downloads._ID)); - info.mUri = stringFromCursor(info.mUri, cursor, Downloads.COLUMN_URI); - info.mNoIntegrity = - cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_NO_INTEGRITY)) == 1; - info.mHint = stringFromCursor(info.mHint, cursor, Downloads.COLUMN_FILE_NAME_HINT); - info.mFileName = stringFromCursor(info.mFileName, cursor, Downloads._DATA); - info.mMimeType = stringFromCursor(info.mMimeType, cursor, Downloads.COLUMN_MIME_TYPE); + info.mId = cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.Impl._ID)); + info.mUri = stringFromCursor(info.mUri, cursor, Downloads.Impl.COLUMN_URI); + info.mNoIntegrity = cursor.getInt(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_NO_INTEGRITY)) == 1; + info.mHint = stringFromCursor(info.mHint, cursor, Downloads.Impl.COLUMN_FILE_NAME_HINT); + info.mFileName = stringFromCursor(info.mFileName, cursor, Downloads.Impl._DATA); + info.mMimeType = stringFromCursor(info.mMimeType, cursor, Downloads.Impl.COLUMN_MIME_TYPE); info.mDestination = cursor.getInt(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_DESTINATION)); + Downloads.Impl.COLUMN_DESTINATION)); int newVisibility = cursor.getInt(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_VISIBILITY)); - if (info.mVisibility == Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED - && newVisibility != Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED - && Downloads.isStatusCompleted(info.mStatus)) { + Downloads.Impl.COLUMN_VISIBILITY)); + if (info.mVisibility == Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + && newVisibility != Downloads.Impl.VISIBILITY_VISIBLE_NOTIFY_COMPLETED + && Downloads.Impl.isStatusCompleted(info.mStatus)) { mNotifier.mNotificationMgr.cancel(info.mId); } info.mVisibility = newVisibility; synchronized (info) { - info.mControl = cursor.getInt(cursor.getColumnIndexOrThrow(Downloads.COLUMN_CONTROL)); + info.mControl = cursor.getInt(cursor.getColumnIndexOrThrow( + Downloads.Impl.COLUMN_CONTROL)); } int newStatus = cursor.getInt(statusColumn); - if (!Downloads.isStatusCompleted(info.mStatus) && Downloads.isStatusCompleted(newStatus)) { + if (!Downloads.Impl.isStatusCompleted(info.mStatus) && + Downloads.Impl.isStatusCompleted(newStatus)) { mNotifier.mNotificationMgr.cancel(info.mId); } info.mStatus = newStatus; @@ -719,17 +725,19 @@ public class DownloadService extends Service { info.mRetryAfter = retryRedirect & 0xfffffff; info.mRedirectCount = retryRedirect >> 28; info.mLastMod = cursor.getLong(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_LAST_MODIFICATION)); + Downloads.Impl.COLUMN_LAST_MODIFICATION)); info.mPackage = stringFromCursor( - info.mPackage, cursor, Downloads.COLUMN_NOTIFICATION_PACKAGE); - info.mClass = stringFromCursor(info.mClass, cursor, Downloads.COLUMN_NOTIFICATION_CLASS); - info.mCookies = stringFromCursor(info.mCookies, cursor, Downloads.COLUMN_COOKIE_DATA); - info.mUserAgent = stringFromCursor(info.mUserAgent, cursor, Downloads.COLUMN_USER_AGENT); - info.mReferer = stringFromCursor(info.mReferer, cursor, Downloads.COLUMN_REFERER); + info.mPackage, cursor, Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE); + info.mClass = stringFromCursor( + info.mClass, cursor, Downloads.Impl.COLUMN_NOTIFICATION_CLASS); + info.mCookies = stringFromCursor(info.mCookies, cursor, Downloads.Impl.COLUMN_COOKIE_DATA); + info.mUserAgent = stringFromCursor( + info.mUserAgent, cursor, Downloads.Impl.COLUMN_USER_AGENT); + info.mReferer = stringFromCursor(info.mReferer, cursor, Downloads.Impl.COLUMN_REFERER); info.mTotalBytes = cursor.getInt(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_TOTAL_BYTES)); + Downloads.Impl.COLUMN_TOTAL_BYTES)); info.mCurrentBytes = cursor.getInt(cursor.getColumnIndexOrThrow( - Downloads.COLUMN_CURRENT_BYTES)); + Downloads.Impl.COLUMN_CURRENT_BYTES)); info.mETag = stringFromCursor(info.mETag, cursor, Constants.ETAG); info.mMediaScanned = cursor.getInt(cursor.getColumnIndexOrThrow(Constants.MEDIA_SCANNED)) == 1; @@ -743,11 +751,11 @@ public class DownloadService extends Service { if (info.mHasActiveThread) { throw new IllegalStateException("Multiple threads on same download on update"); } - info.mStatus = Downloads.STATUS_RUNNING; + info.mStatus = Downloads.Impl.STATUS_RUNNING; ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_STATUS, info.mStatus); + values.put(Downloads.Impl.COLUMN_STATUS, info.mStatus); getContentResolver().update( - ContentUris.withAppendedId(Downloads.CONTENT_URI, info.mId), + ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, info.mId), values, null, null); DownloadThread downloader = new DownloadThread(this, info); info.mHasActiveThread = true; @@ -792,9 +800,10 @@ public class DownloadService extends Service { */ private void deleteDownload(int arrayPos) { DownloadInfo info = (DownloadInfo) mDownloads.get(arrayPos); - if (info.mStatus == Downloads.STATUS_RUNNING) { - info.mStatus = Downloads.STATUS_CANCELED; - } else if (info.mDestination != Downloads.DESTINATION_EXTERNAL && info.mFileName != null) { + if (info.mStatus == Downloads.Impl.STATUS_RUNNING) { + info.mStatus = Downloads.Impl.STATUS_CANCELED; + } else if (info.mDestination != Downloads.Impl.DESTINATION_EXTERNAL + && info.mFileName != null) { new File(info.mFileName).delete(); } mNotifier.mNotificationMgr.cancel(info.mId); @@ -811,10 +820,10 @@ public class DownloadService extends Service { */ private long nextAction(int arrayPos, long now) { DownloadInfo info = (DownloadInfo) mDownloads.get(arrayPos); - if (Downloads.isStatusCompleted(info.mStatus)) { + if (Downloads.Impl.isStatusCompleted(info.mStatus)) { return -1; } - if (info.mStatus != Downloads.STATUS_RUNNING_PAUSED) { + if (info.mStatus != Downloads.Impl.STATUS_RUNNING_PAUSED) { return 0; } if (info.mNumFailed == 0) { @@ -841,8 +850,8 @@ public class DownloadService extends Service { private boolean shouldScanFile(int arrayPos) { DownloadInfo info = (DownloadInfo) mDownloads.get(arrayPos); return !info.mMediaScanned - && info.mDestination == Downloads.DESTINATION_EXTERNAL - && Downloads.isStatusSuccess(info.mStatus) + && info.mDestination == Downloads.Impl.DESTINATION_EXTERNAL + && Downloads.Impl.isStatusSuccess(info.mStatus) && !DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING.equalsIgnoreCase(info.mMimeType); } @@ -869,9 +878,9 @@ public class DownloadService extends Service { if (cursor != null) { ContentValues values = new ContentValues(); values.put(Constants.MEDIA_SCANNED, 1); - getContentResolver().update( - ContentUris.withAppendedId(Downloads.CONTENT_URI, - cursor.getLong(cursor.getColumnIndexOrThrow(Downloads._ID))), + getContentResolver().update(ContentUris.withAppendedId( + Downloads.Impl.CONTENT_URI, cursor.getLong( + cursor.getColumnIndexOrThrow(Downloads.Impl._ID))), values, null, null); } return true; diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index 2e7ab1dd..2709c4f5 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -81,7 +81,7 @@ public class DownloadThread extends Thread { public void run() { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); - int finalStatus = Downloads.STATUS_UNKNOWN_ERROR; + int finalStatus = Downloads.Impl.STATUS_UNKNOWN_ERROR; boolean countRetry = false; int retryAfter = 0; int redirectCount = mInfo.mRedirectCount; @@ -92,7 +92,7 @@ public class DownloadThread extends Thread { FileOutputStream stream = null; AndroidHttpClient client = null; PowerManager.WakeLock wakeLock = null; - Uri contentUri = Uri.parse(Downloads.CONTENT_URI + "/" + mInfo.mId); + Uri contentUri = Uri.parse(Downloads.Impl.CONTENT_URI + "/" + mInfo.mId); try { boolean continuingDownload = false; @@ -114,7 +114,7 @@ public class DownloadThread extends Thread { filename = mInfo.mFileName; if (filename != null) { if (!Helpers.isFilenameValid(filename)) { - finalStatus = Downloads.STATUS_FILE_ERROR; + finalStatus = Downloads.Impl.STATUS_FILE_ERROR; notifyDownloadCompleted( finalStatus, false, 0, 0, false, filename, null, mInfo.mMimeType); return; @@ -134,7 +134,7 @@ public class DownloadThread extends Thread { "can't resume interrupted non-resumable download"); } f.delete(); - finalStatus = Downloads.STATUS_PRECONDITION_FAILED; + finalStatus = Downloads.Impl.STATUS_PRECONDITION_FAILED; notifyDownloadCompleted( finalStatus, false, 0, 0, false, filename, null, mInfo.mMimeType); return; @@ -158,7 +158,7 @@ public class DownloadThread extends Thread { client = AndroidHttpClient.newInstance(userAgent()); - if (stream != null && mInfo.mDestination == Downloads.DESTINATION_EXTERNAL + if (stream != null && mInfo.mDestination == Downloads.Impl.DESTINATION_EXTERNAL && !DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING .equalsIgnoreCase(mimeType)) { try { @@ -211,7 +211,7 @@ http_request_loop: Log.d(Constants.TAG, "Arg exception trying to execute request for " + mInfo.mId + " : " + ex); } - finalStatus = Downloads.STATUS_BAD_REQUEST; + finalStatus = Downloads.Impl.STATUS_BAD_REQUEST; request.abort(); break http_request_loop; } catch (IOException ex) { @@ -223,9 +223,9 @@ http_request_loop: } } if (!Helpers.isNetworkAvailable(mContext)) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; } else if (mInfo.mNumFailed < Constants.MAX_RETRIES) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; countRetry = true; } else { if (Constants.LOGV) { @@ -235,7 +235,7 @@ http_request_loop: Log.d(Constants.TAG, "IOException trying to execute request for " + mInfo.mId + " : " + ex); } - finalStatus = Downloads.STATUS_HTTP_DATA_ERROR; + finalStatus = Downloads.Impl.STATUS_HTTP_DATA_ERROR; } request.abort(); break http_request_loop; @@ -246,7 +246,7 @@ http_request_loop: if (Constants.LOGVV) { Log.v(Constants.TAG, "got HTTP response code 503"); } - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; countRetry = true; Header header = response.getFirstHeader("Retry-After"); if (header != null) { @@ -287,7 +287,7 @@ http_request_loop: } else if (Config.LOGD) { Log.d(Constants.TAG, "too many redirects for download " + mInfo.mId); } - finalStatus = Downloads.STATUS_TOO_MANY_REDIRECTS; + finalStatus = Downloads.Impl.STATUS_TOO_MANY_REDIRECTS; request.abort(); break http_request_loop; } @@ -312,17 +312,17 @@ http_request_loop: "Couldn't resolve redirect URI for download " + mInfo.mId); } - finalStatus = Downloads.STATUS_BAD_REQUEST; + finalStatus = Downloads.Impl.STATUS_BAD_REQUEST; request.abort(); break http_request_loop; } ++redirectCount; - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; request.abort(); break http_request_loop; } } - if ((!continuingDownload && statusCode != Downloads.STATUS_SUCCESS) + if ((!continuingDownload && statusCode != Downloads.Impl.STATUS_SUCCESS) || (continuingDownload && statusCode != 206)) { if (Constants.LOGV) { Log.d(Constants.TAG, "http error " + statusCode + " for " + mInfo.mUri); @@ -330,14 +330,14 @@ http_request_loop: Log.d(Constants.TAG, "http error " + statusCode + " for download " + mInfo.mId); } - if (Downloads.isStatusError(statusCode)) { + if (Downloads.Impl.isStatusError(statusCode)) { finalStatus = statusCode; } else if (statusCode >= 300 && statusCode < 400) { - finalStatus = Downloads.STATUS_UNHANDLED_REDIRECT; - } else if (continuingDownload && statusCode == Downloads.STATUS_SUCCESS) { - finalStatus = Downloads.STATUS_PRECONDITION_FAILED; + finalStatus = Downloads.Impl.STATUS_UNHANDLED_REDIRECT; + } else if (continuingDownload && statusCode == Downloads.Impl.STATUS_SUCCESS) { + finalStatus = Downloads.Impl.STATUS_PRECONDITION_FAILED; } else { - finalStatus = Downloads.STATUS_UNHANDLED_HTTP_CODE; + finalStatus = Downloads.Impl.STATUS_UNHANDLED_HTTP_CODE; } request.abort(); break http_request_loop; @@ -404,7 +404,7 @@ http_request_loop: if (Config.LOGD) { Log.d(Constants.TAG, "can't know size of download, giving up"); } - finalStatus = Downloads.STATUS_LENGTH_REQUIRED; + finalStatus = Downloads.Impl.STATUS_LENGTH_REQUIRED; request.abort(); break http_request_loop; } @@ -431,18 +431,18 @@ http_request_loop: } ContentValues values = new ContentValues(); - values.put(Downloads._DATA, filename); + values.put(Downloads.Impl._DATA, filename); if (headerETag != null) { values.put(Constants.ETAG, headerETag); } if (mimeType != null) { - values.put(Downloads.COLUMN_MIME_TYPE, mimeType); + values.put(Downloads.Impl.COLUMN_MIME_TYPE, mimeType); } int contentLength = -1; if (headerContentLength != null) { contentLength = Integer.parseInt(headerContentLength); } - values.put(Downloads.COLUMN_TOTAL_BYTES, contentLength); + values.put(Downloads.Impl.COLUMN_TOTAL_BYTES, contentLength); mContext.getContentResolver().update(contentUri, values, null, null); } @@ -458,9 +458,9 @@ http_request_loop: } } if (!Helpers.isNetworkAvailable(mContext)) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; } else if (mInfo.mNumFailed < Constants.MAX_RETRIES) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; countRetry = true; } else { if (Constants.LOGV) { @@ -473,7 +473,7 @@ http_request_loop: Log.d(Constants.TAG, "IOException getting entity for download " + mInfo.mId + " : " + ex); } - finalStatus = Downloads.STATUS_HTTP_DATA_ERROR; + finalStatus = Downloads.Impl.STATUS_HTTP_DATA_ERROR; } request.abort(); break http_request_loop; @@ -491,7 +491,7 @@ http_request_loop: } } ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_CURRENT_BYTES, bytesSoFar); + values.put(Downloads.Impl.COLUMN_CURRENT_BYTES, bytesSoFar); mContext.getContentResolver().update(contentUri, values, null, null); if (!mInfo.mNoIntegrity && headerETag == null) { if (Constants.LOGV) { @@ -505,11 +505,11 @@ http_request_loop: Log.d(Constants.TAG, "can't resume interrupted download with no ETag"); } - finalStatus = Downloads.STATUS_PRECONDITION_FAILED; + finalStatus = Downloads.Impl.STATUS_PRECONDITION_FAILED; } else if (!Helpers.isNetworkAvailable(mContext)) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; } else if (mInfo.mNumFailed < Constants.MAX_RETRIES) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; countRetry = true; } else { if (Constants.LOGV) { @@ -519,16 +519,16 @@ http_request_loop: Log.d(Constants.TAG, "download IOException for download " + mInfo.mId + " : " + ex); } - finalStatus = Downloads.STATUS_HTTP_DATA_ERROR; + finalStatus = Downloads.Impl.STATUS_HTTP_DATA_ERROR; } request.abort(); break http_request_loop; } if (bytesRead == -1) { // success ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_CURRENT_BYTES, bytesSoFar); + values.put(Downloads.Impl.COLUMN_CURRENT_BYTES, bytesSoFar); if (headerContentLength == null) { - values.put(Downloads.COLUMN_TOTAL_BYTES, bytesSoFar); + values.put(Downloads.Impl.COLUMN_TOTAL_BYTES, bytesSoFar); } mContext.getContentResolver().update(contentUri, values, null, null); if ((headerContentLength != null) @@ -542,11 +542,11 @@ http_request_loop: Log.d(Constants.TAG, "mismatched content length for " + mInfo.mId); } - finalStatus = Downloads.STATUS_LENGTH_REQUIRED; + finalStatus = Downloads.Impl.STATUS_LENGTH_REQUIRED; } else if (!Helpers.isNetworkAvailable(mContext)) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; } else if (mInfo.mNumFailed < Constants.MAX_RETRIES) { - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; countRetry = true; } else { if (Constants.LOGV) { @@ -555,7 +555,7 @@ http_request_loop: Log.d(Constants.TAG, "closed socket for download " + mInfo.mId); } - finalStatus = Downloads.STATUS_HTTP_DATA_ERROR; + finalStatus = Downloads.Impl.STATUS_HTTP_DATA_ERROR; } break http_request_loop; } @@ -568,7 +568,7 @@ http_request_loop: stream = new FileOutputStream(filename, true); } stream.write(data, 0, bytesRead); - if (mInfo.mDestination == Downloads.DESTINATION_EXTERNAL + if (mInfo.mDestination == Downloads.Impl.DESTINATION_EXTERNAL && !DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING .equalsIgnoreCase(mimeType)) { try { @@ -587,7 +587,7 @@ http_request_loop: } catch (IOException ex) { if (!Helpers.discardPurgeableFiles( mContext, Constants.BUFFER_SIZE)) { - finalStatus = Downloads.STATUS_FILE_ERROR; + finalStatus = Downloads.Impl.STATUS_FILE_ERROR; break http_request_loop; } } @@ -598,7 +598,7 @@ http_request_loop: && now - timeLastNotification > Constants.MIN_PROGRESS_TIME) { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_CURRENT_BYTES, bytesSoFar); + values.put(Downloads.Impl.COLUMN_CURRENT_BYTES, bytesSoFar); mContext.getContentResolver().update( contentUri, values, null, null); bytesNotified = bytesSoFar; @@ -609,29 +609,29 @@ http_request_loop: Log.v(Constants.TAG, "downloaded " + bytesSoFar + " for " + mInfo.mUri); } synchronized (mInfo) { - if (mInfo.mControl == Downloads.CONTROL_PAUSED) { + if (mInfo.mControl == Downloads.Impl.CONTROL_PAUSED) { if (Constants.LOGV) { Log.v(Constants.TAG, "paused " + mInfo.mUri); } - finalStatus = Downloads.STATUS_RUNNING_PAUSED; + finalStatus = Downloads.Impl.STATUS_RUNNING_PAUSED; request.abort(); break http_request_loop; } } - if (mInfo.mStatus == Downloads.STATUS_CANCELED) { + if (mInfo.mStatus == Downloads.Impl.STATUS_CANCELED) { if (Constants.LOGV) { Log.d(Constants.TAG, "canceled " + mInfo.mUri); } else if (Config.LOGD) { // Log.d(Constants.TAG, "canceled id " + mInfo.mId); } - finalStatus = Downloads.STATUS_CANCELED; + finalStatus = Downloads.Impl.STATUS_CANCELED; break http_request_loop; } } if (Constants.LOGV) { Log.v(Constants.TAG, "download completed for " + mInfo.mUri); } - finalStatus = Downloads.STATUS_SUCCESS; + finalStatus = Downloads.Impl.STATUS_SUCCESS; } break; } @@ -639,7 +639,7 @@ http_request_loop: if (Config.LOGD) { Log.d(Constants.TAG, "FileNotFoundException for " + filename + " : " + ex); } - finalStatus = Downloads.STATUS_FILE_ERROR; + finalStatus = Downloads.Impl.STATUS_FILE_ERROR; // falls through to the code that reports an error } catch (RuntimeException ex) { //sometimes the socket code throws unchecked exceptions if (Constants.LOGV) { @@ -647,7 +647,7 @@ http_request_loop: } else if (Config.LOGD) { Log.d(Constants.TAG, "Exception for id " + mInfo.mId, ex); } - finalStatus = Downloads.STATUS_UNKNOWN_ERROR; + finalStatus = Downloads.Impl.STATUS_UNKNOWN_ERROR; // falls through to the code that reports an error } finally { mInfo.mHasActiveThread = false; @@ -672,10 +672,10 @@ http_request_loop: } if (filename != null) { // if the download wasn't successful, delete the file - if (Downloads.isStatusError(finalStatus)) { + if (Downloads.Impl.isStatusError(finalStatus)) { new File(filename).delete(); filename = null; - } else if (Downloads.isStatusSuccess(finalStatus) && + } else if (Downloads.Impl.isStatusSuccess(finalStatus) && DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING .equalsIgnoreCase(mimeType)) { // transfer the file to the DRM content provider @@ -683,14 +683,14 @@ http_request_loop: Intent item = DrmStore.addDrmFile(mContext.getContentResolver(), file, null); if (item == null) { Log.w(Constants.TAG, "unable to add file " + filename + " to DrmProvider"); - finalStatus = Downloads.STATUS_UNKNOWN_ERROR; + finalStatus = Downloads.Impl.STATUS_UNKNOWN_ERROR; } else { filename = item.getDataString(); mimeType = item.getType(); } file.delete(); - } else if (Downloads.isStatusSuccess(finalStatus)) { + } else if (Downloads.Impl.isStatusSuccess(finalStatus)) { // make sure the file is readable FileUtils.setPermissions(filename, 0644, -1, -1); @@ -721,7 +721,7 @@ http_request_loop: String filename, String uri, String mimeType) { notifyThroughDatabase( status, countRetry, retryAfter, redirectCount, gotData, filename, uri, mimeType); - if (Downloads.isStatusCompleted(status)) { + if (Downloads.Impl.isStatusCompleted(status)) { notifyThroughIntent(); } } @@ -730,13 +730,13 @@ http_request_loop: int status, boolean countRetry, int retryAfter, int redirectCount, boolean gotData, String filename, String uri, String mimeType) { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_STATUS, status); - values.put(Downloads._DATA, filename); + values.put(Downloads.Impl.COLUMN_STATUS, status); + values.put(Downloads.Impl._DATA, filename); if (uri != null) { - values.put(Downloads.COLUMN_URI, uri); + values.put(Downloads.Impl.COLUMN_URI, uri); } - values.put(Downloads.COLUMN_MIME_TYPE, mimeType); - values.put(Downloads.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); + values.put(Downloads.Impl.COLUMN_MIME_TYPE, mimeType); + values.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); values.put(Constants.RETRY_AFTER_X_REDIRECT_COUNT, retryAfter + (redirectCount << 28)); if (!countRetry) { values.put(Constants.FAILED_CONNECTIONS, 0); @@ -746,8 +746,8 @@ http_request_loop: values.put(Constants.FAILED_CONNECTIONS, mInfo.mNumFailed + 1); } - mContext.getContentResolver().update( - ContentUris.withAppendedId(Downloads.CONTENT_URI, mInfo.mId), values, null, null); + mContext.getContentResolver().update(ContentUris.withAppendedId( + Downloads.Impl.CONTENT_URI, mInfo.mId), values, null, null); } /** @@ -755,7 +755,7 @@ http_request_loop: * download completed even if it's not actively watching the cursor. */ private void notifyThroughIntent() { - Uri uri = Uri.parse(Downloads.CONTENT_URI + "/" + mInfo.mId); + Uri uri = Uri.parse(Downloads.Impl.CONTENT_URI + "/" + mInfo.mId); mInfo.sendIntentIfRequested(uri, mContext); } diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index d8f262c7..774aba66 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -91,13 +91,13 @@ public class Helpers { /* * Don't download files that we won't be able to handle */ - if (destination == Downloads.DESTINATION_EXTERNAL - || destination == Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE) { + if (destination == Downloads.Impl.DESTINATION_EXTERNAL + || destination == Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE) { if (mimeType == null) { if (Config.LOGD) { Log.d(Constants.TAG, "external download with no mime type not allowed"); } - return new DownloadFileInfo(null, null, Downloads.STATUS_NOT_ACCEPTABLE); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_NOT_ACCEPTABLE); } if (!DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING.equalsIgnoreCase(mimeType)) { // Check to see if we are allowed to download this file. Only files @@ -121,7 +121,7 @@ public class Helpers { if (Config.LOGD) { Log.d(Constants.TAG, "no handler found for type " + mimeType); } - return new DownloadFileInfo(null, null, Downloads.STATUS_NOT_ACCEPTABLE); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_NOT_ACCEPTABLE); } } } @@ -148,9 +148,9 @@ public class Helpers { StatFs stat = null; // DRM messages should be temporarily stored internally and then passed to // the DRM content provider - if (destination == Downloads.DESTINATION_CACHE_PARTITION - || destination == Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE - || destination == Downloads.DESTINATION_CACHE_PARTITION_NOROAMING + if (destination == Downloads.Impl.DESTINATION_CACHE_PARTITION + || destination == Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE + || destination == Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING || DrmRawContent.DRM_MIMETYPE_MESSAGE_STRING.equalsIgnoreCase(mimeType)) { base = Environment.getDownloadCacheDirectory(); stat = new StatFs(base.getPath()); @@ -171,7 +171,7 @@ public class Helpers { Log.d(Constants.TAG, "download aborted - not enough free space in internal storage"); } - return new DownloadFileInfo(null, null, Downloads.STATUS_FILE_ERROR); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_FILE_ERROR); } stat.restat(base.getPath()); } @@ -185,14 +185,14 @@ public class Helpers { Log.d(Constants.TAG, "download aborted - can't create base directory " + base.getPath()); } - return new DownloadFileInfo(null, null, Downloads.STATUS_FILE_ERROR); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_FILE_ERROR); } stat = new StatFs(base.getPath()); } else { if (Config.LOGD) { Log.d(Constants.TAG, "download aborted - no external storage"); } - return new DownloadFileInfo(null, null, Downloads.STATUS_FILE_ERROR); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_FILE_ERROR); } /* @@ -203,7 +203,7 @@ public class Helpers { if (Config.LOGD) { Log.d(Constants.TAG, "download aborted - not enough free space"); } - return new DownloadFileInfo(null, null, Downloads.STATUS_FILE_ERROR); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_FILE_ERROR); } } @@ -224,7 +224,7 @@ public class Helpers { if (fullFilename != null) { return new DownloadFileInfo(fullFilename, new FileOutputStream(fullFilename), 0); } else { - return new DownloadFileInfo(null, null, Downloads.STATUS_FILE_ERROR); + return new DownloadFileInfo(null, null, Downloads.Impl.STATUS_FILE_ERROR); } } @@ -380,9 +380,9 @@ public class Helpers { String fullFilename = filename + extension; if (!new File(fullFilename).exists() && (!recoveryDir || - (destination != Downloads.DESTINATION_CACHE_PARTITION && - destination != Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE && - destination != Downloads.DESTINATION_CACHE_PARTITION_NOROAMING))) { + (destination != Downloads.Impl.DESTINATION_CACHE_PARTITION && + destination != Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE && + destination != Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING))) { return fullFilename; } filename = filename + Constants.FILENAME_SEQUENCE_SEPARATOR; @@ -423,14 +423,14 @@ public class Helpers { */ public static final boolean discardPurgeableFiles(Context context, long targetBytes) { Cursor cursor = context.getContentResolver().query( - Downloads.CONTENT_URI, + Downloads.Impl.CONTENT_URI, null, "( " + - Downloads.COLUMN_STATUS + " = '" + Downloads.STATUS_SUCCESS + "' AND " + - Downloads.COLUMN_DESTINATION + - " = '" + Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE + "' )", + Downloads.Impl.COLUMN_STATUS + " = '" + Downloads.Impl.STATUS_SUCCESS + "' AND " + + Downloads.Impl.COLUMN_DESTINATION + + " = '" + Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE + "' )", null, - Downloads.COLUMN_LAST_MODIFICATION); + Downloads.Impl.COLUMN_LAST_MODIFICATION); if (cursor == null) { return false; } @@ -438,16 +438,16 @@ public class Helpers { try { cursor.moveToFirst(); while (!cursor.isAfterLast() && totalFreed < targetBytes) { - File file = new File(cursor.getString(cursor.getColumnIndex(Downloads._DATA))); + File file = new File(cursor.getString(cursor.getColumnIndex(Downloads.Impl._DATA))); if (Constants.LOGVV) { Log.v(Constants.TAG, "purging " + file.getAbsolutePath() + " for " + file.length() + " bytes"); } totalFreed += file.length(); file.delete(); - long id = cursor.getLong(cursor.getColumnIndex(Downloads._ID)); + long id = cursor.getLong(cursor.getColumnIndex(Downloads.Impl._ID)); context.getContentResolver().delete( - ContentUris.withAppendedId(Downloads.CONTENT_URI, id), null, null); + ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, id), null, null); cursor.moveToNext(); } } finally { diff --git a/tests/permission/src/com/android/providers/downloads/permission/tests/DownloadProviderPermissionsTest.java b/tests/permission/src/com/android/providers/downloads/permission/tests/DownloadProviderPermissionsTest.java index b16c2650..ecdce93c 100644 --- a/tests/permission/src/com/android/providers/downloads/permission/tests/DownloadProviderPermissionsTest.java +++ b/tests/permission/src/com/android/providers/downloads/permission/tests/DownloadProviderPermissionsTest.java @@ -72,7 +72,7 @@ public class DownloadProviderPermissionsTest extends AndroidTestCase { @MediumTest public void testReadDownloadProvider() throws IOException { try { - mContentResolver.query(Downloads.CONTENT_URI, null, null, null, null); + mContentResolver.query(Downloads.Impl.CONTENT_URI, null, null, null, null); fail("read from provider did not throw SecurityException as expected."); } catch (SecurityException e) { // expected @@ -88,8 +88,8 @@ public class DownloadProviderPermissionsTest extends AndroidTestCase { public void testWriteDownloadProvider() throws IOException { try { ContentValues values = new ContentValues(); - values.put(Downloads.COLUMN_URI, "foo"); - mContentResolver.insert(Downloads.CONTENT_URI, values); + values.put(Downloads.Impl.COLUMN_URI, "foo"); + mContentResolver.insert(Downloads.Impl.CONTENT_URI, values); fail("write to provider did not throw SecurityException as expected."); } catch (SecurityException e) { // expected |