summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author darshilshah <darshilshah@google.com> 2025-06-05 17:08:12 +0000
committer Kampalus <kampalus@protonmail.ch> 2025-09-18 12:28:42 +0200
commitf9a627f310ec7e81a6a4487a89d008e4627584e4 (patch)
tree32ffbde4b77c46d5c96d51747733196c6c80af2a
parentd3bb9ac8e6daab448635eaa30e85e2e8d8cbad8e (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.java8
-rw-r--r--src/com/android/providers/media/MediaProvider.java10
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) {