diff options
author | 2025-06-05 17:08:12 +0000 | |
---|---|---|
committer | 2025-09-18 12:28:42 +0200 | |
commit | f9a627f310ec7e81a6a4487a89d008e4627584e4 (patch) | |
tree | 32ffbde4b77c46d5c96d51747733196c6c80af2a | |
parent | d3bb9ac8e6daab448635eaa30e85e2e8d8cbad8e (diff) |
[SP 2025-09-01] Move markMediaAsFavorite's logic from MediaStore to MediaProvider
The content values retrieved from extras in the MediaProvider can have
values preset by the calling app and can affect other fields set.
Instead of retrieving the content values, we only retrieve a boolean
field that says whether the is_favorite is to be set to true or false.
All processing logic is shifted to MediaProvider.
Bug: 417194323
Test: EXEMPT Bugfix
Flag: EXEMPT Bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:17ebbe43efe36a7c00d3941513d5caf2db91f628)
Merged-In: I0227139b0a04efcb7456557fbf2d47996c017bad
Change-Id: I0227139b0a04efcb7456557fbf2d47996c017bad
-rw-r--r-- | apex/framework/java/android/provider/MediaStore.java | 8 | ||||
-rw-r--r-- | src/com/android/providers/media/MediaProvider.java | 10 |
2 files changed, 10 insertions, 8 deletions
diff --git a/apex/framework/java/android/provider/MediaStore.java b/apex/framework/java/android/provider/MediaStore.java index b8ff19503..77f646a47 100644 --- a/apex/framework/java/android/provider/MediaStore.java +++ b/apex/framework/java/android/provider/MediaStore.java @@ -1710,12 +1710,6 @@ public final class MediaStore { Objects.requireNonNull(resolver); Objects.requireNonNull(uris); - final ContentValues values = new ContentValues(); - if (areFavorites) { - values.put(MediaColumns.IS_FAVORITE, 1); - } else { - values.put(MediaColumns.IS_FAVORITE, 0); - } final Iterator<Uri> it = uris.iterator(); final ClipData clipData = ClipData.newRawUri(null, it.next()); while (it.hasNext()) { @@ -1724,7 +1718,7 @@ public final class MediaStore { final Bundle extras = new Bundle(); extras.putParcelable(EXTRA_CLIP_DATA, clipData); - extras.putParcelable(EXTRA_CONTENT_VALUES, values); + extras.putBoolean(MediaColumns.IS_FAVORITE, areFavorites); resolver.call(AUTHORITY, MARK_MEDIA_AS_FAVORITE, null, extras); } diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java index 85227f7d6..be405f160 100644 --- a/src/com/android/providers/media/MediaProvider.java +++ b/src/com/android/providers/media/MediaProvider.java @@ -7798,8 +7798,9 @@ public class MediaProvider extends ContentProvider { } private Bundle markMediaAsFavorite(Bundle extras) { - final ContentValues values = extras.getParcelable(MediaStore.EXTRA_CONTENT_VALUES); + final boolean areFavorites = extras.getBoolean(MediaColumns.IS_FAVORITE); final ClipData clipData = extras.getParcelable(MediaStore.EXTRA_CLIP_DATA); + final List<Uri> uris = collectUris(clipData); if (!isCallingPackageManager()) { @@ -7812,6 +7813,13 @@ public class MediaProvider extends ContentProvider { } } + final ContentValues values = new ContentValues(); + if (areFavorites) { + values.put(MediaColumns.IS_FAVORITE, 1); + } else { + values.put(MediaColumns.IS_FAVORITE, 0); + } + final LocalCallingIdentity token = clearLocalCallingIdentity(); try { for (Uri uri : uris) { |