Handle RuntimeException in Picker UI queries

Bug: 299077775
Test: Fixes flakes in CloudPhotoPickerTest#testVersionChange
Change-Id: I3bb3d1c8fd034dd6a3bb4b881f6b9c9e69cd8f9f
diff --git a/src/com/android/providers/media/photopicker/viewmodel/PickerViewModel.java b/src/com/android/providers/media/photopicker/viewmodel/PickerViewModel.java
index 5e1e05d..99f27ec 100644
--- a/src/com/android/providers/media/photopicker/viewmodel/PickerViewModel.java
+++ b/src/com/android/providers/media/photopicker/viewmodel/PickerViewModel.java
@@ -525,12 +525,18 @@
 
     private Cursor fetchItems(Category category, UserId userId,
             PaginationParameters pagingParameters) {
-        if (shouldShowOnlyLocalFeatures()) {
-            return mItemsProvider.getLocalItems(category, pagingParameters,
-                    mMimeTypeFilters, userId, mCancellationSignal);
-        } else {
-            return mItemsProvider.getAllItems(category, pagingParameters,
-                    mMimeTypeFilters, userId, mCancellationSignal);
+        try {
+            if (shouldShowOnlyLocalFeatures()) {
+                return mItemsProvider.getLocalItems(category, pagingParameters,
+                        mMimeTypeFilters, userId, mCancellationSignal);
+            } else {
+                return mItemsProvider.getAllItems(category, pagingParameters,
+                        mMimeTypeFilters, userId, mCancellationSignal);
+            }
+        } catch (RuntimeException ignored) {
+            // Catch OperationCanceledException.
+            Log.e(TAG, "Failed to fetch items due to a runtime exception", ignored);
+            return null;
         }
     }
 
@@ -689,10 +695,18 @@
     }
 
     private Cursor fetchCategories(UserId userId) {
-        if (shouldShowOnlyLocalFeatures()) {
-            return mItemsProvider.getLocalCategories(mMimeTypeFilters, userId, mCancellationSignal);
-        } else {
-            return mItemsProvider.getAllCategories(mMimeTypeFilters, userId, mCancellationSignal);
+        try {
+            if (shouldShowOnlyLocalFeatures()) {
+                return mItemsProvider
+                        .getLocalCategories(mMimeTypeFilters, userId, mCancellationSignal);
+            } else {
+                return mItemsProvider
+                        .getAllCategories(mMimeTypeFilters, userId, mCancellationSignal);
+            }
+        } catch (RuntimeException ignored) {
+            // Catch OperationCanceledException.
+            Log.e(TAG, "Failed to fetch categories due to a runtime exception", ignored);
+            return null;
         }
     }