summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Ishneet Ahuja <ishneet@google.com> 2025-02-14 19:57:14 +0000
committer Ishneet Ahuja <ishneet@google.com> 2025-02-27 16:51:14 +0000
commit08b441c8cc19e047ae2dbb9a890aa1d21b897796 (patch)
tree3823e0dc606f7e0f09478c9167cbc7e5cecd0c91 /src
parentf9a154805de4c5e07a02f211e2ac419ace0910d4 (diff)
Propagate cancellation signal for both media sets and media sets
content. Also update corresponding tests Test: verified manually, all corresponding tests updated Bug: 384475145 Flag: com.android.providers.media.flags.enable_photopicker_search Change-Id: I1056ee98587cf736742dba654e8a450cdb64ab6c
Diffstat (limited to 'src')
-rw-r--r--src/com/android/providers/media/photopicker/sync/MediaInMediaSetsSyncWorker.java11
-rw-r--r--src/com/android/providers/media/photopicker/sync/MediaSetsSyncWorker.java11
-rw-r--r--src/com/android/providers/media/photopicker/sync/PickerSearchProviderClient.java12
-rw-r--r--src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtil.java3
4 files changed, 26 insertions, 11 deletions
diff --git a/src/com/android/providers/media/photopicker/sync/MediaInMediaSetsSyncWorker.java b/src/com/android/providers/media/photopicker/sync/MediaInMediaSetsSyncWorker.java
index fa10d730e..146df70ae 100644
--- a/src/com/android/providers/media/photopicker/sync/MediaInMediaSetsSyncWorker.java
+++ b/src/com/android/providers/media/photopicker/sync/MediaInMediaSetsSyncWorker.java
@@ -29,6 +29,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.provider.CloudMediaProviderContract;
import android.util.Log;
import android.util.Pair;
@@ -135,7 +136,7 @@ public class MediaInMediaSetsSyncWorker extends Worker {
int syncSource, @NonNull String mediaSetId,
@NonNull Long mediaSetPickerId, @NonNull String mediaSetAuthority,
@Nullable String[] mimeTypes)
- throws RequestObsoleteException, IllegalArgumentException {
+ throws RequestObsoleteException, IllegalArgumentException, OperationCanceledException {
final PickerSearchProviderClient searchClient =
PickerSearchProviderClient.create(mContext, mediaSetAuthority);
@@ -214,7 +215,7 @@ public class MediaInMediaSetsSyncWorker extends Worker {
private Cursor fetchMediaInMediaSetFromCmp(
@NonNull PickerSearchProviderClient pickerSearchProviderClient,
@NonNull String mediaSetId, @Nullable String resumePageToken,
- @Nullable String[] mimeTypes) {
+ @Nullable String[] mimeTypes) throws OperationCanceledException {
final Cursor cursor = pickerSearchProviderClient.fetchMediasInMediaSetFromCmp(
mediaSetId,
resumePageToken,
@@ -301,4 +302,10 @@ public class MediaInMediaSetsSyncWorker extends Worker {
private SQLiteDatabase getDatabase() {
return PickerSyncController.getInstanceOrThrow().getDbFacade().getDatabase();
}
+
+ @Override
+ public void onStopped() {
+ // Mark the request as cancelled so that the cancellation can be propagated to subtasks.
+ mCancellationSignal.cancel();
+ }
}
diff --git a/src/com/android/providers/media/photopicker/sync/MediaSetsSyncWorker.java b/src/com/android/providers/media/photopicker/sync/MediaSetsSyncWorker.java
index 8e151141a..784d23b60 100644
--- a/src/com/android/providers/media/photopicker/sync/MediaSetsSyncWorker.java
+++ b/src/com/android/providers/media/photopicker/sync/MediaSetsSyncWorker.java
@@ -29,6 +29,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.provider.CloudMediaProviderContract;
import android.util.Log;
@@ -124,7 +125,7 @@ public class MediaSetsSyncWorker extends Worker {
private void syncMediaSets(
int syncSource, @NonNull String categoryId,
@NonNull String categoryAuthority, @Nullable String[] mimeTypes)
- throws RequestObsoleteException, IllegalArgumentException {
+ throws RequestObsoleteException, IllegalArgumentException, OperationCanceledException {
List<String> mimeTypesList = mimeTypes == null || mimeTypes.length == 0 ? null
: Arrays.asList(mimeTypes);
@@ -183,7 +184,7 @@ public class MediaSetsSyncWorker extends Worker {
String categoryId,
String nextPageToken,
String[] mimeTypes,
- CancellationSignal cancellationSignal) {
+ CancellationSignal cancellationSignal) throws OperationCanceledException {
final Cursor cursor = client.fetchMediaSetsFromCmp(
categoryId, nextPageToken, PAGE_SIZE, mimeTypes, cancellationSignal);
@@ -239,4 +240,10 @@ public class MediaSetsSyncWorker extends Worker {
private SQLiteDatabase getDatabase() {
return PickerSyncController.getInstanceOrThrow().getDbFacade().getDatabase();
}
+
+ @Override
+ public void onStopped() {
+ // Mark the request as cancelled so that the cancellation can be propagated to subtasks.
+ mCancellationSignal.cancel();
+ }
}
diff --git a/src/com/android/providers/media/photopicker/sync/PickerSearchProviderClient.java b/src/com/android/providers/media/photopicker/sync/PickerSearchProviderClient.java
index 76ac99bfd..4b1e8963b 100644
--- a/src/com/android/providers/media/photopicker/sync/PickerSearchProviderClient.java
+++ b/src/com/android/providers/media/photopicker/sync/PickerSearchProviderClient.java
@@ -27,6 +27,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.CancellationSignal;
+import android.os.OperationCanceledException;
import android.provider.CloudMediaProviderContract;
import android.provider.CloudMediaProviderContract.SortOrder;
import android.util.Log;
@@ -152,7 +153,7 @@ public class PickerSearchProviderClient {
final Cursor cursor = mContext.getContentResolver().query(
getCloudUriFromPath(CloudMediaProviderContract.URI_PATH_MEDIA_CATEGORY),
- null, queryArgs, null);
+ null, queryArgs, cancellationSignal);
if (cursor == null) {
Log.d(TAG, "Categories response from the CMP is null.");
@@ -170,7 +171,8 @@ public class PickerSearchProviderClient {
@Nullable
public Cursor fetchMediaSetsFromCmp(
@NonNull String mediaCategoryId, @Nullable String nextPageToken, int pageSize,
- @Nullable String[] mimeTypes, @Nullable CancellationSignal cancellationSignal) {
+ @Nullable String[] mimeTypes, @Nullable CancellationSignal cancellationSignal)
+ throws OperationCanceledException {
final Bundle queryArgs = new Bundle();
queryArgs.putString(CloudMediaProviderContract.KEY_MEDIA_CATEGORY_ID,
requireNonNull(mediaCategoryId));
@@ -182,7 +184,7 @@ public class PickerSearchProviderClient {
final Cursor cursor = mContext.getContentResolver().query(
getCloudUriFromPath(CloudMediaProviderContract.URI_PATH_MEDIA_SET),
- null, queryArgs, null);
+ null, queryArgs, cancellationSignal);
if (cursor == null) {
Log.d(TAG, "Media sets response from the CMP is null.");
@@ -204,7 +206,7 @@ public class PickerSearchProviderClient {
int pageSize,
int sortOrder,
@Nullable String[] mimeTypes,
- @Nullable CancellationSignal cancellationSignal) {
+ @Nullable CancellationSignal cancellationSignal) throws OperationCanceledException {
final Bundle queryArgs = new Bundle();
queryArgs.putString(CloudMediaProviderContract.KEY_MEDIA_SET_ID,
requireNonNull(mediaSetId));
@@ -217,7 +219,7 @@ public class PickerSearchProviderClient {
final Cursor cursor = mContext.getContentResolver().query(
getCloudUriFromPath(CloudMediaProviderContract.URI_PATH_MEDIA_IN_MEDIA_SET),
- null, queryArgs, null);
+ null, queryArgs, cancellationSignal);
if (cursor == null) {
Log.d(TAG, "Media set contents response from the CMP is null.");
diff --git a/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtil.java b/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtil.java
index 0c43445fe..28c3ebbf4 100644
--- a/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtil.java
+++ b/src/com/android/providers/media/photopicker/v2/sqlite/MediaInMediaSetsDatabaseUtil.java
@@ -61,8 +61,7 @@ public class MediaInMediaSetsDatabaseUtil {
*/
public static int cacheMediaOfMediaSet(
@NonNull SQLiteDatabase database,
- @Nullable List<ContentValues> mediaListToInsert,
- @NonNull String authority) {
+ @Nullable List<ContentValues> mediaListToInsert, @NonNull String authority) {
requireNonNull(database);
requireNonNull(authority);