diff options
author | Steve Howard <showard@google.com> | 2010-07-14 11:38:58 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-07-14 11:38:58 -0700 |
commit | 736f45c45b7c2b08814f70a5d23e2c8e7e09d1fa (patch) | |
tree | 05934e491639ac95aec1890417d45dfe6a747f63 /src/com/android/providers/downloads/DownloadProvider.java | |
parent | 6de02c9ee3b38bb0322839ac50d6d83b05f8c99e (diff) | |
parent | 2c80c37546b89dfd31875f6f6e977e9610cdb22b (diff) | |
download | android_packages_providers_DownloadProvider-736f45c45b7c2b08814f70a5d23e2c8e7e09d1fa.tar.gz android_packages_providers_DownloadProvider-736f45c45b7c2b08814f70a5d23e2c8e7e09d1fa.tar.bz2 android_packages_providers_DownloadProvider-736f45c45b7c2b08814f70a5d23e2c8e7e09d1fa.zip |
am 2c80c375: am 6d9b9828: Support for file URI destinations + last modified timestamp
Merge commit '2c80c37546b89dfd31875f6f6e977e9610cdb22b'
* commit '2c80c37546b89dfd31875f6f6e977e9610cdb22b':
Support for file URI destinations + last modified timestamp
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 20430cfa..4203f7d1 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -16,6 +16,8 @@ package com.android.providers.downloads; +import com.google.common.annotations.VisibleForTesting; + import android.content.ContentProvider; import android.content.ContentValues; import android.content.Context; @@ -110,6 +112,9 @@ public final class DownloadProvider extends ContentProvider { private int mSystemUid = -1; private int mDefContainerUid = -1; + @VisibleForTesting + SystemFacade mSystemFacade; + /** * Creates and updated database on demand when opening it. * Helper class to create database the first time the provider is @@ -172,6 +177,10 @@ public final class DownloadProvider extends ContentProvider { */ @Override public boolean onCreate() { + if (mSystemFacade == null) { + mSystemFacade = new RealSystemFacade(); + } + mOpenHelper = new DatabaseHelper(getContext()); // Initialize the system uid mSystemUid = Process.SYSTEM_UID; @@ -294,9 +303,16 @@ public final class DownloadProvider extends ContentProvider { if (getContext().checkCallingPermission(Downloads.Impl.PERMISSION_ACCESS_ADVANCED) != PackageManager.PERMISSION_GRANTED && dest != Downloads.Impl.DESTINATION_EXTERNAL - && dest != Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE) { + && dest != Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE + && dest != Downloads.Impl.DESTINATION_FILE_URI) { throw new SecurityException("unauthorized destination code"); } + if (dest == Downloads.Impl.DESTINATION_FILE_URI) { + getContext().enforcePermission( + android.Manifest.permission.WRITE_EXTERNAL_STORAGE, + Binder.getCallingPid(), Binder.getCallingUid(), + "need WRITE_EXTERNAL_STORAGE permission to use DESTINATION_FILE_URI"); + } filteredValues.put(Downloads.Impl.COLUMN_DESTINATION, dest); } Integer vis = values.getAsInteger(Downloads.Impl.COLUMN_VISIBILITY); @@ -313,7 +329,8 @@ public final class DownloadProvider extends ContentProvider { } 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()); + filteredValues.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, + mSystemFacade.currentTimeMillis()); String pckg = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE); String clazz = values.getAsString(Downloads.Impl.COLUMN_NOTIFICATION_CLASS); if (pckg != null && clazz != null) { @@ -729,7 +746,7 @@ public final class DownloadProvider extends ContentProvider { throw new FileNotFoundException("couldn't open file"); } else { ContentValues values = new ContentValues(); - values.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, System.currentTimeMillis()); + values.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, mSystemFacade.currentTimeMillis()); update(uri, values, null, null); } return ret; |