diff options
author | Steve Howard <showard@google.com> | 2010-07-21 21:23:03 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-07-21 21:23:03 -0700 |
commit | 0bd0e0c9e4eec9d63b4e0f213e80fc9eee85fdf6 (patch) | |
tree | d56b3943985d4bf9988333904b0e8fa8fdd803cf /src/com/android/providers/downloads/DownloadProvider.java | |
parent | 918f819abfb1da3661c1c604440666655e0c8909 (diff) | |
parent | 0a77c62a82503b38c484e0079648f0231dd85d53 (diff) | |
download | android_packages_providers_DownloadProvider-0bd0e0c9e4eec9d63b4e0f213e80fc9eee85fdf6.tar.gz android_packages_providers_DownloadProvider-0bd0e0c9e4eec9d63b4e0f213e80fc9eee85fdf6.tar.bz2 android_packages_providers_DownloadProvider-0bd0e0c9e4eec9d63b4e0f213e80fc9eee85fdf6.zip |
am 0a77c62a: Public API support for broadcasts and connectivity control.
Merge commit '0a77c62a82503b38c484e0079648f0231dd85d53' into gingerbread-plus-aosp
* commit '0a77c62a82503b38c484e0079648f0231dd85d53':
Public API support for broadcasts and connectivity control.
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index c210063a..bb205ad4 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -56,7 +56,7 @@ public final class DownloadProvider extends ContentProvider { /** Database filename */ private static final String DB_NAME = "downloads.db"; /** Current database version */ - private static final int DB_VERSION = 101; + private static final int DB_VERSION = 102; /** Name of table in the database */ private static final String DB_TABLE = "downloads"; @@ -95,7 +95,7 @@ public final class DownloadProvider extends ContentProvider { Downloads.Impl.COLUMN_TOTAL_BYTES, Downloads.Impl.COLUMN_CURRENT_BYTES, Downloads.Impl.COLUMN_TITLE, - Downloads.Impl.COLUMN_DESCRIPTION + Downloads.Impl.COLUMN_DESCRIPTION, }; private static HashSet<String> sAppReadableColumnsSet; @@ -182,12 +182,33 @@ public final class DownloadProvider extends ContentProvider { createHeadersTable(db); break; + case 102: + addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_IS_PUBLIC_API, + "INTEGER NOT NULL DEFAULT 0"); + addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOW_ROAMING, + "INTEGER NOT NULL DEFAULT 0"); + addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES, + "INTEGER NOT NULL DEFAULT 0"); + break; + default: throw new IllegalStateException("Don't know how to upgrade to " + version); } } /** + * Add a column to a table using ALTER TABLE. + * @param dbTable name of the table + * @param columnName name of the column to add + * @param columnDefinition SQL for the column definition + */ + private void addColumn(SQLiteDatabase db, String dbTable, String columnName, + String columnDefinition) { + db.execSQL("ALTER TABLE " + dbTable + " ADD COLUMN " + columnName + " " + + columnDefinition); + } + + /** * Creates the table that'll hold the download information. */ private void createDownloadsTable(SQLiteDatabase db) { @@ -346,15 +367,21 @@ public final class DownloadProvider extends ContentProvider { filteredValues.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_PENDING); filteredValues.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, mSystemFacade.currentTimeMillis()); + + copyBoolean(Downloads.Impl.COLUMN_IS_PUBLIC_API, values, filteredValues); + boolean isPublicApi = + values.getAsBoolean(Downloads.Impl.COLUMN_IS_PUBLIC_API) == Boolean.TRUE; + String pckg = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE); String clazz = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_CLASS); - if (pckg != null && clazz != null) { + if (pckg != null && (clazz != null || isPublicApi)) { int uid = Binder.getCallingUid(); try { - if (uid == 0 || - getContext().getPackageManager().getApplicationInfo(pckg, 0).uid == uid) { + if (uid == 0 || mSystemFacade.userOwnsPackage(uid, pckg)) { filteredValues.put(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, pckg); - filteredValues.put(Downloads.Impl.COLUMN_NOTIFICATION_CLASS, clazz); + if (clazz != null) { + filteredValues.put(Downloads.Impl.COLUMN_NOTIFICATION_CLASS, clazz); + } } } catch (PackageManager.NameNotFoundException ex) { /* ignored for now */ @@ -376,6 +403,11 @@ public final class DownloadProvider extends ContentProvider { copyString(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues); filteredValues.put(Downloads.Impl.COLUMN_TOTAL_BYTES, -1); + if (isPublicApi) { + copyInteger(Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES, values, filteredValues); + copyBoolean(Downloads.Impl.COLUMN_ALLOW_ROAMING, values, filteredValues); + } + if (Constants.LOGVV) { Log.v(Constants.TAG, "initiating download with UID " + filteredValues.getAsInteger(Constants.UID)); |