Fix NPE when calling CodecCapabilities.createFromProfileLevel

CodecCapabilities.createFromProfileLevel ended up calling
MediaCodecList.native_getGlobalSettings, which did not have an implementation
in Robolectric, and thus caused a NPE when called. Add a basic implementation
for it that just returns an empty Map.

PiperOrigin-RevId: 343132058
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowMediaCodecListTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowMediaCodecListTest.java
index 421aa5b..2f5b2af 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowMediaCodecListTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowMediaCodecListTest.java
@@ -104,4 +104,19 @@
     MediaCodecList mediaCodecList = new MediaCodecList(MediaCodecList.ALL_CODECS);
     assertThat(mediaCodecList.getCodecInfos()).hasLength(0);
   }
+
+  @Test
+  public void codecCapabilities_createFromProfileLevel() {
+    CodecCapabilities codecCapabilities =
+        CodecCapabilities.createFromProfileLevel(
+            MediaFormat.MIMETYPE_VIDEO_AVC,
+            CodecProfileLevel.AVCProfileBaseline,
+            CodecProfileLevel.AVCLevel2);
+    CodecProfileLevel expected = new CodecProfileLevel();
+    expected.profile = CodecProfileLevel.AVCProfileBaseline;
+    expected.level = CodecProfileLevel.AVCLevel2;
+    assertThat(codecCapabilities.getMimeType()).isEqualTo(MediaFormat.MIMETYPE_VIDEO_AVC);
+    assertThat(codecCapabilities.profileLevels).hasLength(1);
+    assertThat(codecCapabilities.profileLevels[0]).isEqualTo(expected);
+  }
 }
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowMediaCodecList.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowMediaCodecList.java
index 0d1f6b7..d16fd12 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowMediaCodecList.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowMediaCodecList.java
@@ -1,6 +1,7 @@
 package org.robolectric.shadows;
 
 import static android.os.Build.VERSION_CODES.LOLLIPOP;
+import static android.os.Build.VERSION_CODES.M;
 import static android.os.Build.VERSION_CODES.Q;
 
 import android.annotation.TargetApi;
@@ -8,7 +9,9 @@
 import android.media.MediaCodecList;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 import org.robolectric.annotation.Resetter;
@@ -53,4 +56,9 @@
   protected static MediaCodecInfo getNewCodecInfoAt(int index) {
     return mediaCodecInfos.get(index);
   }
+
+  @Implementation(minSdk = M)
+  protected static Map<String, Object> native_getGlobalSettings() {
+    return new HashMap<>();
+  }
 }