Return empty lists by default in ShadowAccessibilityManager.get*ServiceList methods

This is consistent with Android, does not return null values for these methods.

This change also has the side effect of enabling Material Snackbar animations.
Material snackbar animations are disabled if the result of
AccessibilityManager.getEnabledAccessibilityServiceList is null. However, these
animations can also be skipped using UiAutomation.setAnimationScale(0f).
and setting a null value for
ShadowAccessibilityManager.setEnabledAccessibilityServiceList is still
supported.

PiperOrigin-RevId: 457778190
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowAccessibilityManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowAccessibilityManagerTest.java
index 4e19236..eff1ef7 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowAccessibilityManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowAccessibilityManagerTest.java
@@ -213,4 +213,14 @@
       return enabled;
     }
   }
+
+  @Test
+  public void getAccessibilityServiceList_doesNotNPE() {
+    assertThat(accessibilityManager.getAccessibilityServiceList()).isEmpty();
+    assertThat(accessibilityManager.getInstalledAccessibilityServiceList()).isEmpty();
+    assertThat(
+            accessibilityManager.getEnabledAccessibilityServiceList(
+                AccessibilityServiceInfo.FEEDBACK_SPOKEN))
+        .isEmpty();
+  }
 }
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowAccessibilityManager.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowAccessibilityManager.java
index 34d606b..35c350a 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowAccessibilityManager.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowAccessibilityManager.java
@@ -21,9 +21,11 @@
 import android.view.accessibility.IAccessibilityManager;
 import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
+import javax.annotation.Nullable;
 import org.robolectric.annotation.HiddenApi;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
@@ -44,9 +46,9 @@
   @RealObject AccessibilityManager realAccessibilityManager;
   private final List<AccessibilityEvent> sentAccessibilityEvents = new ArrayList<>();
   private boolean enabled;
-  private List<AccessibilityServiceInfo> installedAccessibilityServiceList;
-  private List<AccessibilityServiceInfo> enabledAccessibilityServiceList;
-  private List<ServiceInfo> accessibilityServiceList;
+  private List<AccessibilityServiceInfo> installedAccessibilityServiceList = new ArrayList<>();
+  private List<AccessibilityServiceInfo> enabledAccessibilityServiceList = new ArrayList<>();
+  private List<ServiceInfo> accessibilityServiceList = new ArrayList<>();
   private final HashMap<AccessibilityStateChangeListener, Handler>
       onAccessibilityStateChangeListeners = new HashMap<>();
   private boolean touchExplorationEnabled;
@@ -123,32 +125,40 @@
 
   @Implementation
   protected List<ServiceInfo> getAccessibilityServiceList() {
-    return accessibilityServiceList;
+    return Collections.unmodifiableList(accessibilityServiceList);
   }
 
   public void setAccessibilityServiceList(List<ServiceInfo> accessibilityServiceList) {
-    this.accessibilityServiceList = accessibilityServiceList;
+    this.accessibilityServiceList = new ArrayList<>(accessibilityServiceList);
   }
 
+  @Nullable
   @Implementation
   protected List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(
       int feedbackTypeFlags) {
-    return enabledAccessibilityServiceList;
+    // TODO(hoisie): prohibit null values for enabledAccessibilityServiceList
+    if (enabledAccessibilityServiceList == null) {
+      return null;
+    }
+    return Collections.unmodifiableList(enabledAccessibilityServiceList);
   }
 
   public void setEnabledAccessibilityServiceList(
       List<AccessibilityServiceInfo> enabledAccessibilityServiceList) {
-    this.enabledAccessibilityServiceList = enabledAccessibilityServiceList;
+    this.enabledAccessibilityServiceList =
+        enabledAccessibilityServiceList == null
+            ? null
+            : new ArrayList<>(enabledAccessibilityServiceList);
   }
 
   @Implementation
   protected List<AccessibilityServiceInfo> getInstalledAccessibilityServiceList() {
-    return installedAccessibilityServiceList;
+    return Collections.unmodifiableList(installedAccessibilityServiceList);
   }
 
   public void setInstalledAccessibilityServiceList(
       List<AccessibilityServiceInfo> installedAccessibilityServiceList) {
-    this.installedAccessibilityServiceList = installedAccessibilityServiceList;
+    this.installedAccessibilityServiceList = new ArrayList<>(installedAccessibilityServiceList);
   }
 
   @Implementation