summaryrefslogtreecommitdiffstats
path: root/src/com/android/providers/downloads/DownloadProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java152
1 files changed, 76 insertions, 76 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index e5f25762..f0190fd1 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -26,10 +26,10 @@ import android.database.CrossProcessCursor;
import android.database.Cursor;
import android.database.CursorWindow;
import android.database.CursorWrapper;
+import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
-import android.database.SQLException;
import android.net.Uri;
import android.os.Binder;
import android.os.ParcelFileDescriptor;
@@ -40,7 +40,6 @@ import android.util.Log;
import java.io.File;
import java.io.FileNotFoundException;
-import java.io.IOException;
import java.util.HashSet;
@@ -78,20 +77,20 @@ public final class DownloadProvider extends ContentProvider {
private static final String[] sAppReadableColumnsArray = new String[] {
Downloads._ID,
- Downloads.APP_DATA,
+ Downloads.COLUMN_APP_DATA,
Downloads._DATA,
- Downloads.MIMETYPE,
- Downloads.VISIBILITY,
- Downloads.DESTINATION,
- Downloads.CONTROL,
- Downloads.STATUS,
- Downloads.LAST_MODIFICATION,
- Downloads.NOTIFICATION_PACKAGE,
- Downloads.NOTIFICATION_CLASS,
- Downloads.TOTAL_BYTES,
- Downloads.CURRENT_BYTES,
- Downloads.TITLE,
- Downloads.DESCRIPTION
+ 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
};
private static HashSet<String> sAppReadableColumnsSet;
@@ -201,34 +200,34 @@ public final class DownloadProvider extends ContentProvider {
try {
db.execSQL("CREATE TABLE " + DB_TABLE + "(" +
Downloads._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
- Downloads.URI + " TEXT, " +
- Constants.RETRY_AFTER___REDIRECT_COUNT + " INTEGER, " +
- Downloads.APP_DATA + " TEXT, " +
- Downloads.NO_INTEGRITY + " BOOLEAN, " +
- Downloads.FILENAME_HINT + " TEXT, " +
+ Downloads.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, " +
Constants.OTA_UPDATE + " BOOLEAN, " +
Downloads._DATA + " TEXT, " +
- Downloads.MIMETYPE + " TEXT, " +
- Downloads.DESTINATION + " INTEGER, " +
+ Downloads.COLUMN_MIME_TYPE + " TEXT, " +
+ Downloads.COLUMN_DESTINATION + " INTEGER, " +
Constants.NO_SYSTEM_FILES + " BOOLEAN, " +
- Downloads.VISIBILITY + " INTEGER, " +
- Downloads.CONTROL + " INTEGER, " +
- Downloads.STATUS + " INTEGER, " +
+ Downloads.COLUMN_VISIBILITY + " INTEGER, " +
+ Downloads.COLUMN_CONTROL + " INTEGER, " +
+ Downloads.COLUMN_STATUS + " INTEGER, " +
Constants.FAILED_CONNECTIONS + " INTEGER, " +
- Downloads.LAST_MODIFICATION + " BIGINT, " +
- Downloads.NOTIFICATION_PACKAGE + " TEXT, " +
- Downloads.NOTIFICATION_CLASS + " TEXT, " +
- Downloads.NOTIFICATION_EXTRAS + " TEXT, " +
- Downloads.COOKIE_DATA + " TEXT, " +
- Downloads.USER_AGENT + " TEXT, " +
- Downloads.REFERER + " TEXT, " +
- Downloads.TOTAL_BYTES + " INTEGER, " +
- Downloads.CURRENT_BYTES + " 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, " +
Constants.ETAG + " TEXT, " +
Constants.UID + " INTEGER, " +
- Downloads.OTHER_UID + " INTEGER, " +
- Downloads.TITLE + " TEXT, " +
- Downloads.DESCRIPTION + " TEXT, " +
+ Downloads.COLUMN_OTHER_UID + " INTEGER, " +
+ Downloads.COLUMN_TITLE + " TEXT, " +
+ Downloads.COLUMN_DESCRIPTION + " TEXT, " +
Constants.MEDIA_SCANNED + " BOOLEAN);");
} catch (SQLException ex) {
Log.e(Constants.TAG, "couldn't create table in downloads database");
@@ -264,12 +263,12 @@ public final class DownloadProvider extends ContentProvider {
ContentValues filteredValues = new ContentValues();
- copyString(Downloads.URI, values, filteredValues);
- copyString(Downloads.APP_DATA, values, filteredValues);
- copyBoolean(Downloads.NO_INTEGRITY, values, filteredValues);
- copyString(Downloads.FILENAME_HINT, values, filteredValues);
- copyString(Downloads.MIMETYPE, values, filteredValues);
- Integer dest = values.getAsInteger(Downloads.DESTINATION);
+ 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);
if (dest != null) {
if (getContext().checkCallingPermission(Downloads.PERMISSION_ACCESS_ADVANCED)
!= PackageManager.PERMISSION_GRANTED
@@ -277,57 +276,57 @@ public final class DownloadProvider extends ContentProvider {
&& dest != Downloads.DESTINATION_CACHE_PARTITION_PURGEABLE) {
throw new SecurityException("unauthorized destination code");
}
- filteredValues.put(Downloads.DESTINATION, dest);
+ filteredValues.put(Downloads.COLUMN_DESTINATION, dest);
}
- Integer vis = values.getAsInteger(Downloads.VISIBILITY);
+ Integer vis = values.getAsInteger(Downloads.COLUMN_VISIBILITY);
if (vis == null) {
if (dest == Downloads.DESTINATION_EXTERNAL) {
- filteredValues.put(Downloads.VISIBILITY,
+ filteredValues.put(Downloads.COLUMN_VISIBILITY,
Downloads.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
} else {
- filteredValues.put(Downloads.VISIBILITY, Downloads.VISIBILITY_HIDDEN);
+ filteredValues.put(Downloads.COLUMN_VISIBILITY, Downloads.VISIBILITY_HIDDEN);
}
} else {
- filteredValues.put(Downloads.VISIBILITY, vis);
+ filteredValues.put(Downloads.COLUMN_VISIBILITY, vis);
}
- copyInteger(Downloads.CONTROL, values, filteredValues);
- filteredValues.put(Downloads.STATUS, Downloads.STATUS_PENDING);
- filteredValues.put(Downloads.LAST_MODIFICATION, System.currentTimeMillis());
- String pckg = values.getAsString(Downloads.NOTIFICATION_PACKAGE);
- String clazz = values.getAsString(Downloads.NOTIFICATION_CLASS);
+ 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);
if (pckg != null && clazz != null) {
int uid = Binder.getCallingUid();
try {
if (uid == 0 ||
getContext().getPackageManager().getApplicationInfo(pckg, 0).uid == uid) {
- filteredValues.put(Downloads.NOTIFICATION_PACKAGE, pckg);
- filteredValues.put(Downloads.NOTIFICATION_CLASS, clazz);
+ filteredValues.put(Downloads.COLUMN_NOTIFICATION_PACKAGE, pckg);
+ filteredValues.put(Downloads.COLUMN_NOTIFICATION_CLASS, clazz);
}
} catch (PackageManager.NameNotFoundException ex) {
/* ignored for now */
}
}
- copyString(Downloads.NOTIFICATION_EXTRAS, values, filteredValues);
- copyString(Downloads.COOKIE_DATA, values, filteredValues);
- copyString(Downloads.USER_AGENT, values, filteredValues);
- copyString(Downloads.REFERER, values, filteredValues);
+ 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)
== PackageManager.PERMISSION_GRANTED) {
- copyInteger(Downloads.OTHER_UID, values, filteredValues);
+ copyInteger(Downloads.COLUMN_OTHER_UID, values, filteredValues);
}
filteredValues.put(Constants.UID, Binder.getCallingUid());
if (Binder.getCallingUid() == 0) {
copyInteger(Constants.UID, values, filteredValues);
}
- copyString(Downloads.TITLE, values, filteredValues);
- copyString(Downloads.DESCRIPTION, values, filteredValues);
+ copyString(Downloads.COLUMN_TITLE, values, filteredValues);
+ copyString(Downloads.COLUMN_DESCRIPTION, values, filteredValues);
if (Constants.LOGVV) {
Log.v(Constants.TAG, "initiating download with UID "
+ filteredValues.getAsInteger(Constants.UID));
- if (filteredValues.containsKey(Downloads.OTHER_UID)) {
+ if (filteredValues.containsKey(Downloads.COLUMN_OTHER_UID)) {
Log.v(Constants.TAG, "other UID " +
- filteredValues.getAsInteger(Downloads.OTHER_UID));
+ filteredValues.getAsInteger(Downloads.COLUMN_OTHER_UID));
}
}
@@ -387,12 +386,13 @@ public final class DownloadProvider extends ContentProvider {
}
}
- if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0) {
+ if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0 &&
+ Process.supportsProcesses()) {
if (!emptyWhere) {
qb.appendWhere(" AND ");
}
qb.appendWhere("( " + Constants.UID + "=" + Binder.getCallingUid() + " OR "
- + Downloads.OTHER_UID + "=" + Binder.getCallingUid() + " )");
+ + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )");
emptyWhere = false;
if (projection == null) {
@@ -489,16 +489,16 @@ public final class DownloadProvider extends ContentProvider {
ContentValues filteredValues;
if (Binder.getCallingPid() != Process.myPid()) {
filteredValues = new ContentValues();
- copyString(Downloads.APP_DATA, values, filteredValues);
- copyInteger(Downloads.VISIBILITY, values, filteredValues);
- Integer i = values.getAsInteger(Downloads.CONTROL);
+ copyString(Downloads.COLUMN_APP_DATA, values, filteredValues);
+ copyInteger(Downloads.COLUMN_VISIBILITY, values, filteredValues);
+ Integer i = values.getAsInteger(Downloads.COLUMN_CONTROL);
if (i != null) {
- filteredValues.put(Downloads.CONTROL, i);
+ filteredValues.put(Downloads.COLUMN_CONTROL, i);
startService = true;
}
- copyInteger(Downloads.CONTROL, values, filteredValues);
- copyString(Downloads.TITLE, values, filteredValues);
- copyString(Downloads.DESCRIPTION, values, filteredValues);
+ copyInteger(Downloads.COLUMN_CONTROL, values, filteredValues);
+ copyString(Downloads.COLUMN_TITLE, values, filteredValues);
+ copyString(Downloads.COLUMN_DESCRIPTION, values, filteredValues);
} else {
filteredValues = values;
}
@@ -523,7 +523,7 @@ public final class DownloadProvider extends ContentProvider {
}
if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0) {
myWhere += " AND ( " + Constants.UID + "=" + Binder.getCallingUid() + " OR "
- + Downloads.OTHER_UID + "=" + Binder.getCallingUid() + " )";
+ + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )";
}
if (filteredValues.size() > 0) {
count = db.update(DB_TABLE, filteredValues, myWhere, whereArgs);
@@ -579,7 +579,7 @@ public final class DownloadProvider extends ContentProvider {
}
if (Binder.getCallingPid() != Process.myPid() && Binder.getCallingUid() != 0) {
myWhere += " AND ( " + Constants.UID + "=" + Binder.getCallingUid() + " OR "
- + Downloads.OTHER_UID + "=" + Binder.getCallingUid() + " )";
+ + Downloads.COLUMN_OTHER_UID + "=" + Binder.getCallingUid() + " )";
}
count = db.delete(DB_TABLE, myWhere, whereArgs);
break;
@@ -673,7 +673,7 @@ public final class DownloadProvider extends ContentProvider {
throw new FileNotFoundException("couldn't open file");
} else {
ContentValues values = new ContentValues();
- values.put(Downloads.LAST_MODIFICATION, System.currentTimeMillis());
+ values.put(Downloads.COLUMN_LAST_MODIFICATION, System.currentTimeMillis());
update(uri, values, null, null);
}
return ret;