summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author Ishneet Ahuja <ishneet@google.com> 2025-02-28 03:16:02 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-28 03:16:02 -0800
commit98bd38914c2561324101a22b2968ac8c356911b2 (patch)
tree16bf5c14eb7a481924274706fbe37dc2deb483ac /src
parenta5176b43b6c5ea42cf669f3dd81b3b2bc9863864 (diff)
parent08b441c8cc19e047ae2dbb9a890aa1d21b897796 (diff)
Merge "Propagate cancellation signal for both media sets and media sets content." into main
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 bc65bcc27..d2197a98d 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;
@@ -133,7 +134,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);
@@ -223,7 +224,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,
@@ -310,4 +311,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);