diff options
author | 2025-02-28 03:16:02 -0800 | |
---|---|---|
committer | 2025-02-28 03:16:02 -0800 | |
commit | 98bd38914c2561324101a22b2968ac8c356911b2 (patch) | |
tree | 16bf5c14eb7a481924274706fbe37dc2deb483ac /src | |
parent | a5176b43b6c5ea42cf669f3dd81b3b2bc9863864 (diff) | |
parent | 08b441c8cc19e047ae2dbb9a890aa1d21b897796 (diff) |
Merge "Propagate cancellation signal for both media sets and media sets content." into main
Diffstat (limited to 'src')
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); |