Merge cherrypicks of [14250604] into mainline-media-swcodec-release

Change-Id: I2049906924a51a017a2776d9216e38befe134853
diff --git a/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java b/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
index dbcba7f..298f5ae 100755
--- a/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
@@ -43,6 +43,8 @@
 
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -50,6 +52,7 @@
 import java.util.Arrays;
 import java.util.List;
 
+@RunWith(JUnit4.class)
 public class DecoderTestXheAac {
     private static final String TAG = "DecoderTestXheAac";
 
diff --git a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
index 98acf0b..7a1e649 100644
--- a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
@@ -57,7 +57,6 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.function.Function;
 
@@ -348,7 +347,9 @@
         if(!ApiLevelUtil.isAtLeast(Build.VERSION_CODES.R)) {
             // The fix for b/154357105 was released in mainline release 30.09.007.01
             // See https://android-build.googleplex.com/builds/treetop/googleplex-android-review/11174063
-            TestUtils.assumeMainlineModuleAtLeast("com.google.android.media", 300900701);
+            if (TestUtils.skipTestIfMainlineLessThan("com.google.android.media", 300900701)) {
+                return;
+            }
         }
         setDataSourceFd(R.raw.sinesweepid3v24ext);
         assertEquals("Mime type was other than expected",
diff --git a/tests/tests/media/src/android/media/cts/TestUtils.java b/tests/tests/media/src/android/media/cts/TestUtils.java
index fb8212f..ae4cb59 100644
--- a/tests/tests/media/src/android/media/cts/TestUtils.java
+++ b/tests/tests/media/src/android/media/cts/TestUtils.java
@@ -18,16 +18,17 @@
 
 import static android.content.pm.PackageManager.MATCH_APEX;
 
-import static org.junit.Assume.assumeNoException;
 import static org.junit.Assume.assumeTrue;
 
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.util.Log;
 
 import androidx.test.core.app.ApplicationProvider;
 
+import org.junit.Assert;
 import org.junit.AssumptionViolatedException;
 
 import java.util.Objects;
@@ -36,6 +37,7 @@
  * Utilities for tests.
  */
 public final class TestUtils {
+    private static String TAG = "TestUtils";
     private static final int WAIT_TIME_MS = 1000;
     private static final int WAIT_SERVICE_TIME_MS = 5000;
 
@@ -74,23 +76,60 @@
      *
      * @param module     the apex module name
      * @param minVersion the minimum version
-     * @throws AssumptionViolatedException if module.minVersion < minVersion
+     * @throws AssumptionViolatedException if module version < minVersion
      */
     static void assumeMainlineModuleAtLeast(String module, long minVersion) {
-        Context context = ApplicationProvider.getApplicationContext();
-        PackageInfo info;
         try {
-            info = context.getPackageManager().getPackageInfo(module,
-                    MATCH_APEX);
-            long actualVersion = info.getLongVersionCode();
-            assumeTrue("Assumed Module  " + module + " minVersion " + actualVersion + " >= "
-                            + minVersion,
-                    actualVersion >= minVersion);
+            long actualVersion = getModuleVersion(module);
+            assumeTrue("Assume  module  " + module + " version " + actualVersion + " < minVersion"
+                    + minVersion, actualVersion >= minVersion);
         } catch (PackageManager.NameNotFoundException e) {
-            assumeNoException(e);
+            Assert.fail(e.getMessage());
         }
     }
 
+    /**
+     * Checks if {@code module} is < {@code minVersion}
+     *
+     * <p>
+     * {@link AssumptionViolatedException} is not handled properly by {@code JUnit3} so just return
+     * the test
+     * early instead.
+     *
+     * @param module     the apex module name
+     * @param minVersion the minimum version
+     * @deprecated convert test to JUnit4 and use
+     * {@link #assumeMainlineModuleAtLeast(String, long)} instead.
+     */
+    @Deprecated
+    static boolean skipTestIfMainlineLessThan(String module, long minVersion) {
+        try {
+            long actualVersion = getModuleVersion(module);
+            if (actualVersion < minVersion) {
+                Log.i(TAG, "Skipping test because Module  " + module + " minVersion " + minVersion
+                        + " > "
+                        + minVersion
+                );
+                return true;
+            } else {
+                return false;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Assert.fail(e.getMessage());
+            return false;
+        }
+    }
+
+    private static long getModuleVersion(String module)
+            throws PackageManager.NameNotFoundException {
+        Context context = ApplicationProvider.getApplicationContext();
+        PackageInfo info;
+        info = context.getPackageManager().getPackageInfo(module,
+                MATCH_APEX);
+        return info.getLongVersionCode();
+    }
+
+
     private TestUtils() {
     }