summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-04-19 02:05:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-04-19 02:05:10 +0000
commitace6b8812e146d1a4f9c73b2bd939864e14bfe7c (patch)
treeed9f5be17c2f2354a220fe585ee922cb5f17b96a /src/com/android
parent9b2f2a5f041bf56ab45e5952ae4ddc4b47d0105e (diff)
parent50522c738bf68d2784ce4f52dd34188a491065b8 (diff)
downloadandroid_packages_providers_DownloadProvider-ace6b8812e146d1a4f9c73b2bd939864e14bfe7c.tar.gz
android_packages_providers_DownloadProvider-ace6b8812e146d1a4f9c73b2bd939864e14bfe7c.tar.bz2
android_packages_providers_DownloadProvider-ace6b8812e146d1a4f9c73b2bd939864e14bfe7c.zip
Merge "Keep shared downloads when apps are uninstalled." into oc-dev
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java5
-rw-r--r--src/com/android/providers/downloads/DownloadReceiver.java21
-rw-r--r--src/com/android/providers/downloads/Helpers.java2
3 files changed, 20 insertions, 8 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index f3b7b6f3..d50b394c 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -1116,8 +1116,9 @@ public final class DownloadProvider extends ContentProvider {
@Override
public int update(final Uri uri, final ContentValues values,
final String where, final String[] whereArgs) {
-
- Helpers.validateSelection(where, sAppReadableColumnsSet);
+ if (shouldRestrictVisibility()) {
+ Helpers.validateSelection(where, sAppReadableColumnsSet);
+ }
final Context context = getContext();
final ContentResolver resolver = context.getContentResolver();
diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java
index a0dc6947..92d0bad4 100644
--- a/src/com/android/providers/downloads/DownloadReceiver.java
+++ b/src/com/android/providers/downloads/DownloadReceiver.java
@@ -139,13 +139,24 @@ public class DownloadReceiver extends BroadcastReceiver {
private void handleUidRemoved(Context context, Intent intent) {
final ContentResolver resolver = context.getContentResolver();
-
final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- final int count = resolver.delete(
- Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, Constants.UID + "=" + uid, null);
- if (count > 0) {
- Slog.d(TAG, "Deleted " + count + " downloads owned by UID " + uid);
+ // First, disown any downloads that live in shared storage
+ final ContentValues values = new ContentValues();
+ values.putNull(Constants.UID);
+ final int disowned = resolver.update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
+ Constants.UID + "=" + uid + " AND " + Downloads.Impl.COLUMN_DESTINATION + " IN ("
+ + Downloads.Impl.DESTINATION_EXTERNAL + ","
+ + Downloads.Impl.DESTINATION_FILE_URI + ")",
+ null);
+
+ // Finally, delete any remaining downloads owned by UID
+ final int deleted = resolver.delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+ Constants.UID + "=" + uid, null);
+
+ if ((disowned + deleted) > 0) {
+ Slog.d(TAG, "Disowned " + disowned + " and deleted " + deleted
+ + " downloads owned by UID " + uid);
}
}
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index e9549052..7354076b 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -796,7 +796,7 @@ public class Helpers {
mCurrentToken = TOKEN_COLUMN;
return;
}
- throw new IllegalArgumentException("unrecognized column or keyword");
+ throw new IllegalArgumentException("unrecognized column or keyword: " + word);
}
// quoted strings