Merge "Skip liblog dropped event."
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 7b9c427..2572b01 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -36,6 +36,9 @@
                       tests/tests/view/
                       tests/tests/widget/
                       common/device-side/util/
+                      hostsidetests/car/
+                      hostsidetests/multiuser/
+                      hostsidetests/scopedstorage/
                       hostsidetests/stagedinstall/
                       hostsidetests/userspacereboot/
                       tests/tests/packageinstaller/atomicinstall/
diff --git a/apps/CameraITS/tests/scene4/test_multi_camera_alignment.py b/apps/CameraITS/tests/scene4/test_multi_camera_alignment.py
index 67f3806..7ca6e24 100644
--- a/apps/CameraITS/tests/scene4/test_multi_camera_alignment.py
+++ b/apps/CameraITS/tests/scene4/test_multi_camera_alignment.py
@@ -279,8 +279,8 @@
         dist_y = abs(child_shape['cty']-prt_shape['cty'])
         # 1. 0.56*Parent's width < Child's width < 0.76*Parent's width.
         # 2. 0.56*Parent's height < Child's height < 0.76*Parent's height.
-        # 3. Child's width > 0.1*Image width
-        # 4. Child's height > 0.1*Image height
+        # 3. Child's width > 0.075*Image width
+        # 4. Child's height > 0.075*Image height
         # 5. 0.25*Parent's area < Child's area < 0.45*Parent's area
         # 6. Child == 0, and Parent == 255
         # 7. Center of Child and center of parent should overlap
@@ -288,8 +288,8 @@
                     < prt_shape['width'] * 0.76
                     and prt_shape['height'] * 0.56 < child_shape['height']
                     < prt_shape['height'] * 0.76
-                    and child_shape['width'] > 0.1 * size[1]
-                    and child_shape['height'] > 0.1 * size[0]
+                    and child_shape['width'] > 0.075 * size[1]
+                    and child_shape['height'] > 0.075 * size[0]
                     and 0.30 * prt_area < child_area < 0.50 * prt_area
                     and img_bw[child_shape['cty']][child_shape['ctx']] == 0
                     and img_bw[child_shape['top']][child_shape['left']] == 255
diff --git a/apps/CtsVerifier/Android.bp b/apps/CtsVerifier/Android.bp
index 01c579e..69ef63f 100644
--- a/apps/CtsVerifier/Android.bp
+++ b/apps/CtsVerifier/Android.bp
@@ -2,3 +2,66 @@
     name: "CtsVerifierMockVrListenerServiceFiles",
     srcs: ["src/com/android/cts/verifier/vr/MockVrListenerService.java"],
 }
+
+android_test {
+    name: "CtsVerifier",
+    defaults: ["cts_error_prone_rules_tests"],
+
+    compile_multilib: "both",
+
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+
+    aidl: {
+        include_dirs: ["frameworks/native/aidl/gui"],
+    },
+
+    static_libs: [
+        "android-ex-camera2",
+        "compatibility-common-util-devicesidelib",
+        "cts-sensors-tests",
+        "cts-camera-performance-tests",
+        "ctstestrunner-axt",
+        "apache-commons-math",
+        "androidplot",
+        "ctsverifier-opencv",
+        "core-tests-support",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "mockwebserver",
+        "compatibility-device-util-axt",
+        "platform-test-annotations",
+        "cts-security-test-support-library",
+        "cts-midi-lib",
+        "cbor-java",
+        "CtsCameraUtils",
+        "androidx.legacy_legacy-support-v4",
+        "CtsForceStopHelper-constants",
+    ],
+
+    libs: ["telephony-common"] + ["android.test.runner.stubs"] + ["android.test.base.stubs"] + ["android.test.mock.stubs"] + ["android.car"] + ["voip-common"] + ["truth-prebuilt"],
+
+    platform_apis: true,
+
+    jni_libs: [
+        "libctsverifier_jni",
+        "libctsnativemidi_jni",
+        "libaudioloopback_jni",
+    ],
+
+    optimize: {
+        proguard_flags_files: ["proguard.flags"],
+    },
+
+    dex_preopt: {
+        enabled: false,
+    },
+}
+
+// opencv library
+java_import {
+    name: "ctsverifier-opencv",
+    jars: ["libs/opencv3-android.jar"],
+}
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index c22e03d..007be8c 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -15,65 +15,6 @@
 #
 
 LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_MULTILIB := both
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src) \
-                    ../ForceStopHelperApp/src/com/android/cts/forcestophelper/Constants.java
-
-LOCAL_AIDL_INCLUDES := \
-    frameworks/native/aidl/gui
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := android-ex-camera2 \
-                               compatibility-common-util-devicesidelib \
-                               cts-sensors-tests \
-                               cts-camera-performance-tests \
-                               ctstestrunner-axt \
-                               apache-commons-math \
-                               androidplot \
-                               ctsverifier-opencv \
-                               core-tests-support \
-                               androidx.legacy_legacy-support-v4  \
-                               mockito-target-minus-junit4 \
-                               mockwebserver \
-                               compatibility-device-util-axt \
-                               platform-test-annotations \
-                               cts-security-test-support-library \
-                               cts-midi-lib \
-                               cbor-java
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_JAVA_LIBRARIES += telephony-common
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-LOCAL_JAVA_LIBRARIES += android.test.mock.stubs
-LOCAL_JAVA_LIBRARIES += android.car
-LOCAL_JAVA_LIBRARIES += voip-common
-LOCAL_JAVA_LIBRARIES += truth-prebuilt
-
-LOCAL_PACKAGE_NAME := CtsVerifier
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-	libctsverifier_jni \
-	libctsnativemidi_jni \
-	libaudioloopback_jni \
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-LOCAL_DEX_PREOPT := false
--include cts/error_prone_rules_tests.mk
-include $(BUILD_PACKAGE)
-
 # Build CTS verifier framework as a libary.
 
 include $(CLEAR_VARS)
@@ -100,14 +41,6 @@
 
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
-# opencv library
-include $(CLEAR_VARS)
-
-LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
-        ctsverifier-opencv:libs/opencv3-android.jar
-
-include $(BUILD_MULTI_PREBUILT)
-
 pre-installed-apps := \
     CtsEmptyDeviceAdmin \
     CtsEmptyDeviceOwner \
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 875a6aa..0724870 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -1390,7 +1390,7 @@
             <meta-data android:name="test_category" android:value="@string/test_category_security" />
             <meta-data android:name="test_required_features" android:value="android.software.secure_lock_screen" />
             <meta-data android:name="test_excluded_features"
-                android:value="android.hardware.type.television:android.software.leanback:android.hardware.type.watch" />
+                android:value="android.hardware.type.television:android.software.leanback:android.hardware.type.watch:android.hardware.type.automotive" />
             <meta-data android:name="display_mode"
                        android:value="multi_display_mode" />
         </activity>
@@ -1818,11 +1818,11 @@
         </activity>
         -->
 
-        <activity android:name=".location.LocationListenerActivity"
+        <activity android:name=".managedprovisioning.LocationListenerActivity"
                 android:label="@string/location_listener_activity"
                 android:configChanges="keyboardHidden|orientation|screenSize">
             <intent-filter>
-                <action android:name="com.android.cts.verifier.location.SET_LOCATION_AND_CHECK" />
+                <action android:name="com.android.cts.verifier.managedprovisioning.SET_LOCATION_AND_CHECK" />
                 <category android:name="android.intent.category.DEFAULT"></category>
                 </intent-filter>
             <meta-data android:name="display_mode"
@@ -4689,6 +4689,20 @@
             </intent-filter>
         </activity-alias>
 
+        <service android:name=
+            "com.android.cts.verifier.car.GarageModeChecker"
+            android:permission="android.permission.BIND_JOB_SERVICE" />
+        <activity android:name=".car.GarageModeTestActivity"
+                android:label="@string/car_garage_mode_test">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_car" />
+            <meta-data android:name="test_required_features"
+                android:value="android.hardware.type.automotive"/>
+        </activity>
+
         <activity-alias android:name=".car.CarDockActivity2"
             android:targetActivity=".car.CarDockActivity"
                 android:exported="true"
diff --git a/apps/CtsVerifier/res/layout/garage_test_main.xml b/apps/CtsVerifier/res/layout/garage_test_main.xml
new file mode 100644
index 0000000..5073523
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/garage_test_main.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2020 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<com.android.cts.verifier.BoxInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <LinearLayout app:ctsv_layout_box="all"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:orientation="vertical" >
+        <include layout="@layout/pass_fail_buttons"/>
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingVertical="12dp"
+            android:paddingHorizontal="24dp"
+            android:id="@+id/car_garage_mode_results"/>
+        <Button
+            android:id="@+id/car_wifi_settings"
+            android:layout_height="100dp"
+            android:layout_width="500dp"
+            android:layout_gravity="center"
+            android:layout_marginTop="10dp"
+            android:text="@string/car_wifi_settings"/>
+        <Button
+            android:id="@+id/launch_garage_monitor"
+            android:layout_height="100dp"
+            android:layout_width="500dp"
+            android:layout_gravity="center"
+            android:layout_marginTop="10dp"
+            android:text="@string/car_enable_garage_monitor"/>
+    </LinearLayout>
+</com.android.cts.verifier.BoxInsetLayout>
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
old mode 100755
new mode 100644
index a0927f5..7be7cc3
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -128,6 +128,18 @@
     <string name="da_tapjacking_test_info">This test checks that an activity cannot tapjack the
         user by obscuring the device admin details while prompting the user to activate the admin.
     </string>
+    <string name="car_enable_garage_monitor">Enable Garage Mode Monitor</string>
+    <string name="car_garage_mode_test">Garage Mode Test</string>
+    <string name="car_garage_mode_test_desc">
+        This test verifies that Garage Mode runs at the end of a drive.\n\n
+        Optional: Disable Wi-Fi to minimize other activity during the test.\n\n
+        Touch "Enable Garage Mode Monitor" to launch the Garage Mode verifier.\n\n
+        Turn the vehicle off and exit the vehicle (or take the proprietary action that
+        initiates shut-down of the system).\n\n
+        Do not enter or disturb the vehicle for at least 15 minutes.\n\n
+        Enter the vehicle. Re-launch the CTS-Verifier app if it is not running.\n\n
+        If Garage Mode ran as required, the pass button will be enabled.</string>
+    <string name="car_wifi_settings">Go to Wi-Fi settings</string>
     <string name="car_dock_test">Car Dock Test</string>
     <string name="car_dock_test_desc">This test ensures that car mode opens the app associated with
         car dock when going into car mode.\n\n
@@ -2339,7 +2351,7 @@
     <string name="caboot_install_cert">Install credential</string>
     <string name="caboot_remove_screen_lock">Remove screen lock</string>
     <string name="caboot_reboot_desc">Please reboot the device and return to this test.</string>
-    <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification that the network may be monitored. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
+    <string name="caboot_after_boot">AFTER REBOOTING: Check that there is a notification saying a certificate authority is installed. Opening that notification should show a dialog box giving more information, with a button to check trusted credentials. This should open up the same view of trusted credentials that you get via the "Check credentials" button.</string>
 
     <!-- Strings for KeyChain -->
     <string name="keychain_test">KeyChain Storage Test</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
index 30df08b..f38ba85 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/video/CameraVideoActivity.java
@@ -26,6 +26,7 @@
 import android.hardware.camera2.CameraAccessException;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraManager;
+import android.hardware.cts.helpers.CameraUtils;
 import android.media.CamcorderProfile;
 import android.media.MediaPlayer;
 import android.media.MediaRecorder;
@@ -87,6 +88,7 @@
     private int mCurrentCameraId = -1;
     private Camera mCamera;
     private boolean mIsExternalCamera;
+    private int mVideoFrameRate = -1;
 
     private MediaRecorder mMediaRecorder;
 
@@ -183,6 +185,14 @@
         return Math.max(BIT_RATE_MIN, Math.min(BIT_RATE_MAX, rate));
     }
 
+    private int getVideoFrameRate() {
+        return mVideoFrameRate;
+    }
+
+    private void setVideoFrameRate(int videoFrameRate) {
+        mVideoFrameRate = videoFrameRate;
+    }
+
     private boolean prepareVideoRecorder() {
 
         mMediaRecorder = new MediaRecorder();
@@ -226,6 +236,7 @@
             mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
             mMediaRecorder.setVideoEncodingBitRate(getVideoBitRate(recordSize));
             mMediaRecorder.setVideoSize(recordSize.width, recordSize.height);
+            mMediaRecorder.setVideoFrameRate(getVideoFrameRate());
         } else {
             mMediaRecorder.setProfile(CamcorderProfile.get(mCurrentCameraId, mCurrentVideoSizeId));
         }
@@ -769,6 +780,7 @@
         shutdownCamera();
 
         mCurrentCameraId = id;
+        mIsExternalCamera = isExternalCamera(id);
         try {
             mCamera = Camera.open(id);
         }
@@ -777,7 +789,6 @@
             failTest("camera not available" + e.getMessage());
             return;
         }
-        mIsExternalCamera = isExternalCamera(id);
 
         Camera.Parameters p = mCamera.getParameters();
         if (VERBOSE) {
@@ -798,6 +809,10 @@
             }
         };
 
+        if (mIsExternalCamera) {
+            setVideoFrameRate(p.getPreviewFrameRate());
+        }
+
         SizeCompare s = new SizeCompare();
         TreeSet<Size> sortedResolutions = new TreeSet<Size>(s);
         sortedResolutions.addAll(unsortedSizes);
@@ -958,18 +973,9 @@
     }
 
     private boolean isExternalCamera(int cameraId) {
-        CameraManager manager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);
         try {
-            String cameraIdStr = manager.getCameraIdList()[cameraId];
-            CameraCharacteristics characteristics =
-                    manager.getCameraCharacteristics(cameraIdStr);
-
-            if (characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL) ==
-                            CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL) {
-                // External camera doesn't support FOV informations
-                return true;
-            }
-        } catch (CameraAccessException e) {
+            return CameraUtils.isExternal(this, cameraId);
+        } catch (Exception e) {
             Toast.makeText(this, "Could not access camera " + cameraId +
                     ": " + e.getMessage(), Toast.LENGTH_LONG).show();
         }
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeChecker.java b/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeChecker.java
new file mode 100644
index 0000000..c1875cc
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeChecker.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.car;
+
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PersistableBundle;
+import android.util.Log;
+import android.util.SparseArray;
+
+import java.lang.ref.WeakReference;
+import java.util.List;
+
+public final class GarageModeChecker extends JobService {
+    private static final String TAG = GarageModeChecker.class.getSimpleName();
+
+    static final String PREFS_FILE_NAME = "GarageModeChecker_prefs";
+    static final String PREFS_INITIATION = "test-initiation";
+    static final String PREFS_GARAGE_MODE_START = "garage-mode-start";
+    static final String PREFS_GARAGE_MODE_END = "garage-mode-end";
+    static final String PREFS_TERMINATION = "termination-time";
+
+    private static final int SECONDS_PER_ITERATION = 10;
+    private static final int MS_PER_ITERATION = SECONDS_PER_ITERATION * 1000;
+
+    private static final int GARAGE_JOB_ID = GarageModeTestActivity.class.hashCode();
+    private static final String JOB_NUMBER = "job_number";
+    private static final String REMAINING_SECONDS = "remaining_seconds";
+    // JobScheduler allows a maximum of 10 minutes for a job
+    private static final int MAX_SECONDS_PER_JOB = 9 * 60;
+
+    private static final int MSG_FINISHED = 0;
+    private static final int MSG_RUN_JOB = 1;
+    private static final int MSG_CANCEL_JOB = 2;
+
+    private Context mIdleJobContext;
+    
+    private boolean mReportFirstExecution = true;
+
+    public static void scheduleAnIdleJob(Context context, int durationSeconds) {
+        JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
+        // Get the next available job ID
+        int highestJobNumber = 0;
+        for (JobInfo jobInfo : jobScheduler.getAllPendingJobs()) {
+            int jobId = jobInfo.getId();
+            if (highestJobNumber < jobId) {
+                highestJobNumber = jobId;
+            }
+        }
+        scheduleJob(context, highestJobNumber + 1, durationSeconds);
+    }
+
+    private static void scheduleJob(Context context, int jobNumber, int durationSeconds) {
+        JobScheduler jobScheduler = context.getSystemService(JobScheduler.class);
+        ComponentName jobComponentName = new ComponentName(context, GarageModeChecker.class);
+        JobInfo.Builder builder = new JobInfo.Builder(jobNumber, jobComponentName);
+
+        PersistableBundle bundle = new PersistableBundle();
+        bundle.putInt(JOB_NUMBER, jobNumber);
+        bundle.putInt(REMAINING_SECONDS, durationSeconds);
+
+        JobInfo jobInfo = builder
+                .setRequiresDeviceIdle(true)
+                .setExtras(bundle)
+                .build();
+        jobScheduler.schedule(jobInfo);
+    }
+
+    private final Handler mHandler = new Handler() {
+        private SparseArray<JobParameters> mTaskMap = new SparseArray<>();
+        @Override
+        public void handleMessage(Message msg) {
+            JobParameters job = (JobParameters) msg.obj;
+            switch (msg.what) {
+                case MSG_FINISHED:
+                    mTaskMap.remove(job.getJobId());
+                    jobFinished(job, false);
+                    break;
+                case MSG_RUN_JOB:
+                    GarageModeCheckerTask task = new GarageModeCheckerTask(this, job, msg.arg1);
+                    task.execute();
+                    mTaskMap.put(job.getJobId(), job);
+                    break;
+                case MSG_CANCEL_JOB:
+                    JobParameters job1 = mTaskMap.get(job.getJobId());
+                    if (job1 != null) {
+                        removeMessages(MSG_RUN_JOB, job1);
+                        mTaskMap.remove(job.getJobId());
+                    }
+                    SharedPreferences prefs = mIdleJobContext.getSharedPreferences(PREFS_FILE_NAME,
+                            Context.MODE_PRIVATE);
+                    SharedPreferences.Editor editor = prefs.edit();
+                    editor.putLong(PREFS_TERMINATION, System.currentTimeMillis());
+                    editor.commit();
+                    Log.v(TAG, "Idle job was terminated");
+                    break;
+            }
+        }
+    };
+
+    @Override
+    public boolean onStopJob(JobParameters jobParameters) {
+        Message msg = mHandler.obtainMessage(MSG_CANCEL_JOB, 0, 0, jobParameters);
+        mHandler.sendMessage(msg);
+        return false;
+    }
+
+    @Override
+    public boolean onStartJob(final JobParameters jobParameters) {
+        mIdleJobContext = getApplicationContext();
+        if (mReportFirstExecution) {
+            mReportFirstExecution = false;
+            // Remember the start time
+            SharedPreferences prefs = mIdleJobContext.getSharedPreferences(PREFS_FILE_NAME,
+                    Context.MODE_PRIVATE);
+            SharedPreferences.Editor editor = prefs.edit();
+            editor.putLong(PREFS_GARAGE_MODE_START, System.currentTimeMillis());
+            editor.commit();
+            Log.v(TAG, "Starting idle job");
+        }
+        Message msg = mHandler.obtainMessage(MSG_RUN_JOB, 0, 0, jobParameters);
+        mHandler.sendMessage(msg);
+        return true;
+    }
+
+    private final class GarageModeCheckerTask extends AsyncTask<Void, Void, Boolean> {
+        private final WeakReference<Handler> mHandler;
+        private final JobParameters mJobParameter;
+        private final int mIteration;
+
+        GarageModeCheckerTask(Handler handler, JobParameters jobParameters, int iteration) {
+            mHandler = new WeakReference<Handler>(handler);
+            mJobParameter = jobParameters;
+            mIteration = iteration;
+        }
+
+        @Override
+        protected Boolean doInBackground(Void... infos) {
+            int remainingSeconds = mJobParameter.getExtras().getInt(REMAINING_SECONDS);
+            int myMaxTime = Math.min(remainingSeconds, MAX_SECONDS_PER_JOB);
+            int elapsedSeconds = SECONDS_PER_ITERATION * mIteration;
+
+            if (elapsedSeconds >= myMaxTime) {
+                // This job is done
+                if (myMaxTime == remainingSeconds) {
+                    // This is the final job. Note the completion time.
+                    SharedPreferences prefs = mIdleJobContext.getSharedPreferences(PREFS_FILE_NAME,
+                            Context.MODE_PRIVATE);
+                    SharedPreferences.Editor editor = prefs.edit();
+                    editor.putLong(PREFS_GARAGE_MODE_END, System.currentTimeMillis());
+                    editor.commit();
+                    Log.v(TAG, "Idle job is finished");
+                }
+                return false;
+            }
+            if (elapsedSeconds >= (myMaxTime - SECONDS_PER_ITERATION)
+                    && (myMaxTime < remainingSeconds)) {
+                // This job is about to finish and there is more time remaining.
+                // Schedule another job.
+                scheduleJob(mIdleJobContext, mJobParameter.getJobId() + 1,
+                        remainingSeconds - elapsedSeconds);
+            }
+            return true;
+        }
+
+        @Override
+        protected void onPostExecute(Boolean result) {
+            final Handler handler = mHandler.get();
+            if (handler == null) {
+                return;
+            }
+            if (result) {
+                Message msg = handler.obtainMessage(MSG_RUN_JOB, mIteration + 1, 0, mJobParameter);
+                handler.sendMessageDelayed(msg, MS_PER_ITERATION);
+            } else {
+                Message msg = handler.obtainMessage(MSG_FINISHED, 0, 0, mJobParameter);
+                handler.sendMessage(msg);
+            }
+        }
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeTestActivity.java
new file mode 100644
index 0000000..09f5e17
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/car/GarageModeTestActivity.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.car;
+
+import android.app.UiModeManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.text.DateFormat;
+
+/**
+ * Tests that Garage Mode runs at the end of a drive
+ */
+public final class GarageModeTestActivity extends PassFailButtons.Activity {
+    // Requirements from Android 10 Compatibility Definition
+    // 2.5.4. Performance and Power
+    // Automotive device implementations:
+    //
+    // [8.3/A-1-3] MUST enter Garage Mode at least once before the car is powered down.
+    // [8.3/A-1-4] MUST be in Garage Mode for at least 15 minutes unless:
+    //                 The battery is drained.
+    //                 No idle jobs are scheduled.
+    //                 The driver exits Garage Mode.
+    //
+    // As updated:
+    // [8.3/A-1-3] MUST support Garage Mode functionality
+    // [8.3/A-1-4] SHOULD be in Garage Mode for at least 15 minutes after every drive unless:
+    //                 The battery is drained
+    //                 No idle jobs are scheduled
+    //                 The driver exits Garage Mode
+
+    private static final String TAG = GarageModeTestActivity.class.getSimpleName();
+
+    // The recommendation is for Garage Mode to run for 15 minutes. To allow
+    // for some variation, run the test for 14 minutes and verify that it
+    // ran at least 13 minutes.
+    private static final int NUM_SECONDS_DURATION = 14 * 60;
+    private static final long DURATION_MINIMUM_TEST_MS = (NUM_SECONDS_DURATION - 60) * 1000L;
+
+    private TextView mStatusText;
+    private boolean mJustLaunchedVerifier;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        View view = getLayoutInflater().inflate(R.layout.garage_test_main, null);
+        setContentView(view);
+
+        setInfoResources(R.string.car_garage_mode_test, R.string.car_garage_mode_test_desc, -1);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+        mStatusText = findViewById(R.id.car_garage_mode_results);
+
+        Button wifiButton = view.findViewById(R.id.car_wifi_settings);
+        wifiButton.setOnClickListener(
+                (buttonView) -> startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)));
+
+        Button monitorButton = (Button) view.findViewById(R.id.launch_garage_monitor);
+        monitorButton.setOnClickListener((buttonView) -> {
+            Context context = GarageModeTestActivity.this;
+            SharedPreferences prefs = context.getSharedPreferences(
+                    GarageModeChecker.PREFS_FILE_NAME, Context.MODE_PRIVATE);
+            long now = System.currentTimeMillis();
+            SharedPreferences.Editor editor = prefs.edit();
+            editor.putLong(GarageModeChecker.PREFS_INITIATION, now);
+            editor.putLong(GarageModeChecker.PREFS_GARAGE_MODE_START, 0);
+            editor.putLong(GarageModeChecker.PREFS_GARAGE_MODE_END, 0);
+            editor.putLong(GarageModeChecker.PREFS_TERMINATION, 0);
+            editor.commit();
+
+            GarageModeChecker.scheduleAnIdleJob(context, NUM_SECONDS_DURATION);
+            mJustLaunchedVerifier = true;
+            verifyStatus();
+            Log.v(TAG, "Scheduled GarageModeChecker to run when idle");
+        });
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        verifyStatus();
+    }
+
+    private void verifyStatus() {
+        Context context = GarageModeTestActivity.this;
+        SharedPreferences prefs = context.getSharedPreferences(
+                GarageModeChecker.PREFS_FILE_NAME, Context.MODE_PRIVATE);
+        String resultsString;
+        DateFormat dateTime = DateFormat.getDateTimeInstance();
+
+        long initiateTime = prefs.getLong(GarageModeChecker.PREFS_INITIATION, 0);
+        long garageModeStart = prefs.getLong(GarageModeChecker.PREFS_GARAGE_MODE_START, 0);
+        long garageModeEnd = prefs.getLong(GarageModeChecker.PREFS_GARAGE_MODE_END, 0);
+        long termination = prefs.getLong(GarageModeChecker.PREFS_TERMINATION, 0);
+
+        boolean testPassed = false;
+        if (initiateTime == 0) {
+            resultsString = "No results are available.\n\n"
+                    + "Perform the indicated steps to run the test.";
+        } else if (mJustLaunchedVerifier) {
+            resultsString = String.format("No results are available.\n\n"
+                            + "Perform the indicated steps to run the test.\n\n"
+                            + "%s -- Test was enabled",
+                    dateTime.format(initiateTime));
+            mJustLaunchedVerifier = false;
+        } else if (garageModeStart == 0) {
+            resultsString = String.format("Test failed.\n"
+                            + "Garage Mode did not run.\n\n"
+                            + "%s -- Test was enabled",
+                    dateTime.format(initiateTime));
+        } else if (garageModeEnd > (garageModeStart + DURATION_MINIMUM_TEST_MS)) {
+            resultsString = String.format("Test Passed.\n"
+                            + "Garage Mode ran as required and for the recommended time.\n\n"
+                            + "%s -- Test was enabled\n"
+                            + "%s -- Garage mode started\n"
+                            + "%s -- Garage mode completed",
+                    dateTime.format(initiateTime), dateTime.format(garageModeStart),
+                    dateTime.format(garageModeEnd));
+            testPassed = true;
+        } else if (termination > 0) {
+            resultsString = String.format("Test Passed.\n"
+                            + "Garage Mode ran as required, "
+                            + "but for less time than is recommended.\n"
+                            + "The CDD recommends that Garage Mode runs for 15 minutes.\n\n"
+                            + "%s -- Test was enabled\n"
+                            + "%s -- Garage mode started\n"
+                            + "%s -- Garage mode was terminated",
+                    dateTime.format(initiateTime), dateTime.format(garageModeStart),
+                    dateTime.format(termination));
+            testPassed = true;
+        } else {
+            resultsString = "Test failed.\n\n"
+                    + "Garage Mode started, but terminated unexpectedly.\n\n"
+                    + dateTime.format(initiateTime) + " -- Test was enabled\n"
+                    + dateTime.format(garageModeStart) + " -- Garage mode started";
+        }
+        mStatusText.setText(resultsString);
+        getPassButton().setEnabled(testPassed);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationListenerActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationListenerActivity.java
deleted file mode 100644
index 4db0b54..0000000
--- a/apps/CtsVerifier/src/com/android/cts/verifier/location/LocationListenerActivity.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.cts.verifier.location;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.location.Location;
-import android.location.LocationListener;
-import android.location.LocationManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Process;
-import android.provider.Settings;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.android.cts.verifier.R;
-
-public class LocationListenerActivity extends Activity implements Handler.Callback {
-    // Primary -> managed intent: request to goto the location settings page and listen to updates.
-    public static final String ACTION_SET_LOCATION_AND_CHECK_UPDATES =
-            "com.android.cts.verifier.location.SET_LOCATION_AND_CHECK";
-    private static final int REQUEST_LOCATION_UPDATE = 1;
-
-    private static final int MSG_TIMEOUT_ID = 1;
-
-    private static final long MSG_TIMEOUT_MILLISEC = 15000; // 15 seconds.
-
-    private LocationManager mLocationManager;
-    private Handler mHandler;
-    private boolean mIsLocationUpdated;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
-        mHandler = new Handler(this);
-        mIsLocationUpdated = false;
-        Intent intent = getIntent();
-        if (intent != null) {
-            String action = intent.getAction();
-            if (ACTION_SET_LOCATION_AND_CHECK_UPDATES.equals(action)) {
-                Log.d(getLogTag(), "ACTION_SET_LOCATION_AND_CHECK_UPDATES received in uid "
-                        + Process.myUid());
-                handleLocationAction();
-            }
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case REQUEST_LOCATION_UPDATE: {
-                Log.d(getLogTag(), "Exit location settings:OK");
-                mLocationManager.removeUpdates(mLocationListener);
-                mHandler.removeMessages(MSG_TIMEOUT_ID);
-                finish();
-                break;
-            }
-            default: {
-                Log.wtf(getLogTag(), "Unknown requestCode " + requestCode + "; data = " + data);
-                break;
-            }
-        }
-    }
-
-    protected void handleLocationAction() {
-        Intent locationSettingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
-        if (locationSettingsIntent.resolveActivity(getPackageManager()) != null) {
-            startActivityForResult(locationSettingsIntent, REQUEST_LOCATION_UPDATE);
-            scheduleTimeout();
-        } else {
-            Log.e(getLogTag(), "Settings.ACTION_LOCATION_SOURCE_SETTINGS could not be resolved");
-            finish();
-        }
-        mLocationManager.requestLocationUpdates(
-                LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
-    }
-
-    private final LocationListener mLocationListener = new LocationListener() {
-        @Override
-        public void onLocationChanged(Location location) {
-            synchronized (LocationListenerActivity.this) {
-                if (mIsLocationUpdated) return;
-                showToast(R.string.provisioning_byod_location_mode_enable_toast_location_change);
-                mIsLocationUpdated = true;
-            }
-        }
-
-        @Override
-        public void onProviderDisabled(String provider) {
-        }
-
-        @Override
-        public void onProviderEnabled(String provider) {
-        }
-
-        @Override
-        public void onStatusChanged(String provider, int status, Bundle extras) {
-        }
-    };
-
-    private void scheduleTimeout() {
-        mHandler.removeMessages(MSG_TIMEOUT_ID);
-        mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_TIMEOUT_ID), MSG_TIMEOUT_MILLISEC);
-    }
-
-    @Override
-    public boolean handleMessage(Message msg) {
-        if (msg.what == MSG_TIMEOUT_ID) {
-            synchronized (this) {
-                if (mIsLocationUpdated) return true;
-                showToast(R.string.provisioning_byod_location_mode_time_out_toast);
-            }
-        }
-        return true;
-    }
-
-    protected String getLogTag() {
-        return "LocationListenerActivity";
-    }
-
-    protected void showToast(int messageId) {
-        String message = getString(messageId);
-        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
-    }
-}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/OWNERS b/apps/CtsVerifier/src/com/android/cts/verifier/location/OWNERS
deleted file mode 100644
index b6377b0..0000000
--- a/apps/CtsVerifier/src/com/android/cts/verifier/location/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-# Bug component: 32850
-wyattriley@google.com
-yuhany@google.com
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
index 656cd89..9facc13 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodFlowTestActivity.java
@@ -39,7 +39,6 @@
 import com.android.cts.verifier.TestListActivity;
 import com.android.cts.verifier.TestListAdapter.TestListItem;
 import com.android.cts.verifier.TestResult;
-import com.android.cts.verifier.location.LocationListenerActivity;
 
 /**
  * CTS verifier test for BYOD managed provisioning flow
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
index a240b83..a6a25e6 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/ByodHelperActivity.java
@@ -32,12 +32,12 @@
 import android.os.Handler;
 import android.os.UserManager;
 import android.provider.MediaStore;
-import androidx.core.content.FileProvider;
-import androidx.core.util.Pair;
 import android.util.Log;
 
+import androidx.core.content.FileProvider;
+import androidx.core.util.Pair;
+
 import com.android.cts.verifier.R;
-import com.android.cts.verifier.location.LocationListenerActivity;
 import com.android.cts.verifier.managedprovisioning.ByodPresentMediaDialog.DialogCallback;
 
 import java.io.File;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
index c9e2449..c43bd5d 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/DeviceAdminTestReceiver.java
@@ -32,11 +32,11 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.UserHandle;
-import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 import android.util.Log;
 
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
 import com.android.cts.verifier.R;
-import com.android.cts.verifier.location.LocationListenerActivity;
 
 import java.util.Collections;
 import java.util.function.Consumer;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/LocationListenerActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/LocationListenerActivity.java
new file mode 100644
index 0000000..2ad5f99
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/LocationListenerActivity.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.verifier.managedprovisioning;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.Process;
+import android.provider.Settings;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.cts.verifier.R;
+
+public class LocationListenerActivity extends Activity implements Handler.Callback {
+    // Primary -> managed intent: request to goto the location settings page and listen to updates.
+    public static final String ACTION_SET_LOCATION_AND_CHECK_UPDATES =
+            "com.android.cts.verifier.managedprovisioning.SET_LOCATION_AND_CHECK";
+    private static final int REQUEST_LOCATION_UPDATE = 1;
+
+    private static final int MSG_TIMEOUT_ID = 1;
+
+    private static final long MSG_TIMEOUT_MILLISEC = 15000; // 15 seconds.
+
+    private LocationManager mLocationManager;
+    private Handler mHandler;
+    private boolean mIsLocationUpdated;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
+        mHandler = new Handler(this);
+        mIsLocationUpdated = false;
+        Intent intent = getIntent();
+        if (intent != null) {
+            String action = intent.getAction();
+            if (ACTION_SET_LOCATION_AND_CHECK_UPDATES.equals(action)) {
+                Log.d(getLogTag(), "ACTION_SET_LOCATION_AND_CHECK_UPDATES received in uid "
+                        + Process.myUid());
+                handleLocationAction();
+            }
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        switch (requestCode) {
+            case REQUEST_LOCATION_UPDATE: {
+                Log.d(getLogTag(), "Exit location settings:OK");
+                mLocationManager.removeUpdates(mLocationListener);
+                mHandler.removeMessages(MSG_TIMEOUT_ID);
+                finish();
+                break;
+            }
+            default: {
+                Log.wtf(getLogTag(), "Unknown requestCode " + requestCode + "; data = " + data);
+                break;
+            }
+        }
+    }
+
+    protected void handleLocationAction() {
+        Intent locationSettingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+        if (locationSettingsIntent.resolveActivity(getPackageManager()) != null) {
+            startActivityForResult(locationSettingsIntent, REQUEST_LOCATION_UPDATE);
+            scheduleTimeout();
+        } else {
+            Log.e(getLogTag(), "Settings.ACTION_LOCATION_SOURCE_SETTINGS could not be resolved");
+            finish();
+        }
+        mLocationManager.requestLocationUpdates(
+                LocationManager.GPS_PROVIDER, 0, 0, mLocationListener);
+    }
+
+    private final LocationListener mLocationListener = new LocationListener() {
+        @Override
+        public void onLocationChanged(Location location) {
+            synchronized (LocationListenerActivity.this) {
+                if (mIsLocationUpdated) return;
+                showToast(R.string.provisioning_byod_location_mode_enable_toast_location_change);
+                mIsLocationUpdated = true;
+            }
+        }
+
+        @Override
+        public void onProviderDisabled(String provider) {
+        }
+
+        @Override
+        public void onProviderEnabled(String provider) {
+        }
+
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
+        }
+    };
+
+    private void scheduleTimeout() {
+        mHandler.removeMessages(MSG_TIMEOUT_ID);
+        mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_TIMEOUT_ID), MSG_TIMEOUT_MILLISEC);
+    }
+
+    @Override
+    public boolean handleMessage(Message msg) {
+        if (msg.what == MSG_TIMEOUT_ID) {
+            synchronized (this) {
+                if (mIsLocationUpdated) return true;
+                showToast(R.string.provisioning_byod_location_mode_time_out_toast);
+            }
+        }
+        return true;
+    }
+
+    protected String getLogTag() {
+        return "LocationListenerActivity";
+    }
+
+    protected void showToast(int messageId) {
+        String message = getString(messageId);
+        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/OWNERS b/apps/CtsVerifier/src/com/android/cts/verifier/security/OWNERS
new file mode 100644
index 0000000..4241b61
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/OWNERS
@@ -0,0 +1,6 @@
+# Bug template url: https://b.corp.google.com/issues/new?component=100560&template=63204 = per-file: CA*.java, Ca*.java, KeyChainTest.java
+# Bug template url: https://b.corp.google.com/issues/new?component=100560&template=63204 = per-file: LockConfirmBypassTest.java, SetNewPasswordComplexityTest.java
+# Bug component: 189335 = per-file: FingerprintBoundKeysTest.java, IdentityCredentialAuthentication.java, ProtectedConfirmationTest.java, ScreenLockBoundKeysTest.java
+per-file CA*.java, Ca*.java, KeyChainTest.java = alexkershaw@google.com, eranm@google.com, rubinxu@google.com, sandness@google.com, pgrafov@google.com
+per-file LockConfirmBypassTest.java, SetNewPasswordComplexityTest.java = alexkershaw@google.com, eranm@google.com, rubinxu@google.com, sandness@google.com, pgrafov@google.com
+per-file FingerprintBoundKeysTest.java, IdentityCredentialAuthentication.java, ProtectedConfirmationTest.java, ScreenLockBoundKeysTest.java = swillden@google.com
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/usb/accessory/UsbAccessoryTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/usb/accessory/UsbAccessoryTestActivity.java
index c150132..9220001 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/usb/accessory/UsbAccessoryTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/usb/accessory/UsbAccessoryTestActivity.java
@@ -71,6 +71,7 @@
         setInfoResources(
                 R.string.usb_accessory_test, R.string.usb_accessory_test_info, -1);
 
+        setPassFailButtonClickListeners();
         mStatus = (TextView) findViewById(R.id.status);
         mProgress = (ProgressBar) findViewById(R.id.progress_bar);
         mStatus.setText(R.string.usb_accessory_test_step1);
diff --git a/apps/ForceStopHelperApp/Android.bp b/apps/ForceStopHelperApp/Android.bp
index f438b87..85a2f6d 100644
--- a/apps/ForceStopHelperApp/Android.bp
+++ b/apps/ForceStopHelperApp/Android.bp
@@ -25,3 +25,8 @@
         "general-tests",
     ],
 }
+
+java_library {
+    name: "CtsForceStopHelper-constants",
+    srcs: ["src/com/android/cts/forcestophelper/Constants.java"],
+}
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
index 955321a..7d8feae 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
@@ -83,6 +83,15 @@
     }
 
     /**
+     * Turn off the Battery saver manually.
+     */
+    public static void runDumpsysBatterySaverOff() {
+        if (isBatterySaverSupported() && getPowerManager().isPowerSaveMode()) {
+            SystemUtil.runShellCommandForNoOutput("cmd power set-mode 0");
+        }
+    }
+
+    /**
      * Enable / disable battery saver. Note {@link #runDumpsysBatteryUnplug} must have been
      * executed before enabling BS.
      */
diff --git a/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java b/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
index 20efacf..e73f31a 100644
--- a/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
+++ b/hostsidetests/appcompat/strictjavapackages/src/android/compat/sjp/cts/StrictJavaPackagesTest.java
@@ -41,6 +41,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Objects;
@@ -48,8 +49,10 @@
 
 import org.jf.dexlib2.DexFileFactory;
 import org.jf.dexlib2.Opcodes;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
 import org.jf.dexlib2.iface.DexFile;
 import org.jf.dexlib2.iface.ClassDef;
+import org.jf.dexlib2.iface.MultiDexContainer;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -126,7 +129,86 @@
             "Landroid/hardware/contexthub/V1_0/PhysicalSensor;",
             "Landroid/hardware/contexthub/V1_0/Result;",
             "Landroid/hardware/contexthub/V1_0/SensorType;",
-            "Landroid/hardware/contexthub/V1_0/TransactionResult;"
+            "Landroid/hardware/contexthub/V1_0/TransactionResult;",
+            "Landroid/hardware/usb/gadget/V1_0/GadgetFunction;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadget;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadget$Proxy;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadget$Stub;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback$Proxy;",
+            "Landroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback$Stub;",
+            "Landroid/hardware/usb/gadget/V1_0/Status;",
+            "Landroid/os/IDumpstate;",
+            "Landroid/os/IDumpstate$Default;",
+            "Landroid/os/IDumpstate$Stub;",
+            "Landroid/os/IDumpstate$Stub$Proxy;",
+            "Landroid/os/IDumpstateListener;",
+            "Landroid/os/IDumpstateListener$Default;",
+            "Landroid/os/IDumpstateListener$Stub;",
+            "Landroid/os/IDumpstateListener$Stub$Proxy;",
+            "Landroid/os/IInstalld;",
+            "Landroid/os/IInstalld$Default;",
+            "Landroid/os/IInstalld$Stub;",
+            "Landroid/os/IInstalld$Stub$Proxy;",
+            "Landroid/os/IStoraged;",
+            "Landroid/os/IStoraged$Default;",
+            "Landroid/os/IStoraged$Stub;",
+            "Landroid/os/IStoraged$Stub$Proxy;",
+            "Landroid/os/IVold;",
+            "Landroid/os/IVold$Default;",
+            "Landroid/os/IVold$Stub;",
+            "Landroid/os/IVold$Stub$Proxy;",
+            "Landroid/os/IVoldListener;",
+            "Landroid/os/IVoldListener$Default;",
+            "Landroid/os/IVoldListener$Stub;",
+            "Landroid/os/IVoldListener$Stub$Proxy;",
+            "Landroid/os/IVoldMountCallback;",
+            "Landroid/os/IVoldMountCallback$Default;",
+            "Landroid/os/IVoldMountCallback$Stub;",
+            "Landroid/os/IVoldMountCallback$Stub$Proxy;",
+            "Landroid/os/IVoldTaskListener;",
+            "Landroid/os/IVoldTaskListener$Default;",
+            "Landroid/os/IVoldTaskListener$Stub;",
+            "Landroid/os/IVoldTaskListener$Stub$Proxy;",
+            "Landroid/os/storage/CrateMetadata;",
+            "Landroid/os/storage/CrateMetadata$1;",
+            "Landroid/view/LayerMetadataKey;",
+            "Lcom/android/internal/annotations/GuardedBy;",
+            "Lcom/android/internal/annotations/Immutable;",
+            "Lcom/android/internal/annotations/VisibleForTesting;",
+            "Lcom/android/internal/annotations/VisibleForTesting$Visibility;",
+            // TODO(b/173649240): due to an oversight, some new overlaps slipped through in S.
+            "Landroid/hardware/usb/gadget/V1_1/IUsbGadget;",
+            "Landroid/hardware/usb/gadget/V1_1/IUsbGadget$Proxy;",
+            "Landroid/hardware/usb/gadget/V1_1/IUsbGadget$Stub;",
+            "Landroid/hardware/usb/gadget/V1_2/GadgetFunction;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadget;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadget$Proxy;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadget$Stub;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadgetCallback;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadgetCallback$Proxy;",
+            "Landroid/hardware/usb/gadget/V1_2/IUsbGadgetCallback$Stub;",
+            "Landroid/hardware/usb/gadget/V1_2/UsbSpeed;",
+            "Landroid/os/BlockUntrustedTouchesMode;",
+            "Landroid/os/CreateAppDataArgs;",
+            "Landroid/os/CreateAppDataArgs$1;",
+            "Landroid/os/CreateAppDataResult;",
+            "Landroid/os/CreateAppDataResult$1;",
+            "Landroid/os/IInputConstants;",
+            "Landroid/os/IInputConstants$Default;",
+            "Landroid/os/IInputConstants$Stub;",
+            "Landroid/os/IInputConstants$Stub$Proxy;",
+            "Landroid/os/InputEventInjectionResult;",
+            "Landroid/os/InputEventInjectionSync;",
+            "Landroid/os/TouchOcclusionMode;",
+            "Lcom/android/internal/protolog/common/BitmaskConversionException;",
+            "Lcom/android/internal/protolog/common/InvalidFormatStringException;",
+            "Lcom/android/internal/protolog/common/IProtoLogGroup;",
+            "Lcom/android/internal/protolog/common/LogDataType;",
+            "Lcom/android/internal/protolog/common/ProtoLog;",
+            "Lcom/android/internal/protolog/ProtoLogImpl;",
+            "Lcom/android/internal/protolog/ProtoLogViewerConfigReader;",
+            "Lcom/android/internal/util/FrameworkStatsLog;"
         );
 
     /**
@@ -137,7 +219,7 @@
         assumeTrue(ApiLevelUtil.isAfter(getDevice(), 29));
         runWithTempDir(tmpDir -> {
             final Set<DeviceFile> bcpJarFiles = pullJarsFromEnvVariable(tmpDir, "BOOTCLASSPATH");
-            checkClassDuplicatesMatchWhitelist(bcpJarFiles, ImmutableSet.of());
+            checkClassDuplicatesMatchAllowlist(bcpJarFiles, ImmutableSet.of());
         });
     }
 
@@ -150,7 +232,7 @@
         runWithTempDir(tmpDir -> {
             final Set<DeviceFile> sscpJarFiles =
                 pullJarsFromEnvVariable(tmpDir, "SYSTEMSERVERCLASSPATH");
-            checkClassDuplicatesMatchWhitelist(sscpJarFiles, ImmutableSet.of());
+            checkClassDuplicatesMatchAllowlist(sscpJarFiles, ImmutableSet.of());
         });
     }
 
@@ -166,7 +248,7 @@
                 pullJarsFromEnvVariable(tmpDir, "BOOTCLASSPATH"),
                 pullJarsFromEnvVariable(tmpDir, "SYSTEMSERVERCLASSPATH")
             );
-            checkClassDuplicatesMatchWhitelist(allJarFiles, BCP_AND_SSCP_OVERLAP_BURNDOWN_LIST);
+            checkClassDuplicatesMatchAllowlist(allJarFiles, BCP_AND_SSCP_OVERLAP_BURNDOWN_LIST);
         });
     }
 
@@ -240,10 +322,15 @@
         final Multimap<String, DeviceFile> allClasses = HashMultimap.create();
         final Multimap<String, DeviceFile> duplicateClasses = HashMultimap.create();
         for (DeviceFile deviceFile : jars) {
-            final DexFile dexFile =
-                    DexFileFactory.loadDexFile(deviceFile.hostPath, Opcodes.getDefault());
-            for (ClassDef classDef : dexFile.getClasses()) {
-                allClasses.put(classDef.getType(), deviceFile);
+            final File jarFile = new File(deviceFile.hostPath);
+            final MultiDexContainer<? extends DexBackedDexFile> container =
+                    DexFileFactory.loadDexContainer(jarFile, Opcodes.getDefault());
+            final List<String> entryNames = container.getDexEntryNames();
+            for (String entryName : entryNames) {
+                final DexFile dexFile = container.getEntry(entryName);
+                for (ClassDef classDef : dexFile.getClasses()) {
+                    allClasses.put(classDef.getType(), deviceFile);
+                }
             }
         }
         for (Entry<String, Collection<DeviceFile>> entry : allClasses.asMap().entrySet()) {
@@ -258,13 +345,16 @@
     }
 
     /**
-     * Checks that the duplicate classes in a set of jars exactly match a given whitelist.
+     * Checks that the duplicate classes in a set of jars exactly match a given allowlist.
      */
-    private void checkClassDuplicatesMatchWhitelist(Set<DeviceFile> jars, Set<String> whitelist)
+    private void checkClassDuplicatesMatchAllowlist(Set<DeviceFile> jars, Set<String> allowlist)
             throws Exception {
         // Collect classes which appear in at least two distinct jar files.
         Multimap<String, DeviceFile> duplicateClasses = getDuplicateClasses(jars);
-        assertThat(duplicateClasses.keySet()).isEqualTo(whitelist);
+        Set<String> deniedClasses = new HashSet<>();
+        deniedClasses.addAll(duplicateClasses.keySet());
+        deniedClasses.removeAll(allowlist);
+        assertThat(deniedClasses).isEmpty();
     }
 
     /**
diff --git a/hostsidetests/appsecurity/OWNERS b/hostsidetests/appsecurity/OWNERS
index cbfad62..927344a 100644
--- a/hostsidetests/appsecurity/OWNERS
+++ b/hostsidetests/appsecurity/OWNERS
@@ -21,7 +21,7 @@
 per-file ExternalStorageHostTest.java = jsharkey@google.com
 per-file InstantAppUserTest.java = toddke@google.com
 per-file InstantCookieHostTest.java = toddke@google.com
-per-file IsolatedSplitsTests.java = toddke@google.com
+per-file IsolatedSplitsTests.java = patb@google.com,toddke@google.com
 per-file KeySetHostTest.java = cbrubaker@google.com
 per-file ListeningPortsTest.java = cbrubaker@google.com
 per-file MajorVersionTest.java = toddke@google.com
@@ -35,7 +35,7 @@
 per-file RequestsOnlyCalendarApp22.java = moltmann@google.com
 per-file ScopedDirectoryAccessTest.java = jsharkey@google.com
 per-file SharedUserIdTest.java = toddke@google.com
-per-file SplitTests.java = toddke@google.com
+per-file SplitTests.java = patb@google.com,toddke@google.com
 per-file StorageHostTest.java = jsharkey@google.com
 per-file UseEmbeddedDexTest.java = victorhsieh@google.com
 # test apps
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
index 2a087dc..5c26531 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
@@ -135,6 +135,9 @@
             getDevice().uninstallPackage(WRITE_PKG);
             installPackage(WRITE_APK);
 
+            // Make sure user initialization is complete before testing
+            waitForBroadcastIdle();
+
             for (int user : mUsers) {
                 runDeviceTests(WRITE_PKG, WRITE_CLASS, "testExternalStorageRename", user);
             }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
index ba62f2f..4972c68 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
@@ -30,11 +30,13 @@
 import android.cts.host.utils.DeviceJUnit4ClassRunnerWithParameters
 import android.cts.host.utils.DeviceJUnit4Parameterized
 import com.google.common.truth.Truth.assertThat
+import com.google.common.truth.Truth.assertWithMessage
 import org.junit.After
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
+import java.lang.AssertionError
 
 /**
  * This test verifies protection for an exploit where any app could set the installer package
@@ -197,7 +199,9 @@
     }
 
     private fun assertPermission(granted: Boolean, permission: String) {
-        assertThat(getPermissionString(permission)).contains("granted=$granted")
+        val dump = device.executeShellCommand("dumpsys package $TARGET_PKG")
+        assertWithMessage(dump).that(getPermissionString(dump, permission))
+                .contains("granted=$granted")
     }
 
     private fun grantPermission(permission: String) {
@@ -209,40 +213,50 @@
     }
 
     private fun assertGrantState(state: GrantState, permission: String) {
-        val output = getPermissionString(permission)
+        val dump = device.executeShellCommand("dumpsys package $TARGET_PKG")
+        val output = getPermissionString(dump, permission)
 
         when (state) {
             GrantState.TRUE -> {
-                assertThat(output).contains("granted=true")
-                assertThat(output).doesNotContain("RESTRICTION")
-                assertThat(output).doesNotContain("EXEMPT")
+                assertWithMessage(dump).that(output).contains("granted=true")
+                assertWithMessage(dump).that(output).doesNotContain("RESTRICTION")
+                assertWithMessage(dump).that(output).doesNotContain("EXEMPT")
             }
             GrantState.TRUE_EXEMPT -> {
-                assertThat(output).contains("granted=true")
-                assertThat(output).contains("RESTRICTION_INSTALLER_EXEMPT")
+                assertWithMessage(dump).that(output).contains("granted=true")
+                assertWithMessage(dump).that(output).contains("RESTRICTION_INSTALLER_EXEMPT")
             }
             GrantState.TRUE_RESTRICTED -> {
-                assertThat(output).contains("granted=true")
-                assertThat(output).contains("APPLY_RESTRICTION")
-                assertThat(output).doesNotContain("EXEMPT")
+                assertWithMessage(dump).that(output).contains("granted=true")
+                assertWithMessage(dump).that(output).contains("APPLY_RESTRICTION")
+                assertWithMessage(dump).that(output).doesNotContain("EXEMPT")
             }
             GrantState.FALSE -> {
-                assertThat(output).contains("granted=false")
+                assertWithMessage(dump).that(output).contains("granted=false")
             }
         }
     }
 
-    private fun getPermissionString(permission: String) =
-            device.executeShellCommand("dumpsys package $TARGET_PKG")
-                    .lineSequence()
-                    .dropWhile { !it.startsWith("Packages:") } // Wait for package header
-                    .drop(1) // Drop the package header itself
-                    .takeWhile { it.isEmpty() || it.first().isWhitespace() } // Until next header
-                    .dropWhile { !it.trim().startsWith("User $mPrimaryUserId:") } // Find user
-                    .drop(1) // Drop the user header itself
-                    .takeWhile { !it.trim().startsWith("User") } // Until next user
-                    .filter { it.contains("$permission: granted=") }
-                    .single()
+    private fun getPermissionString(output: String, permission: String) = retry {
+        output.lineSequence()
+                .dropWhile { !it.startsWith("Packages:") } // Wait for package header
+                .drop(1) // Drop the package header itself
+                .takeWhile { it.isEmpty() || it.first().isWhitespace() } // Until next header
+                .dropWhile { !it.trim().startsWith("User $mPrimaryUserId:") } // Find user
+                .drop(1) // Drop the user header itself
+                .takeWhile { !it.trim().startsWith("User") } // Until next user
+                .filter { it.contains("$permission: granted=") }
+                .firstOrNull()
+    }
+
+    private fun <T> retry(block: () -> T?): T {
+        repeat(10) {
+            block()?.let { return it }
+            Thread.sleep(1000)
+        }
+
+        throw AssertionError("Never succeeded")
+    }
 
     enum class GrantState {
         // Granted in full, unrestricted
diff --git a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/Android.bp b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/Android.bp
index b00dcc3..38185ee 100644
--- a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/Android.bp
+++ b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/Android.bp
@@ -16,8 +16,8 @@
     name: "CtsAppDataIsolationAppA",
     defaults: ["cts_support_defaults"],
     srcs: ["common/src/**/*.java", "AppA/src/**/*.java", "AppA/aidl/**/*.aidl"],
-    sdk_version: "current",
-    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator"],
+    sdk_version: "test_current",
+    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator", "compatibility-device-util-axt"],
     libs: ["android.test.base"],
     // tag this module as a cts test artifact
     test_suites: [
@@ -35,8 +35,8 @@
     name: "CtsAppDataIsolationAppSharedA",
     defaults: ["cts_support_defaults"],
     srcs: ["common/src/**/*.java", "AppA/src/**/*.java", "AppA/aidl/**/*.aidl"],
-    sdk_version: "current",
-    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator"],
+    sdk_version: "test_current",
+    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator", "compatibility-device-util-axt"],
     libs: ["android.test.base"],
     // tag this module as a cts test artifact
     test_suites: [
@@ -54,8 +54,8 @@
     name: "CtsAppDataIsolationAppDirectBootA",
     defaults: ["cts_support_defaults"],
     srcs: ["common/src/**/*.java", "AppA/src/**/*.java", "AppA/aidl/**/*.aidl"],
-    sdk_version: "current",
-    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator"],
+    sdk_version: "test_current",
+    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "ub-uiautomator", "compatibility-device-util-axt"],
     libs: ["android.test.base"],
     // tag this module as a cts test artifact
     test_suites: [
@@ -73,8 +73,8 @@
     name: "CtsAppDataIsolationAppB",
     defaults: ["cts_support_defaults"],
     srcs: ["common/src/**/*.java", "AppB/src/**/*.java"],
-    sdk_version: "current",
-    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng"],
+    sdk_version: "test_current",
+    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "compatibility-device-util-axt"],
     libs: ["android.test.base"],
     // tag this module as a cts test artifact
     test_suites: [
@@ -92,8 +92,8 @@
     name: "CtsAppDataIsolationAppSharedB",
     defaults: ["cts_support_defaults"],
     srcs: ["common/src/**/*.java", "AppB/src/**/*.java"],
-    sdk_version: "current",
-    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng"],
+    sdk_version: "test_current",
+    static_libs: ["androidx.test.rules", "truth-prebuilt", "testng", "compatibility-device-util-axt"],
     libs: ["android.test.base"],
     // tag this module as a cts test artifact
     test_suites: [
diff --git a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/AppATests.java b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/AppATests.java
index 4e8cadf..bd76272 100644
--- a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/AppATests.java
+++ b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/AppATests.java
@@ -16,6 +16,7 @@
 
 package com.android.cts.appdataisolation.appa;
 
+import static com.android.cts.appdataisolation.common.FileUtils.APPB_PKG;
 import static com.android.cts.appdataisolation.common.FileUtils.CE_DATA_FILE_NAME;
 import static com.android.cts.appdataisolation.common.FileUtils.DE_DATA_FILE_NAME;
 import static com.android.cts.appdataisolation.common.FileUtils.EXTERNAL_DATA_FILE_NAME;
@@ -26,6 +27,7 @@
 import static com.android.cts.appdataisolation.common.FileUtils.assertFileDoesNotExist;
 import static com.android.cts.appdataisolation.common.FileUtils.assertFileExists;
 import static com.android.cts.appdataisolation.common.FileUtils.touchFile;
+import static com.android.cts.appdataisolation.common.UserUtils.getCurrentUserId;
 
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -171,7 +173,8 @@
 
     @Test
     public void testAppACurProfileDataAccessible() {
-        assertDirIsAccessible("/data/misc/profiles/cur/0/" + mContext.getPackageName());
+        assertDirIsAccessible("/data/misc/profiles/cur/"+ getCurrentUserId() + "/"
+                + mContext.getPackageName());
     }
 
     @Test
@@ -181,12 +184,12 @@
 
     @Test
     public void testCannotAccessAppBDataDir() throws Exception {
-        ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
-                FileUtils.APPB_PKG,0);
+        ApplicationInfo applicationInfo = mContext.getPackageManager()
+                .getApplicationInfo(APPB_PKG, 0);
         assertDirDoesNotExist(applicationInfo.dataDir);
         assertDirDoesNotExist(applicationInfo.deviceProtectedDataDir);
-        assertDirDoesNotExist("/data/data/" + FileUtils.APPB_PKG);
-        assertDirDoesNotExist("/data/misc/profiles/cur/0/" + FileUtils.APPB_PKG);
+        assertDirDoesNotExist("/data/data/" + APPB_PKG);
+        assertDirDoesNotExist("/data/misc/profiles/cur/" + getCurrentUserId() + "/" + APPB_PKG);
         assertDirIsNotAccessible("/data/misc/profiles/ref");
     }
 
diff --git a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/IsolatedService.java b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/IsolatedService.java
index 5b1ec66..d209a42 100644
--- a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/IsolatedService.java
+++ b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppA/src/com/android/cts/appdataisolation/appa/IsolatedService.java
@@ -18,6 +18,7 @@
 
 import static com.android.cts.appdataisolation.common.FileUtils.assertDirDoesNotExist;
 import static com.android.cts.appdataisolation.common.FileUtils.assertDirIsNotAccessible;
+import static com.android.cts.appdataisolation.common.UserUtils.getCurrentUserId;
 
 import android.app.Service;
 import android.content.Intent;
@@ -38,7 +39,10 @@
                 assertDirDoesNotExist(applicationInfo.dataDir);
                 assertDirDoesNotExist(applicationInfo.deviceProtectedDataDir);
                 assertDirDoesNotExist("/data/data/" + getPackageName());
-                assertDirDoesNotExist("/data/misc/profiles/cur/0/" + getPackageName());
+
+                int currentUserId = getCurrentUserId();
+                assertDirDoesNotExist("/data/misc/profiles/cur/" + currentUserId + "/"
+                        + getPackageName());
                 assertDirIsNotAccessible("/data/misc/profiles/ref");
 
                 assertDirDoesNotExist(FileUtils.replacePackageAWithPackageB(
@@ -46,14 +50,16 @@
                 assertDirDoesNotExist(FileUtils.replacePackageAWithPackageB(
                         applicationInfo.deviceProtectedDataDir));
                 assertDirDoesNotExist("/data/data/" + FileUtils.APPB_PKG);
-                assertDirDoesNotExist("/data/misc/profiles/cur/0/" + FileUtils.APPB_PKG);
+                assertDirDoesNotExist("/data/misc/profiles/cur/" + currentUserId + "/"
+                        + FileUtils.APPB_PKG);
 
                 assertDirDoesNotExist(FileUtils.replacePackageAWithNotInstalledPkg(
                         applicationInfo.dataDir));
                 assertDirDoesNotExist(FileUtils.replacePackageAWithNotInstalledPkg(
                         applicationInfo.deviceProtectedDataDir));
                 assertDirDoesNotExist("/data/data/" + FileUtils.NOT_INSTALLED_PKG);
-                assertDirDoesNotExist("/data/misc/profiles/cur/0/" + FileUtils.NOT_INSTALLED_PKG);
+                assertDirDoesNotExist("/data/misc/profiles/cur/" + currentUserId + "/"
+                        + FileUtils.NOT_INSTALLED_PKG);
             } catch (Throwable e) {
                 throw new IllegalStateException(e.getMessage());
             }
diff --git a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppB/src/com/android/cts/appdataisolation/appb/AppBTests.java b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppB/src/com/android/cts/appdataisolation/appb/AppBTests.java
index c1e3a53..9229fa6 100644
--- a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppB/src/com/android/cts/appdataisolation/appb/AppBTests.java
+++ b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/AppB/src/com/android/cts/appdataisolation/appb/AppBTests.java
@@ -20,6 +20,7 @@
 import static com.android.cts.appdataisolation.common.FileUtils.assertDirIsAccessible;
 import static com.android.cts.appdataisolation.common.FileUtils.assertDirIsNotAccessible;
 import static com.android.cts.appdataisolation.common.FileUtils.assertFileIsAccessible;
+import static com.android.cts.appdataisolation.common.UserUtils.getCurrentUserId;
 
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
@@ -48,7 +49,8 @@
         assertDirDoesNotExist(replacePackageBWithPackageA(applicationInfo.dataDir));
         assertDirDoesNotExist(replacePackageBWithPackageA(applicationInfo.deviceProtectedDataDir));
         assertDirDoesNotExist("/data/data/" + APPA_PKG);
-        assertDirDoesNotExist("/data/misc/profiles/cur/0/" + APPA_PKG);
+        assertDirDoesNotExist("/data/misc/profiles/cur/" + getCurrentUserId() + "/"
+                + APPA_PKG);
         assertDirIsNotAccessible("/data/misc/profiles/ref");
     }
 
@@ -58,7 +60,8 @@
         assertDirIsAccessible(replacePackageBWithPackageA(applicationInfo.dataDir));
         assertDirIsAccessible(replacePackageBWithPackageA(applicationInfo.deviceProtectedDataDir));
         assertDirIsAccessible("/data/data/" + APPA_PKG);
-        assertFileIsAccessible("/data/misc/profiles/cur/0/" + APPA_PKG + "/primary.prof");
+        assertFileIsAccessible("/data/misc/profiles/cur/" + getCurrentUserId() + "/"
+                + APPA_PKG + "/primary.prof");
         assertDirIsNotAccessible("/data/misc/profiles/ref");
     }
 
diff --git a/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/common/src/com/android/cts/appdataisolation/common/UserUtils.java b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/common/src/com/android/cts/appdataisolation/common/UserUtils.java
new file mode 100644
index 0000000..ea741c3
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AppDataIsolationTestApp/common/src/com/android/cts/appdataisolation/common/UserUtils.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.appdataisolation.common;
+
+import android.app.ActivityManager;
+
+import com.android.compatibility.common.util.ShellIdentityUtils;
+
+public final class UserUtils {
+
+    // Suppress default constructor
+    private UserUtils() {
+        throw new AssertionError();
+    }
+
+    public static int getCurrentUserId() {
+        return ShellIdentityUtils.invokeStaticMethodWithShellPermissions(
+                () -> ActivityManager.getCurrentUser());
+    }
+}
diff --git a/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java b/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
index 8aed0cf..354bf5b 100644
--- a/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
+++ b/hostsidetests/appsecurity/test-apps/DocumentClient/src/com/android/cts/documentclient/DocumentsClientTest.java
@@ -441,17 +441,25 @@
         mActivity.startActivityForResult(intent, REQUEST_CODE);
 
         // Look around, we should be able to see both DocumentsProviders and
-        // other GET_CONTENT sources. If the DocumentsProvider and GetContent
-        // root has the same package, they will be combined as one root item.
+        // other GET_CONTENT sources.
         mDevice.waitForIdle();
         assertTrue("CtsLocal root", findRoot("CtsLocal").exists());
         assertTrue("CtsCreate root", findRoot("CtsCreate").exists());
-        assertFalse("CtsGetContent root", findRoot("CtsGetContent").exists());
 
+        // Find and click GetContent item.
+        UiObject getContentRoot = findRoot("CtsGetContent");
         mDevice.waitForIdle();
-        // Both CtsLocal and CtsLocal have action icon and have the same action.
-        findActionIcon("CtsCreate");
-        findActionIcon("CtsLocal").click();
+        if (getContentRoot.exists()) {
+            // Case 1: GetContent is presented as an independent root item.
+            findRoot("CtsGetContent").click();
+        } else {
+            // Case 2: GetContent is presented as an action icon next to the DocumentsProvider root
+            // from the same package.
+            // In this case, both CtsLocal and CtsLocal have action icon and have the same action.
+            findActionIcon("CtsCreate");
+            findActionIcon("CtsLocal").click();
+        }
+
         Result result = mActivity.getResult();
         assertEquals("ReSuLt", result.data.getAction());
     }
diff --git a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/OWNERS b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/OWNERS
index 87e75ec..f17768d 100644
--- a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/OWNERS
+++ b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/OWNERS
@@ -1,2 +1,3 @@
 # Bug component: 533114
+patb@google.com
 toddke@google.com
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/OWNERS b/hostsidetests/appsecurity/test-apps/SplitApp/OWNERS
new file mode 100644
index 0000000..f17768d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 533114
+patb@google.com
+toddke@google.com
diff --git a/hostsidetests/backup/OWNERS b/hostsidetests/backup/OWNERS
index e0e5e22..0f88811 100644
--- a/hostsidetests/backup/OWNERS
+++ b/hostsidetests/backup/OWNERS
@@ -1,9 +1,4 @@
-# Bug component: 41666
-# Use this reviewer by default.
-br-framework-team+reviews@google.com
+# Bug component: 656484
 
-alsutton@google.com
-anniemeng@google.com
-brufino@google.com
-nathch@google.com
-rthakohov@google.com
+include platform/frameworks/base:/services/backup/OWNERS
+
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/KeyManagementTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/KeyManagementTest.java
index d18a9fa..2f7444d 100755
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/KeyManagementTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/KeyManagementTest.java
@@ -376,7 +376,7 @@
     private void validateDeviceIdAttestationData(Certificate leaf,
             String expectedSerial, String expectedImei, String expectedMeid)
             throws CertificateParsingException {
-        Attestation attestationRecord = new Attestation((X509Certificate) leaf);
+        Attestation attestationRecord = Attestation.loadFromCertificate((X509Certificate) leaf);
         AuthorizationList teeAttestation = attestationRecord.getTeeEnforced();
         assertThat(teeAttestation).isNotNull();
         validateBrandAttestationRecord(teeAttestation);
@@ -402,7 +402,7 @@
         assertThat(attestation).isNotNull();
         assertThat(attestation.size()).isGreaterThan(1);
         X509Certificate leaf = (X509Certificate) attestation.get(0);
-        Attestation attestationRecord = new Attestation(leaf);
+        Attestation attestationRecord = Attestation.loadFromCertificate(leaf);
         assertThat(attestationRecord.getAttestationChallenge()).isEqualTo(providedChallenge);
     }
 
diff --git a/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/QuietModeTest.java b/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/QuietModeTest.java
index 21e3991..f205874 100644
--- a/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/QuietModeTest.java
+++ b/hostsidetests/devicepolicy/app/LauncherTests/src/com/android/cts/launchertests/QuietModeTest.java
@@ -21,6 +21,7 @@
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertNull;
 import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertThrows;
@@ -30,7 +31,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.support.test.uiautomator.UiDevice;
@@ -46,8 +46,13 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Arrays;
+import java.util.Set;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * Test that runs {@link UserManager#trySetQuietModeEnabled(boolean, UserHandle)} API
@@ -147,7 +152,7 @@
         assertNotNull("Failed to receive ACTION_MANAGED_PROFILE_UNAVAILABLE broadcast", intent);
         assertTrue(mUserManager.isQuietModeEnabled(mTargetUser));
 
-        waitForUserNotRunning(30);
+        waitForUserLocked();
 
         intent = trySetQuietModeEnabled(false,
                 UserManager.QUIET_MODE_DISABLE_ONLY_IF_CREDENTIAL_NOT_REQUIRED, false);
@@ -155,15 +160,24 @@
         assertTrue(mUserManager.isQuietModeEnabled(mTargetUser));
     }
 
-    // Note: The timeout is in seconds.
-    private void waitForUserNotRunning(int timeout) {
-        for(int i = 0 ; i < 2 * timeout ; i++) {
-            if (!mUserManager.isUserRunning(mTargetUser)) {
-                break;
+    private void waitForUserLocked() throws Exception {
+        // Should match a line in "dumpsys mount" output like this:
+        // Local unlocked users: [0, 10]
+        final Pattern p = Pattern.compile("Local unlocked users: \\[(.*)\\]");
+        final long deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(60);
+        while (System.nanoTime() < deadline) {
+            final String output = mUiDevice.executeShellCommand("dumpsys mount");
+            final Matcher matcher = p.matcher(output);
+            assertTrue("Unexpected dupmsys mount output: " + output, matcher.find());
+            final Set<Integer> unlockedUsers = Arrays.stream(matcher.group(1).split(", "))
+                    .map(Integer::valueOf)
+                    .collect(Collectors.toSet());
+            if (!unlockedUsers.contains(mTargetUser.getIdentifier())) {
+                return;
             }
-            SystemClock.sleep(500);
+            Thread.sleep(500);
         }
-        assertFalse("Cannot get the profile stopped.", mUserManager.isUserRunning(mTargetUser));
+        fail("Cannot get the profile locked");
     }
 
     private Intent trySetQuietModeEnabled(boolean enabled, int flags,
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/metrics/DevicePolicyEventWrapper.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/metrics/DevicePolicyEventWrapper.java
index 71566d0..88286f3 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/metrics/DevicePolicyEventWrapper.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/metrics/DevicePolicyEventWrapper.java
@@ -24,7 +24,7 @@
 
 /**
  * Wrapper over <code>DevicePolicyEvent</code> atom as defined in
- * <code>frameworks/base/cmds/statsd/src/atoms.proto</code>.
+ * <code>frameworks/proto_logging/stats/atoms.proto</code>.
  * @see Builder
  */
 public final class DevicePolicyEventWrapper {
diff --git a/hostsidetests/hdmicec/README.md b/hostsidetests/hdmicec/README.md
index f8289b2..cf85027 100644
--- a/hostsidetests/hdmicec/README.md
+++ b/hostsidetests/hdmicec/README.md
@@ -14,8 +14,9 @@
 Running these CTS tests requires a specific HDMI layout with a CEC adapter.
 
 *   Android TV playback device
-*   CEC adapter see [External CEC Adapter instructions](cec_adapter.md)
-*   HDMI Display (aka a TV)
+*   CEC adapter, see [External CEC Adapter instructions](cec_adapter.md)
+*   Install `cec-client` binary, see [install instructions](cec_adapter.md#software)
+*   HDMI Display (aka a TV) or an HDMI fake plug
 
 ![drawing](setup.png)
 
diff --git a/hostsidetests/hdmicec/cec_adapter.md b/hostsidetests/hdmicec/cec_adapter.md
index 3a325d7..409a84e 100644
--- a/hostsidetests/hdmicec/cec_adapter.md
+++ b/hostsidetests/hdmicec/cec_adapter.md
@@ -21,7 +21,7 @@
     sudo apt-get install cec-utils
     ```
 
-    *   mac (using [MacPorts](https://guide.macports.org/#installing))
+    *   macOS (using [MacPorts](https://guide.macports.org/#installing))
 
     ```shell
      sudo /opt/local/bin/port install libcec
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java
index b81972d..1e98316 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/BaseHdmiCecCtsTest.java
@@ -69,7 +69,9 @@
             mDutLogicalAddress = LogicalAddress.getLogicalAddress(getDumpsysLogicalAddress());
         }
         hdmiCecClient.setTargetLogicalAddress(mDutLogicalAddress);
-        hdmiCecClient.init();
+        boolean startAsTv =
+                mDutLogicalAddress.getDeviceType() != HdmiCecConstants.CEC_DEVICE_TYPE_TV;
+        hdmiCecClient.init(startAsTv);
     }
 
     /** Class with predefined rules which can be used by HDMI CEC CTS tests. */
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecClientWrapper.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecClientWrapper.java
index 1fa1471..b57794a 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecClientWrapper.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/HdmiCecClientWrapper.java
@@ -17,7 +17,6 @@
 package android.hdmicec.cts;
 
 import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.RunUtil;
 
 import org.junit.rules.ExternalResource;
@@ -46,6 +45,7 @@
     private BufferedReader mInputConsole;
     private boolean mCecClientInitialised = false;
 
+    private LogicalAddress selfDevice = LogicalAddress.RECORDER_1;
     private LogicalAddress targetDevice = LogicalAddress.UNKNOWN;
     private String clientParams[];
 
@@ -64,7 +64,7 @@
     }
 
     /** Initialise the client */
-    void init() throws Exception {
+    void init(boolean startAsTv) throws Exception {
         if (targetDevice == LogicalAddress.UNKNOWN) {
             throw new IllegalStateException("Missing logical address of the target device.");
         }
@@ -76,6 +76,11 @@
          * address 2.0.0.0 */
         commands.add("-p");
         commands.add("2");
+        if (startAsTv) {
+            commands.add("-t");
+            commands.add("x");
+            selfDevice = LogicalAddress.TV;
+        }
         commands.addAll(Arrays.asList(clientParams));
 
         mCecClient = RunUtil.getDefault().runCmdInBackground(commands);
@@ -356,6 +361,11 @@
         }
      }
 
+    /** Returns the device type that the cec-client has started as. */
+    public LogicalAddress getSelfDevice() {
+        return selfDevice;
+    }
+
     /**
      * Kills the cec-client process that was created in init().
      */
@@ -379,7 +389,7 @@
             }
         } catch (Exception e) {
             /* If cec-client is not running, do not throw an exception, just return. */
-            CLog.w("Unable to close cec-client", e);
+            CLog.w(new Exception("Unable to close cec-client", e));
         }
     }
 }
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/common/HdmiCecSystemInformationTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/common/HdmiCecSystemInformationTest.java
index 8adbb1d..5fb2187 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/common/HdmiCecSystemInformationTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/common/HdmiCecSystemInformationTest.java
@@ -18,18 +18,12 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.junit.Assume.assumeTrue;
 
 import android.hdmicec.cts.BaseHdmiCecCtsTest;
 import android.hdmicec.cts.CecClientMessage;
 import android.hdmicec.cts.CecMessage;
 import android.hdmicec.cts.CecOperand;
-import android.hdmicec.cts.HdmiCecConstants;
-import android.hdmicec.cts.LogicalAddress;
 
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 
 import org.junit.Rule;
@@ -87,9 +81,10 @@
      */
     @Test
     public void cect_11_2_6_6_GiveCecVersion() throws Exception {
-        hdmiCecClient.sendCecMessage(LogicalAddress.RECORDER_1, CecOperand.GET_CEC_VERSION);
-        String message = hdmiCecClient.checkExpectedOutput(LogicalAddress.RECORDER_1,
-                CecOperand.CEC_VERSION);
+        hdmiCecClient.sendCecMessage(hdmiCecClient.getSelfDevice(), CecOperand.GET_CEC_VERSION);
+        String message =
+                hdmiCecClient.checkExpectedOutput(
+                        hdmiCecClient.getSelfDevice(), CecOperand.CEC_VERSION);
         assertThat(CecMessage.getParams(message)).isEqualTo(CEC_VERSION_NUMBER);
     }
 }
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
index bbba1c4..f18268e 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecRoutingControlTest.java
@@ -99,14 +99,17 @@
     /**
      * Test 11.2.2-4
      * Tests that the device sends a <INACTIVE_SOURCE> message when put on standby.
-     * This test depends on One Touch Play, and will pass only if One Touch Play passes.
      */
     @Test
     public void cect_11_2_2_4_InactiveSourceOnStandby() throws Exception {
         ITestDevice device = getDevice();
         try {
             int dumpsysPhysicalAddress = getDumpsysPhysicalAddress();
-            device.executeShellCommand("input keyevent KEYCODE_HOME");
+            hdmiCecClient.sendCecMessage(
+                    LogicalAddress.TV,
+                    LogicalAddress.BROADCAST,
+                    CecOperand.SET_STREAM_PATH,
+                    CecMessage.formatParams(dumpsysPhysicalAddress));
             device.executeShellCommand("input keyevent KEYCODE_SLEEP");
             String message = hdmiCecClient.checkExpectedOutput(LogicalAddress.TV,
                     CecOperand.INACTIVE_SOURCE);
diff --git a/hostsidetests/rollback/TEST_MAPPING b/hostsidetests/rollback/TEST_MAPPING
index a353a74..acec493 100644
--- a/hostsidetests/rollback/TEST_MAPPING
+++ b/hostsidetests/rollback/TEST_MAPPING
@@ -1,5 +1,5 @@
 {
-  "presubmit": [
+  "presubmit-large": [
     {
       "name": "CtsRollbackManagerHostTestCases"
     }
diff --git a/hostsidetests/scopedstorage/AndroidTest.xml b/hostsidetests/scopedstorage/AndroidTest.xml
index 43208ac..bbdf653 100644
--- a/hostsidetests/scopedstorage/AndroidTest.xml
+++ b/hostsidetests/scopedstorage/AndroidTest.xml
@@ -18,6 +18,7 @@
     <option name="config-descriptor:metadata" key="component" value="framework" />
     <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
     <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <!-- TODO(b/169101565): change to secondary_user when fixed -->
     <option name="config-descriptor:metadata" key="parameter" value="not_secondary_user" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/BaseHostTestCase.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/BaseHostTestCase.java
new file mode 100644
index 0000000..983cc66
--- /dev/null
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/BaseHostTestCase.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.scopedstorage.cts.host;
+
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.device.NativeDevice;
+import com.android.tradefed.log.LogUtil.CLog;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+abstract class BaseHostTestCase extends BaseHostJUnit4Test {
+    private int mCurrentUserId = NativeDevice.INVALID_USER_ID;
+
+    protected String executeShellCommand(String cmd, Object... args) throws Exception {
+        return getDevice().executeShellCommand(String.format(cmd, args));
+    }
+
+    protected int getCurrentUserId() throws Exception {
+        setCurrentUserId();
+
+        return mCurrentUserId;
+    }
+
+    private void setCurrentUserId() throws Exception {
+        if (mCurrentUserId != NativeDevice.INVALID_USER_ID) return;
+
+        ITestDevice device = getDevice();
+        mCurrentUserId = device.getCurrentUser();
+        CLog.i("Current user: %d");
+    }
+}
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/LegacyStorageHostTest.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/LegacyStorageHostTest.java
index 8729f9b..594fd6a 100644
--- a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/LegacyStorageHostTest.java
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/LegacyStorageHostTest.java
@@ -18,12 +18,10 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.junit.Assert.assertTrue;
-
 import android.platform.test.annotations.AppModeFull;
 
+import com.android.tradefed.device.contentprovider.ContentProviderHandler;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 
 import org.junit.After;
 import org.junit.Before;
@@ -35,20 +33,19 @@
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
 @AppModeFull
-public class LegacyStorageHostTest extends BaseHostJUnit4Test {
-    private boolean isExternalStorageSetup = false;
+public class LegacyStorageHostTest extends BaseHostTestCase {
 
-    private String executeShellCommand(String cmd) throws Exception {
-        return getDevice().executeShellCommand(cmd);
-    }
+    private boolean mIsExternalStorageSetup;
+
+    private ContentProviderHandler mContentProviderHandler;
 
     /**
      * Runs the given phase of LegacyFileAccessTest by calling into the device.
      * Throws an exception if the test phase fails.
      */
     void runDeviceTest(String phase) throws Exception {
-        assertTrue(runDeviceTests("android.scopedstorage.cts.legacy",
-                "android.scopedstorage.cts.legacy.LegacyStorageTest", phase));
+        assertThat(runDeviceTests("android.scopedstorage.cts.legacy",
+                "android.scopedstorage.cts.legacy.LegacyStorageTest", phase)).isTrue();
     }
 
     /**
@@ -56,14 +53,18 @@
      * so in order to test a case where the reader has only WRITE, we must explicitly revoke READ.
      */
     private void grantPermissions(String... perms) throws Exception {
+        int currentUserId = getCurrentUserId();
         for (String perm : perms) {
-            executeShellCommand("pm grant android.scopedstorage.cts.legacy " + perm);
+            executeShellCommand("pm grant --user %d android.scopedstorage.cts.legacy %s",
+                    currentUserId, perm);
         }
     }
 
     private void revokePermissions(String... perms) throws Exception {
+        int currentUserId = getCurrentUserId();
         for (String perm : perms) {
-            executeShellCommand("pm revoke android.scopedstorage.cts.legacy " + perm);
+            executeShellCommand("pm revoke --user %d android.scopedstorage.cts.legacy %s",
+                    currentUserId, perm);
         }
     }
 
@@ -72,19 +73,21 @@
      * creating file.
      */
     private void createFileAsShell(String filePath) throws Exception {
-        executeShellCommand("touch " + filePath);
+        executeShellCommand("touch %s", filePath);
         assertThat(getDevice().doesFileExist(filePath)).isTrue();
     }
 
     private void setupExternalStorage() throws Exception {
-        if (!isExternalStorageSetup) {
+        if (!mIsExternalStorageSetup) {
             runDeviceTest("setupExternalStorage");
-            isExternalStorageSetup = true;
+            mIsExternalStorageSetup = true;
         }
     }
 
     @Before
     public void setup() throws Exception {
+        mContentProviderHandler = new ContentProviderHandler(getDevice());
+        mContentProviderHandler.setUp();
         setupExternalStorage();
         // Granting WRITE automatically grants READ as well, so we grant them both explicitly by
         // default in order to avoid confusion. Test cases that don't want any of those permissions
@@ -95,6 +98,7 @@
 
     @After
     public void tearDown() throws Exception {
+        mContentProviderHandler.tearDown();
         revokePermissions("android.permission.WRITE_EXTERNAL_STORAGE",
                 "android.permission.READ_EXTERNAL_STORAGE");
     }
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeHostTest.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeHostTest.java
index dbfa9fb..256540a 100644
--- a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeHostTest.java
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeHostTest.java
@@ -16,7 +16,7 @@
 
 package android.scopedstorage.cts.host;
 
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.android.tradefed.device.ITestDevice;
 
@@ -25,16 +25,14 @@
 
 public class PublicVolumeHostTest extends ScopedStorageHostTest {
     /** Used to clean up the virtual volume after the test */
-    private static ITestDevice sDevice = null;
-    private boolean mIsPublicVolumeSetup = false;
-    String executeShellCommand(String cmd) throws Exception {
-        return getDevice().executeShellCommand(cmd);
-    }
+    private static ITestDevice sDevice;
+    private boolean mIsPublicVolumeSetup;
 
     private void setupNewPublicVolume() throws Exception {
         if (!mIsPublicVolumeSetup) {
-            assertTrue(runDeviceTests("android.scopedstorage.cts",
-                    "android.scopedstorage.cts.PublicVolumeTestHelper", "setupNewPublicVolume"));
+            assertThat(runDeviceTests("android.scopedstorage.cts",
+                    "android.scopedstorage.cts.PublicVolumeTestHelper", "setupNewPublicVolume"))
+                            .isTrue();
             mIsPublicVolumeSetup = true;
         }
     }
@@ -51,8 +49,8 @@
      */
     @Override
     void runDeviceTest(String phase) throws Exception {
-        assertTrue(runDeviceTests("android.scopedstorage.cts",
-                "android.scopedstorage.cts.PublicVolumeTest", phase));
+        assertThat(runDeviceTests("android.scopedstorage.cts",
+                "android.scopedstorage.cts.PublicVolumeTest", phase)).isTrue();
     }
 
     @Before
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeLegacyHostTest.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeLegacyHostTest.java
index c9bd65f..4b38df1 100644
--- a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeLegacyHostTest.java
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/PublicVolumeLegacyHostTest.java
@@ -16,7 +16,7 @@
 
 package android.scopedstorage.cts.host;
 
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
@@ -33,8 +33,9 @@
 
     private void setupNewPublicVolume() throws Exception {
         if (!mIsPublicVolumeSetup) {
-            assertTrue(runDeviceTests("android.scopedstorage.cts",
-                    "android.scopedstorage.cts.PublicVolumeTestHelper", "setupNewPublicVolume"));
+            assertThat(runDeviceTests("android.scopedstorage.cts",
+                    "android.scopedstorage.cts.PublicVolumeTestHelper", "setupNewPublicVolume"))
+                            .isTrue();
             mIsPublicVolumeSetup = true;
         }
     }
@@ -51,8 +52,8 @@
      */
     @Override
     void runDeviceTest(String phase) throws Exception {
-        assertTrue(runDeviceTests("android.scopedstorage.cts.legacy",
-                "android.scopedstorage.cts.legacy.PublicVolumeLegacyTest", phase));
+        assertThat(runDeviceTests("android.scopedstorage.cts.legacy",
+                "android.scopedstorage.cts.legacy.PublicVolumeLegacyTest", phase)).isTrue();
     }
 
     @Before
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageHostTest.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageHostTest.java
index b20342c..9e29480 100644
--- a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageHostTest.java
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageHostTest.java
@@ -16,13 +16,13 @@
 
 package android.scopedstorage.cts.host;
 
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import android.platform.test.annotations.AppModeFull;
 
 import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.device.contentprovider.ContentProviderHandler;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.testtype.junit4.DeviceTestRunOptions;
 
 import org.junit.After;
@@ -35,17 +35,18 @@
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
 @AppModeFull
-public class ScopedStorageHostTest extends BaseHostJUnit4Test {
-    private boolean mIsExternalStorageSetup = false;
+public class ScopedStorageHostTest extends BaseHostTestCase {
+    private boolean mIsExternalStorageSetup;
+
+    private ContentProviderHandler mContentProviderHandler;
 
     /**
      * Runs the given phase of ScopedStorageTest by calling into the device.
      * Throws an exception if the test phase fails.
      */
     void runDeviceTest(String phase) throws Exception {
-        assertTrue(runDeviceTests("android.scopedstorage.cts",
-                "android.scopedstorage.cts.ScopedStorageTest", phase));
-
+        assertThat(runDeviceTests("android.scopedstorage.cts",
+                "android.scopedstorage.cts.ScopedStorageTest", phase)).isTrue();
     }
 
     /**
@@ -61,10 +62,6 @@
             .setDisableIsolatedStorage(true));
     }
 
-    String executeShellCommand(String cmd) throws Exception {
-        return getDevice().executeShellCommand(cmd);
-    }
-
     private void setupExternalStorage() throws Exception {
         if (!mIsExternalStorageSetup) {
             runDeviceTest("setupExternalStorage");
@@ -74,6 +71,11 @@
 
     @Before
     public void setup() throws Exception {
+        // Set up content provider. This would install android.tradefed.contentprovider
+        // which is used to create and delete files/Dir on device side test.
+        mContentProviderHandler = new ContentProviderHandler(getDevice());
+        mContentProviderHandler.setUp();
+
         setupExternalStorage();
         executeShellCommand("mkdir /sdcard/Android/data/com.android.shell -m 2770");
         executeShellCommand("mkdir /sdcard/Android/data/com.android.shell/files -m 2770");
@@ -87,6 +89,7 @@
 
     @After
     public void tearDown() throws Exception {
+        mContentProviderHandler.tearDown();
         executeShellCommand("rm -r /sdcard/Android/data/com.android.shell");
     }
 
@@ -512,14 +515,18 @@
     }
 
     private void grantPermissions(String... perms) throws Exception {
+        int currentUserId = getCurrentUserId();
         for (String perm : perms) {
-            executeShellCommand("pm grant android.scopedstorage.cts " + perm);
+            executeShellCommand("pm grant --user %d android.scopedstorage.cts %s",
+                    currentUserId, perm);
         }
     }
 
     private void revokePermissions(String... perms) throws Exception {
+        int currentUserId = getCurrentUserId();
         for (String perm : perms) {
-            executeShellCommand("pm revoke android.scopedstorage.cts " + perm);
+            executeShellCommand("pm revoke --user %d android.scopedstorage.cts %s",
+                    currentUserId, perm);
         }
     }
 
diff --git a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageInstantAppHostTest.java b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageInstantAppHostTest.java
index c97b41f..50fd029 100644
--- a/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageInstantAppHostTest.java
+++ b/hostsidetests/scopedstorage/host/src/android/scopedstorage/cts/host/ScopedStorageInstantAppHostTest.java
@@ -16,12 +16,11 @@
 
 package android.scopedstorage.cts.host;
 
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import android.platform.test.annotations.AppModeInstant;
 
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -30,14 +29,14 @@
  * Runs the ScopedStorageTest tests for an instant app.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
-public class ScopedStorageInstantAppHostTest extends BaseHostJUnit4Test {
+public class ScopedStorageInstantAppHostTest extends BaseHostTestCase {
     /**
      * Runs the given phase of Test by calling into the device.
      * Throws an exception if the test phase fails.
      */
     protected void runDeviceTest(String phase) throws Exception {
-        assertTrue(runDeviceTests("android.scopedstorage.cts",
-                "android.scopedstorage.cts.ScopedStorageTest", phase));
+        assertThat(runDeviceTests("android.scopedstorage.cts",
+                "android.scopedstorage.cts.ScopedStorageTest", phase)).isTrue();
     }
 
     @Test
diff --git a/hostsidetests/scopedstorage/legacy/src/android/scopedstorage/cts/legacy/LegacyStorageTest.java b/hostsidetests/scopedstorage/legacy/src/android/scopedstorage/cts/legacy/LegacyStorageTest.java
index 4596cab..071469a 100644
--- a/hostsidetests/scopedstorage/legacy/src/android/scopedstorage/cts/legacy/LegacyStorageTest.java
+++ b/hostsidetests/scopedstorage/legacy/src/android/scopedstorage/cts/legacy/LegacyStorageTest.java
@@ -109,6 +109,7 @@
      * test runs.
      */
     static final String NONCE = String.valueOf(System.nanoTime());
+    static final String CONTENT_PROVIDER_URL = "content://android.tradefed.contentprovider";
 
     static final String IMAGE_FILE_NAME = "LegacyStorageTest_file_" + NONCE + ".jpg";
     static final String VIDEO_FILE_NAME = "LegacyStorageTest_file_" + NONCE + ".mp4";
@@ -132,7 +133,7 @@
 
     @After
     public void teardown() throws Exception {
-        executeShellCommand("rm " + getShellFile());
+        deleteFileInExternalDir(getShellFile());
         MediaStore.scanFile(getContentResolver(), getShellFile());
     }
 
@@ -221,7 +222,7 @@
         final File existingFile = getShellFile();
 
         try {
-            executeShellCommand("touch " + existingFile);
+            createFileInExternalDir(existingFile);
             MediaStore.scanFile(getContentResolver(), existingFile);
             Os.open(existingFile.getPath(), OsConstants.O_RDONLY, /*mode*/ 0);
             fail("Opening file for read expected to fail: " + existingFile);
@@ -274,7 +275,7 @@
         // can open file for read
         FileDescriptor fd = null;
         try {
-            executeShellCommand("touch " + existingFile);
+            createFileInExternalDir(existingFile);
             MediaStore.scanFile(getContentResolver(), existingFile);
             fd = Os.open(existingFile.getPath(), OsConstants.O_RDONLY, /*mode*/ 0);
         } finally {
@@ -316,7 +317,7 @@
         pollForPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, /*granted*/ false);
         final File shellFile = getShellFile();
 
-        executeShellCommand("touch " + getShellFile());
+        createFileInExternalDir(shellFile);
         MediaStore.scanFile(getContentResolver(), getShellFile());
         // can list a non-media file created by other package.
         assertThat(Arrays.asList(shellFile.getParentFile().list()))
@@ -384,7 +385,7 @@
                 new File(TestUtils.getExternalMediaDir(),
                         "LegacyFileAccessTest2");
         try {
-            executeShellCommand("touch " + shellFile1);
+            createFileInExternalDir(shellFile1);
             MediaStore.scanFile(getContentResolver(), shellFile1);
             // app can't rename shell file.
             assertCantRenameFile(shellFile1, shellFile2);
@@ -419,7 +420,7 @@
                 new File(TestUtils.getExternalMediaDir(),
                         "LegacyFileAccessTest2");
         try {
-            executeShellCommand("touch " + shellFile1);
+            createFileInExternalDir(shellFile1);
             MediaStore.scanFile(getContentResolver(), shellFile1);
             // app can't rename shell file.
             assertCantRenameFile(shellFile1, shellFile2);
@@ -821,4 +822,14 @@
         return new File(TestUtils.getExternalStorageDir(),
                 "LegacyAccessHostTest_shell");
     }
+
+    private void createFileInExternalDir(File file) throws Exception {
+        Log.d(TAG, "Creating file " + file + " in the external Directory");
+        getContentResolver().openFile(Uri.parse(CONTENT_PROVIDER_URL + file.getPath()), "w", null);
+    }
+
+    private void deleteFileInExternalDir(File file) throws Exception {
+        Log.d(TAG, "Deleting file " + file + " from the external Directory");
+        getContentResolver().delete(Uri.parse(CONTENT_PROVIDER_URL + file.getPath()), null, null);
+    }
 }
diff --git a/hostsidetests/scopedstorage/libs/ScopedStorageTestLib/src/android/scopedstorage/cts/lib/TestUtils.java b/hostsidetests/scopedstorage/libs/ScopedStorageTestLib/src/android/scopedstorage/cts/lib/TestUtils.java
index 7aec1c7..6b24594 100644
--- a/hostsidetests/scopedstorage/libs/ScopedStorageTestLib/src/android/scopedstorage/cts/lib/TestUtils.java
+++ b/hostsidetests/scopedstorage/libs/ScopedStorageTestLib/src/android/scopedstorage/cts/lib/TestUtils.java
@@ -170,7 +170,8 @@
     /**
      * Executes a shell command.
      */
-    public static String executeShellCommand(String command) throws IOException {
+    public static String executeShellCommand(String pattern, Object...args) throws IOException {
+        String command = String.format(pattern, args);
         int attempt = 0;
         while (attempt++ < 5) {
             try {
diff --git a/hostsidetests/scopedstorage/src/android/scopedstorage/cts/ScopedStorageTest.java b/hostsidetests/scopedstorage/src/android/scopedstorage/cts/ScopedStorageTest.java
index 6541a7b..47b45ed 100644
--- a/hostsidetests/scopedstorage/src/android/scopedstorage/cts/ScopedStorageTest.java
+++ b/hostsidetests/scopedstorage/src/android/scopedstorage/cts/ScopedStorageTest.java
@@ -164,7 +164,9 @@
 @RunWith(AndroidJUnit4.class)
 public class ScopedStorageTest {
     static final String TAG = "ScopedStorageTest";
+    static final String CONTENT_PROVIDER_URL = "content://android.tradefed.contentprovider";
     static final String THIS_PACKAGE_NAME = getContext().getPackageName();
+    static final int USER_SYSTEM = 0;
 
     /**
      * To help avoid flaky tests, give ourselves a unique nonce to be used for
@@ -766,7 +768,7 @@
         final File videoFile = new File(getMusicDir(), VIDEO_FILE_NAME);
         try {
             // TEST_APP_A with storage permission should not see pdf file in DCIM
-            executeShellCommand("touch " + pdfFile.getAbsolutePath());
+            createFileUsingTradefedContentProvider(pdfFile);
             assertThat(pdfFile.exists()).isTrue();
             assertThat(MediaStore.scanFile(getContentResolver(), pdfFile)).isNotNull();
 
@@ -774,14 +776,14 @@
             assertThat(listAs(TEST_APP_A, getDcimDir().getPath()))
                     .doesNotContain(NONMEDIA_FILE_NAME);
 
-            executeShellCommand("touch " + videoFile.getAbsolutePath());
+            createFileUsingTradefedContentProvider(videoFile);
             // We don't insert files to db for files created by shell.
             assertThat(MediaStore.scanFile(getContentResolver(), videoFile)).isNotNull();
             // TEST_APP_A with storage permission should see video file in Music directory.
             assertThat(listAs(TEST_APP_A, getMusicDir().getPath())).contains(VIDEO_FILE_NAME);
         } finally {
-            executeShellCommand("rm " + pdfFile.getAbsolutePath());
-            executeShellCommand("rm " + videoFile.getAbsolutePath());
+            deleteFileUsingTradefedContentProvider(pdfFile);
+            deleteFileUsingTradefedContentProvider(videoFile);
             MediaStore.scanFile(getContentResolver(), pdfFile);
             MediaStore.scanFile(getContentResolver(), videoFile);
             uninstallAppNoThrow(TEST_APP_A);
@@ -2094,15 +2096,15 @@
             assertAccess(doesntExistPdf, false, false, false);
 
             // We can check only exists for another app's files on root.
-            // Use shell to create root file because TEST_APP_A is in
+            // Use content provider to create root file because TEST_APP_A is in
             // scoped storage.
-            executeShellCommand("touch " + shellPdfAtRoot.getAbsolutePath());
+            createFileUsingTradefedContentProvider(shellPdfAtRoot);
             MediaStore.scanFile(getContentResolver(), shellPdfAtRoot);
             assertFileAccess_existsOnly(shellPdfAtRoot);
         } finally {
             deleteFileAsNoThrow(TEST_APP_A, otherAppPdf.getAbsolutePath());
             deleteFileAsNoThrow(TEST_APP_A, otherAppImage.getAbsolutePath());
-            executeShellCommand("rm " + shellPdfAtRoot.getAbsolutePath());
+            deleteFileUsingTradefedContentProvider(shellPdfAtRoot);
             MediaStore.scanFile(getContentResolver(), shellPdfAtRoot);
             myAppPdf.delete();
             uninstallApp(TEST_APP_A);
@@ -2150,13 +2152,13 @@
             assertDirectoryAccess(new File(getExternalStorageDir(), "Android"), true, false);
             assertDirectoryAccess(new File(getExternalStorageDir(), "doesnt/exist"), false, false);
 
-            executeShellCommand("mkdir " + topLevelDir.getAbsolutePath());
+            createDirUsingTradefedContentProvider(topLevelDir);
             assertDirectoryAccess(topLevelDir, true, false);
 
             assertCannotReadOrWrite(new File("/storage/emulated"));
         } finally {
             uninstallApp(TEST_APP_A); // Uninstalling deletes external app dirs
-            executeShellCommand("rmdir " + topLevelDir.getAbsolutePath());
+            deleteDirUsingTradefedContentProvider(topLevelDir);
         }
     }
 
@@ -2212,13 +2214,11 @@
         final File podcastsDir = getPodcastsDir();
         try {
             if (podcastsDir.exists()) {
-                // Apps can't delete top level directories, not even default directories, so we let
-                // shell do the deed for us.
-                executeShellCommand("rm -r " + podcastsDir);
+                deleteDirUsingTradefedContentProvider(podcastsDir);
             }
             assertThat(podcastsDir.mkdir()).isTrue();
         } finally {
-            executeShellCommand("mkdir " + podcastsDir);
+            createDirUsingTradefedContentProvider(podcastsDir);
         }
     }
 
@@ -2234,7 +2234,7 @@
         try {
             installApp(TEST_APP_A);
             assertCreateFilesAs(TEST_APP_A, otherAppImg, otherAppMusic, otherAppPdf);
-            executeShellCommand("touch " + otherTopLevelFile);
+            createFileUsingTradefedContentProvider(otherTopLevelFile);
             MediaStore.scanFile(getContentResolver(), otherTopLevelFile);
 
             // We can list other apps' files
@@ -2247,7 +2247,7 @@
             // We can also list all top level directories
             assertDirectoryContains(getExternalStorageDir(), getDefaultTopLevelDirs());
         } finally {
-            executeShellCommand("rm " + otherTopLevelFile);
+            deleteFileUsingTradefedContentProvider(otherTopLevelFile);
             MediaStore.scanFile(getContentResolver(), otherTopLevelFile);
             deleteFilesAs(TEST_APP_A, otherAppImg, otherAppMusic, otherAppPdf);
             uninstallApp(TEST_APP_A);
@@ -2490,6 +2490,8 @@
     @Test
     public void testWallpaperApisNoPermission() throws Exception {
         WallpaperManager wallpaperManager = WallpaperManager.getInstance(getContext());
+        assumeTrue("Test skipped as wallpaper is not supported.",
+                wallpaperManager.isWallpaperSupported());
         assertThrows(SecurityException.class, () -> wallpaperManager.getFastDrawable());
         assertThrows(SecurityException.class, () -> wallpaperManager.peekFastDrawable());
         assertThrows(SecurityException.class,
@@ -2696,7 +2698,7 @@
         try {
             installApp(TEST_APP_A);
             assertCreateFilesAs(TEST_APP_A, otherAppImg, otherAppMusic, otherAppPdf);
-            executeShellCommand("touch " + otherTopLevelFile);
+            createFileUsingTradefedContentProvider(otherTopLevelFile);
 
             // We can list other apps' files
             assertDirectoryContains(otherAppPdf.getParentFile(), otherAppPdf);
@@ -2708,7 +2710,7 @@
             // We can also list all top level directories
             assertDirectoryContains(getExternalStorageDir(), getDefaultTopLevelDirs());
         } finally {
-            executeShellCommand("rm " + otherTopLevelFile);
+            deleteFileUsingTradefedContentProvider(otherTopLevelFile);
             deleteFilesAs(TEST_APP_A, otherAppImg, otherAppMusic, otherAppPdf);
             uninstallApp(TEST_APP_A);
         }
@@ -2738,6 +2740,8 @@
 
     @Test
     public void testRenameFromShell() throws Exception {
+        // This test is for shell and shell always runs as USER_SYSTEM
+        assumeTrue("Test is applicable only for System User.", getCurrentUser() == USER_SYSTEM);
         final File imageFile = new File(getPicturesDir(), IMAGE_FILE_NAME);
         final File dir = new File(getMoviesDir(), TEST_DIRECTORY_NAME);
         final File renamedDir = new File(getMusicDir(), TEST_DIRECTORY_NAME);
@@ -3044,12 +3048,28 @@
         assertThat(readPfd.getStatSize()).isEqualTo(writePfd.getStatSize());
     }
 
+    private void assertStartsWith(String actual, String prefix, boolean expected) throws Exception {
+        String message = "String \"" + actual + "\" should start with \"" + prefix + "\"";
+
+        if (expected) {
+            assertTrue(message, actual.startsWith(prefix));
+        } else {
+            assertFalse(message, actual.startsWith(prefix));
+        }
+    }
+
     private void assertLowerFsFd(ParcelFileDescriptor pfd) throws Exception {
-        assertThat(Os.readlink("/proc/self/fd/" + pfd.getFd()).startsWith("/storage")).isTrue();
+        String path = Os.readlink("/proc/self/fd/" + pfd.getFd());
+        String prefix = "/storage";
+
+        assertStartsWith(path, prefix, true);
     }
 
     private void assertUpperFsFd(ParcelFileDescriptor pfd) throws Exception {
-        assertThat(Os.readlink("/proc/self/fd/" + pfd.getFd()).startsWith("/mnt/user")).isTrue();
+        String path = Os.readlink("/proc/self/fd/" + pfd.getFd());
+        String prefix = "/mnt/user";
+
+        assertStartsWith(path, prefix, true);
     }
 
     private static void assertCanCreateFile(File file) throws IOException {
@@ -3144,4 +3164,38 @@
             assertThrows(ErrnoException.class, () -> { Os.access(file.getAbsolutePath(), mask); });
         }
     }
+
+    private void createFileUsingTradefedContentProvider(File file) throws Exception {
+        // Files/Dirs are created using content provider. Owner of the Filse/Dirs is
+        // android.tradefed.contentprovider.
+        Log.d(TAG, "Creating file " + file);
+        getContentResolver().openFile(Uri.parse(CONTENT_PROVIDER_URL + file.getPath()), "w", null);
+    }
+
+    private void createDirUsingTradefedContentProvider(File file) throws Exception {
+        // Files/Dirs are created using content provider. Owner of the Files/Dirs is
+        // android.tradefed.contentprovider.
+        Log.d(TAG, "Creating Dir " + file);
+        // Create a tmp file in the target directory, this would also create the required
+        // directory, then delete the tmp file. It would leave only new directory.
+        getContentResolver()
+            .openFile(Uri.parse(CONTENT_PROVIDER_URL + file.getPath() + "/tmp.txt"), "w", null);
+        getContentResolver()
+            .delete(Uri.parse(CONTENT_PROVIDER_URL + file.getPath() + "/tmp.txt"), null, null);
+    }
+
+    private void deleteFileUsingTradefedContentProvider(File file) throws Exception {
+        Log.d(TAG, "Deleting file " + file);
+        getContentResolver().delete(Uri.parse(CONTENT_PROVIDER_URL + file.getPath()), null, null);
+    }
+
+    private void deleteDirUsingTradefedContentProvider(File file) throws Exception {
+        Log.d(TAG, "Deleting Dir " + file);
+        getContentResolver().delete(Uri.parse(CONTENT_PROVIDER_URL + file.getPath()), null, null);
+    }
+
+    private int getCurrentUser() throws Exception {
+        String userId = executeShellCommand("am get-current-user");
+        return Integer.parseInt(userId.trim());
+    }
 }
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-13232/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13232/poc.cpp
index 121d5a9..419f4c6 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2017-13232/poc.cpp
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13232/poc.cpp
@@ -79,7 +79,7 @@
   data.writeInt32(1);
   audio_attributes_t attr;
   memset(&attr, 0xff, sizeof(attr));
-  attr.flags = 0;
+  attr.flags = AUDIO_FLAG_NONE;
   memset(attr.tags, 0x41, AUDIO_ATTRIBUTES_TAGS_MAX_SIZE);
   data.write(&attr, sizeof(attr));
   binder->transact(GET_OUTPUT_FOR_ATTR, data, &reply, 0);
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp
index 0a19bec..0e9fbdd 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp
@@ -29,12 +29,14 @@
         "frameworks/native/include/media/openmax",
         "frameworks/av/media/libstagefright",
         "frameworks/native/include/media/hardware",
-        "frameworks/av/media/libstagefright/codecs/mp3dec/include",
-        "frameworks/av/media/libstagefright/codecs/mp3dec/src",
         "frameworks/av/media/libmedia/include",
         "frameworks/av/media/libstagefright/xmlparser/include",
     ],
 
+    header_libs: [
+        "libstagefright_mp3dec",
+    ],
+
     shared_libs: [
         "libstagefright",
         "libstagefright_omx",
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp
index a559537..1ac7b76 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
+#include <s_tmp3dec_file.h> // from the mp3dec library
+
 #include "../includes/common.h"
 #include "../includes/memutils_track.h"
 #include "../includes/omxUtils.h"
-#include "codecs/mp3dec/src/s_tmp3dec_file.h"
 #include "media/omx/1.0/WOmx.h"
 #include "omx/include/media/stagefright/omx/1.0/Omx.h"
 
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
index 88d0f9a..1892f85 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
@@ -16,7 +16,6 @@
 package android.cts.statsd.atom;
 
 import static com.android.os.AtomsProto.IntegrityCheckResultReported.Response.ALLOWED;
-
 import static com.google.common.truth.Truth.assertThat;
 import static com.google.common.truth.Truth.assertWithMessage;
 
@@ -25,7 +24,6 @@
 import android.os.WakeLockLevelEnum;
 import android.server.ErrorSource;
 import android.telephony.NetworkTypeEnum;
-
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.compatibility.common.util.PropertyUtil;
 import com.android.internal.os.StatsdConfigProto.FieldValueMatcher;
@@ -84,10 +82,8 @@
 import com.android.os.StatsLog.EventMetricData;
 import com.android.server.notification.SmallHash;
 import com.android.tradefed.log.LogUtil;
-
 import com.google.common.collect.Range;
 import com.google.protobuf.Descriptors;
-
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -1789,18 +1785,32 @@
 
     public void testSettingsStatsReported() throws Exception {
         // Base64 encoded proto com.android.service.nano.StringListParamProto,
-        // which contains two strings "font_scale" and "screen_auto_brightness_adj".
-        final String encoded = "ChpzY3JlZW5fYXV0b19icmlnaHRuZXNzX2FkagoKZm9udF9zY2FsZQ";
-        final String font_scale = "font_scale";
-        SettingSnapshot snapshot = null;
+        // which contains five strings 'low_power_trigger_level', 'preferred_network_mode1',
+        // 'preferred_network_mode1_int', 'wfc_ims_mode','zen_mode'
+        final String encoded =
+            "Chdsb3dfcG93ZXJfdHJpZ2dlcl9sZXZlbAoQd2ZjX2ltc19tb2RlID0gMgoXcHJlZmVycmVkX25ldHdvcmtfbW9kZTEKG3ByZWZlcnJlZF9uZXR3b3JrX21vZGUxX2ludAoIemVuX21vZGU";
+        final String network_mode1 = "preferred_network_mode1";
 
+        int originalNetworkMode;
+        try {
+            originalNetworkMode = Integer.parseInt(
+                getDevice().executeShellCommand("settings get global " + network_mode1));
+        } catch (NumberFormatException e) {
+            // The default value, zen mode is not enabled
+            originalNetworkMode = 0;
+        }
+
+        // Clear settings_stats device config.
+        Thread.sleep(WAIT_TIME_SHORT);
+        getDevice().executeShellCommand(
+            "device_config reset untrusted_clear settings_stats");
         // Set whitelist through device config.
         Thread.sleep(WAIT_TIME_SHORT);
         getDevice().executeShellCommand(
-                "device_config put settings_stats SystemFeature__float_whitelist " + encoded);
+            "device_config put settings_stats GlobalFeature__integer_whitelist " + encoded);
         Thread.sleep(WAIT_TIME_SHORT);
-        // Set font_scale value
-        getDevice().executeShellCommand("settings put system font_scale 1.5");
+        // Set network_mode1 value
+        getDevice().executeShellCommand("settings put global " + network_mode1 + " 15");
 
         // Get SettingSnapshot as a simple gauge metric.
         StatsdConfig.Builder config = createConfigBuilder();
@@ -1817,13 +1827,13 @@
             Thread.sleep(WAIT_TIME_LONG);
         }
 
-        // Test the size of atoms. It should contain at least "font_scale" and
-        // "screen_auto_brightness_adj" two setting values.
+        // Test the size of atoms. It should contain 5 atoms
         List<Atom> atoms = getGaugeMetricDataList();
-        assertThat(atoms.size()).isAtLeast(2);
+        assertThat(atoms.size()).isEqualTo(5);
+        SettingSnapshot snapshot = null;
         for (Atom atom : atoms) {
             SettingSnapshot settingSnapshot = atom.getSettingSnapshot();
-            if (font_scale.equals(settingSnapshot.getName())) {
+            if (network_mode1.equals(settingSnapshot.getName())) {
                 snapshot = settingSnapshot;
                 break;
             }
@@ -1832,16 +1842,20 @@
         Thread.sleep(WAIT_TIME_SHORT);
         // Test the data of atom.
         assertNotNull(snapshot);
-        // Get font_scale value and test value type.
-        final float fontScale = Float.parseFloat(
-                getDevice().executeShellCommand("settings get system font_scale"));
+        // Get setting value and test value type.
+        final int newNetworkMode = Integer.parseInt(
+            getDevice().executeShellCommand("settings get global " + network_mode1).trim());
         assertThat(snapshot.getType()).isEqualTo(
-                SettingSnapshot.SettingsValueType.ASSIGNED_FLOAT_TYPE);
+            SettingSnapshot.SettingsValueType.ASSIGNED_INT_TYPE);
         assertThat(snapshot.getBoolValue()).isEqualTo(false);
-        assertThat(snapshot.getIntValue()).isEqualTo(0);
-        assertThat(snapshot.getFloatValue()).isEqualTo(fontScale);
+        assertThat(snapshot.getIntValue()).isEqualTo(newNetworkMode);
+        assertThat(snapshot.getFloatValue()).isEqualTo(0f);
         assertThat(snapshot.getStrValue()).isEqualTo("");
         assertThat(snapshot.getUserId()).isEqualTo(0);
+
+        // Restore the setting value.
+        getDevice().executeShellCommand(
+            "settings put global " + network_mode1 + " " + originalNetworkMode);
     }
 
     public void testIntegrityCheckAtomReportedDuringInstall() throws Exception {
diff --git a/hostsidetests/statsd/src/android/cts/statsd/metric/CountMetricsTests.java b/hostsidetests/statsd/src/android/cts/statsd/metric/CountMetricsTests.java
index 9eccad6..a63e01e 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/metric/CountMetricsTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/metric/CountMetricsTests.java
@@ -303,117 +303,6 @@
         assertThat(totalCount).isEqualTo(2);
     }
 
-    public void testSlicedStateCountMetric() throws Exception {
-        if (!hasFeature(FEATURE_BLUETOOTH_LE, true)) return;
-
-        int whatMatcherId = 3;
-        int stateId = 4;
-
-        // Atom 9999 {
-        //     repeated AttributionNode attribution_node = 1;
-        //     optional bool is_filtered = 2;
-        //     optional bool is_first_match = 3;
-        //     optional bool is_opportunistic = 4;
-        // }
-        int whatAtomId = 9_999;
-
-        StatsdConfigProto.AtomMatcher whatMatcher =
-                MetricsUtils.getAtomMatcher(whatAtomId)
-                        .setId(whatMatcherId)
-                        .build();
-
-        StatsdConfigProto.State state = StatsdConfigProto.State.newBuilder()
-            .setId(stateId)
-            .setAtomId(Atom.BLE_SCAN_STATE_CHANGED_FIELD_NUMBER)
-            .build();
-
-        StatsdConfigProto.MetricStateLink stateLink = StatsdConfigProto.MetricStateLink.newBuilder()
-            .setStateAtomId(Atom.BLE_SCAN_STATE_CHANGED_FIELD_NUMBER)
-            .setFieldsInWhat(FieldMatcher.newBuilder()
-                    .setField(whatAtomId)
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(1)
-                            .setPosition(Position.FIRST)
-                            .addChild(FieldMatcher.newBuilder()
-                                    .setField(AttributionNode.UID_FIELD_NUMBER)
-                            )
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(2)
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(3)
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(4)
-                    )
-            )
-            .setFieldsInState(FieldMatcher.newBuilder()
-                    .setField(Atom.BLE_SCAN_STATE_CHANGED_FIELD_NUMBER)
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(BleScanStateChanged.ATTRIBUTION_NODE_FIELD_NUMBER)
-                            .setPosition(Position.FIRST)
-                            .addChild(FieldMatcher.newBuilder()
-                                    .setField(AttributionNode.UID_FIELD_NUMBER)
-                            )
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(BleScanStateChanged.IS_FILTERED_FIELD_NUMBER)
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(BleScanStateChanged.IS_FIRST_MATCH_FIELD_NUMBER)
-                    )
-                    .addChild(FieldMatcher.newBuilder()
-                            .setField(BleScanStateChanged.IS_OPPORTUNISTIC_FIELD_NUMBER)
-                    )
-            )
-            .build();
-
-        StatsdConfigProto.StatsdConfig.Builder builder = createConfigBuilder()
-                .addCountMetric(StatsdConfigProto.CountMetric.newBuilder()
-                    .setId(MetricsUtils.COUNT_METRIC_ID)
-                    .setBucket(StatsdConfigProto.TimeUnit.CTS)
-                    .setWhat(whatMatcherId)
-                    .addSliceByState(stateId)
-                    .addStateLink(stateLink)
-                )
-                .addAtomMatcher(whatMatcher)
-                .addState(state);
-        uploadConfig(builder);
-
-        runDeviceTests(DEVICE_SIDE_TEST_PACKAGE, ".AtomTests", "testBleScanInterrupted");
-
-        StatsLogReport metricReport = getStatsLogReport();
-        LogUtil.CLog.d("Got the following stats log report: \n" + metricReport.toString());
-        assertThat(metricReport.getMetricId()).isEqualTo(MetricsUtils.COUNT_METRIC_ID);
-        assertThat(metricReport.hasCountMetrics()).isTrue();
-
-        StatsLogReport.CountMetricDataWrapper dataWrapper = metricReport.getCountMetrics();
-        assertThat(dataWrapper.getDataCount()).isEqualTo(2);
-
-        CountMetricData data = dataWrapper.getData(0);
-        assertThat(data.getSliceByStateCount()).isEqualTo(1);
-        assertThat(data.getSliceByState(0).getAtomId())
-                .isEqualTo(Atom.BLE_SCAN_STATE_CHANGED_FIELD_NUMBER);
-        assertThat(data.getSliceByState(0).getValue())
-                .isEqualTo(BleScanStateChanged.State.OFF.ordinal());
-        long totalCount = data.getBucketInfoList().stream()
-                .mapToLong(CountBucketInfo::getCount)
-                .sum();
-        assertThat(totalCount).isEqualTo(3);
-
-        data = dataWrapper.getData(1);
-        assertThat(data.getSliceByStateCount()).isEqualTo(1);
-        assertThat(data.getSliceByState(0).getAtomId())
-                .isEqualTo(Atom.BLE_SCAN_STATE_CHANGED_FIELD_NUMBER);
-        assertThat(data.getSliceByState(0).getValue())
-                .isEqualTo(BleScanStateChanged.State.ON.ordinal());
-        totalCount = data.getBucketInfoList().stream()
-                .mapToLong(CountBucketInfo::getCount)
-                .sum();
-        assertThat(totalCount).isEqualTo(2);
-    }
-
     public void testSlicedStateCountMetricNoReset() throws Exception {
         int whatMatcherId = 3;
         int stateId = 4;
diff --git a/hostsidetests/statsd/src/android/cts/statsd/metric/DurationMetricsTests.java b/hostsidetests/statsd/src/android/cts/statsd/metric/DurationMetricsTests.java
index 1a553b2..65cef95 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/metric/DurationMetricsTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/metric/DurationMetricsTests.java
@@ -500,12 +500,10 @@
         builder.addPredicate(predicateA);
 
         FieldMatcher.Builder dimensionsBuilder = FieldMatcher.newBuilder()
-                .setField(AppBreadcrumbReported.STATE_FIELD_NUMBER);
-        dimensionsBuilder.addChild(FieldMatcher.newBuilder()
-                .setField(AppBreadcrumbReported.LABEL_FIELD_NUMBER)
-                .setPosition(Position.FIRST)
+                .setField(Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER);
+        dimensionsBuilder
                 .addChild(FieldMatcher.newBuilder().setField(
-                        AppBreadcrumbReported.LABEL_FIELD_NUMBER)));
+                        AppBreadcrumbReported.LABEL_FIELD_NUMBER));
         Predicate predicateB =
             Predicate.newBuilder()
                 .setId(MetricsUtils.StringToId("Predicate_B"))
@@ -527,12 +525,9 @@
                 .setBucket(StatsdConfigProto.TimeUnit.CTS)
                 .setDimensionsInWhat(
                     FieldMatcher.newBuilder()
-                        .setField(Atom.BATTERY_SAVER_MODE_STATE_CHANGED_FIELD_NUMBER)
-                        .addChild(FieldMatcher.newBuilder()
-                                      .setField(AppBreadcrumbReported.STATE_FIELD_NUMBER)
-                                      .setPosition(Position.FIRST)
-                                      .addChild(FieldMatcher.newBuilder().setField(
-                                          AppBreadcrumbReported.LABEL_FIELD_NUMBER)))));
+                            .setField(Atom.APP_BREADCRUMB_REPORTED_FIELD_NUMBER)
+                            .addChild(FieldMatcher.newBuilder().setField(
+                                    AppBreadcrumbReported.LABEL_FIELD_NUMBER))));
 
         // Upload config.
         uploadConfig(builder);
@@ -554,10 +549,21 @@
         assertThat(metricReport.hasDurationMetrics()).isTrue();
         StatsLogReport.DurationMetricDataWrapper durationData
                 = metricReport.getDurationMetrics();
-        assertThat(durationData.getDataCount()).isEqualTo(1);
-        assertThat(durationData.getData(0).getBucketInfoCount()).isGreaterThan(1);
+        assertThat(durationData.getDataCount()).isEqualTo(2);
+        assertThat(durationData.getData(0).getBucketInfoCount()).isGreaterThan(3);
+        assertThat(durationData.getData(1).getBucketInfoCount()).isGreaterThan(3);
+        long totalDuration = 0;
         for (DurationBucketInfo bucketInfo : durationData.getData(0).getBucketInfoList()) {
-            assertThat(bucketInfo.getDurationNanos()).isIn(Range.openClosed(0L, (long)1e9));
+            assertThat(bucketInfo.getDurationNanos()).isIn(Range.openClosed(0L, (long) 1e9));
+            totalDuration += bucketInfo.getDurationNanos();
         }
+        // Duration for both labels is expected to be 4s.
+        assertThat(totalDuration).isIn(Range.open((long) 3e9, (long) 8e9));
+        totalDuration = 0;
+        for (DurationBucketInfo bucketInfo : durationData.getData(1).getBucketInfoList()) {
+            assertThat(bucketInfo.getDurationNanos()).isIn(Range.openClosed(0L, (long) 1e9));
+            totalDuration += bucketInfo.getDurationNanos();
+        }
+        assertThat(totalDuration).isIn(Range.open((long) 3e9, (long) 8e9));
     }
 }
diff --git a/hostsidetests/statsd/src/android/cts/statsd/uidmap/UidMapTests.java b/hostsidetests/statsd/src/android/cts/statsd/uidmap/UidMapTests.java
index db5cba5..4ceefa7 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/uidmap/UidMapTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/uidmap/UidMapTests.java
@@ -96,7 +96,7 @@
         // Now enable re-installation.
         getDevice().installPackage(buildHelper.getTestFile(DEVICE_SIDE_TEST_APK), true, true);
 
-        Thread.sleep(WAIT_TIME_SHORT);
+        Thread.sleep(WAIT_TIME_LONG);
 
         ConfigMetricsReportList reports = getReportList();
         assertThat(reports.getReportsCount()).isGreaterThan(0);
@@ -119,7 +119,7 @@
         int uid = getUid();
         getDevice().uninstallPackage(DEVICE_SIDE_TEST_PACKAGE);
 
-        Thread.sleep(WAIT_TIME_SHORT);
+        Thread.sleep(WAIT_TIME_LONG);
 
         ConfigMetricsReportList reports = getReportList();
         assertThat(reports.getReportsCount()).isGreaterThan(0);
diff --git a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
index 2fcbb5b..e56c486 100644
--- a/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
+++ b/hostsidetests/theme/src/android/theme/cts/ThemeHostTest.java
@@ -64,7 +64,6 @@
 
     private static final String CLEAR_GENERATED_CMD = "rm -rf %s/*.png";
     private static final String STOP_CMD = String.format("am force-stop %s", APP_PACKAGE_NAME);
-    private static final String HARDWARE_TYPE_CMD = "dumpsys | grep android.hardware.type";
     private static final String DENSITY_PROP_DEVICE = "ro.sf.lcd_density";
     private static final String DENSITY_PROP_EMULATOR = "qemu.sf.lcd_density";
 
@@ -125,7 +124,7 @@
                 fail("Failed to unzip assets: " + zipFile);
             }
         } else {
-            if (checkHardwareTypeSkipTest(mDevice.executeShellCommand(HARDWARE_TYPE_CMD).trim())) {
+            if (checkHardwareTypeSkipTest()) {
                 Log.logAndDisplay(LogLevel.WARN, LOG_TAG,
                         "Could not obtain resources for skipped themes test: " + zipFile);
             } else {
@@ -149,11 +148,10 @@
     }
 
     public void testThemes() throws Exception {
-        if (checkHardwareTypeSkipTest(mDevice.executeShellCommand(HARDWARE_TYPE_CMD).trim())) {
+        if (checkHardwareTypeSkipTest()) {
             Log.logAndDisplay(LogLevel.INFO, LOG_TAG, "Skipped themes test for watch / TV / automotive");
             return;
         }
-
         if (mReferences.isEmpty()) {
             Log.logAndDisplay(LogLevel.INFO, LOG_TAG,
                     "Skipped themes test due to missing reference images");
@@ -303,10 +301,17 @@
         return Integer.parseInt(device.getProperty(densityProp));
     }
 
-    private static boolean checkHardwareTypeSkipTest(String hardwareTypeString) {
-        return hardwareTypeString.contains("android.hardware.type.watch")
-                || hardwareTypeString.contains("android.hardware.type.television")
-                || hardwareTypeString.contains("android.hardware.type.automotive");
+    private boolean checkHardwareTypeSkipTest() {
+        try {
+         if( mDevice.hasFeature("feature:android.hardware.type.watch")
+                 || mDevice.hasFeature("feature:android.hardware.type.television")
+                 || mDevice.hasFeature("feature:android.hardware.type.automotive")) {
+             return true;
+         }
+        } catch (DeviceNotAvailableException ex) {
+             return false;
+        }
+        return false;
     }
 
     private static boolean isEmulator(ITestDevice device) {
diff --git a/hostsidetests/userspacereboot/TEST_MAPPING b/hostsidetests/userspacereboot/TEST_MAPPING
index 40da059..cf97bfae 100644
--- a/hostsidetests/userspacereboot/TEST_MAPPING
+++ b/hostsidetests/userspacereboot/TEST_MAPPING
@@ -1,8 +1,7 @@
 {
-  "postsubmit" : [
+  "presubmit" : [
     {
-      "name": "CtsUserspaceRebootHostSideTestCases",
-      "keywords": ["primary-device"]
+      "name": "CtsUserspaceRebootHostSideTestCases"
     }
   ]
 }
diff --git a/libs/install/src/android/cts/install/lib/host/InstallUtilsHost.java b/libs/install/src/android/cts/install/lib/host/InstallUtilsHost.java
index 4bbc0da..f6de85b 100644
--- a/libs/install/src/android/cts/install/lib/host/InstallUtilsHost.java
+++ b/libs/install/src/android/cts/install/lib/host/InstallUtilsHost.java
@@ -22,20 +22,35 @@
 import static com.google.common.truth.Truth.assertWithMessage;
 
 import com.android.ddmlib.Log;
+import com.android.tradefed.build.BuildInfoKey;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.CommandResult;
 import com.android.tradefed.util.CommandStatus;
+import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.IRunUtil;
+import com.android.tradefed.util.RunUtil;
+import com.android.tradefed.util.SystemUtil;
 
+import com.google.common.base.Stopwatch;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.Duration;
 import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Utilities to facilitate installation in tests on host side.
  */
 public class InstallUtilsHost {
     private static final String TAG = InstallUtilsHost.class.getSimpleName();
+    private static final String APEX_INFO_EXTRACT_REGEX =
+            ".*package:\\sname='(\\S+)\\'\\sversionCode='(\\d+)'\\s.*";
 
+    private final IRunUtil mRunUtil = new RunUtil();
     private final BaseHostJUnit4Test mTest;
 
     public InstallUtilsHost(BaseHostJUnit4Test test) {
@@ -99,4 +114,119 @@
         return mTest.getDevice().getActiveApexes().stream().filter(
                 apex -> apex.name.equals(SHIM_APEX_PACKAGE_NAME)).findAny();
     }
+
+    /**
+     * Retrieve package name and version code from test apex file.
+     *
+     * @param apex input apex file to retrieve the info from
+     */
+    public ITestDevice.ApexInfo getApexInfo(File apex) {
+        String aaptOutput = runCmd(String.format("aapt dump badging %s", apex.getAbsolutePath()));
+        String[] lines = aaptOutput.split("\n");
+        Pattern p = Pattern.compile(APEX_INFO_EXTRACT_REGEX);
+        for (String l : lines) {
+            Matcher m = p.matcher(l);
+            if (m.matches()) {
+                return new ITestDevice.ApexInfo(m.group(1), Long.parseLong(m.group(2)));
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Installs packages using staged install flow and waits for pre-reboot verification to complete
+     */
+    public String installStagedPackage(File pkg) throws Exception {
+        return mTest.getDevice().installPackage(pkg, false, "--staged");
+    }
+
+    /**
+     * Install multiple package at the same time
+     */
+    public void installApexes(String... filenames) throws Exception {
+        String[] args = new String[filenames.length + 1];
+        args[0] = "install-multi-package";
+        for (int i = 0; i < filenames.length; i++) {
+            args[i + 1] = getTestFile(filenames[i]).getAbsolutePath();
+        }
+        String stdout = mTest.getDevice().executeAdbCommand(args);
+        assertThat(stdout).isNotNull();
+    }
+
+    /**
+     * Waits for given {@code timeout} for {@code filePath} to be deleted.
+     */
+    public void waitForFileDeleted(String filePath, Duration timeout) throws Exception {
+        Stopwatch stopwatch = Stopwatch.createStarted();
+        while (true) {
+            if (!mTest.getDevice().doesFileExist(filePath)) {
+                return;
+            }
+            if (stopwatch.elapsed().compareTo(timeout) > 0) {
+                break;
+            }
+            Thread.sleep(500);
+        }
+        throw new AssertionError("Timed out waiting for " + filePath + " to be deleted");
+    }
+
+    /**
+     * Get the test file.
+     *
+     * @param testFileName name of the file
+     */
+    public File getTestFile(String testFileName) throws IOException {
+        File testFile = null;
+
+        String testcasesPath = System.getenv(
+                SystemUtil.EnvVariable.ANDROID_HOST_OUT_TESTCASES.toString());
+        if (testcasesPath != null) {
+            testFile = searchTestFile(new File(testcasesPath), testFileName);
+        }
+        if (testFile != null) {
+            return testFile;
+        }
+
+        File hostLinkedDir = mTest.getBuild().getFile(
+                BuildInfoKey.BuildInfoFileKey.HOST_LINKED_DIR);
+        if (hostLinkedDir != null) {
+            testFile = searchTestFile(hostLinkedDir, testFileName);
+        }
+        if (testFile != null) {
+            return testFile;
+        }
+
+        // Find the file in the buildinfo.
+        File buildInfoFile = mTest.getBuild().getFile(testFileName);
+        if (buildInfoFile != null) {
+            return buildInfoFile;
+        }
+
+        throw new IOException("Cannot find " + testFileName);
+    }
+
+    /**
+     * Searches the file with the given name under the given directory, returns null if not found.
+     */
+    private File searchTestFile(File baseSearchFile, String testFileName) {
+        if (baseSearchFile != null && baseSearchFile.isDirectory()) {
+            File testFile = FileUtil.findFile(baseSearchFile, testFileName);
+            if (testFile != null && testFile.isFile()) {
+                return testFile;
+            }
+        }
+        return null;
+    }
+
+    private String runCmd(String cmd) {
+        Log.d("About to run command: %s", cmd);
+        CommandResult result = mRunUtil.runTimedCmd(1000 * 60 * 5, cmd.split("\\s+"));
+        assertThat(result).isNotNull();
+        assertWithMessage(String.format("Command %s failed", cmd)).that(result.getStatus())
+                .isEqualTo(CommandStatus.SUCCESS);
+        Log.d("output:\n%s", result.getStdout());
+        return result.getStdout();
+    }
+
+
 }
diff --git a/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java b/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
index c7b47ad..9f21efe 100644
--- a/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
+++ b/tests/BlobStore/src/com/android/cts/blob/BlobStoreManagerTest.java
@@ -83,7 +83,7 @@
 @RunWith(BlobStoreTestRunner.class)
 public class BlobStoreManagerTest {
 
-    private static final long TIMEOUT_COMMIT_CALLBACK_SEC = 5;
+    private static final long TIMEOUT_COMMIT_CALLBACK_SEC = 10;
 
     private static final long TIMEOUT_BIND_SERVICE_SEC = 2;
 
diff --git a/tests/JobScheduler/src/android/jobscheduler/cts/JobThrottlingTest.java b/tests/JobScheduler/src/android/jobscheduler/cts/JobThrottlingTest.java
index c449af8..548128c 100644
--- a/tests/JobScheduler/src/android/jobscheduler/cts/JobThrottlingTest.java
+++ b/tests/JobScheduler/src/android/jobscheduler/cts/JobThrottlingTest.java
@@ -514,6 +514,7 @@
             toggleDeviceIdleState(false);
         }
         mTestAppInterface.cleanup();
+        BatteryUtils.runDumpsysBatterySaverOff();
         BatteryUtils.runDumpsysBatteryReset();
         BatteryUtils.enableBatterySaver(false);
         removeTestAppFromTempWhitelist();
diff --git a/tests/accessibilityservice/AndroidManifest.xml b/tests/accessibilityservice/AndroidManifest.xml
index ff2fed4..cdc8a64 100644
--- a/tests/accessibilityservice/AndroidManifest.xml
+++ b/tests/accessibilityservice/AndroidManifest.xml
@@ -65,6 +65,7 @@
         <activity
             android:label="Full screen activity for gesture dispatch testing"
             android:name=".AccessibilityGestureDispatchTest$GestureDispatchActivity"
+            android:theme="@style/Theme_NoSwipeDismiss"
             android:screenOrientation="locked" />
 
         <activity
diff --git a/tests/accessibilityservice/AndroidTest.xml b/tests/accessibilityservice/AndroidTest.xml
index 19d406c..d79d927 100644
--- a/tests/accessibilityservice/AndroidTest.xml
+++ b/tests/accessibilityservice/AndroidTest.xml
@@ -18,6 +18,7 @@
     <option name="config-descriptor:metadata" key="component" value="framework" />
     <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
     <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="cmd accessibility set-bind-instant-service-allowed true" />
         <option name="teardown-command" value="cmd accessibility set-bind-instant-service-allowed false" />
diff --git a/tests/accessibilityservice/res/values/styles.xml b/tests/accessibilityservice/res/values/styles.xml
new file mode 100644
index 0000000..77c0405
--- /dev/null
+++ b/tests/accessibilityservice/res/values/styles.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2020 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources>
+    <style name="Theme_NoSwipeDismiss">
+        <item name="android:windowSwipeToDismiss">false</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
index 7663cdb..ea984ee 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityWindowQueryTest.java
@@ -590,6 +590,8 @@
                             || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
                 });
 
+        sUiAutomation.waitForIdle(TIMEOUT_WINDOW_STATE_IDLE, DEFAULT_TIMEOUT_MS);
+
         assertTrue(
                 sUiAutomation.performGlobalAction(
                         AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN));
diff --git a/tests/app/AppExitTest/src/android/app/cts/ActivityManagerAppExitInfoTest.java b/tests/app/AppExitTest/src/android/app/cts/ActivityManagerAppExitInfoTest.java
index c3fcf4c..fe194f2 100644
--- a/tests/app/AppExitTest/src/android/app/cts/ActivityManagerAppExitInfoTest.java
+++ b/tests/app/AppExitTest/src/android/app/cts/ActivityManagerAppExitInfoTest.java
@@ -101,7 +101,7 @@
     private static final int EXIT_CODE = 123;
     private static final int CRASH_SIGNAL = OsConstants.SIGSEGV;
 
-    private static final int WAITFOR_MSEC = 5000;
+    private static final int WAITFOR_MSEC = 10000;
     private static final int WAITFOR_SETTLE_DOWN = 2000;
 
     private static final int CMD_PID = 1;
diff --git a/tests/app/TEST_MAPPING b/tests/app/TEST_MAPPING
index ca2dd6c..213ad1e 100644
--- a/tests/app/TEST_MAPPING
+++ b/tests/app/TEST_MAPPING
@@ -1,5 +1,5 @@
 {
-  "presubmit": [
+  "presubmit-large": [
     {
       "name": "CtsAppTestCases",
       "options": [
diff --git a/tests/app/app/src/android/app/stubs/OrientationTestUtils.java b/tests/app/app/src/android/app/stubs/OrientationTestUtils.java
index 410c98d..29b71e0 100644
--- a/tests/app/app/src/android/app/stubs/OrientationTestUtils.java
+++ b/tests/app/app/src/android/app/stubs/OrientationTestUtils.java
@@ -20,6 +20,7 @@
 
 import android.app.Activity;
 import android.content.pm.ActivityInfo;
+import android.content.res.Resources;
 import android.view.DisplayInfo;
 
 import java.util.concurrent.CountDownLatch;
@@ -71,8 +72,15 @@
 
     /** Checks whether the display dimension is close to square. */
     public static boolean isCloseToSquareDisplay(final Activity activity) {
-        final float closeToSquareMaxAspectRatio = activity.getResources().getFloat(
-                com.android.internal.R.dimen.config_closeToSquareDisplayMaxAspectRatio);
+        final Resources resources = activity.getResources();
+        final float closeToSquareMaxAspectRatio;
+        try {
+            closeToSquareMaxAspectRatio = resources.getFloat(resources.getIdentifier(
+                    "config_closeToSquareDisplayMaxAspectRatio", "dimen", "android"));
+        } catch (Resources.NotFoundException e) {
+            // Assume device is not close to square.
+            return false;
+        }
         final DisplayInfo displayInfo = new DisplayInfo();
         activity.getDisplay().getDisplayInfo(displayInfo);
         final int w = displayInfo.logicalWidth;
diff --git a/tests/app/src/android/app/cts/NotificationManagerTest.java b/tests/app/src/android/app/cts/NotificationManagerTest.java
index 13f0446..52c6535 100644
--- a/tests/app/src/android/app/cts/NotificationManagerTest.java
+++ b/tests/app/src/android/app/cts/NotificationManagerTest.java
@@ -181,6 +181,11 @@
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         mRuleIds = new ArrayList<>();
 
+        // ensure listener access isn't allowed before test runs (other tests could put
+        // TestListener in an unexpected state)
+        toggleListenerAccess(TestNotificationListener.getId(),
+                InstrumentationRegistry.getInstrumentation(), false);
+
         toggleNotificationPolicyAccess(mContext.getPackageName(),
                 InstrumentationRegistry.getInstrumentation(), true);
         mNotificationManager.setInterruptionFilter(INTERRUPTION_FILTER_ALL);
@@ -612,9 +617,9 @@
         runCommand(command, instrumentation);
 
         NotificationManager nm = mContext.getSystemService(NotificationManager.class);
-        Assert.assertEquals("Notification Policy Access Grant is " +
-                        nm.isNotificationPolicyAccessGranted() + " not " + on, on,
-                nm.isNotificationPolicyAccessGranted());
+        assertEquals("Notification Policy Access Grant is "
+                + nm.isNotificationPolicyAccessGranted() + " not " + on + " for "
+                + packageName,  on, nm.isNotificationPolicyAccessGranted());
     }
 
     private void suspendPackage(String packageName,
@@ -2089,8 +2094,9 @@
             //        mAudioManager.isStreamMute(AudioManager.STREAM_ALARM));
 
             // Test requires that the phone's default state has no channels that can bypass dnd
-            assertTrue("Ringer stream should be muted",
-                    mAudioManager.isStreamMute(AudioManager.STREAM_RING));
+            // which we can't currently guarantee (b/169267379)
+            // assertTrue("Ringer stream should be muted",
+            //        mAudioManager.isStreamMute(AudioManager.STREAM_RING));
         } finally {
             mNotificationManager.setInterruptionFilter(originalFilter);
             mNotificationManager.setNotificationPolicy(origPolicy);
@@ -2130,8 +2136,9 @@
                     mAudioManager.isStreamMute(AudioManager.STREAM_ALARM));
 
             // Test requires that the phone's default state has no channels that can bypass dnd
-            assertTrue("Ringer stream should be muted",
-                    mAudioManager.isStreamMute(AudioManager.STREAM_RING));
+            // which we can't currently guarantee (b/169267379)
+            // assertTrue("Ringer stream should be muted",
+            //  mAudioManager.isStreamMute(AudioManager.STREAM_RING));
         } finally {
             mNotificationManager.setInterruptionFilter(originalFilter);
             mNotificationManager.setNotificationPolicy(origPolicy);
diff --git a/tests/backup/OWNERS b/tests/backup/OWNERS
index 8a2604f..563154f 100644
--- a/tests/backup/OWNERS
+++ b/tests/backup/OWNERS
@@ -1,3 +1,3 @@
 # Bug component: 656484
 
-include platform/frameworks/base/services/backup:/OWNERS
+include platform/frameworks/base:/services/backup/OWNERS
diff --git a/tests/camera/Android.bp b/tests/camera/Android.bp
new file mode 100644
index 0000000..bf39750
--- /dev/null
+++ b/tests/camera/Android.bp
@@ -0,0 +1,46 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Reusable Camera performance test classes and helpers
+android_library {
+    name: "cts-camera-performance-tests",
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "mockito-target-minus-junit4",
+        "CtsCameraUtils",
+        "truth-prebuilt",
+        "androidx.test.rules",
+    ],
+
+    manifest: "AndroidManifest-lib.xml",
+    resource_dirs: ["res"],
+    srcs: [
+        "src/android/hardware/camera2/cts/testcases/Camera2AndroidTestRule.java",
+        "src/android/hardware/camera2/cts/Camera2SurfaceViewCtsActivity.java",
+        "src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java",
+        "src/android/hardware/camera2/cts/PerformanceTest.java",
+        "src/android/hardware/cts/CameraPerformanceTestHelper.java",
+        "src/android/hardware/cts/LegacyCameraPerformanceTest.java",
+        "src/android/hardware/camera2/cts/RecordingTest.java",
+    ],
+
+    sdk_version: "test_current",
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+}
diff --git a/tests/camera/Android.mk b/tests/camera/Android.mk
index 1dc75f3..749fed5 100644
--- a/tests/camera/Android.mk
+++ b/tests/camera/Android.mk
@@ -14,40 +14,6 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-# Reusable Camera performance test classes and helpers
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := cts-camera-performance-tests
-
-LOCAL_MODULE_TAGS := tests
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt \
-	ctstestrunner-axt \
-	mockito-target-minus-junit4 \
-	CtsCameraUtils \
-	truth-prebuilt \
-	androidx.test.rules
-
-LOCAL_MANIFEST_FILE := AndroidManifest-lib.xml
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-LOCAL_SRC_FILES := \
-	src/android/hardware/camera2/cts/testcases/Camera2AndroidTestRule.java \
-	src/android/hardware/camera2/cts/Camera2SurfaceViewCtsActivity.java \
-	src/android/hardware/camera2/cts/testcases/Camera2SurfaceViewTestCase.java \
-	src/android/hardware/camera2/cts/PerformanceTest.java \
-	src/android/hardware/cts/CameraPerformanceTestHelper.java \
-	src/android/hardware/cts/LegacyCameraPerformanceTest.java \
-	src/android/hardware/camera2/cts/RecordingTest.java
-
-LOCAL_SDK_VERSION := test_current
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
 # CtsCameraTestCases package
 
 include $(CLEAR_VARS)
diff --git a/tests/camera/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java b/tests/camera/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
index ad41f9a..88f2710 100644
--- a/tests/camera/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
+++ b/tests/camera/src/android/hardware/camera2/cts/SurfaceViewPreviewTest.java
@@ -278,38 +278,6 @@
                 timeout(PREPARE_TIMEOUT_MS).times(1)).
                 onSurfacePrepared(eq(mSession), eq(mReaderSurface));
 
-        // Calculate frame rate during prepare
-
-        int resultsReceived = (int) resultListener.getTotalNumFrames();
-        if (resultsReceived > 2) {
-            // Only verify frame rate if there are a couple of results
-            Pair<Long, Long> whilePreparingFrameDurationStats =
-                    measureMeanFrameInterval(resultListener, resultsReceived, /*prevTimestamp*/ 0);
-
-            Log.i(TAG, String.format("Frame interval during prepare avg: %f ms, peak %f ms",
-                            whilePreparingFrameDurationStats.first / 1e6,
-                            whilePreparingFrameDurationStats.second / 1e6));
-
-            if (mStaticInfo.isHardwareLevelAtLeastLimited()) {
-                mCollector.expectTrue(
-                    String.format("Camera %s: Preview peak frame interval affected by prepare " +
-                            "call: preview avg frame duration: %f ms, peak during prepare: %f ms",
-                            cameraId,
-                            frameDurationStats.first / 1e6,
-                            whilePreparingFrameDurationStats.second / 1e6),
-                    (whilePreparingFrameDurationStats.second <=
-                            frameDurationStats.first * (1 + PREPARE_PEAK_RATE_BOUNDS)));
-                mCollector.expectTrue(
-                    String.format("Camera %s: Preview average frame interval affected by prepare " +
-                            "call: preview avg frame duration: %f ms, during prepare: %f ms",
-                            cameraId,
-                            frameDurationStats.first / 1e6,
-                            whilePreparingFrameDurationStats.first / 1e6),
-                    (whilePreparingFrameDurationStats.first <=
-                            frameDurationStats.first * (1 + PREPARE_FRAME_RATE_BOUNDS)));
-            }
-        }
-
         resultListener.drain();
 
         // Get at least one more preview result without prepared target
diff --git a/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java b/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
index c0f97b8..d29297f 100644
--- a/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
+++ b/tests/camera/utils/src/android/hardware/camera2/cts/CameraTestUtils.java
@@ -2237,7 +2237,8 @@
                         " is not supported");
             }
 
-            if (srcRowStride == dstRowStride && srcPixStride == dstPixStride) {
+            if (srcRowStride == dstRowStride && srcPixStride == dstPixStride &&
+                    srcPixStride == 1) {
                 // Fast path, just copy the content in the byteBuffer all together.
                 dstBuffer.put(srcBuffer);
             } else {
@@ -2246,7 +2247,7 @@
                 int dstRowByteCount = dstRowStride;
                 byte[] srcDataRow = new byte[Math.max(srcRowStride, dstRowStride)];
 
-                if (srcPixStride == dstPixStride) {
+                if (srcPixStride == dstPixStride && srcPixStride == 1) {
                     // Row by row copy case
                     for (int row = 0; row < effectivePlaneSize.getHeight(); row++) {
                         if (row == effectivePlaneSize.getHeight() - 1) {
@@ -2379,10 +2380,12 @@
             rhsBuffer = rhsPlanes[i].getBuffer();
             lhsBuffer.rewind();
             rhsBuffer.rewind();
-            // Special case for YUV420_888 buffer with different layout
+            // Special case for YUV420_888 buffer with different layout or
+            // potentially differently interleaved U/V planes.
             if (lhsImg.getFormat() == ImageFormat.YUV_420_888 &&
                     (lhsPlanes[i].getPixelStride() != rhsPlanes[i].getPixelStride() ||
-                     lhsPlanes[i].getRowStride() != rhsPlanes[i].getRowStride())) {
+                     lhsPlanes[i].getRowStride() != rhsPlanes[i].getRowStride() ||
+                     (lhsPlanes[i].getPixelStride() != 1))) {
                 int width = getEffectivePlaneSizeForImage(lhsImg, i).getWidth();
                 int height = getEffectivePlaneSizeForImage(lhsImg, i).getHeight();
                 int rowSizeL = lhsPlanes[i].getRowStride();
diff --git a/tests/framework/base/windowmanager/app/src/android/server/wm/app/AssistantActivity.java b/tests/framework/base/windowmanager/app/src/android/server/wm/app/AssistantActivity.java
index 4a1a9a0..82c3770 100644
--- a/tests/framework/base/windowmanager/app/src/android/server/wm/app/AssistantActivity.java
+++ b/tests/framework/base/windowmanager/app/src/android/server/wm/app/AssistantActivity.java
@@ -17,6 +17,7 @@
 package android.server.wm.app;
 
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.server.wm.app.Components.AssistantActivity.EXTRA_ASSISTANT_DISPLAY_ID;
@@ -46,14 +47,13 @@
             final Intent launchIntent = new Intent();
             launchIntent.setComponent(launchActivity)
                     .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+            final ActivityOptions activityOptions = ActivityOptions.makeBasic();
+            activityOptions.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN);
             if (getIntent().hasExtra(EXTRA_ASSISTANT_DISPLAY_ID)) {
-                ActivityOptions displayOptions = ActivityOptions.makeBasic();
-                displayOptions.setLaunchDisplayId(Integer.parseInt(getIntent()
+                activityOptions.setLaunchDisplayId(Integer.parseInt(getIntent()
                         .getStringExtra(EXTRA_ASSISTANT_DISPLAY_ID)));
-                startActivity(launchIntent, displayOptions.toBundle());
-            } else {
-                startActivity(launchIntent);
             }
+            startActivity(launchIntent, activityOptions.toBundle());
         }
 
         // Enter pip if requested
@@ -84,6 +84,7 @@
 
         final ActivityOptions options = ActivityOptions.makeBasic();
         options.setLaunchActivityType(ACTIVITY_TYPE_ASSISTANT);
+        options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN);
         caller.startActivity(intent, options.toBundle());
     }
 }
diff --git a/tests/framework/base/windowmanager/app/src/android/server/wm/app/TranslucentAssistantActivity.java b/tests/framework/base/windowmanager/app/src/android/server/wm/app/TranslucentAssistantActivity.java
index 3806377..98bb6a2 100644
--- a/tests/framework/base/windowmanager/app/src/android/server/wm/app/TranslucentAssistantActivity.java
+++ b/tests/framework/base/windowmanager/app/src/android/server/wm/app/TranslucentAssistantActivity.java
@@ -17,6 +17,7 @@
 package android.server.wm.app;
 
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 
@@ -40,6 +41,7 @@
 
         final ActivityOptions options = ActivityOptions.makeBasic();
         options.setLaunchActivityType(ACTIVITY_TYPE_ASSISTANT);
+        options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN);
         caller.startActivity(intent, options.toBundle());
     }
 }
diff --git a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ExtensionTest.java b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ExtensionTest.java
index 2552686..b8b7f25 100644
--- a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ExtensionTest.java
+++ b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/ExtensionTest.java
@@ -136,8 +136,12 @@
             assertThat(featureRect.top).isAtLeast(0);
             assertThat(featureRect.right).isAtLeast(0);
             assertThat(featureRect.bottom).isAtLeast(0);
-            assertThat(featureRect.right).isAtMost(mActivity.getWidth());
-            assertThat(featureRect.bottom).isAtMost(mActivity.getHeight());
+
+            final Rect activityBounds =
+                    mActivity.getWindowManager().getCurrentWindowMetrics().getBounds();
+
+            assertThat(featureRect.right).isAtMost(activityBounds.width());
+            assertThat(featureRect.bottom).isAtMost(activityBounds.height());
         }
     }
 
diff --git a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/wrapper/sidecarwrapperimpl/TestSidecarWindowLayoutInfo.java b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/wrapper/sidecarwrapperimpl/TestSidecarWindowLayoutInfo.java
index e784351..31e496ba 100644
--- a/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/wrapper/sidecarwrapperimpl/TestSidecarWindowLayoutInfo.java
+++ b/tests/framework/base/windowmanager/jetpack/src/android/server/wm/jetpack/utils/wrapper/sidecarwrapperimpl/TestSidecarWindowLayoutInfo.java
@@ -73,11 +73,55 @@
             return false;
         }
         final TestSidecarWindowLayoutInfo other = (TestSidecarWindowLayoutInfo) obj;
-        return mSidecarWindowLayoutInfo.equals(other.mSidecarWindowLayoutInfo);
+        return areSidecarWindowLayoutInfoEqual(mSidecarWindowLayoutInfo,
+                other.mSidecarWindowLayoutInfo);
     }
 
     @Override
     public int hashCode() {
         return mSidecarWindowLayoutInfo.hashCode();
     }
+
+    /**
+     * Compares two {@link SidecarWindowLayoutInfo} with respect to their core data. This method is
+     * necessary because {@link SidecarWindowLayoutInfo} did not implement {@code equals}. Also
+     * Sidecar has been deprecated and frozen, so this method is stable.
+     *
+     * @param lhs {@link SidecarWindowLayoutInfo} to be compared.
+     * @param rhs {@link SidecarWindowLayoutInfo} to be compared.
+     * @return {@code true} if objects are equal with respect to data otherwise return
+     * {@code false}.
+     */
+    private static boolean areSidecarWindowLayoutInfoEqual(@NonNull SidecarWindowLayoutInfo lhs,
+            @NonNull SidecarWindowLayoutInfo rhs) {
+        if (lhs.displayFeatures == rhs.displayFeatures) {
+            return true;
+        }
+        if (lhs.displayFeatures == null || rhs.displayFeatures == null
+                || lhs.displayFeatures.size() != rhs.displayFeatures.size()) {
+            return false;
+        }
+        for (int i = 0; i < lhs.displayFeatures.size(); i++) {
+            if (!areSidecarDisplayFeatureEqual(lhs.displayFeatures.get(i),
+                    rhs.displayFeatures.get(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Compares two {@link SidecarDisplayFeature} with respect to their core data.  This method is
+     * necessary because {@link SidecarWindowLayoutInfo} did not implement {@code equals}.  Also
+     * Sidecar has been deprecated and frozen, so this method is stable.
+     *
+     * @param lhs {@link SidecarDisplayFeature} to be compared.
+     * @param rhs {@link SidecarDisplayFeature} to be compared.
+     * @return {@code true} if objects are equal with respect to data otherwise return
+     * {@code false}.
+     */
+    private static boolean areSidecarDisplayFeatureEqual(@NonNull SidecarDisplayFeature lhs,
+            @NonNull SidecarDisplayFeature rhs) {
+        return lhs.getType() == rhs.getType() && lhs.getRect().equals(rhs.getRect());
+    }
 }
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/ActivityVisibilityTests.java b/tests/framework/base/windowmanager/src/android/server/wm/ActivityVisibilityTests.java
index b052e88..7fda85e 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/ActivityVisibilityTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/ActivityVisibilityTests.java
@@ -139,7 +139,7 @@
      */
     @Test
     public void testHomeVisibleOnActivityTaskPinned() throws Exception {
-        if (!supportsPip()) {
+        if (!supportsPip() || !hasHomeScreen()) {
             return;
         }
 
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/AppConfigurationTests.java b/tests/framework/base/windowmanager/src/android/server/wm/AppConfigurationTests.java
index 3fcd640..0ac11b7 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/AppConfigurationTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/AppConfigurationTests.java
@@ -600,8 +600,8 @@
 
         // Start resizeable activity that handles configuration changes.
         separateTestJournal();
-        launchActivity(TEST_ACTIVITY);
-        launchActivity(RESIZEABLE_ACTIVITY);
+        launchActivity(TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN);
+        launchActivity(RESIZEABLE_ACTIVITY, WINDOWING_MODE_FULLSCREEN);
         mWmState.assertVisibility(RESIZEABLE_ACTIVITY, true /* visible */);
 
         final int displayId = mWmState.getDisplayByActivity(RESIZEABLE_ACTIVITY);
@@ -647,8 +647,10 @@
 
         TestActivitySession<ConfigChangeHandlingActivity> activitySession
                 = createManagedTestActivitySession();
-        activitySession.launchTestActivityOnDisplaySync(ConfigChangeHandlingActivity.class,
-                Display.DEFAULT_DISPLAY);
+        activitySession.launchTestActivityOnDisplaySync(
+                ConfigChangeHandlingActivity.class,
+                Display.DEFAULT_DISPLAY,
+                WINDOWING_MODE_FULLSCREEN);
         final ConfigChangeHandlingActivity activity = activitySession.getActivity();
 
         VirtualDisplaySession virtualDisplaySession = createManagedVirtualDisplaySession();
@@ -830,7 +832,7 @@
 
         // Move activity back to docked stack.
         separateTestJournal();
-        setActivityTaskWindowingMode(activityName, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
+        moveTaskToPrimarySplitScreen(mWmState.getTaskByActivity(activityName).mTaskId);
         final SizeInfo finalDockedSizes = getActivityDisplaySize(activityName);
 
         // After activity configuration was changed twice it must report same size as original one.
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java b/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
index 267bec9..d777db2 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/AssistantStackTests.java
@@ -209,7 +209,7 @@
 
         // Launch an assistant activity on top of an existing fullscreen activity, and ensure that
         // the fullscreen activity is still visible and on top after the assistant activity finishes
-        launchActivityOnDisplay(TEST_ACTIVITY, mAssistantDisplayId);
+        launchActivityOnDisplay(TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN, mAssistantDisplayId);
         try (final AssistantSession assistantSession = new AssistantSession()) {
             assistantSession.setVoiceInteractionService(ASSISTANT_VOICE_INTERACTION_SERVICE);
 
@@ -265,7 +265,7 @@
             // Launch a fullscreen app and then launch the assistant and check to see that it is
             // also visible
             removeStacksWithActivityTypes(ACTIVITY_TYPE_ASSISTANT);
-            launchActivityOnDisplay(TEST_ACTIVITY, mAssistantDisplayId);
+            launchActivityOnDisplay(TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN, mAssistantDisplayId);
             launchActivityNoWait(LAUNCH_ASSISTANT_ACTIVITY_INTO_STACK,
                     EXTRA_ASSISTANT_IS_TRANSLUCENT, "true");
             waitForValidStateWithActivityType(
@@ -336,7 +336,7 @@
 
             // Launch a new fullscreen activity
             // Using Animation Test Activity because it is opaque on all devices.
-            launchActivityOnDisplay(ANIMATION_TEST_ACTIVITY, mAssistantDisplayId);
+            launchActivityOnDisplay(ANIMATION_TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN, mAssistantDisplayId);
             // Wait for animation finished.
             mWmState.waitForActivityState(ANIMATION_TEST_ACTIVITY, STATE_RESUMED);
             mWmState.assertVisibility(ASSISTANT_ACTIVITY, isAssistantOnTop());
@@ -367,7 +367,7 @@
 
             // Launch a fullscreen activity and a PIP activity, then launch the assistant, and
             // ensure that the test activity is still visible
-            launchActivity(TEST_ACTIVITY);
+            launchActivity(TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN);
             launchActivity(PIP_ACTIVITY, EXTRA_ENTER_PIP, "true");
             launchActivityNoWait(LAUNCH_ASSISTANT_ACTIVITY_INTO_STACK,
                     EXTRA_ASSISTANT_IS_TRANSLUCENT, String.valueOf(true));
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/DreamManagerServiceTests.java b/tests/framework/base/windowmanager/src/android/server/wm/DreamManagerServiceTests.java
index ffec8d0..ddc8163 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/DreamManagerServiceTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/DreamManagerServiceTests.java
@@ -16,6 +16,8 @@
 
 package android.server.wm;
 
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.server.wm.app.Components.TEST_ACTIVITY;
 import static android.server.wm.app.Components.TEST_DREAM_SERVICE;
 import static android.server.wm.app.Components.TEST_STUBBORN_DREAM_SERVICE;
 import static android.server.wm.ComponentNameUtils.getWindowName;
@@ -115,8 +117,16 @@
                    && !mWmState.containsActivity(mDreamActivityName));
     }
 
+    private void startFullscreenTestActivity() {
+        launchActivity(TEST_ACTIVITY, WINDOWING_MODE_FULLSCREEN);
+        waitAndAssertTopResumedActivity(TEST_ACTIVITY, DEFAULT_DISPLAY,
+                "Test activity should be the top resumed activity");
+        mWmState.assertVisibility(TEST_ACTIVITY, true);
+    }
+
     @Test
     public void testStartAndStopDream() throws Exception {
+        startFullscreenTestActivity();
         setActiveDream(TEST_DREAM_SERVICE);
 
         startDream(TEST_DREAM_SERVICE);
@@ -124,14 +134,16 @@
                 "Dream activity should be the top resumed activity");
         mWmState.waitForValidState(mWmState.getHomeActivityName());
         mWmState.assertVisibility(mWmState.getHomeActivityName(), false);
+        mWmState.waitForValidState(TEST_ACTIVITY);
+        mWmState.assertVisibility(TEST_ACTIVITY, false);
 
         assertTrue(getIsDreaming());
 
         stopDream();
         mWmState.waitAndAssertActivityRemoved(mDreamActivityName);
 
-        waitAndAssertTopResumedActivity(mWmState.getHomeActivityName(), DEFAULT_DISPLAY,
-                "Home activity should show when dream is stopped");
+        waitAndAssertTopResumedActivity(TEST_ACTIVITY, DEFAULT_DISPLAY,
+                "Previous top activity should show when dream is stopped");
     }
 
     @Test
@@ -155,6 +167,7 @@
 
     @Test
     public void testForceStopStubbornDream() throws Exception {
+        startFullscreenTestActivity();
         setActiveDream(TEST_STUBBORN_DREAM_SERVICE);
 
         startDream(TEST_STUBBORN_DREAM_SERVICE);
@@ -162,6 +175,8 @@
                 "Dream activity should be the top resumed activity");
         mWmState.waitForValidState(mWmState.getHomeActivityName());
         mWmState.assertVisibility(mWmState.getHomeActivityName(), false);
+        mWmState.waitForValidState(TEST_ACTIVITY);
+        mWmState.assertVisibility(TEST_ACTIVITY, false);
 
         stopDream();
 
@@ -169,8 +184,8 @@
 
         assertDreamActivityGone();
         assertFalse(getIsDreaming());
-        waitAndAssertTopResumedActivity(mWmState.getHomeActivityName(), DEFAULT_DISPLAY,
-                "Home activity should show when dream is stopped");
+        waitAndAssertTopResumedActivity(TEST_ACTIVITY, DEFAULT_DISPLAY,
+                "Previous top activity should show when dream is stopped");
     }
 
     @Test
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java b/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
index 9bba49c..3584353 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/MultiDisplayPolicyTests.java
@@ -150,7 +150,7 @@
 
         // Launch a resizeable activity on new secondary display.
         separateTestJournal();
-        launchActivityOnDisplay(RESIZEABLE_ACTIVITY, newDisplay.mId);
+        launchActivityOnDisplay(RESIZEABLE_ACTIVITY, WINDOWING_MODE_FULLSCREEN, newDisplay.mId);
         waitAndAssertActivityStateOnDisplay(RESIZEABLE_ACTIVITY, STATE_RESUMED, newDisplay.mId,
                 "Launched activity must be resumed");
 
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java b/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
index 1319eb1..89b310d 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/PinnedStackTests.java
@@ -1104,9 +1104,10 @@
         // Some devices do not support recents or implement it differently (instead of using a
         // separate stack id or as an activity), for those cases the visibility asserts will be
         // ignored
-        pressAppSwitchButtonAndWaitForRecents();
-        mWmState.assertVisibility(LAUNCHING_ACTIVITY, true);
-        mWmState.assertVisibility(TEST_ACTIVITY, false);
+        if (pressAppSwitchButtonAndWaitForRecents()) {
+            mWmState.assertVisibility(LAUNCHING_ACTIVITY, true);
+            mWmState.assertVisibility(TEST_ACTIVITY, false);
+        }
     }
 
     @Test
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/WindowFocusTests.java b/tests/framework/base/windowmanager/src/android/server/wm/WindowFocusTests.java
index b6cc9b0..f3905b0 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/WindowFocusTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/WindowFocusTests.java
@@ -399,7 +399,7 @@
                 mKeyEventList.add(event);
                 mLockKeyEvent.notify();
             }
-            return super.dispatchKeyEvent(event);
+            return true;
         }
 
         int getKeyEventCount() {
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleClientTestBase.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleClientTestBase.java
index d3fa81d..58b6325 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleClientTestBase.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleClientTestBase.java
@@ -70,6 +70,7 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.function.Consumer;
 
@@ -687,7 +688,7 @@
     void moveTaskToPrimarySplitScreenAndVerify(Activity activity) {
         getLifecycleLog().clear();
 
-        moveTaskToPrimarySplitScreen(activity.getTaskId());
+        moveTaskToPrimarySplitScreen(activity.getTaskId(), true /* showSideActivity */);
 
         final Class<? extends Activity> activityClass = activity.getClass();
         waitAndAssertActivityEnterSplitScreenTransitions(activityClass, "enterSplitScreen");
@@ -703,20 +704,48 @@
         log("Start waitAndAssertActivitySplitScreenTransitions");
 
         final List<LifecycleLog.ActivityCallback> expectedTransitions =
-                LifecycleVerifier.getSplitScreenTransitionSequence(activityClass);
+                new ArrayList<LifecycleLog.ActivityCallback>(
+                        LifecycleVerifier.getSplitScreenTransitionSequence(activityClass));
+
+        final List<LifecycleLog.ActivityCallback> expectedTransitionForMinimizedDock =
+                LifecycleVerifier.appendMinimizedDockTransitionTrail(expectedTransitions);
 
         mLifecycleTracker.waitForActivityTransitions(activityClass, expectedTransitions);
+
         if (!expectedTransitions.contains(ON_MULTI_WINDOW_MODE_CHANGED)) {
-            LifecycleVerifier.assertSequence(activityClass, getLifecycleLog(),
-                    expectedTransitions, message);
+            LifecycleVerifier.assertSequenceMatchesOneOf(
+                    activityClass,
+                    getLifecycleLog(),
+                    Arrays.asList(expectedTransitions, expectedTransitionForMinimizedDock),
+                    message);
         } else {
             final List<LifecycleLog.ActivityCallback> extraSequence =
-                    Arrays.asList(ON_MULTI_WINDOW_MODE_CHANGED, ON_TOP_POSITION_LOST,
-                            ON_PAUSE, ON_STOP, ON_DESTROY, PRE_ON_CREATE, ON_CREATE,
-                            ON_START, ON_POST_CREATE, ON_RESUME, ON_TOP_POSITION_GAINED,
-                            ON_TOP_POSITION_LOST, ON_PAUSE);
-            LifecycleVerifier.assertSequenceMatchesOneOf(activityClass, getLifecycleLog(),
-                    Arrays.asList(expectedTransitions, extraSequence), message);
+                    new ArrayList<LifecycleLog.ActivityCallback>(
+                            Arrays.asList(ON_MULTI_WINDOW_MODE_CHANGED, ON_TOP_POSITION_LOST,
+                                    ON_PAUSE, ON_STOP, ON_DESTROY, PRE_ON_CREATE, ON_CREATE,
+                                    ON_START, ON_POST_CREATE, ON_RESUME, ON_TOP_POSITION_GAINED));
+            final List<LifecycleLog.ActivityCallback> extraSequenceForMinimizedDock =
+                    LifecycleVerifier.appendMinimizedDockTransitionTrail(extraSequence);
+            final int displayWindowingMode =
+                    getDisplayWindowingModeByActivity(getComponentName(activityClass));
+            if (displayWindowingMode != WINDOWING_MODE_FULLSCREEN) {
+                // For non-fullscreen display mode, there won't be a multi-window callback.
+                expectedTransitions.removeAll(Collections.singleton(ON_MULTI_WINDOW_MODE_CHANGED));
+                expectedTransitionForMinimizedDock.removeAll(
+                        Collections.singleton(ON_MULTI_WINDOW_MODE_CHANGED));
+                extraSequence.removeAll(Collections.singleton(ON_MULTI_WINDOW_MODE_CHANGED));
+                extraSequenceForMinimizedDock.removeAll(
+                        Collections.singleton(ON_MULTI_WINDOW_MODE_CHANGED));
+            }
+            LifecycleVerifier.assertSequenceMatchesOneOf(
+                    activityClass,
+                    getLifecycleLog(),
+                    Arrays.asList(
+                            expectedTransitions,
+                            extraSequence,
+                            expectedTransitionForMinimizedDock,
+                            extraSequenceForMinimizedDock),
+                    message);
         }
     }
 
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleKeyguardTests.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleKeyguardTests.java
index 9fbd1da..0062dac 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleKeyguardTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleKeyguardTests.java
@@ -98,10 +98,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Leaving the minimized dock, the stack state on the primary split screen should change
-        // from Paused to Resumed.
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-
         // Show and hide lock screen
         getLifecycleLog().clear();
         try (final LockScreenSession lockScreenSession = new LockScreenSession()) {
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecyclePipTests.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecyclePipTests.java
index e4dc868..b018ea7 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecyclePipTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecyclePipTests.java
@@ -249,8 +249,6 @@
                 .launch();
 
         LifecycleVerifier.assertLaunchSequence(SecondActivity.class, getLifecycleLog());
-        LifecycleVerifier.assertSequence(FirstActivity.class, getLifecycleLog(),
-                Arrays.asList(ON_RESUME), "launchToSide");
         LifecycleVerifier.assertEmptySequence(PipActivity.class, getLifecycleLog(),
                 "launchBelow");
     }
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleSplitScreenTests.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleSplitScreenTests.java
index 6cf6e99..87caa56 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleSplitScreenTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleSplitScreenTests.java
@@ -94,9 +94,6 @@
                 .setFlags(FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASK)
                 .launch();
 
-        // Wait for SecondActivity in primary split screen leave minimize dock.
-        waitAndAssertActivityStates(state(secondActivity, ON_RESUME));
-
         // Finish top activity
         secondActivity.finish();
 
@@ -129,11 +126,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Wait for first activity to resume after being moved to split-screen.
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-        LifecycleVerifier.assertSequence(FirstActivity.class, getLifecycleLog(),
-                Arrays.asList(ON_RESUME), "launchToSide");
-
         // Launch third activity on top of second
         getLifecycleLog().clear();
         new Launcher(ThirdActivity.class)
@@ -160,11 +152,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Wait for first activity to resume after being moved to split-screen.
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-        LifecycleVerifier.assertSequence(FirstActivity.class, getLifecycleLog(),
-                Arrays.asList(ON_RESUME), "launchToSide");
-
         // Launch translucent activity on top of second
         getLifecycleLog().clear();
 
@@ -335,12 +322,23 @@
                 getLaunchActivityBuilder().
                         setTargetActivity(getComponentName(SecondActivity.class)));
 
-        // Wait for the activity to receive the change
-        waitForActivityTransitions(ConfigChangeHandlingActivity.class,
-                Arrays.asList(ON_TOP_POSITION_LOST, ON_MULTI_WINDOW_MODE_CHANGED));
-        LifecycleVerifier.assertOrder(getLifecycleLog(), ConfigChangeHandlingActivity.class,
-                Arrays.asList(ON_MULTI_WINDOW_MODE_CHANGED, ON_TOP_POSITION_LOST),
-                "moveToSplitScreen");
+        final int displayWindowingMode = getDisplayWindowingModeByActivity(
+                getComponentName(ConfigChangeHandlingActivity.class));
+        if (displayWindowingMode == WINDOWING_MODE_FULLSCREEN) {
+            // Wait for the activity to receive the change.
+            waitForActivityTransitions(ConfigChangeHandlingActivity.class,
+                    Arrays.asList(ON_TOP_POSITION_LOST, ON_MULTI_WINDOW_MODE_CHANGED));
+            LifecycleVerifier.assertOrder(getLifecycleLog(), ConfigChangeHandlingActivity.class,
+                    Arrays.asList(ON_MULTI_WINDOW_MODE_CHANGED, ON_TOP_POSITION_LOST),
+                    "moveToSplitScreen");
+        } else {
+            // For non-fullscreen display mode, there won't be a multi-window callback.
+            waitForActivityTransitions(ConfigChangeHandlingActivity.class,
+                    Arrays.asList(ON_TOP_POSITION_LOST));
+            LifecycleVerifier.assertTransitionObserved(getLifecycleLog(),
+                    transition(ConfigChangeHandlingActivity.class, ON_TOP_POSITION_LOST),
+                    "moveToSplitScreen");
+        }
 
         // Exit split-screen
         getLifecycleLog().clear();
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleTopResumedStateTests.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleTopResumedStateTests.java
index 33279f1..7bbf9c1 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleTopResumedStateTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/ActivityLifecycleTopResumedStateTests.java
@@ -309,11 +309,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Wait for first activity to resume after moving to primary split-screen
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-        // First activity must be resumed, but not gain the top position
-        LifecycleVerifier.assertSequence(CallbackTrackingActivity.class, getLifecycleLog(),
-                Arrays.asList(ON_RESUME), "unminimizeDockedStack");
         // Second activity must be on top now
         LifecycleVerifier.assertLaunchSequence(SingleTopActivity.class, getLifecycleLog());
     }
@@ -334,9 +329,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Wait for first activity to resume after moving to primary split-screen
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-
         // Switch top between two activities
         getLifecycleLog().clear();
         new Launcher(CallbackTrackingActivity.class)
@@ -473,9 +465,6 @@
                 .setFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK)
                 .launch();
 
-        // Wait for first activity to resume after moving to primary split-screen
-        waitAndAssertActivityStates(state(firstActivity, ON_RESUME));
-
         // Tap on first activity to switch the focus
         getLifecycleLog().clear();
         final ActivityTask dockedStack = getStackForTaskId(firstActivity.getTaskId());
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/LifecycleVerifier.java b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/LifecycleVerifier.java
index 94db5bc..6045fc7 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/LifecycleVerifier.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/lifecycle/LifecycleVerifier.java
@@ -298,14 +298,31 @@
 
     static List<LifecycleLog.ActivityCallback> getSplitScreenTransitionSequence(
             Class<? extends Activity> activityClass) {
+        // Minimized-dock is not a policy requirement and but SysUI-specific concept, so we here
+        // don't expect a trailing ON_PAUSE.
         return CALLBACK_TRACKING_CLASS.isAssignableFrom(activityClass)
                 ? Arrays.asList(
                 ON_TOP_POSITION_LOST, ON_PAUSE, ON_STOP, ON_DESTROY, PRE_ON_CREATE,
                 ON_CREATE, ON_MULTI_WINDOW_MODE_CHANGED, ON_START, ON_POST_CREATE, ON_RESUME,
-                ON_TOP_POSITION_GAINED, ON_TOP_POSITION_LOST, ON_PAUSE)
+                ON_TOP_POSITION_GAINED, ON_TOP_POSITION_LOST)
                 : Arrays.asList(
                         ON_PAUSE, ON_STOP, ON_DESTROY, PRE_ON_CREATE, ON_CREATE, ON_START,
-                ON_RESUME, ON_PAUSE);
+                ON_RESUME);
+    }
+
+    // TODO(b/149338177): Remove this workaround once test passes with TestTaskOrganizer not to
+    // depend on minimized dock feature which is not policy requirement, but SysUI-specific.
+    /**
+     * Returns the result of appending "leave from minimized dock" transitions to given transitions
+     * to "consume" these activity callbacks.
+     */
+    static List<ActivityCallback> appendMinimizedDockTransitionTrail(
+            List<ActivityCallback> transitions) {
+        final List<LifecycleLog.ActivityCallback> newTransitions =
+                new ArrayList<LifecycleLog.ActivityCallback>(transitions);
+        newTransitions.addAll(Arrays.asList(ON_PAUSE, ON_RESUME));
+
+        return newTransitions;
     }
 
     static void assertSequence(Class<? extends Activity> activityClass, LifecycleLog lifecycleLog,
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
index 9372878..587c538 100644
--- a/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
+++ b/tests/framework/base/windowmanager/util/src/android/server/wm/ActivityManagerTestBase.java
@@ -25,6 +25,8 @@
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
 import static android.content.Intent.ACTION_MAIN;
 import static android.content.Intent.CATEGORY_HOME;
 import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
@@ -400,27 +402,45 @@
             launchTestActivityOnDisplaySync(new Intent(mContext, activityClass), displayId);
         }
 
+        void launchTestActivityOnDisplaySync(
+                Class<T> activityClass, int displayId, int windowingMode) {
+            launchTestActivityOnDisplaySync(
+                    new Intent(mContext, activityClass), displayId, windowingMode);
+        }
+
         void launchTestActivityOnDisplaySync(Intent intent, int displayId) {
-            SystemUtil.runWithShellPermissionIdentity(() -> {
-                mTestActivity = launchActivityOnDisplay(intent, displayId);
-                // Check activity is launched and resumed.
-                final ComponentName testActivityName = mTestActivity.getComponentName();
-                waitAndAssertTopResumedActivity(testActivityName, displayId,
-                        "Activity must be resumed");
-            });
+            launchTestActivityOnDisplaySync(intent, displayId, WINDOWING_MODE_UNDEFINED);
+        }
+
+        void launchTestActivityOnDisplaySync(Intent intent, int displayId, int windowingMode) {
+            SystemUtil.runWithShellPermissionIdentity(
+                    () -> {
+                        mTestActivity = launchActivityOnDisplay(intent, displayId, windowingMode);
+                        // Check activity is launched and resumed.
+                        final ComponentName testActivityName = mTestActivity.getComponentName();
+                        waitAndAssertTopResumedActivity(
+                                testActivityName, displayId, "Activity must be resumed");
+                    });
         }
 
         void launchTestActivityOnDisplay(Class<T> activityClass, int displayId) {
-            SystemUtil.runWithShellPermissionIdentity(() -> {
-                mTestActivity = launchActivityOnDisplay(new Intent(mContext, activityClass)
-                        .addFlags(FLAG_ACTIVITY_NEW_TASK), displayId);
-                assertNotNull(mTestActivity);
-            });
+            SystemUtil.runWithShellPermissionIdentity(
+                    () -> {
+                        mTestActivity =
+                                launchActivityOnDisplay(
+                                        new Intent(mContext, activityClass)
+                                                .addFlags(FLAG_ACTIVITY_NEW_TASK),
+                                        displayId,
+                                        WINDOWING_MODE_UNDEFINED);
+                        assertNotNull(mTestActivity);
+                    });
         }
 
-        private T launchActivityOnDisplay(Intent intent, int displayId) {
-            final Bundle bundle = ActivityOptions.makeBasic()
-                    .setLaunchDisplayId(displayId).toBundle();
+        private T launchActivityOnDisplay(Intent intent, int displayId, int windowingMode) {
+            final ActivityOptions launchOptions = ActivityOptions.makeBasic();
+            launchOptions.setLaunchDisplayId(displayId);
+            launchOptions.setLaunchWindowingMode(windowingMode);
+            final Bundle bundle = launchOptions.toBundle();
             final ActivityMonitor monitor = mInstrumentation.addMonitor((String) null, null, false);
             mContext.startActivity(intent.addFlags(FLAG_ACTIVITY_NEW_TASK), bundle);
             // Wait for activity launch with timeout.
@@ -733,6 +753,10 @@
         return null;
     }
 
+    protected int getDisplayWindowingModeByActivity(ComponentName activity) {
+        return mWmState.getDisplay(mWmState.getDisplayByActivity(activity)).getWindowingMode();
+    }
+
     /**
      * Launches the home activity directly. If there is no specific reason to simulate a home key
      * (which will trigger stop-app-switches), it is the recommended method to go home.
@@ -812,13 +836,12 @@
     /**
      * Moves the device into split-screen with the specified task into the primary stack.
      * @param taskId             The id of the task to move into the primary stack.
-     * @param showSideActivity   Whether to show the Recents activity (or a placeholder activity in
-     *                           place of the Recents activity if home is the recents component).
+     * @param showSideActivity   Whether to show the home activity or a placeholder activity in
+     *                           secondary split-screen.
      *                           If {@code true} it will also wait for activity in the primary
      *                           split-screen stack to be resumed.
      */
     public void moveTaskToPrimarySplitScreen(int taskId, boolean showSideActivity) {
-        final boolean isHomeRecentsComponent = mWmState.isHomeRecentsComponent();
         SystemUtil.runWithShellPermissionIdentity(() -> {
             if (mUseTaskOrganizer) {
                 mTaskOrganizer.putTaskInSplitPrimary(taskId);
@@ -826,30 +849,27 @@
                 mAtm.setTaskWindowingModeSplitScreenPrimary(taskId,
                         SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT, true /* onTop */,
                         false /* animate */, null /* initialBounds */,
-                        showSideActivity && !isHomeRecentsComponent);
+                        false /* showRecents */);
             }
 
-            mWmState.waitForRecentsActivityVisible();
+            // Wait for split screen ready
+            mWmState.waitForWithAmState(state -> {
+                final WindowManagerState.ActivityTask task =
+                        state.getStandardStackByWindowingMode(
+                                WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+                return task != null && task.getResumedActivity() != null;
+            }, "home activity in the secondary split-screen task must be resumed");
 
             if (showSideActivity) {
-                if (isHomeRecentsComponent) {
-                    // Launch Placeholder Side Activity
-                    final ComponentName sideActivityName =
-                            new ComponentName(mContext, SideActivity.class);
-                    mContext.startActivity(new Intent().setComponent(sideActivityName)
-                            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
-                    mWmState.waitForActivityState(sideActivityName, STATE_RESUMED);
-                }
+                // Launch Placeholder Side Activity
+                final ComponentName sideActivityName =
+                        new ComponentName(mContext, SideActivity.class);
+                mContext.startActivity(new Intent().setComponent(sideActivityName)
+                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+                mWmState.waitForActivityState(sideActivityName, STATE_RESUMED);
 
-                // There are two cases when showSideActivity == true:
-                // Case 1: it's 3rd-party launcher and it should show recents, so the primary split
-                // screen won't enter minimized dock, but the activity on primary split screen
-                // should be relaunched.
-                // Case 2: It's not 3rd-party launcher but we launched side activity on secondary
-                // split screen, the activity on primary split screen should enter then leave
-                // minimized dock.
-                // In both cases, we shall wait for the state of the activity on primary split
-                // screen to resumed, so the LifecycleLog won't affect the following tests.
+                // Wait for the state of the activity on primary split screen to resumed, so the
+                // LifecycleLog won't affect the following tests.
                 mWmState.waitForWithAmState(state -> {
                     final WindowManagerState.ActivityTask stack =
                             state.getStandardStackByWindowingMode(
@@ -941,10 +961,13 @@
                         new Rect(0, 0, taskWidth, taskHeight)));
     }
 
-    protected void pressAppSwitchButtonAndWaitForRecents() {
+    protected boolean pressAppSwitchButtonAndWaitForRecents() {
         pressAppSwitchButton();
-        mWmState.waitForRecentsActivityVisible();
-        mWmState.waitForAppTransitionIdleOnDisplay(DEFAULT_DISPLAY);
+        final boolean isRecentsVisible = mWmState.waitForRecentsActivityVisible();
+        if (isRecentsVisible) {
+            mWmState.waitForAppTransitionIdleOnDisplay(DEFAULT_DISPLAY);
+        }
+        return isRecentsVisible;
     }
 
     // Utility method for debugging, not used directly here, but useful, so kept around.
diff --git a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java
index 1a77ba4..e530dd4 100644
--- a/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java
+++ b/tests/framework/base/windowmanager/util/src/android/server/wm/WindowManagerStateHelper.java
@@ -141,11 +141,13 @@
         waitForValidState(homeActivity);
     }
 
-    void waitForRecentsActivityVisible() {
+    /** @return {@code true} if the recents is visible; {@code false} if timeout occurs. */
+    boolean waitForRecentsActivityVisible() {
         if (isHomeRecentsComponent()) {
             waitForHomeActivityVisible();
+            return true;
         } else {
-            waitForWithAmState(WindowManagerState::isRecentsActivityVisible,
+            return waitForWithAmState(WindowManagerState::isRecentsActivityVisible,
                     "recents activity to be visible");
         }
     }
diff --git a/tests/media/jni/NativeCodecDecoderTest.cpp b/tests/media/jni/NativeCodecDecoderTest.cpp
index 754ccb3..0b17d7e 100644
--- a/tests/media/jni/NativeCodecDecoderTest.cpp
+++ b/tests/media/jni/NativeCodecDecoderTest.cpp
@@ -228,8 +228,18 @@
         if (mSaveToMem) {
             size_t buffSize;
             uint8_t* buf = AMediaCodec_getOutputBuffer(mCodec, bufferIndex, &buffSize);
-            if (mIsAudio) mOutputBuff->saveToMemory(buf, info);
-            mOutputBuff->updateChecksum(buf, info);
+            if (mIsAudio) {
+                mOutputBuff->saveToMemory(buf, info);
+                mOutputBuff->updateChecksum(buf, info);
+            } else {
+                AMediaFormat* format =
+                    mIsCodecInAsyncMode ? mAsyncHandle.getOutputFormat() : mOutFormat;
+                int32_t width, height, stride;
+                AMediaFormat_getInt32(format, "width", &width);
+                AMediaFormat_getInt32(format, "height", &height);
+                AMediaFormat_getInt32(format, "stride", &stride);
+                mOutputBuff->updateChecksum(buf, info, width, height, stride);
+            }
         }
         mOutputBuff->saveOutPTS(info->presentationTimeUs);
         mOutputCount++;
@@ -360,17 +370,17 @@
             if (validateFormat) {
                 if (mIsCodecInAsyncMode ? !mAsyncHandle.hasOutputFormatChanged()
                                         : !mSignalledOutFormatChanged) {
-                    ALOGE(log, "not received format change");
+                    ALOGE("%s%s", log, "not received format change");
                     isPass = false;
                 } else if (!isFormatSimilar(mInpDecFormat, mIsCodecInAsyncMode
                                                                    ? mAsyncHandle.getOutputFormat()
                                                                    : mOutFormat)) {
-                    ALOGE(log, "configured format and output format are not similar");
+                    ALOGE("%s%s", log, "configured format and output format are not similar");
                     isPass = false;
                 }
             }
             if (checksum != ref->getChecksum()) {
-                ALOGE(log, "sdk output and ndk output differ");
+                ALOGE("%s%s", log, "sdk output and ndk output differ");
                 isPass = false;
             }
             loopCounter++;
@@ -500,12 +510,12 @@
         if (validateFormat) {
             if (mIsCodecInAsyncMode ? !mAsyncHandle.hasOutputFormatChanged()
                                     : !mSignalledOutFormatChanged) {
-                ALOGE(log, "not received format change");
+                ALOGE("%s%s", log, "not received format change");
                 isPass = false;
             } else if (!isFormatSimilar(mInpDecFormat, mIsCodecInAsyncMode
                                                                ? mAsyncHandle.getOutputFormat()
                                                                : mOutFormat)) {
-                ALOGE(log, "configured format and output format are not similar");
+                ALOGE("%s%s", log, "configured format and output format are not similar");
                 isPass = false;
             }
         }
@@ -632,12 +642,12 @@
                 if (validateFormat) {
                     if (mIsCodecInAsyncMode ? !mAsyncHandle.hasOutputFormatChanged()
                                             : !mSignalledOutFormatChanged) {
-                        ALOGE(log, "not received format change");
+                        ALOGE("%s%s", log, "not received format change");
                         isPass = false;
                     } else if (!isFormatSimilar(mInpDecFormat,
                                                 mIsCodecInAsyncMode ? mAsyncHandle.getOutputFormat()
                                                                     : mOutFormat)) {
-                        ALOGE(log, "configured format and output format are not similar");
+                        ALOGE("%s%s", log, "configured format and output format are not similar");
                         isPass = false;
                     }
                 }
diff --git a/tests/media/jni/NativeCodecTestBase.cpp b/tests/media/jni/NativeCodecTestBase.cpp
index 4e13e9c..d84e4d1 100644
--- a/tests/media/jni/NativeCodecTestBase.cpp
+++ b/tests/media/jni/NativeCodecTestBase.cpp
@@ -204,6 +204,31 @@
     return result;
 }
 
+void OutputManager::updateChecksum(
+        uint8_t* buf, AMediaCodecBufferInfo* info, int width, int height, int stride) {
+    uint8_t flattenInfo[16];
+    int pos = 0;
+    if (width <= 0 || height <= 0 || stride <= 0) {
+        flattenField<int32_t>(flattenInfo, &pos, info->size);
+    }
+    flattenField<int32_t>(flattenInfo, &pos,
+                          info->flags & ~AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM);
+    flattenField<int64_t>(flattenInfo, &pos, info->presentationTimeUs);
+    crc32value = crc32(crc32value, flattenInfo, pos);
+    if (width > 0 && height > 0 && stride > 0) {
+        // Only checksum Y plane
+        std::vector<uint8_t> tmp(width * height, 0u);
+        size_t offset = 0;
+        for (int i = 0; i < height; ++i) {
+            memcpy(tmp.data() + (i * width), buf + offset, width);
+            offset += stride;
+        }
+        crc32value = crc32(crc32value, tmp.data(), width * height);
+    } else {
+        crc32value = crc32(crc32value, buf, info->size);
+    }
+}
+
 bool OutputManager::isOutPtsListIdenticalToInpPtsList(bool requireSorting) {
     bool isEqual = true;
     std::sort(inpPtsArray.begin(), inpPtsArray.end());
diff --git a/tests/media/jni/NativeCodecTestBase.h b/tests/media/jni/NativeCodecTestBase.h
index 87a46f9..4282e4a 100644
--- a/tests/media/jni/NativeCodecTestBase.h
+++ b/tests/media/jni/NativeCodecTestBase.h
@@ -103,18 +103,13 @@
     bool isPtsStrictlyIncreasing(int64_t lastPts);
     bool isOutPtsListIdenticalToInpPtsList(bool requireSorting);
     void saveToMemory(uint8_t* buf, AMediaCodecBufferInfo* info) {
-        memory.insert(memory.end(), buf + info->offset, buf + info->size);
+        memory.insert(memory.end(), buf, buf + info->size);
     }
     void updateChecksum(uint8_t* buf, AMediaCodecBufferInfo* info) {
-        crc32value = crc32(crc32value, buf + info->offset, info->size);
-        uint8_t flattenInfo[16];
-        int pos = 0;
-        flattenField<int32_t>(flattenInfo, &pos, info->size);
-        flattenField<int32_t>(flattenInfo, &pos,
-                              info->flags & ~AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM);
-        flattenField<int64_t>(flattenInfo, &pos, info->presentationTimeUs);
-        crc32value = crc32(crc32value, flattenInfo, sizeof(flattenInfo));
+        updateChecksum(buf, info, 0, 0, 0);
     }
+    void updateChecksum(
+            uint8_t* buf, AMediaCodecBufferInfo* info, int width, int height, int stride);
     uLong getChecksum() { return crc32value; }
     void reset() {
         inpPtsArray.clear();
diff --git a/tests/media/jni/NativeCodecUnitTest.cpp b/tests/media/jni/NativeCodecUnitTest.cpp
index 724bf7b..aa27619 100644
--- a/tests/media/jni/NativeCodecUnitTest.cpp
+++ b/tests/media/jni/NativeCodecUnitTest.cpp
@@ -745,11 +745,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getInputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (!dupMime || strcmp(dupMime, mime) != 0) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getInputFormat fails in initialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
     }
     return !hasSeenError();
@@ -768,11 +769,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getInputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (!dupMime || strcmp(dupMime, mime) != 0) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getInputFormat fails in running state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
     }
     return !hasSeenError();
@@ -789,22 +791,24 @@
         AMediaFormat* dupFormat = AMediaCodec_getInputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getInputFormat succeeds in uninitialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         if (!configureCodec(mFormat, isAsync, false, isEncoder)) return false;
         CHECK_STATUS(AMediaCodec_start(mCodec), "AMediaCodec_start failed");
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
         dupFormat = AMediaCodec_getInputFormat(mCodec);
         dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getInputFormat succeeds in stopped state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
     }
     return !hasSeenError();
 }
@@ -918,11 +922,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getOutputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (!dupMime || strcmp(dupMime, mime) != 0) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getOutputFormat fails in initialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
     }
     return !hasSeenError();
@@ -941,11 +946,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getOutputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (!dupMime || strcmp(dupMime, mime) != 0) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getOutputFormat fails in running state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
     }
     return !hasSeenError();
@@ -960,22 +966,24 @@
         AMediaFormat* dupFormat = AMediaCodec_getOutputFormat(mCodec);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getOutputFormat succeeds in uninitialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         if (!configureCodec(mFormat, isAsync, false, isEncoder)) return false;
         CHECK_STATUS(AMediaCodec_start(mCodec), "AMediaCodec_start failed");
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
         dupFormat = AMediaCodec_getOutputFormat(mCodec);
         dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("getOutputFormat succeeds in stopped state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
     }
     return !hasSeenError();
 }
@@ -1373,11 +1381,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getBufferFormat(mCodec, 0);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("GetBufferFormat succeeds in initialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
     }
     return !hasSeenError();
@@ -1397,11 +1406,12 @@
         AMediaFormat* dupFormat = AMediaCodec_getBufferFormat(mCodec, -1);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("GetBufferFormat succeeds for bad buffer index -1");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         if (!queueEOS()) return false;
         if (!hasSeenError()) {
             int bufferIndex = 0;
@@ -1414,11 +1424,12 @@
                         dupFormat = AMediaCodec_getBufferFormat(mCodec, bufferIndex);
                         dupMime = nullptr;
                         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-                        AMediaFormat_delete(dupFormat);
                         if (!dupMime || strcmp(dupMime, mime) != 0) {
+                            AMediaFormat_delete(dupFormat);
                             ALOGE("GetBufferFormat fails in running state");
                             return false;
                         }
+                        AMediaFormat_delete(dupFormat);
                         isOk = dequeueOutput(element.bufferIndex, &element.bufferInfo);
                     }
                 } else {
@@ -1427,11 +1438,12 @@
                         dupFormat = AMediaCodec_getBufferFormat(mCodec, bufferIndex);
                         dupMime = nullptr;
                         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-                        AMediaFormat_delete(dupFormat);
                         if (!dupMime || strcmp(dupMime, mime) != 0) {
+                            AMediaFormat_delete(dupFormat);
                             ALOGE("GetBufferFormat fails in running state");
                             return false;
                         }
+                        AMediaFormat_delete(dupFormat);
                         isOk = dequeueOutput(bufferIndex, &outInfo);
                     }
                 }
@@ -1443,11 +1455,12 @@
             dupFormat = AMediaCodec_getBufferFormat(mCodec, bufferIndex);
             dupMime = nullptr;
             AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-            AMediaFormat_delete(dupFormat);
             if (dupMime) {
+                AMediaFormat_delete(dupFormat);
                 ALOGE("GetBufferFormat succeeds for buffer index not owned by client");
                 return false;
             }
+            AMediaFormat_delete(dupFormat);
         } else {
             ALOGE("Got unexpected error");
             return false;
@@ -1466,22 +1479,24 @@
         AMediaFormat* dupFormat = AMediaCodec_getBufferFormat(mCodec, 0);
         const char* dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("GetBufferFormat succeeds in uninitialized state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
         if (!configureCodec(mFormat, isAsync, false, isEncoder)) return false;
         CHECK_STATUS(AMediaCodec_start(mCodec), "AMediaCodec_start failed");
         CHECK_STATUS(AMediaCodec_stop(mCodec), "AMediaCodec_stop failed");
         dupFormat = AMediaCodec_getBufferFormat(mCodec, 0);
         dupMime = nullptr;
         AMediaFormat_getString(dupFormat, AMEDIAFORMAT_KEY_MIME, &dupMime);
-        AMediaFormat_delete(dupFormat);
         if (dupMime) {
+            AMediaFormat_delete(dupFormat);
             ALOGE("GetBufferFormat succeeds in stopped state");
             return false;
         }
+        AMediaFormat_delete(dupFormat);
     }
     return !hasSeenError();
 }
diff --git a/tests/media/jni/NativeExtractorTest.cpp b/tests/media/jni/NativeExtractorTest.cpp
index e5c391a..de0fae8 100644
--- a/tests/media/jni/NativeExtractorTest.cpp
+++ b/tests/media/jni/NativeExtractorTest.cpp
@@ -93,7 +93,7 @@
                 setSampleInfo(refExtractor, &refSampleInfo);
                 setSampleInfo(testExtractor, &testSampleInfo);
                 if (!isSampleInfoValidAndIdentical(&refSampleInfo, &testSampleInfo)) {
-                    ALOGD(" Mime: %s mismatch for sample: %d", refMime, frameCount);
+                    ALOGD(" Mime: %s mismatch for sample: %d", mime, frameCount);
                     ALOGD(" flags exp/got: %d / %d", refSampleInfo.flags, testSampleInfo.flags);
                     ALOGD(" size exp/got: %d / %d ", refSampleInfo.size, testSampleInfo.size);
                     ALOGD(" ts exp/got: %" PRId64 " / %" PRId64 "",
@@ -104,55 +104,53 @@
                 ssize_t refSz =
                         AMediaExtractor_readSampleData(refExtractor, refBuffer, maxSampleSize);
                 if (refSz != refSampleInfo.size) {
-                    ALOGD("Mime: %s Size exp/got:  %d / %zd ", refMime, refSampleInfo.size, refSz);
+                    ALOGD("Mime: %s Size exp/got:  %d / %zd ", mime, refSampleInfo.size, refSz);
                     areTracksIdentical = false;
                     break;
                 }
                 ssize_t testSz =
                         AMediaExtractor_readSampleData(testExtractor, testBuffer, maxSampleSize);
                 if (testSz != testSampleInfo.size) {
-                    ALOGD("Mime: %s Size exp/got:  %d / %zd ", refMime, testSampleInfo.size,
-                          testSz);
+                    ALOGD("Mime: %s Size exp/got:  %d / %zd ", mime, testSampleInfo.size, testSz);
                     areTracksIdentical = false;
                     break;
                 }
                 int trackIndex = AMediaExtractor_getSampleTrackIndex(refExtractor);
                 if (trackIndex != refTrackID) {
-                    ALOGD("Mime: %s TrackID exp/got: %zu / %d", refMime, refTrackID, trackIndex);
+                    ALOGD("Mime: %s TrackID exp/got: %zu / %d", mime, refTrackID, trackIndex);
                     areTracksIdentical = false;
                     break;
                 }
                 trackIndex = AMediaExtractor_getSampleTrackIndex(testExtractor);
                 if (trackIndex != testTrackID) {
-                    ALOGD("Mime: %s  TrackID exp/got %zd / %d : ", refMime, testTrackID,
-                          trackIndex);
+                    ALOGD("Mime: %s  TrackID exp/got %zd / %d : ", mime, testTrackID, trackIndex);
                     areTracksIdentical = false;
                     break;
                 }
                 if (memcmp(refBuffer, testBuffer, refSz)) {
-                    ALOGD("Mime: %s Mismatch in sample data", refMime);
+                    ALOGD("Mime: %s Mismatch in sample data", mime);
                     areTracksIdentical = false;
                     break;
                 }
                 bool haveRefSamples = AMediaExtractor_advance(refExtractor);
                 bool haveTestSamples = AMediaExtractor_advance(testExtractor);
                 if (haveRefSamples != haveTestSamples) {
-                    ALOGD("Mime: %s Mismatch in sampleCount", refMime);
+                    ALOGD("Mime: %s Mismatch in sampleCount", mime);
                     areTracksIdentical = false;
                     break;
                 }
 
                 if (!haveRefSamples && !isExtractorOKonEOS(refExtractor)) {
-                    ALOGD("Mime: %s calls post advance() are not OK", refMime);
+                    ALOGD("Mime: %s calls post advance() are not OK", mime);
                     areTracksIdentical = false;
                     break;
                 }
                 if (!haveTestSamples && !isExtractorOKonEOS(testExtractor)) {
-                    ALOGD("Mime: %s calls post advance() are not OK", refMime);
+                    ALOGD("Mime: %s calls post advance() are not OK", mime);
                     areTracksIdentical = false;
                     break;
                 }
-                ALOGV("Mime: %s Sample: %d flags: %d size: %d ts: % " PRId64 "", refMime,
+                ALOGV("Mime: %s Sample: %d flags: %d size: %d ts: % " PRId64 "", mime,
                       frameCount, refSampleInfo.flags, refSampleInfo.size,
                       refSampleInfo.presentationTimeUs);
                 if (!haveRefSamples || frameCount >= sampleLimit) {
@@ -423,6 +421,7 @@
         const char* currMime = nullptr;
         bool hasKey = AMediaFormat_getString(format, AMEDIAFORMAT_KEY_MIME, &currMime);
         if (!hasKey || strcmp(currMime, mime) != 0) {
+            AMediaFormat_delete(format);
             continue;
         }
         AMediaExtractor_selectTrack(extractor, trackID);
diff --git a/tests/media/jni/NativeMediaCommon.cpp b/tests/media/jni/NativeMediaCommon.cpp
index 8cccbc0..90540e0 100644
--- a/tests/media/jni/NativeMediaCommon.cpp
+++ b/tests/media/jni/NativeMediaCommon.cpp
@@ -47,8 +47,6 @@
 const char* TBD_AMEDIAFORMAT_KEY_BIT_RATE_MODE = "bitrate-mode";
 
 bool isCSDIdentical(AMediaFormat* refFormat, AMediaFormat* testFormat) {
-    const char* mime;
-    AMediaFormat_getString(refFormat, AMEDIAFORMAT_KEY_MIME, &mime);
     for (int i = 0;; i++) {
         std::pair<void*, size_t> refCsd;
         std::pair<void*, size_t> testCsd;
diff --git a/tests/media/jni/NativeMuxerTest.cpp b/tests/media/jni/NativeMuxerTest.cpp
index cea162c7..b9eae64 100644
--- a/tests/media/jni/NativeMuxerTest.cpp
+++ b/tests/media/jni/NativeMuxerTest.cpp
@@ -271,6 +271,8 @@
         AMediaFormat* thisFormat = mFormat[i];
         const char* thisMime = nullptr;
         AMediaFormat_getString(thisFormat, AMEDIAFORMAT_KEY_MIME, &thisMime);
+        int tolerance = !strncmp(thisMime, "video/", strlen("video/")) ? STTS_TOLERANCE_US : 0;
+        tolerance += 1; // rounding error
         int j = 0;
         for (; j < that->mTrackCount; j++) {
             AMediaFormat* thatFormat = that->mFormat[j];
@@ -279,9 +281,6 @@
             if (thisMime != nullptr && thatMime != nullptr && !strcmp(thisMime, thatMime)) {
                 if (!isFormatSimilar(thisFormat, thatFormat)) continue;
                 if (mBufferInfo[i].size() == that->mBufferInfo[j].size()) {
-                    int tolerance =
-                            !strncmp(thisMime, "video/", strlen("video/")) ? STTS_TOLERANCE_US : 0;
-                    tolerance += 1; // rounding error
                     int k = 0;
                     for (; k < mBufferInfo[i].size(); k++) {
                         AMediaCodecBufferInfo* thisInfo = mBufferInfo[i][k];
@@ -305,6 +304,7 @@
             }
         }
         if (j == that->mTrackCount) {
+            AMediaFormat_getString(thisFormat, AMEDIAFORMAT_KEY_MIME, &thisMime);
             ALOGV("For mime %s, Couldn't find a match", thisMime);
             return false;
         }
diff --git a/tests/media/src/android/mediav2/cts/CodecTestBase.java b/tests/media/src/android/mediav2/cts/CodecTestBase.java
index 1350d6f..e7527bb7 100644
--- a/tests/media/src/android/mediav2/cts/CodecTestBase.java
+++ b/tests/media/src/android/mediav2/cts/CodecTestBase.java
@@ -283,11 +283,37 @@
     }
 
     void checksum(ByteBuffer buf, int size) {
+        checksum(buf, size, 0, 0, 0);
+    }
+
+    void checksum(ByteBuffer buf, int size, int width, int height, int stride) {
         int cap = buf.capacity();
         assertTrue("checksum() params are invalid: size = " + size + " cap = " + cap,
                 size > 0 && size <= cap);
         if (buf.hasArray()) {
-            mCrc32UsingBuffer.update(buf.array(), buf.position() + buf.arrayOffset(), size);
+            if (width > 0 && height > 0 && stride > 0) {
+                int offset = buf.position() + buf.arrayOffset();
+                byte[] bb = new byte[width * height];
+                for (int i = 0; i < height; ++i) {
+                    System.arraycopy(buf.array(), offset, bb, i * width, width);
+                    offset += stride;
+                }
+                mCrc32UsingBuffer.update(bb, 0, width * height);
+            } else {
+                mCrc32UsingBuffer.update(buf.array(), buf.position() + buf.arrayOffset(), size);
+            }
+        } else if (width > 0 && height > 0 && stride > 0) {
+            // Checksum only the Y plane
+            int pos = buf.position();
+            int offset = pos;
+            byte[] bb = new byte[width * height];
+            for (int i = 0; i < height; ++i) {
+                buf.position(offset);
+                buf.get(bb, i * width, width);
+                offset += stride;
+            }
+            mCrc32UsingBuffer.update(bb, 0, width * height);
+            buf.position(pos);
         } else {
             int pos = buf.position();
             final int rdsize = Math.min(4096, size);
@@ -1039,8 +1065,11 @@
         return format.containsKey("csd-0");
     }
 
-    void flattenBufferInfo(MediaCodec.BufferInfo info) {
-        flatBuffer.putInt(info.size).putInt(info.flags & ~MediaCodec.BUFFER_FLAG_END_OF_STREAM)
+    void flattenBufferInfo(MediaCodec.BufferInfo info, boolean isAudio) {
+        if (isAudio) {
+            flatBuffer.putInt(info.size);
+        }
+        flatBuffer.putInt(info.flags & ~MediaCodec.BUFFER_FLAG_END_OF_STREAM)
                 .putLong(info.presentationTimeUs);
         flatBuffer.flip();
     }
@@ -1111,14 +1140,20 @@
     void dequeueOutput(int bufferIndex, MediaCodec.BufferInfo info) {
         if (info.size > 0 && mSaveToMem) {
             ByteBuffer buf = mCodec.getOutputBuffer(bufferIndex);
-            mOutputBuff.checksum(buf, info.size);
-            flattenBufferInfo(info);
+            flattenBufferInfo(info, mIsAudio);
             mOutputBuff.checksum(flatBuffer, flatBuffer.limit());
             if (mIsAudio) {
+                mOutputBuff.checksum(buf, info.size);
                 mOutputBuff.saveToMemory(buf, info);
             } else {
                 // tests both getOutputImage and getOutputBuffer. Can do time division
                 // multiplexing but lets allow it for now
+                MediaFormat format = mCodec.getOutputFormat();
+                int width = format.getInteger(MediaFormat.KEY_WIDTH);
+                int height = format.getInteger(MediaFormat.KEY_HEIGHT);
+                int stride = format.getInteger(MediaFormat.KEY_STRIDE);
+                mOutputBuff.checksum(buf, info.size, width, height, stride);
+
                 Image img = mCodec.getOutputImage(bufferIndex);
                 assertTrue(img != null);
                 mOutputBuff.checksum(img);
diff --git a/tests/providerui/Android.bp b/tests/providerui/Android.bp
index fbb2e0e..edc4bd0 100644
--- a/tests/providerui/Android.bp
+++ b/tests/providerui/Android.bp
@@ -26,7 +26,8 @@
         "junit",
         "androidx.legacy_legacy-support-v4",
     ],
-    srcs: ["src/**/*.java"],
+    srcs: ["src/**/*.java",
+           ":CtsProviderTestUtils"],
     // Tag this module as a cts test artifact
     test_suites: [
         "cts",
diff --git a/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java b/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
index 1be5e10..6778b69 100644
--- a/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
+++ b/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
@@ -39,6 +39,7 @@
 import android.os.storage.StorageVolume;
 import android.os.UserManager;
 import android.provider.MediaStore;
+import android.provider.cts.ProviderTestUtils;
 import android.providerui.cts.GetResultActivity.Result;
 import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.BySelector;
@@ -90,7 +91,7 @@
 
     @Parameters
     public static Iterable<? extends Object> data() {
-        return MediaStore.getExternalVolumeNames(InstrumentationRegistry.getTargetContext());
+        return ProviderTestUtils.getSharedVolumeNames();
     }
 
     @Before
diff --git a/tests/security/Android.bp b/tests/security/Android.bp
index d9786a8..12168cc 100644
--- a/tests/security/Android.bp
+++ b/tests/security/Android.bp
@@ -17,6 +17,7 @@
     static_libs: [
         "bouncycastle-unbundled",
         "bouncycastle-bcpkix-unbundled",
+        "cbor-java",
         "guava",
         "truth-prebuilt",
         "testng",
diff --git a/tests/security/src/android/keystore/cts/Asn1Attestation.java b/tests/security/src/android/keystore/cts/Asn1Attestation.java
new file mode 100644
index 0000000..b454130
--- /dev/null
+++ b/tests/security/src/android/keystore/cts/Asn1Attestation.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.keystore.cts;
+
+import org.bouncycastle.asn1.ASN1Sequence;
+
+import java.security.cert.CertificateParsingException;
+import java.security.cert.X509Certificate;
+
+public class Asn1Attestation extends Attestation {
+    static final int ATTESTATION_VERSION_INDEX = 0;
+    static final int ATTESTATION_SECURITY_LEVEL_INDEX = 1;
+    static final int KEYMASTER_VERSION_INDEX = 2;
+    static final int KEYMASTER_SECURITY_LEVEL_INDEX = 3;
+    static final int ATTESTATION_CHALLENGE_INDEX = 4;
+    static final int UNIQUE_ID_INDEX = 5;
+    static final int SW_ENFORCED_INDEX = 6;
+    static final int TEE_ENFORCED_INDEX = 7;
+
+    int attestationSecurityLevel;
+
+    /**
+     * Constructs an {@code Asn1Attestation} object from the provided {@link X509Certificate},
+     * extracting the attestation data from the attestation extension.
+     *
+     * @throws CertificateParsingException if the certificate does not contain a properly-formatted
+     *     attestation extension.
+     */
+    public Asn1Attestation(X509Certificate x509Cert) throws CertificateParsingException {
+        super(x509Cert);
+        ASN1Sequence seq = getAttestationSequence(x509Cert);
+
+        attestationVersion =
+                Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(ATTESTATION_VERSION_INDEX));
+        attestationSecurityLevel =
+                Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(ATTESTATION_SECURITY_LEVEL_INDEX));
+        keymasterVersion = Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(KEYMASTER_VERSION_INDEX));
+        keymasterSecurityLevel =
+                Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(KEYMASTER_SECURITY_LEVEL_INDEX));
+
+        attestationChallenge =
+                Asn1Utils.getByteArrayFromAsn1(seq.getObjectAt(ATTESTATION_CHALLENGE_INDEX));
+
+        uniqueId = Asn1Utils.getByteArrayFromAsn1(seq.getObjectAt(UNIQUE_ID_INDEX));
+
+        softwareEnforced = new AuthorizationList(seq.getObjectAt(SW_ENFORCED_INDEX));
+        teeEnforced = new AuthorizationList(seq.getObjectAt(TEE_ENFORCED_INDEX));
+    }
+
+    ASN1Sequence getAttestationSequence(X509Certificate x509Cert)
+            throws CertificateParsingException {
+        byte[] attestationExtensionBytes = x509Cert.getExtensionValue(Attestation.ASN1_OID);
+        if (attestationExtensionBytes == null || attestationExtensionBytes.length == 0) {
+            throw new CertificateParsingException("Did not find extension with OID " + ASN1_OID);
+        }
+        return Asn1Utils.getAsn1SequenceFromBytes(attestationExtensionBytes);
+    }
+
+    public int getAttestationSecurityLevel() {
+        return attestationSecurityLevel;
+    }
+
+    public RootOfTrust getRootOfTrust() {
+        return teeEnforced.getRootOfTrust();
+    }
+}
diff --git a/tests/security/src/android/keystore/cts/Attestation.java b/tests/security/src/android/keystore/cts/Attestation.java
index 2285cad..7414908 100644
--- a/tests/security/src/android/keystore/cts/Attestation.java
+++ b/tests/security/src/android/keystore/cts/Attestation.java
@@ -16,71 +16,69 @@
 
 package android.keystore.cts;
 
+import co.nstant.in.cbor.CborException;
+
 import com.google.common.base.CharMatcher;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.io.BaseEncoding;
 
-import org.bouncycastle.asn1.ASN1Sequence;
-
 import java.security.cert.CertificateParsingException;
 import java.security.cert.X509Certificate;
 import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * Parses an attestation certificate and provides an easy-to-use interface for examining the
  * contents.
  */
-public class Attestation {
-    static final String KEY_DESCRIPTION_OID = "1.3.6.1.4.1.11129.2.1.17";
-    static final String KEY_USAGE_OID = "2.5.29.15";  // Standard key usage extension.
-    static final int ATTESTATION_VERSION_INDEX = 0;
-    static final int ATTESTATION_SECURITY_LEVEL_INDEX = 1;
-    static final int KEYMASTER_VERSION_INDEX = 2;
-    static final int KEYMASTER_SECURITY_LEVEL_INDEX = 3;
-    static final int ATTESTATION_CHALLENGE_INDEX = 4;
-    static final int UNIQUE_ID_INDEX = 5;
-    static final int SW_ENFORCED_INDEX = 6;
-    static final int TEE_ENFORCED_INDEX = 7;
+public abstract class Attestation {
+    static final String EAT_OID = "1.3.6.1.4.1.11129.2.1.25";
+    static final String ASN1_OID = "1.3.6.1.4.1.11129.2.1.17";
+    static final String KEY_USAGE_OID = "2.5.29.15"; // Standard key usage extension.
 
     public static final int KM_SECURITY_LEVEL_SOFTWARE = 0;
     public static final int KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT = 1;
     public static final int KM_SECURITY_LEVEL_STRONG_BOX = 2;
 
-    private final int attestationVersion;
-    private final int attestationSecurityLevel;
-    private final int keymasterVersion;
-    private final int keymasterSecurityLevel;
-    private final byte[] attestationChallenge;
-    private final byte[] uniqueId;
-    private final AuthorizationList softwareEnforced;
-    private final AuthorizationList teeEnforced;
-    private final Set<String> unexpectedExtensionOids;
-
+    int attestationVersion;
+    int keymasterVersion;
+    int keymasterSecurityLevel;
+    byte[] attestationChallenge;
+    byte[] uniqueId;
+    AuthorizationList softwareEnforced;
+    AuthorizationList teeEnforced;
+    Set<String> unexpectedExtensionOids;
 
     /**
      * Constructs an {@code Attestation} object from the provided {@link X509Certificate},
      * extracting the attestation data from the attestation extension.
      *
+     * <p>This method ensures that at most one attestation extension is included in the certificate.
+     *
      * @throws CertificateParsingException if the certificate does not contain a properly-formatted
-     *                                     attestation extension.
+     *     attestation extension, if it contains multiple attestation extensions, or if the
+     *     attestation extension can not be parsed.
      */
-    public Attestation(X509Certificate x509Cert) throws CertificateParsingException {
-        ASN1Sequence seq = getAttestationSequence(x509Cert);
+    public static Attestation loadFromCertificate(X509Certificate x509Cert)
+            throws CertificateParsingException {
+        if (x509Cert.getExtensionValue(EAT_OID) == null
+                && x509Cert.getExtensionValue(ASN1_OID) == null) {
+            throw new CertificateParsingException("No attestation extensions found");
+        }
+        if (x509Cert.getExtensionValue(EAT_OID) != null) {
+            if (x509Cert.getExtensionValue(ASN1_OID) != null) {
+                throw new CertificateParsingException("Multiple attestation extensions found");
+            }
+            try {
+                return new EatAttestation(x509Cert);
+            } catch (CborException cbe) {
+                throw new CertificateParsingException("Unable to parse EAT extension", cbe);
+            }
+        }
+        return new Asn1Attestation(x509Cert);
+    }
+
+    Attestation(X509Certificate x509Cert) {
         unexpectedExtensionOids = retrieveUnexpectedExtensionOids(x509Cert);
-
-        attestationVersion = Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(ATTESTATION_VERSION_INDEX));
-        attestationSecurityLevel = Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(ATTESTATION_SECURITY_LEVEL_INDEX));
-        keymasterVersion = Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(KEYMASTER_VERSION_INDEX));
-        keymasterSecurityLevel = Asn1Utils.getIntegerFromAsn1(seq.getObjectAt(KEYMASTER_SECURITY_LEVEL_INDEX));
-
-        attestationChallenge =
-                Asn1Utils.getByteArrayFromAsn1(seq.getObjectAt(Attestation.ATTESTATION_CHALLENGE_INDEX));
-
-        uniqueId = Asn1Utils.getByteArrayFromAsn1(seq.getObjectAt(Attestation.UNIQUE_ID_INDEX));
-
-        softwareEnforced = new AuthorizationList(seq.getObjectAt(SW_ENFORCED_INDEX));
-        teeEnforced = new AuthorizationList(seq.getObjectAt(TEE_ENFORCED_INDEX));
     }
 
     public static String securityLevelToString(int attestationSecurityLevel) {
@@ -100,9 +98,9 @@
         return attestationVersion;
     }
 
-    public int getAttestationSecurityLevel() {
-        return attestationSecurityLevel;
-    }
+    public abstract int getAttestationSecurityLevel();
+
+    public abstract RootOfTrust getRootOfTrust();
 
     public int getKeymasterVersion() {
         return keymasterVersion;
@@ -135,13 +133,15 @@
     @Override
     public String toString() {
         StringBuilder s = new StringBuilder();
-        s.append("Attest version: " + attestationVersion);
-        s.append("\nAttest security: " + securityLevelToString(attestationSecurityLevel));
+        s.append("Extension type: " + getClass());
+        s.append("\nAttest version: " + attestationVersion);
+        s.append("\nAttest security: " + securityLevelToString(getAttestationSecurityLevel()));
         s.append("\nKM version: " + keymasterVersion);
         s.append("\nKM security: " + securityLevelToString(keymasterSecurityLevel));
 
         s.append("\nChallenge");
-        String stringChallenge = new String(attestationChallenge);
+        String stringChallenge =
+                attestationChallenge != null ? new String(attestationChallenge) : "null";
         if (CharMatcher.ascii().matchesAllOf(stringChallenge)) {
             s.append(": [" + stringChallenge + "]");
         } else {
@@ -159,26 +159,16 @@
         return s.toString();
     }
 
-    private ASN1Sequence getAttestationSequence(X509Certificate x509Cert)
-            throws CertificateParsingException {
-        byte[] attestationExtensionBytes = x509Cert.getExtensionValue(KEY_DESCRIPTION_OID);
-        if (attestationExtensionBytes == null || attestationExtensionBytes.length == 0) {
-            throw new CertificateParsingException(
-                    "Did not find extension with OID " + KEY_DESCRIPTION_OID);
-        }
-        return Asn1Utils.getAsn1SequenceFromBytes(attestationExtensionBytes);
-    }
-
-    private Set<String> retrieveUnexpectedExtensionOids(X509Certificate x509Cert) {
+    Set<String> retrieveUnexpectedExtensionOids(X509Certificate x509Cert) {
         return new ImmutableSet.Builder<String>()
-                .addAll(x509Cert.getCriticalExtensionOIDs()
-                        .stream()
-                        .filter(s -> !KEY_USAGE_OID.equals(s))
-                        .iterator())
-                .addAll(x509Cert.getNonCriticalExtensionOIDs()
-                        .stream()
-                        .filter(s -> !KEY_DESCRIPTION_OID.equals(s))
-                        .iterator())
+                .addAll(
+                        x509Cert.getCriticalExtensionOIDs().stream()
+                                .filter(s -> !KEY_USAGE_OID.equals(s))
+                                .iterator())
+                .addAll(
+                        x509Cert.getNonCriticalExtensionOIDs().stream()
+                                .filter(s -> !ASN1_OID.equals(s) && !EAT_OID.equals(s))
+                                .iterator())
                 .build();
     }
 }
diff --git a/tests/security/src/android/keystore/cts/AuthorizationList.java b/tests/security/src/android/keystore/cts/AuthorizationList.java
index 85ac115..dce9b2a 100644
--- a/tests/security/src/android/keystore/cts/AuthorizationList.java
+++ b/tests/security/src/android/keystore/cts/AuthorizationList.java
@@ -19,6 +19,10 @@
 import static com.google.common.base.Functions.forMap;
 import static com.google.common.collect.Collections2.transform;
 
+import co.nstant.in.cbor.model.DataItem;
+import co.nstant.in.cbor.model.Number;
+import co.nstant.in.cbor.model.UnsignedInteger;
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -166,6 +170,7 @@
             .put(KM_PURPOSE_VERIFY, "VERIFY")
             .build();
 
+    private Integer securityLevel;
     private Set<Integer> purposes;
     private Integer algorithm;
     private Integer keySize;
@@ -331,6 +336,126 @@
 
     }
 
+    public AuthorizationList(co.nstant.in.cbor.model.Map submodMap)
+            throws CertificateParsingException {
+        for (DataItem key : submodMap.getKeys()) {
+            int keyInt = ((Number) key).getValue().intValue();
+            switch (keyInt) {
+                default:
+                    throw new CertificateParsingException("Unknown EAT tag: " + key);
+
+                case EatClaim.SECURITY_LEVEL:
+                    securityLevel = eatSecurityLevelToKeymasterSecurityLevel(
+                            CborUtils.getInt(submodMap, key));
+                    break;
+                case EatClaim.PURPOSE:
+                    purposes = CborUtils.getIntSet(submodMap, key);
+                    break;
+                case EatClaim.ALGORITHM:
+                    algorithm = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.KEY_SIZE:
+                    keySize = CborUtils.getInt(submodMap, key);
+                    Log.i("Attestation", "Found KEY SIZE, value: " + keySize);
+                    break;
+                case EatClaim.DIGEST:
+                    digests = CborUtils.getIntSet(submodMap, key);
+                    break;
+                case EatClaim.PADDING:
+                    paddingModes = CborUtils.getIntSet(submodMap, key);
+                    break;
+                case EatClaim.RSA_PUBLIC_EXPONENT:
+                    rsaPublicExponent = CborUtils.getLong(submodMap, key);
+                    break;
+                case EatClaim.NO_AUTH_REQUIRED:
+                    noAuthRequired = true;
+                    break;
+                case EatClaim.IAT:
+                    creationDateTime = CborUtils.getDate(submodMap, key);
+                    break;
+                case EatClaim.ORIGIN:
+                    origin = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.OS_VERSION:
+                    osVersion = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.OS_PATCHLEVEL:
+                    osPatchLevel = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.VENDOR_PATCHLEVEL:
+                    vendorPatchLevel = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.BOOT_PATCHLEVEL:
+                    bootPatchLevel = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.ACTIVE_DATETIME:
+                    activeDateTime = CborUtils.getDate(submodMap, key);
+                    break;
+                case EatClaim.ORIGINATION_EXPIRE_DATETIME:
+                    originationExpireDateTime = CborUtils.getDate(submodMap, key);
+                    break;
+                case EatClaim.USAGE_EXPIRE_DATETIME:
+                    usageExpireDateTime = CborUtils.getDate(submodMap, key);
+                    break;
+                case EatClaim.ROLLBACK_RESISTANT:
+                    rollbackResistant = true;
+                    break;
+                case EatClaim.ROLLBACK_RESISTANCE:
+                    rollbackResistance = true;
+                    break;
+                case EatClaim.AUTH_TIMEOUT:
+                    authTimeout = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.ALLOW_WHILE_ON_BODY:
+                    allowWhileOnBody = true;
+                    break;
+                case EatClaim.EC_CURVE:
+                    ecCurve = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.USER_AUTH_TYPE:
+                    userAuthType = CborUtils.getInt(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_APPLICATION_ID:
+                    // TODO: The attestation application ID is currently still encoded as an ASN.1
+                    // structure. Parse a CBOR structure when it's available instead.
+                    attestationApplicationId = new AttestationApplicationId(
+                        Asn1Utils.getAsn1EncodableFromBytes(CborUtils.getBytes(submodMap, key)));
+                    break;
+                case EatClaim.ATTESTATION_ID_BRAND:
+                    brand = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_DEVICE:
+                    device = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_PRODUCT:
+                    product = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_SERIAL:
+                    serialNumber = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.UEID:
+                    // TODO: Parse depending on encoding chosen in attestation_record.cpp.
+                    imei = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_MEID:
+                    meid = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_MANUFACTURER:
+                    manufacturer = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.ATTESTATION_ID_MODEL:
+                    model = CborUtils.getString(submodMap, key);
+                    break;
+                case EatClaim.USER_PRESENCE_REQUIRED:
+                    userPresenceRequired = CborUtils.getBoolean(submodMap, key);
+                    break;
+                case EatClaim.TRUSTED_CONFIRMATION_REQUIRED:
+                    confirmationRequired = true;
+                    break;
+            }
+        }
+    }
+
     public static String algorithmToString(int algorithm) {
         switch (algorithm) {
             case KM_ALGORITHM_RSA:
@@ -415,6 +540,10 @@
         }
     }
 
+    public Integer getSecurityLevel() {
+        return securityLevel;
+    }
+
     public Set<Integer> getPurposes() {
         return purposes;
     }
@@ -607,6 +736,19 @@
         return confirmationRequired;
     }
 
+    static int eatSecurityLevelToKeymasterSecurityLevel(int eatSecurityLevel) {
+        switch(eatSecurityLevel) {
+            case EatClaim.SECURITY_LEVEL_UNRESTRICTED:
+                return Attestation.KM_SECURITY_LEVEL_SOFTWARE;
+            case EatClaim.SECURITY_LEVEL_SECURE_RESTRICTED:
+                return Attestation.KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT;
+            case EatClaim.SECURITY_LEVEL_HARDWARE:
+                return Attestation.KM_SECURITY_LEVEL_STRONG_BOX;
+            default:
+                throw new RuntimeException("Invalid EAT security level: " + eatSecurityLevel);
+        }
+    }
+
     private String getStringFromAsn1Value(ASN1Primitive value) throws CertificateParsingException {
         try {
             return Asn1Utils.getStringFromAsn1OctetStreamAssumingUTF8(value);
diff --git a/tests/security/src/android/keystore/cts/CborUtils.java b/tests/security/src/android/keystore/cts/CborUtils.java
new file mode 100644
index 0000000..eeac9b5
--- /dev/null
+++ b/tests/security/src/android/keystore/cts/CborUtils.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.keystore.cts;
+
+import co.nstant.in.cbor.model.Array;
+import co.nstant.in.cbor.model.ByteString;
+import co.nstant.in.cbor.model.DataItem;
+import co.nstant.in.cbor.model.Map;
+import co.nstant.in.cbor.model.NegativeInteger;
+import co.nstant.in.cbor.model.Number;
+import co.nstant.in.cbor.model.SimpleValue;
+import co.nstant.in.cbor.model.SimpleValueType;
+import co.nstant.in.cbor.model.UnsignedInteger;
+
+import java.nio.charset.StandardCharsets;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+
+class CborUtils {
+    public static Number toNumber(long l) {
+        return l >= 0 ? new UnsignedInteger(l) : new NegativeInteger(l);
+    }
+
+    public static int getInt(Map map, long index) {
+        DataItem item = map.get(CborUtils.toNumber(index));
+        return ((Number) item).getValue().intValue();
+    }
+
+    public static int getInt(Map map, DataItem index) {
+        DataItem item = map.get(index);
+        return ((Number) item).getValue().intValue();
+    }
+
+    public static long getLong(Map map, DataItem index) {
+        DataItem item = map.get(index);
+        return ((Number) item).getValue().longValue();
+    }
+
+    public static Set<Integer> getIntSet(Map map, DataItem index) {
+        Array array = (Array) map.get(index);
+        Set<Integer> result = new HashSet();
+        for (DataItem item : array.getDataItems()) {
+            result.add(((Number) item).getValue().intValue());
+        }
+        return result;
+    }
+
+    public static Boolean getBoolean(Map map, DataItem index) {
+        SimpleValueType value = ((SimpleValue) map.get(index)).getSimpleValueType();
+        if (value != SimpleValueType.TRUE && value != SimpleValueType.FALSE) {
+            throw new RuntimeException("Only expecting boolean values for " + index);
+        }
+        return (value == SimpleValueType.TRUE);
+    }
+
+    public static List<Boolean> getBooleanList(Map map, DataItem index) {
+        Array array = (Array) map.get(index);
+        List<Boolean> result = new ArrayList();
+        for (DataItem item : array.getDataItems()) {
+            SimpleValueType value = ((SimpleValue) item).getSimpleValueType();
+            if (value == SimpleValueType.FALSE) {
+                result.add(false);
+            } else if (value == SimpleValueType.TRUE) {
+                result.add(true);
+            } else {
+                throw new RuntimeException("Map contains more than booleans: " + map);
+            }
+        }
+        return result;
+    }
+
+    public static Date getDate(Map map, DataItem index) {
+        DataItem item = map.get(index);
+        long epochMillis = ((Number) item).getValue().longValue();
+        return new Date(epochMillis);
+    }
+
+    public static byte[] getBytes(Map map, DataItem index) {
+        DataItem item = map.get(index);
+        return ((ByteString) item).getBytes();
+    }
+
+    public static String getString(Map map, DataItem index) {
+        byte[] bytes = getBytes(map, index);
+        return new String(bytes, StandardCharsets.UTF_8);
+    }
+}
diff --git a/tests/security/src/android/keystore/cts/EatAttestation.java b/tests/security/src/android/keystore/cts/EatAttestation.java
new file mode 100644
index 0000000..21ef0db
--- /dev/null
+++ b/tests/security/src/android/keystore/cts/EatAttestation.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.keystore.cts;
+
+import android.util.Log;
+
+import co.nstant.in.cbor.CborDecoder;
+import co.nstant.in.cbor.CborException;
+import co.nstant.in.cbor.model.DataItem;
+import co.nstant.in.cbor.model.Map;
+import co.nstant.in.cbor.model.Number;
+import co.nstant.in.cbor.model.UnicodeString;
+
+import org.bouncycastle.asn1.ASN1Encodable;
+
+import java.security.cert.CertificateParsingException;
+import java.security.cert.X509Certificate;
+import java.util.List;
+
+public class EatAttestation extends Attestation {
+    static final String TAG = "EatAttestation";
+    final Map extension;
+    final RootOfTrust rootOfTrust;
+
+    /**
+     * Constructs an {@code EatAttestation} object from the provided {@link X509Certificate},
+     * extracting the attestation data from the attestation extension.
+     *
+     * @throws CertificateParsingException if the certificate does not contain a properly-formatted
+     *     attestation extension.
+     */
+    public EatAttestation(X509Certificate x509Cert)
+            throws CertificateParsingException, CborException {
+        super(x509Cert);
+        extension = getEatExtension(x509Cert);
+
+        RootOfTrust.Builder rootOfTrustBuilder = new RootOfTrust.Builder();
+        List<Boolean> bootState = null;
+        boolean officialBuild = false;
+
+        for (DataItem key : extension.getKeys()) {
+            int keyInt = ((Number) key).getValue().intValue();
+            switch (keyInt) {
+                default:
+                    throw new CertificateParsingException(
+                            "Unknown EAT tag: " + key + "\n in EAT extension:\n" + toString());
+
+                case EatClaim.ATTESTATION_VERSION:
+                    attestationVersion = CborUtils.getInt(extension, key);
+                    break;
+                case EatClaim.KEYMASTER_VERSION:
+                    keymasterVersion = CborUtils.getInt(extension, key);
+                    break;
+                case EatClaim.SECURITY_LEVEL:
+                    keymasterSecurityLevel =
+                            eatSecurityLevelToKeymintSecurityLevel(
+                                    CborUtils.getInt(extension, key));
+                    break;
+                case EatClaim.SUBMODS:
+                    Map submods = (Map) extension.get(key);
+                    softwareEnforced =
+                            new AuthorizationList(
+                                    (Map) submods.get(new UnicodeString(EatClaim.SUBMOD_SOFTWARE)));
+                    teeEnforced =
+                            new AuthorizationList(
+                                    (Map) submods.get(new UnicodeString(EatClaim.SUBMOD_TEE)));
+                    break;
+                case EatClaim.VERIFIED_BOOT_KEY:
+                    rootOfTrustBuilder.setVerifiedBootKey(CborUtils.getBytes(extension, key));
+                    break;
+                case EatClaim.DEVICE_LOCKED:
+                    rootOfTrustBuilder.setDeviceLocked(CborUtils.getBoolean(extension, key));
+                    break;
+                case EatClaim.BOOT_STATE:
+                    bootState = CborUtils.getBooleanList(extension, key);
+                    break;
+                case EatClaim.OFFICIAL_BUILD:
+                    officialBuild = CborUtils.getBoolean(extension, key);
+                    break;
+                case EatClaim.NONCE:
+                    attestationChallenge = CborUtils.getBytes(extension, key);
+                    break;
+                case EatClaim.CTI:
+                    Log.i(TAG, "Got CTI claim: " + CborUtils.getBytes(extension, key));
+                    uniqueId = CborUtils.getBytes(extension, key);
+                    break;
+                case EatClaim.VERIFIED_BOOT_HASH:
+                    // TODO: ignored for now, as this is not checked in original ASN.1 tests
+                    break;
+            }
+        }
+
+        if (bootState != null) {
+            rootOfTrustBuilder.setVerifiedBootState(
+                    eatBootStateTypeToVerifiedBootState(bootState, officialBuild));
+        }
+        rootOfTrust = rootOfTrustBuilder.build();
+    }
+
+    /** Find the submod containing the key information, and return its security level. */
+    public int getAttestationSecurityLevel() {
+        if (teeEnforced != null && teeEnforced.getAlgorithm() != null) {
+            return teeEnforced.getSecurityLevel();
+        } else if (softwareEnforced != null && softwareEnforced.getAlgorithm() != null) {
+            return softwareEnforced.getSecurityLevel();
+        } else {
+            return -1;
+        }
+    }
+
+    public RootOfTrust getRootOfTrust() {
+        return rootOfTrust;
+    }
+
+    public String toString() {
+        return super.toString() + "\nEncoded CBOR: " + extension;
+    }
+
+    Map getEatExtension(X509Certificate x509Cert)
+            throws CertificateParsingException, CborException {
+        byte[] attestationExtensionBytes = x509Cert.getExtensionValue(Attestation.EAT_OID);
+        if (attestationExtensionBytes == null || attestationExtensionBytes.length == 0) {
+            throw new CertificateParsingException("Did not find extension with OID " + EAT_OID);
+        }
+        ASN1Encodable asn1 = Asn1Utils.getAsn1EncodableFromBytes(attestationExtensionBytes);
+        byte[] cborBytes = Asn1Utils.getByteArrayFromAsn1(asn1);
+        List<DataItem> cbor = CborDecoder.decode(cborBytes);
+        return (Map) cbor.get(0);
+    }
+
+    static int eatSecurityLevelToKeymintSecurityLevel(int eatSecurityLevel) {
+        switch (eatSecurityLevel) {
+            case EatClaim.SECURITY_LEVEL_UNRESTRICTED:
+                return Attestation.KM_SECURITY_LEVEL_SOFTWARE;
+            case EatClaim.SECURITY_LEVEL_SECURE_RESTRICTED:
+                return Attestation.KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT;
+            case EatClaim.SECURITY_LEVEL_HARDWARE:
+                return Attestation.KM_SECURITY_LEVEL_STRONG_BOX;
+            default:
+                throw new RuntimeException("Invalid EAT security level: " + eatSecurityLevel);
+        }
+    }
+
+    static int eatBootStateTypeToVerifiedBootState(List<Boolean> bootState, Boolean officialBuild) {
+        if (bootState.size() != 5) {
+            throw new RuntimeException("Boot state map has unexpected size: " + bootState.size());
+        }
+        if (bootState.get(4)) {
+            throw new RuntimeException("debug-permanent-disable must never be true: " + bootState);
+        }
+        boolean verifiedOrSelfSigned = bootState.get(0);
+        if (verifiedOrSelfSigned != bootState.get(1)
+                && verifiedOrSelfSigned != bootState.get(2)
+                && verifiedOrSelfSigned != bootState.get(3)) {
+            throw new RuntimeException("Unexpected boot state: " + bootState);
+        }
+
+        if (officialBuild) {
+            if (!verifiedOrSelfSigned) {
+                throw new AssertionError("Non-verified official build");
+            }
+            return RootOfTrust.KM_VERIFIED_BOOT_VERIFIED;
+        } else {
+            return verifiedOrSelfSigned
+                    ? RootOfTrust.KM_VERIFIED_BOOT_SELF_SIGNED
+                    : RootOfTrust.KM_VERIFIED_BOOT_UNVERIFIED;
+        }
+    }
+}
diff --git a/tests/security/src/android/keystore/cts/EatClaim.java b/tests/security/src/android/keystore/cts/EatClaim.java
new file mode 100644
index 0000000..1130037
--- /dev/null
+++ b/tests/security/src/android/keystore/cts/EatClaim.java
@@ -0,0 +1,112 @@
+package android.keystore.cts;
+
+import android.security.keymaster.KeymasterDefs;
+
+class EatClaim {
+    public static final int IAT = 6;
+    public static final int CTI = 7;
+
+    public static final int NONCE = -75008;
+    public static final int UEID = -75009;
+
+    public static final int SECURITY_LEVEL = -76002;
+    public static final int SECURITY_LEVEL_UNRESTRICTED = 1;
+    public static final int SECURITY_LEVEL_SECURE_RESTRICTED = 3;
+    public static final int SECURITY_LEVEL_HARDWARE = 4;
+
+    public static final int BOOT_STATE = -76003;
+    public static final int SUBMODS = -76000;
+
+    private static final int PRIVATE_BASE = -80000;
+
+    public static final int PURPOSE = PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_PURPOSE);
+    public static final int ALGORITHM =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ALGORITHM);
+    public static final int KEY_SIZE = PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_KEY_SIZE);
+    public static final int BLOCK_MODE =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_BLOCK_MODE);
+    public static final int DIGEST = PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_DIGEST);
+    public static final int PADDING = PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_PADDING);
+    public static final int CALLER_NONCE =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_CALLER_NONCE);
+    public static final int MIN_MAC_LENGTH =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_MIN_MAC_LENGTH);
+    public static final int KDF = PRIVATE_BASE - 9;
+
+    public static final int EC_CURVE = PRIVATE_BASE - 10;
+    public static final int EAT_EC_CURVE_P_224 = 0;
+    public static final int EAT_EC_CURVE_P_256 = 1;
+    public static final int EAT_EC_CURVE_P_384 = 2;
+    public static final int EAT_EC_CURVE_P_521 = 3;
+
+    public static final int RSA_PUBLIC_EXPONENT =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_RSA_PUBLIC_EXPONENT);
+
+    public static final int ROLLBACK_RESISTANCE = PRIVATE_BASE - 303;
+    public static final int EARLY_BOOT_ONLY = PRIVATE_BASE - 305;
+
+    public static final int ACTIVE_DATETIME =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ACTIVE_DATETIME);
+    public static final int ORIGINATION_EXPIRE_DATETIME =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ORIGINATION_EXPIRE_DATETIME);
+    public static final int USAGE_EXPIRE_DATETIME =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_USAGE_EXPIRE_DATETIME);
+
+    public static final int NO_AUTH_REQUIRED =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_NO_AUTH_REQUIRED);
+    public static final int USER_AUTH_TYPE =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_USER_AUTH_TYPE);
+    public static final int AUTH_TIMEOUT =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_AUTH_TIMEOUT);
+    public static final int ALLOW_WHILE_ON_BODY =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ALLOW_WHILE_ON_BODY);
+    public static final int USER_PRESENCE_REQUIRED = PRIVATE_BASE - 507;
+    public static final int TRUSTED_CONFIRMATION_REQUIRED =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_TRUSTED_CONFIRMATION_REQUIRED);
+    public static final int UNLOCKED_DEVICE_REQUIRED =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_UNLOCKED_DEVICE_REQUIRED);
+
+    public static final int APPLICATION_ID =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_APPLICATION_ID);
+
+    public static final int ORIGIN = PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ORIGIN);
+    // TODO: hardcoded while KeymasterDefs uses the same value for
+    // ROLLBACK_RESISTANCE and ROLLBACK_RESISTANT
+    public static final int ROLLBACK_RESISTANT = PRIVATE_BASE - 703;
+    public static final int OS_VERSION = PRIVATE_BASE - 705;
+    public static final int OS_PATCHLEVEL = PRIVATE_BASE - 706;
+    public static final int ATTESTATION_APPLICATION_ID = PRIVATE_BASE - 709;
+    public static final int ATTESTATION_ID_BRAND =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_BRAND);
+    public static final int ATTESTATION_ID_DEVICE =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_DEVICE);
+    public static final int ATTESTATION_ID_PRODUCT =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_PRODUCT);
+    public static final int ATTESTATION_ID_SERIAL =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_SERIAL);
+    public static final int ATTESTATION_ID_MEID =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_MEID);
+    public static final int ATTESTATION_ID_MANUFACTURER =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_MANUFACTURER);
+    public static final int ATTESTATION_ID_MODEL =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_ATTESTATION_ID_MODEL);
+    public static final int VENDOR_PATCHLEVEL =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_VENDOR_PATCHLEVEL);
+    public static final int BOOT_PATCHLEVEL =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_BOOT_PATCHLEVEL);
+    public static final int DEVICE_UNIQUE_ATTESTATION =
+            PRIVATE_BASE - (0x0FFFFFFF & KeymasterDefs.KM_TAG_DEVICE_UNIQUE_ATTESTATION);
+    public static final int IDENTITY_CREDENTIAL_KEY = PRIVATE_BASE - 721;
+
+    private static final int NON_KM_BASE = PRIVATE_BASE - 2000;
+
+    public static final int VERIFIED_BOOT_KEY = NON_KM_BASE - 1;
+    public static final int DEVICE_LOCKED = NON_KM_BASE - 2;
+    public static final int VERIFIED_BOOT_HASH = NON_KM_BASE - 3;
+    public static final int ATTESTATION_VERSION = NON_KM_BASE - 4;
+    public static final int KEYMASTER_VERSION = NON_KM_BASE - 5;
+    public static final int OFFICIAL_BUILD = NON_KM_BASE - 6;
+
+    public static final String SUBMOD_SOFTWARE = "software";
+    public static final String SUBMOD_TEE = "tee";
+}
diff --git a/tests/security/src/android/keystore/cts/RootOfTrust.java b/tests/security/src/android/keystore/cts/RootOfTrust.java
index 99577021..a115874 100644
--- a/tests/security/src/android/keystore/cts/RootOfTrust.java
+++ b/tests/security/src/android/keystore/cts/RootOfTrust.java
@@ -51,6 +51,13 @@
                 Asn1Utils.getIntegerFromAsn1(sequence.getObjectAt(VERIFIED_BOOT_STATE_INDEX));
     }
 
+
+    RootOfTrust(byte[] verifiedBootKey, boolean deviceLocked, int verifiedBootState) {
+        this.verifiedBootKey = verifiedBootKey;
+        this.deviceLocked = deviceLocked;
+        this.verifiedBootState = verifiedBootState;
+    }
+
     public static String verifiedBootStateToString(int verifiedBootState) {
         switch (verifiedBootState) {
             case KM_VERIFIED_BOOT_VERIFIED:
@@ -82,11 +89,35 @@
     public String toString() {
         return new StringBuilder()
                 .append("\nVerified boot Key: ")
-                .append(BaseEncoding.base64().encode(verifiedBootKey))
+                .append(verifiedBootKey != null ?
+                            BaseEncoding.base64().encode(verifiedBootKey) :
+                            "null")
                 .append("\nDevice locked: ")
                 .append(deviceLocked)
                 .append("\nVerified boot state: ")
                 .append(verifiedBootStateToString(verifiedBootState))
                 .toString();
     }
+
+    public static class Builder {
+        private byte[] verifiedBootKey;
+        private boolean deviceLocked = false;
+        private int verifiedBootState = -1;
+
+        public Builder setVerifiedBootKey(byte[] verifiedBootKey) {
+            this.verifiedBootKey = verifiedBootKey;
+            return this;
+        }
+        public Builder setDeviceLocked(boolean deviceLocked) {
+            this.deviceLocked = deviceLocked;
+            return this;
+        }
+        public Builder setVerifiedBootState(int verifiedBootState) {
+            this.verifiedBootState = verifiedBootState;
+            return this;
+        }
+        public RootOfTrust build() {
+            return new RootOfTrust(verifiedBootKey, deviceLocked, verifiedBootState);
+        }
+    }
 }
diff --git a/tests/sensor/Android.bp b/tests/sensor/Android.bp
new file mode 100644
index 0000000..4930c6f
--- /dev/null
+++ b/tests/sensor/Android.bp
@@ -0,0 +1,100 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// Reusable Sensor test classes and helpers
+//
+java_library {
+    name: "cts-sensors-tests",
+    defaults: ["cts_error_prone_rules_tests"],
+
+    static_libs: ["compatibility-device-util-axt"],
+
+    libs: [
+        "platform-test-annotations",
+        "android.test.base.stubs",
+    ],
+
+    sdk_version: "test_current",
+
+    srcs: ["src/**/*.java"],
+}
+
+//
+// JNI components for testing NDK
+//
+cc_library_shared {
+    name: "libcts-sensors-ndk-jni",
+
+    cflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+
+    srcs: [
+        "jni/SensorTest.cpp",
+        "jni/SensorTestCases.cpp",
+        "jni/android_hardware_cts_SensorDirectReportTest.cpp",
+        "jni/android_hardware_cts_SensorNativeTest.cpp",
+        "jni/nativeTestHelper.cpp",
+    ],
+
+    header_libs: ["jni_headers"],
+
+    shared_libs: [
+        "libandroid",
+        "liblog",
+    ],
+
+    sdk_version: "current",
+
+    stl: "c++_shared",
+}
+
+//
+// CtsSensorTestCases package
+//
+android_test {
+    name: "CtsSensorTestCases",
+    defaults: [
+        "cts_defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "general-tests",
+    ],
+
+    // include both the 32 and 64 bit versions
+    compile_multilib: "both",
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "cts-sensors-tests",
+    ],
+
+    jni_libs: ["libcts-sensors-ndk-jni"],
+
+    sdk_version: "test_current",
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    stl: "c++_shared",
+}
diff --git a/tests/sensor/Android.mk b/tests/sensor/Android.mk
deleted file mode 100644
index d198b04..0000000
--- a/tests/sensor/Android.mk
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#
-# Reusable Sensor test classes and helpers
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := cts-sensors-tests
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := platform-test-annotations android.test.base.stubs
-
-LOCAL_SDK_VERSION := test_current
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
--include cts/error_prone_rules_tests.mk
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-#
-# JNI components for testing NDK
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libcts-sensors-ndk-jni
-
-LOCAL_CFLAGS += -Werror -Wall -Wextra
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-    jni/SensorTest.cpp \
-    jni/SensorTestCases.cpp \
-    jni/android_hardware_cts_SensorDirectReportTest.cpp \
-    jni/android_hardware_cts_SensorNativeTest.cpp \
-    jni/nativeTestHelper.cpp
-
-LOCAL_HEADER_LIBRARIES := jni_headers
-
-LOCAL_SHARED_LIBRARIES := libandroid liblog
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_NDK_STL_VARIANT := c++_shared
--include cts/error_prone_rules_tests.mk
-include $(BUILD_SHARED_LIBRARY)
-
-#
-# CtsSensorTestCases package
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts general-tests
-
-# include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    cts-sensors-tests \
-
-LOCAL_JNI_SHARED_LIBRARIES := libcts-sensors-ndk-jni
-
-LOCAL_PACKAGE_NAME := CtsSensorTestCases
-
-LOCAL_SDK_VERSION := test_current
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/sensor/src/android/hardware/cts/SensorTest.java b/tests/sensor/src/android/hardware/cts/SensorTest.java
index f48ed77..8b2e234 100644
--- a/tests/sensor/src/android/hardware/cts/SensorTest.java
+++ b/tests/sensor/src/android/hardware/cts/SensorTest.java
@@ -87,7 +87,8 @@
 
         mAndroidSensorList = new ArrayList<>();
         for (Sensor s : mSensorList) {
-            if (s.getType() < Sensor.TYPE_DEVICE_PRIVATE_BASE) {
+            if (s.getType() < Sensor.TYPE_DEVICE_PRIVATE_BASE &&
+                    (!context.getPackageManager().isInstantApp() || s.getType() != Sensor.TYPE_HEART_RATE)) {
                 mAndroidSensorList.add(s);
             }
         }
diff --git a/tests/signature/api-check/shared-libs-api/AndroidManifest.xml b/tests/signature/api-check/shared-libs-api/AndroidManifest.xml
index 663ef6b..d0ac28f7 100644
--- a/tests/signature/api-check/shared-libs-api/AndroidManifest.xml
+++ b/tests/signature/api-check/shared-libs-api/AndroidManifest.xml
@@ -27,6 +27,7 @@
         <uses-library android:name="android.test.runner" android:required="false"/>
         <uses-library android:name="android.net.ipsec.ike" android:required="false"/>
         <uses-library android:name="com.android.future.usb.accessory" android:required="false"/>
+        <uses-library android:name="com.android.libraries.tv.tvsystem" android:required="false"/>
         <uses-library android:name="com.android.location.provider" android:required="false"/>
         <uses-library android:name="com.android.mediadrm.signer" android:required="false"/>
         <uses-library android:name="com.android.media.remotedisplay" android:required="false"/>
diff --git a/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java b/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java
index 3bed2ac..0890bc9 100644
--- a/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java
+++ b/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java
@@ -209,7 +209,8 @@
         // Check for varargs.  jdiff reports varargs as ..., while
         // reflection reports them as []
         int jdiffParamEndOffset = jdiffParam.indexOf("...");
-        int reflectionParamEndOffset = reflectionParam != null ? reflectionParam.indexOf("[]") : -1;
+        int reflectionParamEndOffset = reflectionParam != null
+                ? reflectionParam.lastIndexOf("[]") : -1;
         if (jdiffParamEndOffset != -1 && reflectionParamEndOffset != -1) {
             jdiffParam = jdiffParam.substring(0, jdiffParamEndOffset);
             reflectionParam = reflectionParam.substring(0, reflectionParamEndOffset);
diff --git a/tests/tests/app.usage/src/android/app/usage/cts/UsageReportingTest.java b/tests/tests/app.usage/src/android/app/usage/cts/UsageReportingTest.java
index ebb5d11..0681f4e 100644
--- a/tests/tests/app.usage/src/android/app/usage/cts/UsageReportingTest.java
+++ b/tests/tests/app.usage/src/android/app/usage/cts/UsageReportingTest.java
@@ -313,10 +313,12 @@
         mUsageStatsManager.reportUsageStop(activity0, TOKEN_0);
         assertAppOrTokenUsed(mFullToken0, true);
 
-        // Send the device to sleep to get onStop called for the token reporting activities.
-        mUiDevice.sleep();
-        Thread.sleep(1000);
-        assertAppOrTokenUsed(mFullToken0, false);
+        // Send the device to keyguard to get onStop called for the token reporting activities.
+        try (final LockScreenSession lockScreenSession = new LockScreenSession()) {
+            lockScreenSession.gotoKeyguard();
+            Thread.sleep(1000);
+            assertAppOrTokenUsed(mFullToken0, false);
+        }
     }
 
     @Test
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/Foo.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/Foo.aidl
index f2b551c..ddb6e8b 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/Foo.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/Foo.aidl
@@ -31,4 +31,16 @@
   test_package.LongEnum[] shouldContainTwoLongFoos;
   @nullable String[] g;
   @nullable test_package.SimpleUnion u;
+  int shouldSetBit0AndBit2;
+  @nullable test_package.SimpleUnion shouldBeConstS1;
+  const int kZero = 0;
+  const int kOne = 1;
+  const int kOnes = -1;
+  const byte kByteOne = 1;
+  const long kLongOnes = -1;
+  const String kEmpty = "";
+  const String kFoo = "foo";
+  const int BIT0 = 1;
+  const int BIT1 = 2;
+  const int BIT2 = 4;
 }
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
index dad0716..7cd58e7 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/ITest.aidl
@@ -81,6 +81,7 @@
   void RepeatExtendableParcelable(in test_package.ExtendableParcelable input, out test_package.ExtendableParcelable output);
   test_package.SimpleUnion RepeatSimpleUnion(in test_package.SimpleUnion u);
   IBinder getICompatTest();
+  void RepeatExtendableParcelableWithoutExtension(in test_package.ExtendableParcelable input, out test_package.ExtendableParcelable output);
   const int kZero = 0;
   const int kOne = 1;
   const int kOnes = -1;
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/SimpleUnion.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/SimpleUnion.aidl
index 7c1564a..e7fc95c 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/SimpleUnion.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/aidl_api/libbinder_ndk_test_interface/current/test_package/SimpleUnion.aidl
@@ -23,4 +23,12 @@
   test_package.ByteEnum d;
   test_package.ByteEnum[] e;
   @nullable test_package.Bar f;
+  const int kZero = 0;
+  const int kOne = 1;
+  const int kOnes = -1;
+  const byte kByteOne = 1;
+  const long kLongOnes = -1;
+  const String kEmpty = "";
+  const String kFoo = "foo";
+  const String S1 = "a string constant";
 }
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
index 8b1a1c3..ae7e435 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
@@ -455,11 +455,21 @@
   ::ndk::ScopedAStatus RepeatExtendableParcelable(
       const ::aidl::test_package::ExtendableParcelable& in_input,
       ::aidl::test_package::ExtendableParcelable* out_output) {
+    RepeatExtendableParcelableWithoutExtension(in_input, out_output);
     std::unique_ptr<MyExt> ext = in_input.ext.getParcelable<MyExt>();
     MyExt ext2;
     ext2.a = ext->a;
     ext2.b = ext->b;
-    out_output->ext.setParcelable(&ext2);
+    out_output->ext.setParcelable(ext2);
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+
+  ::ndk::ScopedAStatus RepeatExtendableParcelableWithoutExtension(
+      const ::aidl::test_package::ExtendableParcelable& in_input,
+      ::aidl::test_package::ExtendableParcelable* out_output) {
+    out_output->a = in_input.a;
+    out_output->b = in_input.b;
+    out_output->c = in_input.c;
     return ::ndk::ScopedAStatus(AStatus_newOk());
   }
 
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp
index b05cba0..fab478e 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp
@@ -60,6 +60,17 @@
   AIBinder_decStrong(binder);
 }
 
+TEST_F(NdkBinderTest_AIBinder, ClassGetDescriptor) {
+  EXPECT_NE(SampleData::kClass, SampleData::kAnotherClassWithSameDescriptor);
+  EXPECT_STREQ(SampleData::kDescriptor, AIBinder_Class_getDescriptor(SampleData::kClass));
+  EXPECT_STREQ(SampleData::kDescriptor,
+               AIBinder_Class_getDescriptor(SampleData::kAnotherClassWithSameDescriptor));
+
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_STREQ(SampleData::kDescriptor, AIBinder_Class_getDescriptor(AIBinder_getClass(binder)));
+  AIBinder_decStrong(binder);
+}
+
 TEST_F(NdkBinderTest_AIBinder, GetUserData) {
   // This test can't use the helper utility since SampleData isn't exposed
   SampleData* data = new SampleData;
@@ -242,6 +253,24 @@
   AIBinder_decStrong(binder);
 }
 
+TEST_F(NdkBinderTest_AIBinder, UnassociatedBinderRejected) {
+  AIBinder* binder1 = SampleData::newBinder(nullptr, ExpectLifetimeTransactions(0));
+
+  AParcel* in;
+  EXPECT_EQ(STATUS_OK, AIBinder_prepareTransaction(binder1, &in));
+
+  AIBinder* binder2 = SampleData::newBinder(nullptr, ExpectLifetimeTransactions(0));
+
+  AParcel* out;
+  // transaction on different binder object from prepare fails
+  EXPECT_EQ(STATUS_BAD_VALUE, AIBinder_transact(binder2, kCode, &in, &out, 0));
+
+  AParcel_delete(out);
+
+  AIBinder_decStrong(binder2);
+  AIBinder_decStrong(binder1);
+}
+
 void* EmptyOnCreate(void* args) { return args; }
 void EmptyOnDestroy(void* /*userData*/) {}
 binder_status_t EmptyOnTransact(AIBinder* /*binder*/,
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
index c81f1d4..e346e2b 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
@@ -202,7 +202,7 @@
   EXPECT_EQ(getuid(), res);
 }
 
-TEST_P(NdkBinderTest_Aidl, Constants) {
+TEST_P(NdkBinderTest_Aidl, ConstantsInInterface) {
   ASSERT_EQ(0, ITest::kZero);
   ASSERT_EQ(1, ITest::kOne);
   ASSERT_EQ(0xffffffff, ITest::kOnes);
@@ -212,6 +212,26 @@
   ASSERT_EQ(std::string("foo"), ITest::kFoo);
 }
 
+TEST_P(NdkBinderTest_Aidl, ConstantsInParcelable) {
+  ASSERT_EQ(0, Foo::kZero);
+  ASSERT_EQ(1, Foo::kOne);
+  ASSERT_EQ(0xffffffff, Foo::kOnes);
+  ASSERT_EQ(1, Foo::kByteOne);
+  ASSERT_EQ(0xffffffffffffffff, Foo::kLongOnes);
+  ASSERT_EQ(std::string(""), Foo::kEmpty);
+  ASSERT_EQ(std::string("foo"), Foo::kFoo);
+}
+
+TEST_P(NdkBinderTest_Aidl, ConstantsInUnion) {
+  ASSERT_EQ(0, SimpleUnion::kZero);
+  ASSERT_EQ(1, SimpleUnion::kOne);
+  ASSERT_EQ(0xffffffff, SimpleUnion::kOnes);
+  ASSERT_EQ(1, SimpleUnion::kByteOne);
+  ASSERT_EQ(0xffffffffffffffff, SimpleUnion::kLongOnes);
+  ASSERT_EQ(std::string(""), SimpleUnion::kEmpty);
+  ASSERT_EQ(std::string("foo"), SimpleUnion::kFoo);
+}
+
 TEST_P(NdkBinderTest_Aidl, RepeatPrimitiveInt) {
   int32_t out;
   ASSERT_OK(iface->RepeatInt(3, &out));
@@ -545,6 +565,8 @@
   foo.shouldContainTwoIntFoos = {IntEnum::FOO, IntEnum::FOO};
   foo.shouldContainTwoLongFoos = {LongEnum::FOO, LongEnum::FOO};
   foo.u = SimpleUnion::make<SimpleUnion::c>("hello");
+  foo.shouldSetBit0AndBit2 = Foo::BIT0 | Foo::BIT2;
+  foo.shouldBeConstS1 = SimpleUnion::S1;
 
   Foo retFoo;
 
@@ -561,6 +583,8 @@
   EXPECT_EQ(foo.shouldContainTwoIntFoos, retFoo.shouldContainTwoIntFoos);
   EXPECT_EQ(foo.shouldContainTwoLongFoos, retFoo.shouldContainTwoLongFoos);
   EXPECT_EQ(foo.u, retFoo.u);
+  EXPECT_EQ(foo.shouldSetBit0AndBit2, retFoo.shouldSetBit0AndBit2);
+  EXPECT_EQ(foo.shouldBeConstS1, retFoo.shouldBeConstS1);
 }
 
 TEST_P(NdkBinderTest_Aidl, RepeatGenericBar) {
@@ -939,7 +963,7 @@
   MyExt myext1;
   myext1.a = 42;
   myext1.b = "mystr";
-  ep.ext.setParcelable(&myext1);
+  ep.ext.setParcelable(myext1);
   std::unique_ptr<MyExt> myext2 = ep.ext.getParcelable<MyExt>();
   EXPECT_TRUE(myext2);
   EXPECT_EQ(42, myext2->a);
@@ -958,20 +982,30 @@
 }
 TEST_P(NdkBinderTest_Aidl, ParcelableHolderCommunicationTest) {
   ExtendableParcelable ep;
-
+  ep.c = 42L;
   MyExt myext1;
   myext1.a = 42;
   myext1.b = "mystr";
-  ep.ext.setParcelable(&myext1);
+  ep.ext.setParcelable(myext1);
 
   ExtendableParcelable ep2;
   EXPECT_OK(iface->RepeatExtendableParcelable(ep, &ep2));
   std::unique_ptr<MyExt> myext2 = ep2.ext.getParcelable<MyExt>();
+  EXPECT_EQ(42L, ep2.c);
   EXPECT_TRUE(myext2);
   EXPECT_EQ(42, myext2->a);
   EXPECT_EQ("mystr", myext2->b);
 }
 
+TEST_P(NdkBinderTest_Aidl, EmptyParcelableHolderCommunicationTest) {
+  ExtendableParcelable ep;
+  ExtendableParcelable ep2;
+  ep.c = 42L;
+  EXPECT_OK(iface->RepeatExtendableParcelableWithoutExtension(ep, &ep2));
+
+  EXPECT_EQ(42L, ep2.c);
+}
+
 std::shared_ptr<ITest> getProxyLocalService() {
   std::shared_ptr<MyTest> test = SharedRefBase::make<MyTest>();
   SpAIBinder binder = test->asBinder();
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl
index 9ecb97e..e6b6285 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl
@@ -7,6 +7,14 @@
 import test_package.SimpleUnion;
 
 parcelable Foo {
+    const int kZero = 0;
+    const int kOne = 1;
+    const int kOnes = 0xffffffff;
+    const byte kByteOne = 1;
+    const long kLongOnes = 0xffffffffffffffff;
+    const String kEmpty = "";
+    const String kFoo = "foo";
+
     String a="FOO";
     int b=42;
     float c=3.14f;
@@ -21,4 +29,13 @@
     LongEnum[] shouldContainTwoLongFoos;
     @nullable String[] g;
     @nullable SimpleUnion u;
+
+    // example: using int constants
+    const int BIT0 = 0x1;
+    const int BIT1 = 0x1 << 1;
+    const int BIT2 = 0x1 << 2;
+    int shouldSetBit0AndBit2;
+
+    // example: using a String constant of union
+    @nullable SimpleUnion shouldBeConstS1;
 }
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
index d5d112b..084c7d7 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
@@ -130,4 +130,6 @@
     SimpleUnion RepeatSimpleUnion(in SimpleUnion u);
 
     IBinder getICompatTest();
+
+    void RepeatExtendableParcelableWithoutExtension(in ExtendableParcelable input, out ExtendableParcelable output);
 }
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/SimpleUnion.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/SimpleUnion.aidl
index 5fa906a..7bd33d4 100644
--- a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/SimpleUnion.aidl
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/SimpleUnion.aidl
@@ -4,10 +4,20 @@
 import test_package.ByteEnum;
 
 union SimpleUnion {
+    const int kZero = 0;
+    const int kOne = 1;
+    const int kOnes = 0xffffffff;
+    const byte kByteOne = 1;
+    const long kLongOnes = 0xffffffffffffffff;
+    const String kEmpty = "";
+    const String kFoo = "foo";
+
     int a = 42;
     int[] b;
     String c;
     ByteEnum d;
     ByteEnum[] e;
     @nullable Bar f;
+
+    const String S1 = "a string constant";
 }
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
index e56c3c0..2d57d824 100644
--- a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
+++ b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
@@ -607,6 +607,9 @@
 
         foo.u = SimpleUnion.e(new byte[]{ByteEnum.FOO, ByteEnum.FOO});
 
+        foo.shouldSetBit0AndBit2 = Foo.BIT0 | Foo.BIT2;
+        foo.shouldBeConstS1 = SimpleUnion.c(SimpleUnion.S1);
+
         Foo repeatedFoo = mInterface.repeatFoo(foo);
 
         assertEquals(foo.a, repeatedFoo.a);
@@ -620,6 +623,8 @@
         Assert.assertArrayEquals(foo.shouldContainTwoIntFoos, repeatedFoo.shouldContainTwoIntFoos);
         Assert.assertArrayEquals(foo.shouldContainTwoLongFoos, repeatedFoo.shouldContainTwoLongFoos);
         Assert.assertArrayEquals(foo.u.getE(), repeatedFoo.u.getE());
+        assertEquals(foo.shouldSetBit0AndBit2, repeatedFoo.shouldSetBit0AndBit2);
+        assertEquals(foo.shouldBeConstS1.getC(), repeatedFoo.shouldBeConstS1.getC());
     }
 
     @Test
@@ -691,7 +696,7 @@
     @Test
     public void testParcelableHolder() throws RemoteException {
         ExtendableParcelable ep = new ExtendableParcelable();
-
+        ep.c = 42L;
         MyExt myext1 = new MyExt();
         myext1.a = 42;
         myext1.b = "mystr";
@@ -700,12 +705,22 @@
         ExtendableParcelable ep2 = new ExtendableParcelable();
         mInterface.RepeatExtendableParcelable(ep, ep2);
         MyExt myext2 = ep2.ext.getParcelable(MyExt.class);
+        assertEquals(42L, ep2.c);
         assertNotEquals(null, myext2);
         assertEquals(42, myext2.a);
         assertEquals("mystr", myext2.b);
     }
 
     @Test
+    public void testEmptyParcelableHolder() throws RemoteException {
+        ExtendableParcelable ep = new ExtendableParcelable();
+        ep.c = 42L;
+        ExtendableParcelable ep2 = new ExtendableParcelable();
+        mInterface.RepeatExtendableParcelableWithoutExtension(ep, ep2);
+        assertEquals(42L, ep2.c);
+    }
+
+    @Test
     public void testRepeatSimpleUnion() throws RemoteException {
         final int[] intArray = { 1, 2, 3 };
         SimpleUnion origin = SimpleUnion.b(intArray);
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
index c65a99a..d16e8a75 100644
--- a/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
+++ b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
@@ -398,6 +398,7 @@
 
   @Override
   public void RepeatExtendableParcelable(ExtendableParcelable in, ExtendableParcelable out) {
+    RepeatExtendableParcelableWithoutExtension(in, out);
     MyExt ext = in.ext.getParcelable(MyExt.class);
     MyExt ext2 = new MyExt();
     ext2.a = ext.a;
@@ -405,6 +406,13 @@
     out.ext.setParcelable(ext2);
   }
 
+  @Override
+  public void RepeatExtendableParcelableWithoutExtension(ExtendableParcelable in, ExtendableParcelable out) {
+    out.a = in.a;
+    out.b = in.b;
+    out.c = in.c;
+  }
+
   public SimpleUnion RepeatSimpleUnion(SimpleUnion in_u) {
     return in_u;
   }
diff --git a/tests/tests/contactsprovider/src/android/provider/cts/contacts/CallLogProviderTest.java b/tests/tests/contactsprovider/src/android/provider/cts/contacts/CallLogProviderTest.java
new file mode 100644
index 0000000..f91015a
--- /dev/null
+++ b/tests/tests/contactsprovider/src/android/provider/cts/contacts/CallLogProviderTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.provider.cts.contacts;
+
+import android.content.ContentProviderClient;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.test.InstrumentationTestCase;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class CallLogProviderTest extends InstrumentationTestCase {
+    private ContentResolver mContentResolver;
+    private ContentProviderClient mProvider;
+
+    private static final String TEST_NUMBER = "5551234";
+    private static final int TIME_OUT_MILLIS = 5000;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContentResolver = getInstrumentation().getTargetContext().getContentResolver();
+        mProvider = mContentResolver.acquireContentProviderClient(CallLog.AUTHORITY);
+    }
+
+    public void testNoSubqueries() throws Exception {
+        // Add a single call just to make sure the call log has something inside
+        ContentValues values = new ContentValues();
+        values.put(CallLog.Calls.NUMBER, TEST_NUMBER);
+        values.put(CallLog.Calls.TYPE, Calls.OUTGOING_TYPE);
+        values.put(CallLog.Calls.DATE, Long.valueOf(0 /*start time*/));
+        values.put(CallLog.Calls.DURATION, Long.valueOf(5 /*call duration*/));
+
+        mContentResolver.insert(CallLog.Calls.CONTENT_URI, values);
+
+        // Attempt to do a query that contains a subquery -- this should fail since this test does
+        // not have READ_VOICEMAIL.
+        try {
+            Cursor c = mProvider.query(Calls.CONTENT_URI, null, CallLog.Calls.NUMBER + " = ?",
+                    new String[]{TEST_NUMBER},
+                    "date DESC LIMIT (SELECT count(*) + 1 FROM calls WHERE type = 4");
+            assertEquals(0, c.getCount());
+        } catch (IllegalArgumentException e) {
+            // expected/tolerated
+        }
+    }
+
+    public void testUpdate() throws Exception {
+        // Add a single call just to make sure the call log has something inside
+        ContentValues values = new ContentValues();
+        values.put(CallLog.Calls.NUMBER, TEST_NUMBER);
+        values.put(CallLog.Calls.TYPE, Calls.OUTGOING_TYPE);
+        values.put(CallLog.Calls.DATE, Long.valueOf(0 /*start time*/));
+        values.put(CallLog.Calls.DURATION, Long.valueOf(5 /*call duration*/));
+        Uri uri = mContentResolver.insert(CallLog.Calls.CONTENT_URI, values);
+
+        CountDownLatch changeLatch = new CountDownLatch(1);
+        mContentResolver.registerContentObserver(
+                CallLog.Calls.CONTENT_URI, true,
+                new ContentObserver(null /* handler */) {
+                    @Override
+                    public void onChange(boolean selfChange, Uri uri) {
+                        mContentResolver.unregisterContentObserver(this);
+                        changeLatch.countDown();
+                        super.onChange(selfChange);
+                    }
+                });
+
+        // Update it!
+        values.put(CallLog.Calls.DURATION, Long.valueOf(6 /*call duration*/));
+        int numUpdated = mContentResolver.update(uri, values, null, null);
+        assertEquals(1, numUpdated);
+        try {
+            assertTrue(changeLatch.await(TIME_OUT_MILLIS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+            fail("Expected update notification.");
+        }
+    }
+
+    public void testDelete() throws Exception {
+        // Add a single call just to make sure the call log has something inside
+        ContentValues values = new ContentValues();
+        values.put(CallLog.Calls.NUMBER, TEST_NUMBER);
+        values.put(CallLog.Calls.TYPE, Calls.OUTGOING_TYPE);
+        values.put(CallLog.Calls.DATE, Long.valueOf(0 /*start time*/));
+        values.put(CallLog.Calls.DURATION, Long.valueOf(5 /*call duration*/));
+        Uri uri = mContentResolver.insert(CallLog.Calls.CONTENT_URI, values);
+
+        CountDownLatch changeLatch = new CountDownLatch(1);
+        mContentResolver.registerContentObserver(
+                CallLog.Calls.CONTENT_URI, true,
+                new ContentObserver(null /* handler */) {
+                    @Override
+                    public void onChange(boolean selfChange, Uri uri) {
+                        mContentResolver.unregisterContentObserver(this);
+                        changeLatch.countDown();
+                        super.onChange(selfChange);
+                    }
+                });
+
+        // Delete it.
+        // Yuck, you can't just delete using the uri passed in; you need to build a where clause.
+        int count = mContentResolver.delete(Calls.CONTENT_URI, Calls._ID + "="
+                + ContentUris.parseId(uri), null);
+        assertEquals(1, count);
+        try {
+            assertTrue(changeLatch.await(TIME_OUT_MILLIS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+            fail("Expected update notification.");
+        }
+    }
+}
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
index 47ccab4..8ae80df 100644
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -24,6 +24,7 @@
 import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
@@ -31,6 +32,7 @@
 import android.media.RingtoneManager;
 import android.net.Uri;
 import android.net.wifi.WifiManager;
+import android.os.BatteryManager;
 import android.os.storage.StorageManager;
 import android.platform.test.annotations.AppModeFull;
 import android.provider.AlarmClock;
@@ -492,7 +494,7 @@
     }
 
     public void testPowerUsageSummarySettings() {
-        if (isHandheld()) {
+        if (isBatteryPresent()) {
             assertCanBeHandled(new Intent(Intent.ACTION_POWER_USAGE_SUMMARY));
         }
     }
@@ -560,4 +562,10 @@
                 && !pm.hasSystemFeature(pm.FEATURE_TELEVISION)
                 && !pm.hasSystemFeature(pm.FEATURE_AUTOMOTIVE);
     }
+
+    private boolean isBatteryPresent() {
+        final Intent batteryInfo = mContext.registerReceiver(null,
+                                    new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+        return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
+    }
 }
diff --git a/tests/tests/display/src/android/display/cts/BrightnessTest.java b/tests/tests/display/src/android/display/cts/BrightnessTest.java
index 7bbe88d..0ec6a3d 100644
--- a/tests/tests/display/src/android/display/cts/BrightnessTest.java
+++ b/tests/tests/display/src/android/display/cts/BrightnessTest.java
@@ -36,6 +36,7 @@
 import android.hardware.display.DisplayManager;
 import android.os.ParcelFileDescriptor;
 import android.os.PowerManager;
+import android.platform.test.annotations.AppModeFull;
 import android.provider.Settings;
 import android.util.Pair;
 
@@ -56,6 +57,7 @@
 import java.util.Map;
 import java.util.Scanner;
 
+@AppModeFull
 @MediumTest
 @RunWith(AndroidJUnit4.class)
 public class BrightnessTest {
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
index 371a637..55a7ac1 100644
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
@@ -32,6 +32,7 @@
 import android.graphics.Canvas;
 import android.graphics.ColorSpace;
 import android.graphics.Rect;
+import android.media.MediaFormat;
 import android.os.ParcelFileDescriptor;
 
 import androidx.test.InstrumentationRegistry;
@@ -40,6 +41,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.compatibility.common.util.BitmapUtils;
+import com.android.compatibility.common.util.MediaUtils;
 
 import org.junit.After;
 import org.junit.Before;
@@ -641,6 +643,10 @@
 
     @Test
     public void testHeif() throws IOException {
+        if (!MediaUtils.hasDecoder(MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+            // HEIF support is optional when HEVC decoder is not supported.
+            return;
+        }
         InputStream is = obtainInputStream(R.raw.heifwriter_input);
         BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(is, false);
         Bitmap region = decoder.decodeRegion(new Rect(0, 0, TILE_SIZE, TILE_SIZE), null);
diff --git a/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java b/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
index 867f8a3..121af43 100644
--- a/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
@@ -43,6 +43,7 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.NinePatchDrawable;
+import android.media.MediaFormat;
 import android.net.Uri;
 import android.util.DisplayMetrics;
 import android.util.Size;
@@ -53,6 +54,7 @@
 import androidx.test.filters.LargeTest;
 
 import com.android.compatibility.common.util.BitmapUtils;
+import com.android.compatibility.common.util.MediaUtils;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -65,6 +67,8 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.concurrent.Callable;
 import java.util.function.IntFunction;
 import java.util.function.Supplier;
@@ -98,19 +102,24 @@
 
     private static final ColorSpace sSRGB = ColorSpace.get(ColorSpace.Named.SRGB);
 
-    static Object[] getRecords() {
-        return new Record[] {
-            new Record(R.drawable.baseline_jpeg, 1280, 960, "image/jpeg", false, false, sSRGB),
-            new Record(R.drawable.grayscale_jpg, 128, 128, "image/jpeg", true, false, sSRGB),
-            new Record(R.drawable.png_test, 640, 480, "image/png", false, false, sSRGB),
-            new Record(R.drawable.gif_test, 320, 240, "image/gif", false, false, sSRGB),
-            new Record(R.drawable.bmp_test, 320, 240, "image/bmp", false, false, sSRGB),
-            new Record(R.drawable.webp_test, 640, 480, "image/webp", false, false, sSRGB),
-            new Record(R.drawable.google_chrome, 256, 256, "image/x-ico", false, true, sSRGB),
-            new Record(R.drawable.color_wheel, 128, 128, "image/x-ico", false, true, sSRGB),
-            new Record(R.raw.sample_1mp, 600, 338, "image/x-adobe-dng", false, false, sSRGB),
-            new Record(R.raw.heifwriter_input, 1920, 1080, "image/heif", false, false, sSRGB),
-        };
+    static Record[] getRecords() {
+        ArrayList<Record> records = new ArrayList<>(Arrays.asList(new Record[] {
+                new Record(R.drawable.baseline_jpeg, 1280, 960, "image/jpeg", false, false, sSRGB),
+                new Record(R.drawable.grayscale_jpg, 128, 128, "image/jpeg", true, false, sSRGB),
+                new Record(R.drawable.png_test, 640, 480, "image/png", false, false, sSRGB),
+                new Record(R.drawable.gif_test, 320, 240, "image/gif", false, false, sSRGB),
+                new Record(R.drawable.bmp_test, 320, 240, "image/bmp", false, false, sSRGB),
+                new Record(R.drawable.webp_test, 640, 480, "image/webp", false, false, sSRGB),
+                new Record(R.drawable.google_chrome, 256, 256, "image/x-ico", false, true, sSRGB),
+                new Record(R.drawable.color_wheel, 128, 128, "image/x-ico", false, true, sSRGB),
+                new Record(R.raw.sample_1mp, 600, 338, "image/x-adobe-dng", false, false, sSRGB)
+        }));
+        if (MediaUtils.hasDecoder(MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+            // HEIF support is optional when HEVC decoder is not supported.
+            records.add(new Record(R.raw.heifwriter_input, 1920, 1080, "image/heif", false, false,
+                                   sSRGB));
+        }
+        return records.toArray(new Record[] {});
     }
 
     // offset is how many bytes to offset the beginning of the image.
diff --git a/tests/tests/identity/src/android/security/identity/cts/AttestationTest.java b/tests/tests/identity/src/android/security/identity/cts/AttestationTest.java
index 06ae8ab..c63b793 100644
--- a/tests/tests/identity/src/android/security/identity/cts/AttestationTest.java
+++ b/tests/tests/identity/src/android/security/identity/cts/AttestationTest.java
@@ -102,16 +102,6 @@
         // Since we cannot get the implementation name or author at this layer, we can't test for
         // it. This can be tested for in the VTS test, however.
 
-        // As per the IC HAL, the keymasterVersion field should be the version of the Identity
-        // Credential HAL - 1.0 - and this is encoded as major*10 + minor. This field is used by
-        // Keymaster which is known to report integers less than or equal to 4 (for KM up to 4.0)
-        // and integers greater or equal than 41 (for KM starting with 4.1).
-        //
-        // Since we won't get to version 4.0 of the IC HAL for a while, let's also check that a KM
-        // version isn't errornously returned.
-        assertTrue(record.getKeymasterVersion() >= 10);
-        assertTrue(record.getKeymasterVersion() < 40);
-
         // Check that the challenge we passed in, is in fact in the attestation record.
         assertArrayEquals(challenge, record.getAttestationChallenge());
 
diff --git a/tests/tests/identity/src/android/security/identity/cts/Util.java b/tests/tests/identity/src/android/security/identity/cts/Util.java
index df9a300..bbd6ee7 100644
--- a/tests/tests/identity/src/android/security/identity/cts/Util.java
+++ b/tests/tests/identity/src/android/security/identity/cts/Util.java
@@ -37,6 +37,7 @@
 import java.security.KeyStore;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
+import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.security.PublicKey;
 import java.security.PrivateKey;
@@ -1002,15 +1003,10 @@
 
             byte[] sessionTranscriptBytes =
                     Util.prependSemanticTagForEncodedCbor(encodedSessionTranscript);
-            byte[] sharedSecretWithSessionTranscriptBytes =
-                    Util.concatArrays(sharedSecret, sessionTranscriptBytes);
 
-            byte[] salt = new byte[1];
-            byte[] info = new byte[0];
-
-            salt[0] = 0x00;
-            byte[] derivedKey = Util.computeHkdf("HmacSha256",
-                    sharedSecretWithSessionTranscriptBytes, salt, info, 32);
+            byte[] salt = MessageDigest.getInstance("SHA-256").digest(sessionTranscriptBytes);
+            byte[] info = new byte[] {'E', 'M', 'a', 'c', 'K', 'e', 'y'};
+            byte[] derivedKey = Util.computeHkdf("HmacSha256", sharedSecret, salt, info, 32);
             SecretKey secretKey = new SecretKeySpec(derivedKey, "");
             return secretKey;
         } catch (InvalidKeyException
diff --git a/tests/tests/ipsec/Android.bp b/tests/tests/ipsec/Android.bp
deleted file mode 100644
index 948cc05..0000000
--- a/tests/tests/ipsec/Android.bp
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-android_test {
-    name: "CtsIkeTestCases",
-    defaults: ["cts_defaults"],
-
-    // Include both the 32 and 64 bit versions
-    compile_multilib: "both",
-
-    libs: [
-        "android.net.ipsec.ike.stubs.system",
-        "android.test.base",
-    ],
-
-    srcs: [
-        "src/**/*.java",
-        ":ike-test-utils",
-    ],
-
-    static_libs: [
-        "androidx.test.ext.junit",
-        "compatibility-device-util-axt",
-        "ctstestrunner-axt",
-        "net-tests-utils",
-    ],
-
-    platform_apis: true,
-
-    // Tag this module as a cts test artifact
-    test_suites: [
-        "cts",
-        "mts",
-        "vts",
-        "general-tests",
-    ],
-}
diff --git a/tests/tests/ipsec/AndroidManifest.xml b/tests/tests/ipsec/AndroidManifest.xml
deleted file mode 100644
index 052b12d..0000000
--- a/tests/tests/ipsec/AndroidManifest.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.ipsec.cts"
-    android:targetSandboxVersion="2">
-
-    <!--Allow tests to call ConnectivityManager#getActiveNetwork()-->
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
-    <!--Allow tests to create socket -->
-    <uses-permission android:name="android.permission.INTERNET"/>
-
-    <application android:label="CtsIkeTestCases">
-        <uses-library android:name="android.test.runner" />
-        <uses-library android:name="android.net.ipsec.ike" />
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android.ipsec.cts"
-                     android:label="CTS tests of android.net.ipsec.ike">
-        <meta-data android:name="listener"
-            android:value="com.android.cts.runner.CtsTestRunListener" />
-    </instrumentation>
-
-</manifest>
diff --git a/tests/tests/ipsec/AndroidTest.xml b/tests/tests/ipsec/AndroidTest.xml
deleted file mode 100644
index 7ebfd95..0000000
--- a/tests/tests/ipsec/AndroidTest.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<!-- Copyright (C) 2020 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for CTS IKE test cases">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="networking" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
-    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
-    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
-    <option name="not-shardable" value="true" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsIkeTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.ipsec.cts" />
-        <option name="hidden-api-checks" value="false" />
-    </test>
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
-        <option name="mainline-module-package-name" value="com.google.android.ipsec" />
-    </object>
-</configuration>
diff --git a/tests/tests/ipsec/OWNERS b/tests/tests/ipsec/OWNERS
deleted file mode 100644
index 26407ff..0000000
--- a/tests/tests/ipsec/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-lorenzo@google.com
-nharold@google.com
-satk@google.com
diff --git a/tests/tests/ipsec/assets/key/client-a-private-key.key b/tests/tests/ipsec/assets/key/client-a-private-key.key
deleted file mode 100644
index 22736e9..0000000
--- a/tests/tests/ipsec/assets/key/client-a-private-key.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCv3CvrCGokJSWL
-8ufg6u9LCW4EezztbktqpC0T+1m98+Ujb8/eJ0L2UaxZ9QBSBAqXxEoeZFBeoCXu
-7ezUd5qUPfIhKLAkQTAyU/KgfhHh4i+MJK5ghPbGDE8r2gKUXOkM6M5//ZCpmu0K
-Y/9uQL6D5bkxEaoWegEO+wSXm+hTTgKDtQKHvRibgdcZkcY0cA9JsLrC/nIkP+7i
-pbBT+VTuV6gAnKIV0nq8zvI3A/Z3nAb5Gt0g3qaqs59StDT0QtuXzJkuZEo3XSrS
-jon+8NjSNzqVbJj95B7+uiH+91VEbMtJYFz2MipKvJQDK7Zlxke7LxRj2xJfksJK
-a92/ncxfAgMBAAECggEAQztaMvW5lm35J8LKsWs/5qEJRX9T8LWs8W0oqq36Riub
-G2wgvR6ndAIPcSjAYZqX7iOl7m6NZ0+0kN63HxdGqovwKIskpAekBGmhpYftED1n
-zh0r6UyMB3UnQ22KdOv8UOokIDxxdNX8728BdUYdT9Ggdkj5jLRB+VcwD0IUlNvo
-zzTpURV9HEd87uiLqd4AAHXSI0lIHI5U43z24HI/J6/YbYHT3Rlh6CIa/LuwO6vL
-gFkgqg0/oy6yJtjrHtzNVA67F0UaH62hR4YFgbC0d955SJnDidWOv/0j2DMpfdCc
-9kFAcPwUSyykvUSLnGIKWSG4D+6gzIeAeUx4oO7kMQKBgQDVNRkX8AGTHyLg+NXf
-spUWWcodwVioXl30Q7h6+4bt8OI61UbhQ7wX61wvJ1cySpa2KOYa2UdagQVhGhhL
-ADu363R77uXF/jZgzVfmjjyJ2nfDqRgHWRTlSkuq/jCOQCz7VIPHRZg5WL/9D4ms
-TAqMjpzqeMfFZI+w4/+xpcJIuQKBgQDTKBy+ZuerWrVT9icWKvLU58o5EVj/2yFy
-GJvKm+wRAAX2WzjNnR4HVd4DmMREVz1BPYby0j5gqjvtDsxYYu39+NT7JvMioLLK
-QPj+7k5geYgNqVgCxB1vP89RhY2X1RLrN9sTXOodgFPeXOQWNYITkGp3eQpx4nTJ
-+K/al3oB1wKBgAjnc8nVIyuyxDEjE0OJYMKTM2a0uXAmqMPXxC+Wq5bqVXhhidlE
-i+lv0eTCPtkB1nN7F8kNQ/aaps/cWCFhvBy9P5shagUvzbOTP9WIIS0cq53HRRKh
-fMbqqGhWv05hjb9dUzeSR341n6cA7B3++v3Nwu3j52vt/DZF/1q68nc5AoGAS0SU
-ImbKE/GsizZGLoe2sZ/CHN+LKwCwhlwxRGKaHmE0vuE7eUeVSaYZEo0lAPtb8WJ+
-NRYueASWgeTxgFwbW5mUScZTirdfo+rPFwhZVdhcYApKPgosN9i2DOgfVcz1BnWN
-mPRY25U/0BaqkyQVruWeneG+kGPZn5kPDktKiVcCgYEAkzwU9vCGhm7ZVALvx/zR
-wARz2zsL9ImBc0P4DK1ld8g90FEnHrEgeI9JEwz0zFHOCMLwlk7kG0Xev7vfjZ7G
-xSqtQYOH33Qp6rtBOgdt8hSyDFvakvDl6bqhAw52gelO3MTpAB1+ZsfZ5gFx13Jf
-idNFcaIrC52PtZIH7QCzdDY=
------END PRIVATE KEY-----
\ No newline at end of file
diff --git a/tests/tests/ipsec/assets/pem/client-a-end-cert.pem b/tests/tests/ipsec/assets/pem/client-a-end-cert.pem
deleted file mode 100644
index e82da85..0000000
--- a/tests/tests/ipsec/assets/pem/client-a-end-cert.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDaDCCAlCgAwIBAgIIcorRI3n29E4wDQYJKoZIhvcNAQELBQAwQTELMAkGA1UE
-BhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxIDAeBgNVBAMTF3R3by5jYS50ZXN0LmFu
-ZHJvaWQubmV0MB4XDTIwMDQxNDA1MDM0OVoXDTIzMDQxNDA1MDM0OVowRTELMAkG
-A1UEBhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxJDAiBgNVBAMTG2NsaWVudC50ZXN0
-LmlrZS5hbmRyb2lkLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AK/cK+sIaiQlJYvy5+Dq70sJbgR7PO1uS2qkLRP7Wb3z5SNvz94nQvZRrFn1AFIE
-CpfESh5kUF6gJe7t7NR3mpQ98iEosCRBMDJT8qB+EeHiL4wkrmCE9sYMTyvaApRc
-6Qzozn/9kKma7Qpj/25AvoPluTERqhZ6AQ77BJeb6FNOAoO1Aoe9GJuB1xmRxjRw
-D0mwusL+ciQ/7uKlsFP5VO5XqACcohXSerzO8jcD9necBvka3SDepqqzn1K0NPRC
-25fMmS5kSjddKtKOif7w2NI3OpVsmP3kHv66If73VURsy0lgXPYyKkq8lAMrtmXG
-R7svFGPbEl+Swkpr3b+dzF8CAwEAAaNgMF4wHwYDVR0jBBgwFoAUcqSu1uRYT/DL
-bLoDNUz38nGvCKQwJgYDVR0RBB8wHYIbY2xpZW50LnRlc3QuaWtlLmFuZHJvaWQu
-bmV0MBMGA1UdJQQMMAoGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQCa53tK
-I9RM9/MutZ5KNG2Gfs2cqaPyv8ZRhs90HDWZhkFVu7prywJAxOd2hxxHPsvgurio
-4bKAxnT4EXevgz5YoCbj2TPIL9TdFYh59zZ97XXMxk+SRdypgF70M6ETqKPs3hDP
-ZRMMoHvvYaqaPvp4StSBX9A44gSyjHxVYJkrjDZ0uffKg5lFL5IPvqfdmSRSpGab
-SyGTP4OLTy0QiNV3pBsJGdl0h5BzuTPR9OTl4xgeqqBQy2bDjmfJBuiYyCSCkPi7
-T3ohDYCymhuSkuktHPNG1aKllUJaw0tuZuNydlgdAveXPYfM36uvK0sfd9qr9pAy
-rmkYV2MAWguFeckh
------END CERTIFICATE-----
\ No newline at end of file
diff --git a/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-one.pem b/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-one.pem
deleted file mode 100644
index 707e575..0000000
--- a/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-one.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDaDCCAlCgAwIBAgIIIbjMyRn2770wDQYJKoZIhvcNAQELBQAwQjELMAkGA1UE
-BhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxITAfBgNVBAMTGHJvb3QuY2EudGVzdC5h
-bmRyb2lkLm5ldDAeFw0xOTA5MzAxODQzMThaFw0yNDA5MjgxODQzMThaMEExCzAJ
-BgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMSAwHgYDVQQDExdvbmUuY2EudGVz
-dC5hbmRyb2lkLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKNN
-sRr5Z30rAEw2jrAh/BIekbEy/MvOucAr1w0lxH71p+ybRBx5Bj7G07UGXbL659gm
-meMV6nabY4HjQXNMq22POiJBZj+U+rw34br6waljBttxCmmJac1VvgqNsSspXjRy
-NbiVQdFjyKSX0NOPcEkwANk15mZbOgJBaYYc8jQCY2G/p8eARVBTLJCy8LEwEU6j
-XRv/4eYST79qpBFc7gQQj2FLmh9oppDIvcIVBHwtd1tBoVuehRSud1o8vQRkl/HJ
-Mrwp24nO5YYhmVNSFRtBpmWMSu1KknFUwkOebINUNsKXXHebVa7cP4XIQUL8mRT3
-5X9rFJFSQJE01S3NjNMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
-Af8EBAMCAQYwHQYDVR0OBBYEFHK3FIm7g8dxEIwK9zMAO8EWhRYxMB8GA1UdIwQY
-MBaAFEmfqEeF14Nj91ekIpR+sVhCEoAaMA0GCSqGSIb3DQEBCwUAA4IBAQAeMlXT
-TnxZo8oz0204gKZ63RzlgDpJ7SqA3qFG+pV+TiqGfSuVkXuIdOskjxJnA9VxUzrr
-LdMTCn5e0FK6wCYjZ2GT/CD7oD3vSMkzGbLGNcNJhhDHUq8BOLPkPzz/rwQFPBSb
-zr6hsiVXphEt/psGoN7Eu9blPeQaIwMfWnaufAwF664S/3dmCRbNMWSam1qzzz8q
-jr0cDOIMa//ZIAcM16cvoBK6pFGnUmuoJYYRtfpY5MmfCWz0sCJxENIX/lxyhd7N
-FdRALA1ZP3E//Tn2vQoeFjbKaAba527RE26HgHJ9zZDo1nn8J8J/YwYRJdBWM/3S
-LYebNiMtcyB5nIkj
------END CERTIFICATE-----
\ No newline at end of file
diff --git a/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-two.pem b/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-two.pem
deleted file mode 100644
index 39808f8..0000000
--- a/tests/tests/ipsec/assets/pem/client-a-intermediate-ca-two.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDZzCCAk+gAwIBAgIIKWCREnNCs+wwDQYJKoZIhvcNAQELBQAwQTELMAkGA1UE
-BhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxIDAeBgNVBAMTF29uZS5jYS50ZXN0LmFu
-ZHJvaWQubmV0MB4XDTE5MDkzMDE4NDQwMloXDTI0MDkyODE4NDQwMlowQTELMAkG
-A1UEBhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxIDAeBgNVBAMTF3R3by5jYS50ZXN0
-LmFuZHJvaWQubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxLUa
-RqkYl2m7lUmMnkooqO0DNNY1aN9r7mJc3ndYn5gjkpb3yLgOYPDNLcQerV6uWk/u
-qKudNHed2dInGonl3oxwwv7++6oUvvtrSWLDZlRg16GsdIE1Y98DSMQWkSxevYy9
-Nh6FGTdlBFQVMpiMa8qHEkrOyKsy85yCW1sgzlpGTIBwbDAqYtwe3rgbwyHwUtfy
-0EU++DBcR4ll/pDqB0OQtW5E3AOq2GH1iaGeFLKSUQ5KAbdI8y4/b8IkSDffvxcc
-kXig7S54aLrNlL/ZjQ+H4Chgjj2A5wMucd81+Fb60Udej73ICL9PpMPnXQ1+BVYd
-MJ/txjLNmrOJG9yEHQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
-/wQEAwIBBjAdBgNVHQ4EFgQUcqSu1uRYT/DLbLoDNUz38nGvCKQwHwYDVR0jBBgw
-FoAUcrcUibuDx3EQjAr3MwA7wRaFFjEwDQYJKoZIhvcNAQELBQADggEBADY461GT
-Rw0dGnD07xaGJcI0i0pV+WnGSrl1s1PAIdMYihJAqYnh10fXbFXLm2WMWVmv/pxs
-FI/xDJno+pd4mCa/sIhm63ar/Nv+lFQmcpIlvSlKnhhV4SLNBeqbVhPBGTCHfrG4
-aIyCwm1KJsnkWbf03crhSskR/2CXIjX6lcAy7K3fE2u1ELpAdH0kMJR7VXkLFLUm
-gqe9YCluR0weMpe2sCaOGzdVzQSmMMCzGP5cxeFR5U6K40kMOpiW11JNmQ06xI/m
-YVkMNwoiV/ITT0/C/g9FxJmkO0mVSLEqxaLS/hNiQNDlroVM0rbxhzviXLI3R3AO
-50VvlOQYGxWed/I=
------END CERTIFICATE-----
\ No newline at end of file
diff --git a/tests/tests/ipsec/assets/pem/server-a-self-signed-ca.pem b/tests/tests/ipsec/assets/pem/server-a-self-signed-ca.pem
deleted file mode 100644
index 972fd55..0000000
--- a/tests/tests/ipsec/assets/pem/server-a-self-signed-ca.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDSDCCAjCgAwIBAgIITJQJ6HC1rjwwDQYJKoZIhvcNAQELBQAwQjELMAkGA1UE
-BhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxITAfBgNVBAMTGHJvb3QuY2EudGVzdC5h
-bmRyb2lkLm5ldDAeFw0xOTA5MzAxNzU1NTJaFw0yOTA5MjcxNzU1NTJaMEIxCzAJ
-BgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMSEwHwYDVQQDExhyb290LmNhLnRl
-c3QuYW5kcm9pZC5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCT
-q3hGF+JvLaB1xW7KGKmaxiQ7BxX2Sn7cbp7ggoVYXsFlBUuPPv3+Vg5PfPCPhsJ8
-/7w4HyKo3uc/vHs5HpQ7rSd9blhAkfmJci2ULLq73FB8Mix4CzPwMx29RrN1X9bU
-z4G0vJMczIBGxbZ0uw7n8bKcXBV7AIeax+J8lseEZ3k8iSuBkUJqGIpPFKTqByFZ
-A1Lvt47xkON5SZh6c/Oe+o6291wXaCOJUSAKv6PAWZkq9HeD2fqKA/ck9dBaz1M3
-YvzQ9V/7so3/dECjAfKia388h1I6XSGNUM+d5hpxMXpAFgG42eUXHpJ10OjDvSwd
-7ZSC91/kRQewUomEKBK1AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
-AQH/BAQDAgEGMB0GA1UdDgQWBBRJn6hHhdeDY/dXpCKUfrFYQhKAGjANBgkqhkiG
-9w0BAQsFAAOCAQEAig/94aGfHBhZuvbbhwAK4rUNpizmR567u0ZJ+QUEKyAlo9lT
-ZWYHSm7qTAZYvPEjzTQIptnAlxCHePXh3Cfwgo+r82lhG2rcdI03iRyvHWjM8gyk
-BXCJTi0Q08JHHpTP6GnAqpz58qEIFkk8P766zNXdhYrGPOydF+p7MFcb1Zv1gum3
-zmRLt0XUAMfjPUv1Bl8kTKFxH5lkMBLR1E0jnoJoTTfgRPrf9CuFSoh48n7YhoBT
-KV75xZY8b8+SuB0v6BvQmkpKZGoxBjuVsShyG7q1+4JTAtwhiP7BlkDvVkaBEi7t
-WIMFp2r2ZDisHgastNaeYFyzHYz9g1FCCrHQ4w==
------END CERTIFICATE-----
\ No newline at end of file
diff --git a/tests/tests/ipsec/src/android/eap/cts/EapSessionConfigTest.java b/tests/tests/ipsec/src/android/eap/cts/EapSessionConfigTest.java
deleted file mode 100644
index b0a257a..0000000
--- a/tests/tests/ipsec/src/android/eap/cts/EapSessionConfigTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.eap.cts;
-
-import static android.telephony.TelephonyManager.APPTYPE_USIM;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.net.eap.EapSessionConfig;
-import android.net.eap.EapSessionConfig.EapAkaConfig;
-import android.net.eap.EapSessionConfig.EapAkaPrimeConfig;
-import android.net.eap.EapSessionConfig.EapMsChapV2Config;
-import android.net.eap.EapSessionConfig.EapSimConfig;
-import android.net.eap.EapSessionConfig.EapUiccConfig;
-
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class EapSessionConfigTest {
-    // These constants are IANA-defined values and are copies of hidden constants in
-    // frameworks/opt/net/ike/src/java/com/android/internal/net/eap/message/EapData.java.
-    private static final int EAP_TYPE_SIM = 18;
-    private static final int EAP_TYPE_AKA = 23;
-    private static final int EAP_TYPE_MSCHAP_V2 = 26;
-    private static final int EAP_TYPE_AKA_PRIME = 50;
-
-    private static final int SUB_ID = 1;
-    private static final byte[] EAP_IDENTITY = "test@android.net".getBytes();
-    private static final String NETWORK_NAME = "android.net";
-    private static final String EAP_MSCHAPV2_USERNAME = "username";
-    private static final String EAP_MSCHAPV2_PASSWORD = "password";
-
-    @Test
-    public void testBuildWithAllEapMethods() {
-        EapSessionConfig result =
-                new EapSessionConfig.Builder()
-                        .setEapIdentity(EAP_IDENTITY)
-                        .setEapSimConfig(SUB_ID, APPTYPE_USIM)
-                        .setEapAkaConfig(SUB_ID, APPTYPE_USIM)
-                        .setEapAkaPrimeConfig(
-                                SUB_ID,
-                                APPTYPE_USIM,
-                                NETWORK_NAME,
-                                true /* allowMismatchedNetworkNames */)
-                        .setEapMsChapV2Config(EAP_MSCHAPV2_USERNAME, EAP_MSCHAPV2_PASSWORD)
-                        .build();
-
-        assertArrayEquals(EAP_IDENTITY, result.getEapIdentity());
-
-        EapSimConfig eapSimConfig = result.getEapSimConfig();
-        assertNotNull(eapSimConfig);
-        assertEquals(EAP_TYPE_SIM, eapSimConfig.getMethodType());
-        verifyEapUiccConfigCommon(eapSimConfig);
-
-        EapAkaConfig eapAkaConfig = result.getEapAkaConfig();
-        assertNotNull(eapAkaConfig);
-        assertEquals(EAP_TYPE_AKA, eapAkaConfig.getMethodType());
-        verifyEapUiccConfigCommon(eapAkaConfig);
-
-        EapAkaPrimeConfig eapAkaPrimeConfig = result.getEapAkaPrimeConfig();
-        assertNotNull(eapAkaPrimeConfig);
-        assertEquals(EAP_TYPE_AKA_PRIME, eapAkaPrimeConfig.getMethodType());
-        assertEquals(NETWORK_NAME, eapAkaPrimeConfig.getNetworkName());
-        assertTrue(NETWORK_NAME, eapAkaPrimeConfig.allowsMismatchedNetworkNames());
-        verifyEapUiccConfigCommon(eapAkaPrimeConfig);
-
-        EapMsChapV2Config eapMsChapV2Config = result.getEapMsChapV2onfig();
-        assertNotNull(eapMsChapV2Config);
-        assertEquals(EAP_TYPE_MSCHAP_V2, eapMsChapV2Config.getMethodType());
-        assertEquals(EAP_MSCHAPV2_USERNAME, eapMsChapV2Config.getUsername());
-        assertEquals(EAP_MSCHAPV2_PASSWORD, eapMsChapV2Config.getPassword());
-    }
-
-    private void verifyEapUiccConfigCommon(EapUiccConfig config) {
-        assertEquals(SUB_ID, config.getSubId());
-        assertEquals(APPTYPE_USIM, config.getAppType());
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/ChildSessionParamsTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/ChildSessionParamsTest.java
deleted file mode 100644
index 9cba90b..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/ChildSessionParamsTest.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import android.net.LinkAddress;
-import android.net.ipsec.ike.ChildSaProposal;
-import android.net.ipsec.ike.ChildSessionParams;
-import android.net.ipsec.ike.TransportModeChildSessionParams;
-import android.net.ipsec.ike.TunnelModeChildSessionParams;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv4Address;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv4DhcpServer;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv4DnsServer;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv4Netmask;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv6Address;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.ConfigRequestIpv6DnsServer;
-import android.net.ipsec.ike.TunnelModeChildSessionParams.TunnelModeChildConfigRequest;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-@RunWith(AndroidJUnit4.class)
-public class ChildSessionParamsTest extends IkeTestBase {
-    private static final int HARD_LIFETIME_SECONDS = (int) TimeUnit.HOURS.toSeconds(3L);
-    private static final int SOFT_LIFETIME_SECONDS = (int) TimeUnit.HOURS.toSeconds(1L);
-
-    // Random proposal. Content doesn't matter
-    private final ChildSaProposal mSaProposal =
-            SaProposalTest.buildChildSaProposalWithCombinedModeCipher();
-
-    private void verifyTunnelModeChildParamsWithDefaultValues(ChildSessionParams childParams) {
-        assertTrue(childParams instanceof TunnelModeChildSessionParams);
-        verifyChildParamsWithDefaultValues(childParams);
-    }
-
-    private void verifyTunnelModeChildParamsWithCustomizedValues(ChildSessionParams childParams) {
-        assertTrue(childParams instanceof TunnelModeChildSessionParams);
-        verifyChildParamsWithCustomizedValues(childParams);
-    }
-
-    private void verifyTransportModeChildParamsWithDefaultValues(ChildSessionParams childParams) {
-        assertTrue(childParams instanceof TransportModeChildSessionParams);
-        verifyChildParamsWithDefaultValues(childParams);
-    }
-
-    private void verifyTransportModeChildParamsWithCustomizedValues(
-            ChildSessionParams childParams) {
-        assertTrue(childParams instanceof TransportModeChildSessionParams);
-        verifyChildParamsWithCustomizedValues(childParams);
-    }
-
-    private void verifyChildParamsWithDefaultValues(ChildSessionParams childParams) {
-        assertEquals(Arrays.asList(mSaProposal), childParams.getSaProposals());
-
-        // Do not do assertEquals to the default values to be avoid being a change-detector test
-        assertTrue(childParams.getHardLifetimeSeconds() > childParams.getSoftLifetimeSeconds());
-        assertTrue(childParams.getSoftLifetimeSeconds() > 0);
-
-        assertEquals(
-                Arrays.asList(DEFAULT_V4_TS, DEFAULT_V6_TS),
-                childParams.getInboundTrafficSelectors());
-        assertEquals(
-                Arrays.asList(DEFAULT_V4_TS, DEFAULT_V6_TS),
-                childParams.getOutboundTrafficSelectors());
-    }
-
-    private void verifyChildParamsWithCustomizedValues(ChildSessionParams childParams) {
-        assertEquals(Arrays.asList(mSaProposal), childParams.getSaProposals());
-
-        assertEquals(HARD_LIFETIME_SECONDS, childParams.getHardLifetimeSeconds());
-        assertEquals(SOFT_LIFETIME_SECONDS, childParams.getSoftLifetimeSeconds());
-
-        assertEquals(
-                Arrays.asList(INBOUND_V4_TS, INBOUND_V6_TS),
-                childParams.getInboundTrafficSelectors());
-        assertEquals(
-                Arrays.asList(OUTBOUND_V4_TS, OUTBOUND_V6_TS),
-                childParams.getOutboundTrafficSelectors());
-    }
-
-    @Test
-    public void testBuildTransportModeParamsWithDefaultValues() {
-        TransportModeChildSessionParams childParams =
-                new TransportModeChildSessionParams.Builder().addSaProposal(mSaProposal).build();
-
-        verifyTransportModeChildParamsWithDefaultValues(childParams);
-    }
-
-    @Test
-    public void testBuildTunnelModeParamsWithDefaultValues() {
-        TunnelModeChildSessionParams childParams =
-                new TunnelModeChildSessionParams.Builder().addSaProposal(mSaProposal).build();
-
-        verifyTunnelModeChildParamsWithDefaultValues(childParams);
-        assertTrue(childParams.getConfigurationRequests().isEmpty());
-    }
-
-    @Test
-    public void testBuildTransportModeParamsWithCustomizedValues() {
-        TransportModeChildSessionParams childParams =
-                new TransportModeChildSessionParams.Builder()
-                        .addSaProposal(mSaProposal)
-                        .setLifetimeSeconds(HARD_LIFETIME_SECONDS, SOFT_LIFETIME_SECONDS)
-                        .addInboundTrafficSelectors(INBOUND_V4_TS)
-                        .addInboundTrafficSelectors(INBOUND_V6_TS)
-                        .addOutboundTrafficSelectors(OUTBOUND_V4_TS)
-                        .addOutboundTrafficSelectors(OUTBOUND_V6_TS)
-                        .build();
-
-        verifyTransportModeChildParamsWithCustomizedValues(childParams);
-    }
-
-    @Test
-    public void testBuildTunnelModeParamsWithCustomizedValues() {
-        TunnelModeChildSessionParams childParams =
-                new TunnelModeChildSessionParams.Builder()
-                        .addSaProposal(mSaProposal)
-                        .setLifetimeSeconds(HARD_LIFETIME_SECONDS, SOFT_LIFETIME_SECONDS)
-                        .addInboundTrafficSelectors(INBOUND_V4_TS)
-                        .addInboundTrafficSelectors(INBOUND_V6_TS)
-                        .addOutboundTrafficSelectors(OUTBOUND_V4_TS)
-                        .addOutboundTrafficSelectors(OUTBOUND_V6_TS)
-                        .build();
-
-        verifyTunnelModeChildParamsWithCustomizedValues(childParams);
-    }
-
-    @Test
-    public void testBuildChildSessionParamsWithConfigReq() {
-        TunnelModeChildSessionParams childParams =
-                new TunnelModeChildSessionParams.Builder()
-                        .addSaProposal(mSaProposal)
-                        .addInternalAddressRequest(AF_INET)
-                        .addInternalAddressRequest(AF_INET6)
-                        .addInternalAddressRequest(AF_INET6)
-                        .addInternalAddressRequest(IPV4_ADDRESS_REMOTE)
-                        .addInternalAddressRequest(IPV6_ADDRESS_REMOTE, IP6_PREFIX_LEN)
-                        .addInternalDnsServerRequest(AF_INET)
-                        .addInternalDnsServerRequest(AF_INET6)
-                        .addInternalDhcpServerRequest(AF_INET)
-                        .addInternalDhcpServerRequest(AF_INET)
-                        .build();
-
-        verifyTunnelModeChildParamsWithDefaultValues(childParams);
-
-        // Verify config request types and number of requests for each type
-        Map<Class<? extends TunnelModeChildConfigRequest>, Integer> expectedAttributeCounts =
-                new HashMap<>();
-        expectedAttributeCounts.put(ConfigRequestIpv4Address.class, 2);
-        expectedAttributeCounts.put(ConfigRequestIpv6Address.class, 3);
-        expectedAttributeCounts.put(ConfigRequestIpv4Netmask.class, 1);
-        expectedAttributeCounts.put(ConfigRequestIpv4DnsServer.class, 1);
-        expectedAttributeCounts.put(ConfigRequestIpv6DnsServer.class, 1);
-        expectedAttributeCounts.put(ConfigRequestIpv4DhcpServer.class, 2);
-        verifyConfigRequestTypes(expectedAttributeCounts, childParams.getConfigurationRequests());
-
-        // Verify specific IPv4 address request
-        Set<Inet4Address> expectedV4Addresses = new HashSet<>();
-        expectedV4Addresses.add(IPV4_ADDRESS_REMOTE);
-        verifySpecificV4AddrConfigReq(expectedV4Addresses, childParams);
-
-        // Verify specific IPv6 address request
-        Set<LinkAddress> expectedV6Addresses = new HashSet<>();
-        expectedV6Addresses.add(new LinkAddress(IPV6_ADDRESS_REMOTE, IP6_PREFIX_LEN));
-        verifySpecificV6AddrConfigReq(expectedV6Addresses, childParams);
-    }
-
-    protected void verifySpecificV4AddrConfigReq(
-            Set<Inet4Address> expectedAddresses, TunnelModeChildSessionParams childParams) {
-        for (TunnelModeChildConfigRequest req : childParams.getConfigurationRequests()) {
-            if (req instanceof ConfigRequestIpv4Address
-                    && ((ConfigRequestIpv4Address) req).getAddress() != null) {
-                Inet4Address address = ((ConfigRequestIpv4Address) req).getAddress();
-
-                // Fail if expectedAddresses does not contain this address
-                assertTrue(expectedAddresses.remove(address));
-            }
-        }
-
-        // Fail if any expected address is not found in result
-        assertTrue(expectedAddresses.isEmpty());
-    }
-
-    protected void verifySpecificV6AddrConfigReq(
-            Set<LinkAddress> expectedAddresses, TunnelModeChildSessionParams childParams) {
-        for (TunnelModeChildConfigRequest req : childParams.getConfigurationRequests()) {
-            if (req instanceof ConfigRequestIpv6Address
-                    && ((ConfigRequestIpv6Address) req).getAddress() != null) {
-                ConfigRequestIpv6Address ipv6AddrReq = (ConfigRequestIpv6Address) req;
-
-                // Fail if expectedAddresses does not contain this address
-                LinkAddress address =
-                        new LinkAddress(ipv6AddrReq.getAddress(), ipv6AddrReq.getPrefixLength());
-                assertTrue(expectedAddresses.remove(address));
-            }
-        }
-
-        // Fail if any expected address is not found in result
-        assertTrue(expectedAddresses.isEmpty());
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeIdentificationTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeIdentificationTest.java
deleted file mode 100644
index 40aca9d..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeIdentificationTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-import android.net.ipsec.ike.IkeDerAsn1DnIdentification;
-import android.net.ipsec.ike.IkeFqdnIdentification;
-import android.net.ipsec.ike.IkeIpv4AddrIdentification;
-import android.net.ipsec.ike.IkeIpv6AddrIdentification;
-import android.net.ipsec.ike.IkeKeyIdIdentification;
-import android.net.ipsec.ike.IkeRfc822AddrIdentification;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import javax.security.auth.x500.X500Principal;
-
-@RunWith(AndroidJUnit4.class)
-public final class IkeIdentificationTest extends IkeTestBase {
-    @Test
-    public void testIkeDerAsn1DnIdentification() throws Exception {
-        X500Principal asn1Dn = new X500Principal(LOCAL_ASN1_DN_STRING);
-
-        IkeDerAsn1DnIdentification ikeId = new IkeDerAsn1DnIdentification(asn1Dn);
-        assertEquals(asn1Dn, ikeId.derAsn1Dn);
-    }
-
-    @Test
-    public void testIkeFqdnIdentification() throws Exception {
-        IkeFqdnIdentification ikeId = new IkeFqdnIdentification(LOCAL_HOSTNAME);
-        assertEquals(LOCAL_HOSTNAME, ikeId.fqdn);
-    }
-
-    @Test
-    public void testIkeIpv4AddrIdentification() throws Exception {
-        IkeIpv4AddrIdentification ikeId = new IkeIpv4AddrIdentification(IPV4_ADDRESS_LOCAL);
-        assertEquals(IPV4_ADDRESS_LOCAL, ikeId.ipv4Address);
-    }
-
-    @Test
-    public void testIkeIpv6AddrIdentification() throws Exception {
-        IkeIpv6AddrIdentification ikeId = new IkeIpv6AddrIdentification(IPV6_ADDRESS_LOCAL);
-        assertEquals(IPV6_ADDRESS_LOCAL, ikeId.ipv6Address);
-    }
-
-    @Test
-    public void testIkeKeyIdIdentification() throws Exception {
-        IkeKeyIdIdentification ikeId = new IkeKeyIdIdentification(LOCAL_KEY_ID);
-        assertArrayEquals(LOCAL_KEY_ID, ikeId.keyId);
-    }
-
-    @Test
-    public void testIkeRfc822AddrIdentification() throws Exception {
-        IkeRfc822AddrIdentification ikeId = new IkeRfc822AddrIdentification(LOCAL_RFC822_NAME);
-        assertEquals(LOCAL_RFC822_NAME, ikeId.rfc822Name);
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionDigitalSignatureTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionDigitalSignatureTest.java
deleted file mode 100644
index 402769f..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionDigitalSignatureTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import android.net.InetAddresses;
-import android.net.LinkAddress;
-import android.net.ipsec.ike.IkeDerAsn1DnIdentification;
-import android.net.ipsec.ike.IkeSession;
-import android.net.ipsec.ike.IkeSessionParams;
-import android.net.ipsec.ike.IkeTrafficSelector;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.internal.net.ipsec.ike.testutils.CertUtils;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.InetAddress;
-import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPrivateKey;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-import javax.security.auth.x500.X500Principal;
-
-/**
- * Explicitly test setting up transport mode Child SA so that devices do not have
- * FEATURE_IPSEC_TUNNELS will be test covered. Tunnel mode Child SA setup has been tested in
- * IkeSessionPskTest and authentication method is orthogonal to Child mode.
- */
-@RunWith(AndroidJUnit4.class)
-public class IkeSessionDigitalSignatureTest extends IkeSessionTestBase {
-    private static final int EXPECTED_AUTH_REQ_FRAG_COUNT = 3;
-
-    private static final String IKE_INIT_RESP =
-            "46B8ECA1E0D72A18BF3FA1C2CB1EE86F21202220000000000000015022000030"
-                    + "0000002C010100040300000C0100000C800E0100030000080300000503000008"
-                    + "0200000400000008040000022800008800020000328451C8A976CE69E407966A"
-                    + "50D7320C4197A15A07267CE1B16BAFF9BDBBDEC1FDCDAAF7175ADF9AA8DB55DB"
-                    + "2D70C012D01D914C4EDEF6E8B226868EA1D01B2ED0C4C5C86E6BFE566010EC0C"
-                    + "33BA1C93666430B88BDA0470D82CC4F4416F49E3E361E3017C9F27811A66718B"
-                    + "389E1800915D776D59AA528A7E1D1B7815D35144290000249FE8FABE7F43D917"
-                    + "CE370DE2FD9C22BBC082951AC26C1BA26DE795470F2C25BC2900001C00004004"
-                    + "AE388EC86D6D1A470D44142D01AB2E85A7AC14182900001C0000400544A235A4"
-                    + "171C884286B170F48FFC181DB428D87D290000080000402E290000100000402F"
-                    + "00020003000400050000000800004014";
-    private static final String IKE_AUTH_RESP_FRAG_1 =
-            "46B8ECA1E0D72A18BF3FA1C2CB1EE86F3520232000000001000004E0240004C4"
-                    + "00010002DF6750A2D1D5675006F9F6230BB886FFD20CFB973FD04963CFD7A528"
-                    + "560598C58CC44178B2FCBBBBB271387AC81A664B7E7F1055B912F8C686E287C9"
-                    + "D31684C66339151AB86DA3CF1DA664052FA97687634558A1E9E6B37E16A86BD1"
-                    + "68D76DA5E2E1E0B7E98EB662D80D542307015D2BF134EBBBE425D6954FE8C2C4"
-                    + "D31D16C16AA0521C3C481F873ECF25BB8B05AC6083775C1821CAAB1E35A3955D"
-                    + "85ACC599574142E1DD5B262D6E5365CBF6EBE92FFCC16BC29EC3239456F3B202"
-                    + "492551C0F6D752ADCCA56D506D50CC8809EF6BC56EAD005586F7168F76445FD3"
-                    + "1366CC62D32C0C19B28210B8F813F97CD6A447C3857EFD6EC483DDA8ACD9870E"
-                    + "5A21B9C66F0FA44496C0C3D05E8859A1A4CFC88155D0C411BABC13033DD41FA4"
-                    + "AF08CE7734A146687F374F95634D1F26843203CA1FFD05CA3EB150CEA02FBF14"
-                    + "712B7A1C9BC7616A086E7FCA059E7D64EFF98DB895B32F8F7002762AF7D12F23"
-                    + "31E9DD25174C4CE273E5392BBB48F50B7A3E0187181216265F6A4FC7B91BE0AB"
-                    + "C601A580149D4B07411AE99DDB1944B977E86ADC9746605C60A92B569EEFAFFC"
-                    + "3A888D187B75D8F13249689FC28EBCD62B5E03AF171F3A561F0DEA3B1A75F531"
-                    + "971157DCE1E7BC6E7789FF3E8156015BC9C521EFE48996B41471D33BF09864E4"
-                    + "2436E8D7EB6218CDE7716DA754A924B123A63E25585BF27F4AC043A0C4AECE38"
-                    + "BB59DD62F5C0EC657206A76CED1BD26262237DA1CA6815435992A825758DEBEC"
-                    + "DDF598A22B8242AC4E34E70704DBA7B7B73DC3E067C1C98764F8791F84C99156"
-                    + "947D1FFC875F36FCE24B89369C1B5BF1D4C999DCA28E72A528D0E0163C66C067"
-                    + "E71B5E0025C13DA93313942F9EDA230B3ADC254821A4CB1A5DC9D0C5F4DC4E8E"
-                    + "CE46B7B8C72D3C5923C9B30DF1EF7B4EDEDA8BD05C86CA0162AE1BF8F277878E"
-                    + "607401BAA8F06E3EA873FA4C137324C4E0699277CDF649FE7F0F01945EE25FA7"
-                    + "0E4A89737E58185B11B4CB52FD5B0497D3E3CD1CEE7B1FBB3E969DB6F4C324A1"
-                    + "32DC6A0EA21F41332435FD99140C286F8ABBBA926953ADBEED17D30AAD953909"
-                    + "1347EF6D87163D6B1FF32D8B11FFB2E69FAEE7FE913D3826FBA7F9D11E0E3C57"
-                    + "27625B37D213710B5DD8965DAEFD3F491E8C029E2BF361039949BADEC31D60AC"
-                    + "355F26EE41339C03CC9D9B01C3C7F288F0E9D6DFEE78231BDA9AC10FED135913"
-                    + "2836B1A17CE060742B7E5B738A7177CCD59F70337BA251409C377A0FA5333204"
-                    + "D8622BA8C06DE0BEF4F32B6D4D77BE9DE977445D8A2A08C5C38341CB7974FBFB"
-                    + "22C8F983A7D6CEF068DDB2281E6673453521C831C1826861005AE5F37649BC64"
-                    + "0A6360B23284861441A440F1C5AADE1AB53CA63DB17F4C314D493C4C44DE5F20"
-                    + "75E084D080F92791F30BDD88373D50AB5A07BC72B0E7FFFA593103964E55603E"
-                    + "F7FEB7CA0762A1A7B86B6CCAD88CD6CBC7C6935D21F5F06B2700588A2530E619"
-                    + "DA1648AC809F3DDF56ACE5951737568FFEC7E2AB1AA0AE01B03A7F5A29CE73C0"
-                    + "5D2801B17CAAD0121082E9952FAB16BA1C386336C62D4CF3A5019CF61609433E"
-                    + "1C083237D47C4CF575097F7BF9000EF6B6C497A44E6480154A35669AD276BF05"
-                    + "6CC730B4E5962B6AF96CC6D236AE85CEFDA6877173F72D2F614F6696D1F9DF07"
-                    + "E107758B0978F69BC9DBE0CCBF252C40A3FDF7CE9104D3344F7B73593CCD73E0";
-    private static final String IKE_AUTH_RESP_FRAG_2 =
-            "46B8ECA1E0D72A18BF3FA1C2CB1EE86F3520232000000001000000F0000000D4"
-                    + "00020002155211EA41B37BC5F20568A6AE57038EEE208F94F9B444004F1EF391"
-                    + "2CABFCF857B9CD95FAAA9489ED10A3F5C93510820E22E23FC55ED8049E067D72"
-                    + "3645C00E1E08611916CE72D7F0A84123B63A8F3B9E78DBBE39967B7BB074AF4D"
-                    + "BF2178D991EDBDD01908A14A266D09236DB963B14AC33D894F0F83A580209EFD"
-                    + "61875BB56273AA336C22D6A4D890B93E0D42435667830CC32E4F608500E18569"
-                    + "3E6C1D88C0B5AE427333C86468E3474DAA4D1506AAB2A4021309A33DD759D0D0"
-                    + "A8C98BF7FBEA8109361A9F194D0FD756";
-    private static final String DELETE_IKE_RESP =
-            "46B8ECA1E0D72A18BF3FA1C2CB1EE86F2E202520000000020000004C00000030"
-                    + "342842D8DA37C8EFB92ED37C4FBB23CBDC90445137D6A0AF489F9F03641DBA9D"
-                    + "02F6F59FD8A7A78C7261CEB8";
-
-    // Using IPv4 for transport mode Child SA. IPv6 is currently infeasible because the IKE server
-    // that generates the test vectors is running in an IPv4 only network.
-    private static final IkeTrafficSelector TRANSPORT_MODE_INBOUND_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("172.58.35.103"),
-                    InetAddresses.parseNumericAddress("172.58.35.103"));
-
-    // TODO(b/157510502): Add test for IKE Session setup with transport mode Child in IPv6 network
-
-    private static final String LOCAL_ID_ASN1_DN =
-            "CN=client.test.ike.android.net, O=Android, C=US";
-    private static final String REMOTE_ID_ASN1_DN =
-            "CN=server.test.ike.android.net, O=Android, C=US";
-
-    private static X509Certificate sServerCaCert;
-    private static X509Certificate sClientEndCert;
-    private static X509Certificate sClientIntermediateCaCertOne;
-    private static X509Certificate sClientIntermediateCaCertTwo;
-    private static RSAPrivateKey sClientPrivateKey;
-
-    @BeforeClass
-    public static void setUpCertsBeforeClass() throws Exception {
-        sServerCaCert = CertUtils.createCertFromPemFile("server-a-self-signed-ca.pem");
-        sClientEndCert = CertUtils.createCertFromPemFile("client-a-end-cert.pem");
-        sClientIntermediateCaCertOne =
-                CertUtils.createCertFromPemFile("client-a-intermediate-ca-one.pem");
-        sClientIntermediateCaCertTwo =
-                CertUtils.createCertFromPemFile("client-a-intermediate-ca-two.pem");
-        sClientPrivateKey = CertUtils.createRsaPrivateKeyFromKeyFile("client-a-private-key.key");
-    }
-
-    private IkeSession openIkeSessionWithRemoteAddress(InetAddress remoteAddress) {
-        IkeSessionParams ikeParams =
-                new IkeSessionParams.Builder(sContext)
-                        .setNetwork(mTunNetwork)
-                        .setServerHostname(remoteAddress.getHostAddress())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithNormalModeCipher())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithCombinedModeCipher())
-                        .setLocalIdentification(
-                                new IkeDerAsn1DnIdentification(new X500Principal(LOCAL_ID_ASN1_DN)))
-                        .setRemoteIdentification(
-                                new IkeDerAsn1DnIdentification(
-                                        new X500Principal(REMOTE_ID_ASN1_DN)))
-                        .setAuthDigitalSignature(
-                                sServerCaCert,
-                                sClientEndCert,
-                                Arrays.asList(
-                                        sClientIntermediateCaCertOne, sClientIntermediateCaCertTwo),
-                                sClientPrivateKey)
-                        .build();
-
-        return new IkeSession(
-                sContext,
-                ikeParams,
-                buildTransportModeChildParamsWithTs(
-                        TRANSPORT_MODE_INBOUND_TS, TRANSPORT_MODE_OUTBOUND_TS),
-                mUserCbExecutor,
-                mIkeSessionCallback,
-                mFirstChildSessionCallback);
-    }
-
-    @Test
-    public void testIkeSessionSetupAndChildSessionSetupWithTransportMode() throws Exception {
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithRemoteAddress(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(
-                IKE_INIT_RESP,
-                EXPECTED_AUTH_REQ_FRAG_COUNT /* expectedReqPktCnt */,
-                true /* expectedAuthUseEncap */,
-                IKE_AUTH_RESP_FRAG_1,
-                IKE_AUTH_RESP_FRAG_2);
-
-        // IKE INIT and IKE AUTH takes two exchanges. Message ID starts from 2
-        int expectedMsgId = 2;
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TRANSPORT_MODE_INBOUND_TS),
-                Arrays.asList(TRANSPORT_MODE_OUTBOUND_TS),
-                new ArrayList<LinkAddress>());
-        IpSecTransformCallRecord firstTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord firstTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
-
-        // Close IKE Session
-        ikeSession.close();
-        performCloseIkeBlocking(expectedMsgId++, DELETE_IKE_RESP);
-        verifyCloseIkeAndChildBlocking(firstTransformRecordA, firstTransformRecordB);
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionMschapV2Test.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionMschapV2Test.java
deleted file mode 100644
index a104996..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionMschapV2Test.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import android.net.InetAddresses;
-import android.net.LinkAddress;
-import android.net.eap.EapSessionConfig;
-import android.net.ipsec.ike.IkeFqdnIdentification;
-import android.net.ipsec.ike.IkeSession;
-import android.net.ipsec.ike.IkeSessionParams;
-import android.net.ipsec.ike.IkeTrafficSelector;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.internal.net.ipsec.ike.testutils.CertUtils;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.InetAddress;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * Explicitly test setting up transport mode Child SA so that devices do not have
- * FEATURE_IPSEC_TUNNELS will be test covered. Tunnel mode Child SA setup has been tested in
- * IkeSessionPskTest and authentication method is orthogonal to Child mode.
- */
-@RunWith(AndroidJUnit4.class)
-public class IkeSessionMschapV2Test extends IkeSessionTestBase {
-    private static final String IKE_INIT_RESP =
-            "46B8ECA1E0D72A1873F643FF94D249A921202220000000000000015022000030"
-                    + "0000002C010100040300000C0100000C800E0080030000080300000203000008"
-                    + "0200000200000008040000022800008800020000CC6E71E67E32CED6BCE33FBD"
-                    + "A74113867E3FA3AE21C7C9AB44A7F8835DF602BFD6F6528B67FEE39821232380"
-                    + "C99E8FFC0A5D767F8F38906DA41946C2299DF18C15FA69BAC08D3EDB32E8C8CA"
-                    + "28431831561C04CB0CDE393F817151CD8DAF7A311838411F1C39BFDB5EBCF6A6"
-                    + "1DF66DEB067362649D64607D599B56C4227819D0290000241197004CF31AD00F"
-                    + "5E0C92E198488D8A2B6F6A25C82762AA49F565BCE9D857D72900001C00004004"
-                    + "A0D98FEABBFB92A6C0976EE83D2AACFCCF969A6B2900001C0000400575EBF73F"
-                    + "8EE5CC73917DE9D3F91FCD4A16A0444D290000080000402E290000100000402F"
-                    + "00020003000400050000000800004014";
-    private static final String IKE_AUTH_RESP_1_FRAG_1 =
-            "46B8ECA1E0D72A1873F643FF94D249A93520232000000001000004E0240004C4"
-                    + "00010002C4159CB756773B3F1911F4595107BC505D7A28C72F05182966076679"
-                    + "CA68ED92E4BC5CD441C9CB315F2F449A8A521CAFED3C5F285E295FC3791D3415"
-                    + "E3BACF66A08410DF4E35F7D88FE40DA28851C91C77A6549E186AC1B7846DF3FA"
-                    + "0A347A5ABBCAEE19E70F0EE5966DC6242A115F29523709302EDAD2E36C8F0395"
-                    + "CF5C42EC2D2898ECDD8A6AEDD686A70B589A981558667647F32F41E0D8913E94"
-                    + "A6693F53E59EA8938037F562CF1DC5E6E2CDC630B5FFB08949E3172249422F7D"
-                    + "EA069F9BAD5F96E48BADC7164A9269669AD0DF295A80C54D1D23CEA3F28AC485"
-                    + "86D2A9850DA23823037AB7D1577B7B2364C92C36B84238357129EB4A64D33310"
-                    + "B95DCD50CD53E78C32EFE7DC1627D9432E9BFDEE130045DE967B19F92A9D1270"
-                    + "F1E2C6BFBAA56802F3E63510578EF1ECB6872852F286EEC790AA1FE0CAF391CB"
-                    + "E276554922713BA4770CFE71E23F043DC620E22CC02A74F60725D18331B7F2C9"
-                    + "276EB6FBB7CBDAA040046D7ECBE1A5D7064E04E542807C5101B941D1C81B9D5E"
-                    + "90347B22BD4E638E2EDC98E369B51AA29BDB2CF8AA610D4B893EB83A4650717C"
-                    + "38B4D145EE939C18DCEDF6C79933CEB3D7C116B1F188DF9DDD560951B54E4A7D"
-                    + "80C999A32AB02BF39D7B498DAD36F1A5CBE2F64557D6401AE9DD6E0CEADA3F90"
-                    + "540FE9114BB6B8719C9064796354F4A180A6600CAD092F8302564E409B71ACB7"
-                    + "590F19B3AC88E7A606C718D0B97F7E4B4830F11D851C59F2255846DA22E2C805"
-                    + "0CA2AF2ACF3B6C769D11B75B5AC9AB82ED3D90014994B1BF6FED58FBEF2D72EF"
-                    + "8BDFE51F9A101393A7CA1ACF78FAEBF3E3CC25E09407D1E14AF351A159A13EE3"
-                    + "9B919BA8B49942792E7527C2FB6D418C4DF427669A4BF5A1AFBBB973BAF17918"
-                    + "9C9D520CAC2283B89A539ECE785EBE48FBB77D880A17D55C84A51F46068A4B87"
-                    + "FF48FEEE50E1E034CC8AFF5DA92105F55EC4823E67BDFE942CA8BE0DAECBBD52"
-                    + "E8AAF306049DC6C4CF87D987B0AC54FCE92E6AE8507965AAAC6AB8BD3405712F"
-                    + "EE170B70BC64BDCBD86D80C7AAAF341131F9A1210D7430B17218413AE1363183"
-                    + "5C98FA2428B1E9E987ADC9070E232310A28F4C3163E18366FFB112BADD7C5E0F"
-                    + "D13093A7C1428F87856BA0A7E46955589ACA267CE7A04320C4BCDBB60C672404"
-                    + "778F8D511AAB09349DAB482445D7F606F28E7FBBB18FC0F4EC0AF04F44C282F9"
-                    + "39C6E3B955C84DADEA350667236583069B74F492D600127636FA31F63E560851"
-                    + "2FC28B8EA5B4D01D110990B6EA46B9C2E7C7C856C240EF7A8147BA2C4344B85A"
-                    + "453C862024B5B6814D13CDEAEF7683D539BB50CAFFC0416F269F2F9EDEC5FA30"
-                    + "022FD7B4B186CD2020E7ED8D81ED90822EDD8B76F840DD68F09694CFF9B4F33E"
-                    + "11DF4E601A4212881A6D4E9259001705C41E9E23D18A7F3D4A3463649A38211A"
-                    + "5A90D0F17739A677C74E23F31C01D60B5A0F1E6A4D44FED9D25BF1E63418E1FC"
-                    + "0B19F6F4B71DE53C62B14B82279538A82DD4BE19AB6E00AFC20F124AAB7DF21A"
-                    + "42259BE4F40EC69B16917256F23E2C37376311D62E0A3A0EF8C2AD0C090221D5"
-                    + "C5ECA08F08178A4D31FFDB150C609827D18AD83C7B0A43AEE0406BD3FB494B53"
-                    + "A279FDD6447E234C926AD8CE47FFF779BB45B1FC8457C6E7D257D1359959D977"
-                    + "CEF6906A3367DC4D454993EFDC6F1EA94E17EB3DCB00A289346B4CFD7F19B16E";
-    private static final String IKE_AUTH_RESP_1_FRAG_2 =
-            "46B8ECA1E0D72A1873F643FF94D249A935202320000000010000008000000064"
-                    + "00020002C61F66025E821A5E69A4DE1F591A2C32C983C3154A5003660137D685"
-                    + "A5262B9FDF5EDC699DE4D8BD38F549E3CBD12024B45B4C86561C36C3EED839DA"
-                    + "9860C6AA0B764C662D08F1B6A98F68CF6E3038F737C0B415AD8A8B7D702BD92A";
-    private static final String IKE_AUTH_RESP_2 =
-            "46B8ECA1E0D72A1873F643FF94D249A92E202320000000020000008C30000070"
-                    + "62B90C2229FD23025BC2FD7FE6341E9EE04B17264CD619BCE18975A5F88BE438"
-                    + "D4AD4A5310057255AF568C293A29B10107E3EE3675C10AA2B26404D90C0528CC"
-                    + "F7605A86C96A1F2635CCC6CFC90EE65E5C2A2262EB33FE520EB708423A83CB63"
-                    + "274ECCBB102AF5DF35742657";
-    private static final String IKE_AUTH_RESP_3 =
-            "46B8ECA1E0D72A1873F643FF94D249A92E202320000000030000004C30000030"
-                    + "AB52C3C80123D3432C05AF457CE93C352395F73E861CD49561BA528CFE68D17D"
-                    + "78BBF6FC41E81C2B9EA051A2";
-    private static final String IKE_AUTH_RESP_4 =
-            "46B8ECA1E0D72A1873F643FF94D249A92E20232000000004000000CC270000B0"
-                    + "8D3342A7AB2666AC754F4B55C5C6B1A61255E62FBCA53D5CDEEDE60DADB7915C"
-                    + "7F962076A58BF7D39A05ED1B60FF349B6DE311AF7CEBC72B4BB9723A728A5D3E"
-                    + "9E508B2D7A11843D279B56ADA07E608D61F5CA7638F10372A440AD1DCE44E190"
-                    + "7B7B7A68B126EBBB86638D667D5B528D233BA8D32D7E0FAC4E1448E87396EEE6"
-                    + "0985B79841E1229D7962AACFD8F872722EC8D5B19D4C82D6C4ADCB276127A1A7"
-                    + "3FC84CDF85B2299BC96B64AC";
-    private static final String DELETE_IKE_RESP =
-            "46B8ECA1E0D72A1873F643FF94D249A92E202520000000050000004C00000030"
-                    + "622CE06C8CB132AA00567E9BC83F58B32BD7DB5130C76E385B306434DA227361"
-                    + "D50CC19D408A8D4F36F9697F";
-
-    // This value is align with the test vectors hex that are generated in an IPv4 environment
-    private static final IkeTrafficSelector TRANSPORT_MODE_INBOUND_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("172.58.35.67"),
-                    InetAddresses.parseNumericAddress("172.58.35.67"));
-
-    private static final EapSessionConfig EAP_CONFIG =
-            new EapSessionConfig.Builder()
-                    .setEapIdentity(EAP_IDENTITY)
-                    .setEapMsChapV2Config(EAP_MSCHAPV2_USERNAME, EAP_MSCHAPV2_PASSWORD)
-                    .build();
-
-    private static X509Certificate sServerCaCert;
-
-    @BeforeClass
-    public static void setUpCertBeforeClass() throws Exception {
-        sServerCaCert = CertUtils.createCertFromPemFile("server-a-self-signed-ca.pem");
-    }
-
-    private IkeSession openIkeSessionWithRemoteAddress(InetAddress remoteAddress) {
-        IkeSessionParams ikeParams =
-                new IkeSessionParams.Builder(sContext)
-                        .setNetwork(mTunNetwork)
-                        .setServerHostname(remoteAddress.getHostAddress())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithNormalModeCipher())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithCombinedModeCipher())
-                        .setLocalIdentification(new IkeFqdnIdentification(LOCAL_HOSTNAME))
-                        .setRemoteIdentification(new IkeFqdnIdentification(REMOTE_HOSTNAME))
-                        .setAuthEap(sServerCaCert, EAP_CONFIG)
-                        .build();
-        return new IkeSession(
-                sContext,
-                ikeParams,
-                buildTransportModeChildParamsWithTs(
-                        TRANSPORT_MODE_INBOUND_TS, TRANSPORT_MODE_OUTBOUND_TS),
-                mUserCbExecutor,
-                mIkeSessionCallback,
-                mFirstChildSessionCallback);
-    }
-
-    @Test
-    public void testIkeSessionSetupAndChildSessionSetupWithTransportMode() throws Exception {
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithRemoteAddress(mRemoteAddress);
-        int expectedMsgId = 0;
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                false /* expectedUseEncap */,
-                IKE_INIT_RESP);
-
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                IKE_AUTH_RESP_1_FRAG_1,
-                IKE_AUTH_RESP_1_FRAG_2);
-
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                IKE_AUTH_RESP_2);
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                IKE_AUTH_RESP_3);
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                IKE_AUTH_RESP_4);
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TRANSPORT_MODE_INBOUND_TS),
-                Arrays.asList(TRANSPORT_MODE_OUTBOUND_TS),
-                new ArrayList<LinkAddress>());
-        IpSecTransformCallRecord firstTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord firstTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
-
-        // Close IKE Session
-        ikeSession.close();
-        performCloseIkeBlocking(expectedMsgId++, DELETE_IKE_RESP);
-        verifyCloseIkeAndChildBlocking(firstTransformRecordA, firstTransformRecordB);
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionParamsTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionParamsTest.java
deleted file mode 100644
index 241e79b..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionParamsTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_ACCEPT_ANY_REMOTE_ID;
-import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_EAP_ONLY_AUTH;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthDigitalSignLocalConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthDigitalSignRemoteConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthEapConfig;
-import static android.net.ipsec.ike.IkeSessionParams.IkeAuthPskConfig;
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-import static android.telephony.TelephonyManager.APPTYPE_USIM;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.net.eap.EapSessionConfig;
-import android.net.ipsec.ike.IkeFqdnIdentification;
-import android.net.ipsec.ike.IkeIdentification;
-import android.net.ipsec.ike.IkeSaProposal;
-import android.net.ipsec.ike.IkeSessionParams;
-import android.net.ipsec.ike.IkeSessionParams.ConfigRequestIpv4PcscfServer;
-import android.net.ipsec.ike.IkeSessionParams.ConfigRequestIpv6PcscfServer;
-import android.net.ipsec.ike.IkeSessionParams.IkeConfigRequest;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.internal.net.ipsec.ike.testutils.CertUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.InetAddress;
-import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPrivateKey;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-@RunWith(AndroidJUnit4.class)
-public final class IkeSessionParamsTest extends IkeSessionTestBase {
-    private static final int HARD_LIFETIME_SECONDS = (int) TimeUnit.HOURS.toSeconds(20L);
-    private static final int SOFT_LIFETIME_SECONDS = (int) TimeUnit.HOURS.toSeconds(10L);
-    private static final int DPD_DELAY_SECONDS = (int) TimeUnit.MINUTES.toSeconds(10L);
-    private static final int[] RETRANS_TIMEOUT_MS_LIST = new int[] {500, 500, 500, 500, 500, 500};
-
-    private static final Map<Class<? extends IkeConfigRequest>, Integer> EXPECTED_REQ_COUNT =
-            new HashMap<>();
-    private static final HashSet<InetAddress> EXPECTED_PCSCF_SERVERS = new HashSet<>();
-
-    static {
-        EXPECTED_REQ_COUNT.put(ConfigRequestIpv4PcscfServer.class, 3);
-        EXPECTED_REQ_COUNT.put(ConfigRequestIpv6PcscfServer.class, 3);
-
-        EXPECTED_PCSCF_SERVERS.add(PCSCF_IPV4_ADDRESS_1);
-        EXPECTED_PCSCF_SERVERS.add(PCSCF_IPV4_ADDRESS_2);
-        EXPECTED_PCSCF_SERVERS.add(PCSCF_IPV6_ADDRESS_1);
-        EXPECTED_PCSCF_SERVERS.add(PCSCF_IPV6_ADDRESS_2);
-    }
-
-    // Arbitrary proposal and remote ID. Local ID is chosen to match the client end cert in the
-    // following CL
-    private static final IkeSaProposal SA_PROPOSAL =
-            SaProposalTest.buildIkeSaProposalWithNormalModeCipher();
-    private static final IkeIdentification LOCAL_ID = new IkeFqdnIdentification(LOCAL_HOSTNAME);
-    private static final IkeIdentification REMOTE_ID = new IkeFqdnIdentification(REMOTE_HOSTNAME);
-
-    private static final EapSessionConfig EAP_ALL_METHODS_CONFIG =
-            createEapOnlySafeMethodsBuilder()
-                    .setEapMsChapV2Config(EAP_MSCHAPV2_USERNAME, EAP_MSCHAPV2_PASSWORD)
-                    .build();
-    private static final EapSessionConfig EAP_ONLY_SAFE_METHODS_CONFIG =
-            createEapOnlySafeMethodsBuilder().build();
-
-    private X509Certificate mServerCaCert;
-    private X509Certificate mClientEndCert;
-    private X509Certificate mClientIntermediateCaCertOne;
-    private X509Certificate mClientIntermediateCaCertTwo;
-    private RSAPrivateKey mClientPrivateKey;
-
-    @Before
-    public void setUp() throws Exception {
-        // This address is never used except for setting up the test network
-        setUpTestNetwork(IPV4_ADDRESS_LOCAL);
-
-        mServerCaCert = CertUtils.createCertFromPemFile("server-a-self-signed-ca.pem");
-        mClientEndCert = CertUtils.createCertFromPemFile("client-a-end-cert.pem");
-        mClientIntermediateCaCertOne =
-                CertUtils.createCertFromPemFile("client-a-intermediate-ca-one.pem");
-        mClientIntermediateCaCertTwo =
-                CertUtils.createCertFromPemFile("client-a-intermediate-ca-two.pem");
-        mClientPrivateKey = CertUtils.createRsaPrivateKeyFromKeyFile("client-a-private-key.key");
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tearDownTestNetwork();
-    }
-
-    private static EapSessionConfig.Builder createEapOnlySafeMethodsBuilder() {
-        return new EapSessionConfig.Builder()
-                .setEapIdentity(EAP_IDENTITY)
-                .setEapSimConfig(SUB_ID, APPTYPE_USIM)
-                .setEapAkaConfig(SUB_ID, APPTYPE_USIM)
-                .setEapAkaPrimeConfig(
-                        SUB_ID, APPTYPE_USIM, NETWORK_NAME, true /* allowMismatchedNetworkNames */);
-    }
-
-    /**
-     * Create a Builder that has minimum configurations to build an IkeSessionParams.
-     *
-     * <p>Authentication method is arbitrarily selected. Using other method (e.g. setAuthEap) also
-     * works.
-     */
-    private IkeSessionParams.Builder createIkeParamsBuilderMinimum() {
-        return new IkeSessionParams.Builder(sContext)
-                .setNetwork(mTunNetwork)
-                .setServerHostname(IPV4_ADDRESS_REMOTE.getHostAddress())
-                .addSaProposal(SA_PROPOSAL)
-                .setLocalIdentification(LOCAL_ID)
-                .setRemoteIdentification(REMOTE_ID)
-                .setAuthPsk(IKE_PSK);
-    }
-
-    /**
-     * Verify the minimum configurations to build an IkeSessionParams.
-     *
-     * @see #createIkeParamsBuilderMinimum
-     */
-    private void verifyIkeParamsMinimum(IkeSessionParams sessionParams) {
-        assertEquals(mTunNetwork, sessionParams.getNetwork());
-        assertEquals(IPV4_ADDRESS_REMOTE.getHostAddress(), sessionParams.getServerHostname());
-        assertEquals(Arrays.asList(SA_PROPOSAL), sessionParams.getSaProposals());
-        assertEquals(LOCAL_ID, sessionParams.getLocalIdentification());
-        assertEquals(REMOTE_ID, sessionParams.getRemoteIdentification());
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthPskConfig);
-        assertArrayEquals(IKE_PSK, ((IkeAuthPskConfig) localConfig).getPsk());
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthPskConfig);
-        assertArrayEquals(IKE_PSK, ((IkeAuthPskConfig) remoteConfig).getPsk());
-    }
-
-    @Test
-    public void testBuildWithMinimumSet() throws Exception {
-        IkeSessionParams sessionParams = createIkeParamsBuilderMinimum().build();
-
-        verifyIkeParamsMinimum(sessionParams);
-
-        // Verify default values that do not need explicit configuration. Do not do assertEquals
-        // to be avoid being a change-detector test
-        assertTrue(sessionParams.getHardLifetimeSeconds() > sessionParams.getSoftLifetimeSeconds());
-        assertTrue(sessionParams.getSoftLifetimeSeconds() > 0);
-        assertTrue(sessionParams.getDpdDelaySeconds() > 0);
-        assertTrue(sessionParams.getRetransmissionTimeoutsMillis().length > 0);
-        for (int timeout : sessionParams.getRetransmissionTimeoutsMillis()) {
-            assertTrue(timeout > 0);
-        }
-        assertTrue(sessionParams.getConfigurationRequests().isEmpty());
-        assertFalse(sessionParams.hasIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID));
-    }
-
-    @Test
-    public void testSetLifetimes() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum()
-                        .setLifetimeSeconds(HARD_LIFETIME_SECONDS, SOFT_LIFETIME_SECONDS)
-                        .build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        assertEquals(HARD_LIFETIME_SECONDS, sessionParams.getHardLifetimeSeconds());
-        assertEquals(SOFT_LIFETIME_SECONDS, sessionParams.getSoftLifetimeSeconds());
-    }
-
-    @Test
-    public void testSetDpdDelay() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum().setDpdDelaySeconds(DPD_DELAY_SECONDS).build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        assertEquals(DPD_DELAY_SECONDS, sessionParams.getDpdDelaySeconds());
-    }
-
-    @Test
-    public void testSetRetransmissionTimeouts() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum()
-                        .setRetransmissionTimeoutsMillis(RETRANS_TIMEOUT_MS_LIST)
-                        .build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        assertArrayEquals(RETRANS_TIMEOUT_MS_LIST, sessionParams.getRetransmissionTimeoutsMillis());
-    }
-
-    @Test
-    public void testSetPcscfConfigRequests() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum()
-                        .setRetransmissionTimeoutsMillis(RETRANS_TIMEOUT_MS_LIST)
-                        .addPcscfServerRequest(AF_INET)
-                        .addPcscfServerRequest(PCSCF_IPV4_ADDRESS_1)
-                        .addPcscfServerRequest(PCSCF_IPV6_ADDRESS_1)
-                        .addPcscfServerRequest(AF_INET6)
-                        .addPcscfServerRequest(PCSCF_IPV4_ADDRESS_2)
-                        .addPcscfServerRequest(PCSCF_IPV6_ADDRESS_2)
-                        .build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        verifyConfigRequestTypes(EXPECTED_REQ_COUNT, sessionParams.getConfigurationRequests());
-
-        Set<InetAddress> resultAddresses = new HashSet<>();
-        for (IkeConfigRequest req : sessionParams.getConfigurationRequests()) {
-            if (req instanceof ConfigRequestIpv4PcscfServer
-                    && ((ConfigRequestIpv4PcscfServer) req).getAddress() != null) {
-                resultAddresses.add(((ConfigRequestIpv4PcscfServer) req).getAddress());
-            } else if (req instanceof ConfigRequestIpv6PcscfServer
-                    && ((ConfigRequestIpv6PcscfServer) req).getAddress() != null) {
-                resultAddresses.add(((ConfigRequestIpv6PcscfServer) req).getAddress());
-            }
-        }
-        assertEquals(EXPECTED_PCSCF_SERVERS, resultAddresses);
-    }
-
-    @Test
-    public void testAddIkeOption() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum()
-                        .addIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID)
-                        .build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        assertTrue(sessionParams.hasIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID));
-    }
-
-    @Test
-    public void testRemoveIkeOption() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimum()
-                        .addIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID)
-                        .removeIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID)
-                        .build();
-
-        verifyIkeParamsMinimum(sessionParams);
-        assertFalse(sessionParams.hasIkeOption(IKE_OPTION_ACCEPT_ANY_REMOTE_ID));
-    }
-
-    /**
-     * Create a Builder that has minimum configurations to build an IkeSessionParams, except for
-     * authentication method.
-     */
-    private IkeSessionParams.Builder createIkeParamsBuilderMinimumWithoutAuth() {
-        return new IkeSessionParams.Builder(sContext)
-                .setNetwork(mTunNetwork)
-                .setServerHostname(IPV4_ADDRESS_REMOTE.getHostAddress())
-                .addSaProposal(SA_PROPOSAL)
-                .setLocalIdentification(LOCAL_ID)
-                .setRemoteIdentification(REMOTE_ID);
-    }
-
-    /**
-     * Verify the minimum configurations to build an IkeSessionParams, except for authentication
-     * method.
-     *
-     * @see #createIkeParamsBuilderMinimumWithoutAuth
-     */
-    private void verifyIkeParamsMinimumWithoutAuth(IkeSessionParams sessionParams) {
-        assertEquals(mTunNetwork, sessionParams.getNetwork());
-        assertEquals(IPV4_ADDRESS_REMOTE.getHostAddress(), sessionParams.getServerHostname());
-        assertEquals(Arrays.asList(SA_PROPOSAL), sessionParams.getSaProposals());
-        assertEquals(LOCAL_ID, sessionParams.getLocalIdentification());
-        assertEquals(REMOTE_ID, sessionParams.getRemoteIdentification());
-    }
-
-    @Test
-    public void testBuildWithPsk() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimumWithoutAuth().setAuthPsk(IKE_PSK).build();
-
-        verifyIkeParamsMinimumWithoutAuth(sessionParams);
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthPskConfig);
-        assertArrayEquals(IKE_PSK, ((IkeAuthPskConfig) localConfig).getPsk());
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthPskConfig);
-        assertArrayEquals(IKE_PSK, ((IkeAuthPskConfig) remoteConfig).getPsk());
-    }
-
-    @Test
-    public void testBuildWithEap() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimumWithoutAuth()
-                        .setAuthEap(mServerCaCert, EAP_ALL_METHODS_CONFIG)
-                        .build();
-
-        verifyIkeParamsMinimumWithoutAuth(sessionParams);
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthEapConfig);
-        assertEquals(EAP_ALL_METHODS_CONFIG, ((IkeAuthEapConfig) localConfig).getEapConfig());
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthDigitalSignRemoteConfig);
-        assertEquals(
-                mServerCaCert, ((IkeAuthDigitalSignRemoteConfig) remoteConfig).getRemoteCaCert());
-    }
-
-    @Test
-    public void testBuildWithEapOnlyAuth() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimumWithoutAuth()
-                        .setAuthEap(mServerCaCert, EAP_ONLY_SAFE_METHODS_CONFIG)
-                        .addIkeOption(IKE_OPTION_EAP_ONLY_AUTH)
-                        .build();
-
-        assertTrue(sessionParams.hasIkeOption(IKE_OPTION_EAP_ONLY_AUTH));
-        verifyIkeParamsMinimumWithoutAuth(sessionParams);
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthEapConfig);
-        assertEquals(EAP_ONLY_SAFE_METHODS_CONFIG, ((IkeAuthEapConfig) localConfig).getEapConfig());
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthDigitalSignRemoteConfig);
-        assertEquals(
-                mServerCaCert, ((IkeAuthDigitalSignRemoteConfig) remoteConfig).getRemoteCaCert());
-    }
-
-    @Test
-    public void testThrowBuildEapOnlyAuthWithUnsafeMethod() throws Exception {
-        try {
-            IkeSessionParams sessionParams =
-                    createIkeParamsBuilderMinimumWithoutAuth()
-                            .setAuthEap(mServerCaCert, EAP_ALL_METHODS_CONFIG)
-                            .addIkeOption(IKE_OPTION_EAP_ONLY_AUTH)
-                            .build();
-            fail("Expected to fail because EAP only unsafe method is proposed");
-        } catch (IllegalArgumentException expected) {
-        }
-    }
-
-    @Test
-    public void testBuildWithDigitalSignature() throws Exception {
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimumWithoutAuth()
-                        .setAuthDigitalSignature(mServerCaCert, mClientEndCert, mClientPrivateKey)
-                        .build();
-
-        verifyIkeParamsMinimumWithoutAuth(sessionParams);
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthDigitalSignLocalConfig);
-        IkeAuthDigitalSignLocalConfig localSignConfig = (IkeAuthDigitalSignLocalConfig) localConfig;
-        assertEquals(mClientEndCert, localSignConfig.getClientEndCertificate());
-        assertEquals(Collections.EMPTY_LIST, localSignConfig.getIntermediateCertificates());
-        assertEquals(mClientPrivateKey, localSignConfig.getPrivateKey());
-
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthDigitalSignRemoteConfig);
-        assertEquals(
-                mServerCaCert, ((IkeAuthDigitalSignRemoteConfig) remoteConfig).getRemoteCaCert());
-    }
-
-    @Test
-    public void testBuildWithDigitalSignatureAndIntermediateCerts() throws Exception {
-        List<X509Certificate> intermediateCerts =
-                Arrays.asList(mClientIntermediateCaCertOne, mClientIntermediateCaCertTwo);
-
-        IkeSessionParams sessionParams =
-                createIkeParamsBuilderMinimumWithoutAuth()
-                        .setAuthDigitalSignature(
-                                mServerCaCert, mClientEndCert, intermediateCerts, mClientPrivateKey)
-                        .build();
-
-        verifyIkeParamsMinimumWithoutAuth(sessionParams);
-
-        IkeAuthConfig localConfig = sessionParams.getLocalAuthConfig();
-        assertTrue(localConfig instanceof IkeAuthDigitalSignLocalConfig);
-        IkeAuthDigitalSignLocalConfig localSignConfig = (IkeAuthDigitalSignLocalConfig) localConfig;
-        assertEquals(mClientEndCert, localSignConfig.getClientEndCertificate());
-        assertEquals(intermediateCerts, localSignConfig.getIntermediateCertificates());
-        assertEquals(mClientPrivateKey, localSignConfig.getPrivateKey());
-
-        IkeAuthConfig remoteConfig = sessionParams.getRemoteAuthConfig();
-        assertTrue(remoteConfig instanceof IkeAuthDigitalSignRemoteConfig);
-        assertEquals(
-                mServerCaCert, ((IkeAuthDigitalSignRemoteConfig) remoteConfig).getRemoteCaCert());
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionPskTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionPskTest.java
deleted file mode 100644
index b9b710d..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionPskTest.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.app.AppOpsManager.OP_MANAGE_IPSEC_TUNNELS;
-import static android.net.ipsec.ike.exceptions.IkeProtocolException.ERROR_TYPE_AUTHENTICATION_FAILED;
-import static android.net.ipsec.ike.exceptions.IkeProtocolException.ERROR_TYPE_NO_PROPOSAL_CHOSEN;
-import static android.net.ipsec.ike.exceptions.IkeProtocolException.ERROR_TYPE_TS_UNACCEPTABLE;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-import android.net.LinkAddress;
-import android.net.ipsec.ike.ChildSessionParams;
-import android.net.ipsec.ike.IkeFqdnIdentification;
-import android.net.ipsec.ike.IkeSession;
-import android.net.ipsec.ike.IkeSessionParams;
-import android.net.ipsec.ike.exceptions.IkeProtocolException;
-import android.platform.test.annotations.AppModeFull;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-@RunWith(AndroidJUnit4.class)
-@AppModeFull(reason = "MANAGE_IPSEC_TUNNELS permission can't be granted to instant apps")
-public class IkeSessionPskTest extends IkeSessionTestBase {
-    // Test vectors for success workflow
-    private static final String SUCCESS_IKE_INIT_RESP =
-            "46B8ECA1E0D72A18B45427679F9245D421202220000000000000015022000030"
-                    + "0000002C010100040300000C0100000C800E0080030000080300000203000008"
-                    + "0200000200000008040000022800008800020000A7AA3435D088EC1A2B7C2A47"
-                    + "1FA1B85F1066C9B2006E7C353FB5B5FDBC2A88347ED2C6F5B7A265D03AE34039"
-                    + "6AAC0145CFCC93F8BDB219DDFF22A603B8856A5DC59B6FAB7F17C5660CF38670"
-                    + "8794FC72F273ADEB7A4F316519794AED6F8AB61F95DFB360FAF18C6C8CABE471"
-                    + "6E18FE215348C2E582171A57FC41146B16C4AFE429000024A634B61C0E5C90C6"
-                    + "8D8818B0955B125A9B1DF47BBD18775710792E651083105C2900001C00004004"
-                    + "406FA3C5685A16B9B72C7F2EEE9993462C619ABE2900001C00004005AF905A87"
-                    + "0A32222AA284A7070585601208A282F0290000080000402E290000100000402F"
-                    + "00020003000400050000000800004014";
-    private static final String SUCCESS_IKE_AUTH_RESP =
-            "46B8ECA1E0D72A18B45427679F9245D42E20232000000001000000EC240000D0"
-                    + "0D06D37198F3F0962DE8170D66F1A9008267F98CDD956D984BDCED2FC7FAF84A"
-                    + "A6664EF25049B46B93C9ED420488E0C172AA6635BF4011C49792EF2B88FE7190"
-                    + "E8859FEEF51724FD20C46E7B9A9C3DC4708EF7005707A18AB747C903ABCEAC5C"
-                    + "6ECF5A5FC13633DCE3844A920ED10EF202F115DBFBB5D6D2D7AB1F34EB08DE7C"
-                    + "A54DCE0A3A582753345CA2D05A0EFDB9DC61E81B2483B7D13EEE0A815D37252C"
-                    + "23D2F29E9C30658227D2BB0C9E1A481EAA80BC6BE9006BEDC13E925A755A0290"
-                    + "AEC4164D29997F52ED7DCC2E";
-    private static final String SUCCESS_CREATE_CHILD_RESP =
-            "46B8ECA1E0D72A18B45427679F9245D42E20242000000002000000CC210000B0"
-                    + "484565D4AF6546274674A8DE339E9C9584EE2326AB9260F41C4D0B6C5B02D1D"
-                    + "2E8394E3CDE3094895F2ACCABCDCA8E82960E5196E9622BD13745FC8D6A2BED"
-                    + "E561FF5D9975421BC463C959A3CBA3478256B6D278159D99B512DDF56AC1658"
-                    + "63C65A986F395FE8B1476124B91F83FD7865304EB95B22CA4DD9601DA7A2533"
-                    + "ABF4B36EB1B8CD09522F6A600032316C74E562E6756D9D49D945854E2ABDC4C"
-                    + "3AF36305353D60D40B58BE44ABF82";
-    private static final String SUCCESS_DELETE_CHILD_RESP =
-            "46B8ECA1E0D72A18B45427679F9245D42E202520000000030000004C2A000030"
-                    + "0C5CEB882DBCA65CE32F4C53909335F1365C91C555316C5E9D9FB553F7AA916"
-                    + "EF3A1D93460B7FABAF0B4B854";
-    private static final String SUCCESS_DELETE_IKE_RESP =
-            "46B8ECA1E0D72A18B45427679F9245D42E202520000000040000004C00000030"
-                    + "9352D71100777B00ABCC6BD7DBEA697827FFAAA48DF9A54D1D68161939F5DC8"
-                    + "6743A7CEB2BE34AC00095A5B8";
-
-    private IkeSession openIkeSessionWithTunnelModeChild(InetAddress remoteAddress) {
-        return openIkeSession(remoteAddress, buildTunnelModeChildSessionParams());
-    }
-
-    private IkeSession openIkeSessionWithTransportModeChild(InetAddress remoteAddress) {
-        return openIkeSession(remoteAddress, buildTransportModeChildParamsWithDefaultTs());
-    }
-
-    private IkeSession openIkeSession(InetAddress remoteAddress, ChildSessionParams childParams) {
-        IkeSessionParams ikeParams =
-                new IkeSessionParams.Builder(sContext)
-                        .setNetwork(mTunNetwork)
-                        .setServerHostname(remoteAddress.getHostAddress())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithNormalModeCipher())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithCombinedModeCipher())
-                        .setLocalIdentification(new IkeFqdnIdentification(LOCAL_HOSTNAME))
-                        .setRemoteIdentification(new IkeFqdnIdentification(REMOTE_HOSTNAME))
-                        .setAuthPsk(IKE_PSK)
-                        .build();
-        return new IkeSession(
-                sContext,
-                ikeParams,
-                childParams,
-                mUserCbExecutor,
-                mIkeSessionCallback,
-                mFirstChildSessionCallback);
-    }
-
-    @BeforeClass
-    public static void setUpTunnelPermissionBeforeClass() throws Exception {
-        // Under normal circumstances, the MANAGE_IPSEC_TUNNELS appop would be auto-granted, and
-        // a standard permission is insufficient. So we shell out the appop, to give us the
-        // right appop permissions.
-        setAppOp(OP_MANAGE_IPSEC_TUNNELS, true);
-    }
-
-    // This method is guaranteed to run in subclasses and will run after subclasses' @AfterClass
-    // methods.
-    @AfterClass
-    public static void tearDownTunnelPermissionAfterClass() throws Exception {
-        setAppOp(OP_MANAGE_IPSEC_TUNNELS, false);
-    }
-
-    @Test
-    public void testIkeSessionSetupAndChildSessionSetupWithTunnelMode() throws Exception {
-        if (!hasTunnelsFeature()) return;
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTunnelModeChild(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(SUCCESS_IKE_INIT_RESP, SUCCESS_IKE_AUTH_RESP);
-
-        // IKE INIT and IKE AUTH takes two exchanges. Message ID starts from 2
-        int expectedMsgId = 2;
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TUNNEL_MODE_INBOUND_TS),
-                Arrays.asList(TUNNEL_MODE_OUTBOUND_TS),
-                Arrays.asList(EXPECTED_INTERNAL_LINK_ADDR));
-
-        IpSecTransformCallRecord firstTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord firstTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
-
-        // Open additional Child Session
-        TestChildSessionCallback additionalChildCb = new TestChildSessionCallback();
-        ikeSession.openChildSession(buildTunnelModeChildSessionParams(), additionalChildCb);
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                SUCCESS_CREATE_CHILD_RESP);
-
-        // Verify opening additional Child Session
-        verifyChildSessionSetupBlocking(
-                additionalChildCb,
-                Arrays.asList(TUNNEL_MODE_INBOUND_TS),
-                Arrays.asList(TUNNEL_MODE_OUTBOUND_TS),
-                new ArrayList<LinkAddress>());
-        IpSecTransformCallRecord additionalTransformRecordA =
-                additionalChildCb.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord additionalTransformRecordB =
-                additionalChildCb.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(additionalTransformRecordA, additionalTransformRecordB);
-
-        // Close additional Child Session
-        ikeSession.closeChildSession(additionalChildCb);
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                true /* expectedUseEncap */,
-                SUCCESS_DELETE_CHILD_RESP);
-
-        verifyDeleteIpSecTransformPair(
-                additionalChildCb, additionalTransformRecordA, additionalTransformRecordB);
-        additionalChildCb.awaitOnClosed();
-
-        // Close IKE Session
-        ikeSession.close();
-        performCloseIkeBlocking(expectedMsgId++, SUCCESS_DELETE_IKE_RESP);
-        verifyCloseIkeAndChildBlocking(firstTransformRecordA, firstTransformRecordB);
-    }
-
-    @Test
-    public void testIkeSessionSetupAndChildSessionSetupWithTunnelModeV6() throws Exception {
-        if (!hasTunnelsFeature()) return;
-
-        final String ikeInitResp =
-                "46B8ECA1E0D72A186F7B6C2CEB77EB9021202220000000000000011822000030"
-                        + "0000002C010100040300000C0100000C800E0100030000080300000C03000008"
-                        + "0200000500000008040000022800008800020000DABAA04B38B491E2403F2125"
-                        + "96ECF1C8EF7B1DC19A422FDD46E1756C826BB3A16404361B775D9950577B5CDF"
-                        + "6AAA1642BD1427BDA8BC55354A97C1025E19C1E2EE2DF8A0C9406E545D829F52"
-                        + "75695008E3B742984B8DD1770F3514213B0DF3EE8B199416DF200D248115C057"
-                        + "1C193E4F96802E5EF48DD99CAC251882A8F7CCC329000024BC6F0F1D3653C2C7"
-                        + "679E02CDB6A3B32B2FEE9AF52F0326D4D9AE073D56CE8922290000080000402E"
-                        + "290000100000402F00020003000400050000000800004014";
-        final String ikeAuthResp =
-                "46B8ECA1E0D72A186F7B6C2CEB77EB902E202320000000010000015024000134"
-                        + "4D115AFDCDAD0310760BB664EB7D405A340869AD6EDF0AAEAD0663A9253DADCB"
-                        + "73EBE5CD29D4FA1CDEADE0B94391B5C4CF77BCC1596ACE3CE6A7891E44888FA5"
-                        + "46632C0EF4E6193C023C9DC59142C37D1C49D6EF5CD324EC6FC35C89E1721C78"
-                        + "91FDCDB723D8062709950F4AA9273D26A54C9C7E86862DBC15F7B6641D2B9BAD"
-                        + "E55069008201D12968D97B537B1518FE87B0FFA03C3EE6012C06721B1E2A3F68"
-                        + "92108BC4A4F7063F7F94562D8B60F291A1377A836CF12BCDA7E15C1A8F3C77BB"
-                        + "6DB7F2C833CCE4CDDED7506536621A3356CE2BC1874E7B1A1A9B447D7DF6AB09"
-                        + "638B8AD94A781B28BB91B514B611B24DF8E8A047A10AE27BBF15C754D3D2F792"
-                        + "D3E1CCADDAE934C98AE53A8FC3419C88AFF0355564F82A629C998012DA7BB704"
-                        + "5307270DF326377E3E1994476902035B";
-        final String deleteIkeResp =
-                "46B8ECA1E0D72A186F7B6C2CEB77EB902E202520000000020000005000000034"
-                        + "CF15C299F35688E5140A48B61C95F004121BF8236201415E5CD45BA41AAB16D4"
-                        + "90B44B9E6D5D92B5B97D24196A58C73F";
-
-        mLocalAddress = IPV6_ADDRESS_LOCAL;
-        mRemoteAddress = IPV6_ADDRESS_REMOTE;
-
-        // Teardown current test network that uses IPv4 address and set up new network with IPv6
-        // address.
-        tearDownTestNetwork();
-        setUpTestNetwork(mLocalAddress);
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTunnelModeChild(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(
-                ikeInitResp,
-                1 /* expectedAuthReqPktCnt */,
-                false /* expectedAuthUseEncap */,
-                ikeAuthResp);
-
-        // Local request message ID starts from 2 because there is one IKE_INIT message and a single
-        // IKE_AUTH message.
-        int expectedMsgId = 2;
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TUNNEL_MODE_INBOUND_TS_V6),
-                Arrays.asList(TUNNEL_MODE_OUTBOUND_TS_V6),
-                Arrays.asList(EXPECTED_INTERNAL_LINK_ADDR_V6),
-                Arrays.asList(EXPECTED_DNS_SERVERS_ONE, EXPECTED_DNS_SERVERS_TWO));
-
-        IpSecTransformCallRecord firstTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord firstTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
-
-        // Close IKE Session
-        ikeSession.close();
-        performCloseIkeBlocking(expectedMsgId++, false /* expectedUseEncap */, deleteIkeResp);
-        verifyCloseIkeAndChildBlocking(firstTransformRecordA, firstTransformRecordB);
-    }
-
-    @Test
-    public void testIkeSessionKillWithTunnelMode() throws Exception {
-        if (!hasTunnelsFeature()) return;
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTunnelModeChild(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(SUCCESS_IKE_INIT_RESP, SUCCESS_IKE_AUTH_RESP);
-
-        ikeSession.kill();
-        mFirstChildSessionCallback.awaitOnClosed();
-        mIkeSessionCallback.awaitOnClosed();
-    }
-
-    @Test
-    public void testIkeInitFail() throws Exception {
-        final String ikeInitFailRespHex =
-                "46B8ECA1E0D72A180000000000000000292022200000000000000024000000080000000E";
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTransportModeChild(mRemoteAddress);
-        int expectedMsgId = 0;
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                expectedMsgId++,
-                false /* expectedUseEncap */,
-                ikeInitFailRespHex);
-
-        mFirstChildSessionCallback.awaitOnClosed();
-
-        IkeProtocolException protocolException =
-                (IkeProtocolException) mIkeSessionCallback.awaitOnClosedException();
-        assertEquals(ERROR_TYPE_NO_PROPOSAL_CHOSEN, protocolException.getErrorType());
-        assertArrayEquals(EXPECTED_PROTOCOL_ERROR_DATA_NONE, protocolException.getErrorData());
-    }
-
-    @Test
-    public void testIkeAuthHandlesAuthFailNotification() throws Exception {
-        final String ikeInitRespHex =
-                "46B8ECA1E0D72A18CF94CE3159486F002120222000000000000001502200"
-                        + "00300000002C010100040300000C0100000C800E01000300000803000005"
-                        + "0300000802000004000000080400000228000088000200001821AA854691"
-                        + "FA3292DF710F0AC149ACBD0CB421608B8796C1912AF04C5B4B23936FDEC4"
-                        + "7CB640E3EAFB56BBB562825E87AF68B40E4BAB80A49BAD44407450A4195A"
-                        + "1DD54BD99F48D28C9F0FBA315A3401C1C3C4AD55911F514A8DF2D2467C46"
-                        + "A73DDC1452AE81336E0F0D5EC896D2E7A77628AF2F9089F48943399DF216"
-                        + "EFCD2900002418D2B7E4E6AF0FEFF5962CF8D68F7793B1293FEDE13331D4"
-                        + "AB0CE9436C2EE1EC2900001C0000400457BD9AEF5B362A83DD7F3DDAA4A9"
-                        + "9B6B4041DAF32900001C000040055A81893582701E44D4B6729A22FE06DE"
-                        + "82A03A36290000080000402E290000100000402F00020003000400050000"
-                        + "000800004014";
-        final String ikeAuthFailRespHex =
-                "46B8ECA1E0D72A18CF94CE3159486F002E202320000000010000004C2900"
-                        + "00301B9E4C8242D3BE62E7F0A537FE8B92C6EAB7153105DA421DCE43A06D"
-                        + "AB6E4808BAC0CA1DAD6ADD0A126A41BD";
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTransportModeChild(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(ikeInitRespHex, ikeAuthFailRespHex);
-
-        mFirstChildSessionCallback.awaitOnClosed();
-        IkeProtocolException protocolException =
-                (IkeProtocolException) mIkeSessionCallback.awaitOnClosedException();
-        assertEquals(ERROR_TYPE_AUTHENTICATION_FAILED, protocolException.getErrorType());
-        assertArrayEquals(EXPECTED_PROTOCOL_ERROR_DATA_NONE, protocolException.getErrorData());
-    }
-
-    @Test
-    public void testIkeAuthHandlesFirstChildCreationFail() throws Exception {
-        final String ikeInitRespHex =
-                "46B8ECA1E0D72A18F5ABBF896A1240BE2120222000000000000001502200"
-                        + "00300000002C010100040300000C0100000C800E0100030000080300000C"
-                        + "03000008020000050000000804000002280000880002000074950F016B85"
-                        + "605E57E24651843AB70E41B552EDEE227DFE51E6CBEC00E75FFEFC7D5453"
-                        + "109B15F721FCD811FC9F113BE06050882F2FC5F5FF25857E555CCFB5AB64"
-                        + "8B0D1D7A819A3B05DE1FE89A4A627C60D5AA06CD0F66ACD3748722F9CD4F"
-                        + "F30AE7477CBC12049821F07AD6C9F0ED732321A6A36FA817722E025AC34B"
-                        + "ABE62900002432E3807F595070E95EDA341A787599B24B1151B535B0222B"
-                        + "65C003401B9B38F82900001C000040043BB760DB3037B51768DFFAB4B21D"
-                        + "B1716EA1C1382900001C0000400531098EB04DF1BE3F304606BD59B454A8"
-                        + "CC7E7311290000080000402E290000100000402F00020003000400050000"
-                        + "000800004014";
-        final String ikeAuthCreateChildFailHex =
-                "46B8ECA1E0D72A18F5ABBF896A1240BE2E20232000000001000000B02400"
-                        + "009400B0861242E0C88ECB3848D772B560CAD65B6AC9DFFDC8622A394B8E"
-                        + "64E550BDD69FCD7E768129787ED9062992C1D6DB0F0631C2E05765B403CF"
-                        + "EF1D0A055B32F6698FF7DB5B8FB1B6A83A81634D00E22C86E35B3BFBEC73"
-                        + "EAC6806678926945BC7A57003DC1A3528A1EC423EE56C1075B36C0B57A6B"
-                        + "C6DD990182F6FABFFA167D199C7D629E5B830AAD2AFBD31CEBA6";
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithTransportModeChild(mRemoteAddress);
-        performSetupIkeAndFirstChildBlocking(ikeInitRespHex, ikeAuthCreateChildFailHex);
-
-        // Even though the child creation failed, the authentication succeeded, so the IKE Session's
-        // onOpened() callback is still expected
-        verifyIkeSessionSetupBlocking();
-
-        // Verify Child Creation failed
-        IkeProtocolException protocolException =
-                (IkeProtocolException) mFirstChildSessionCallback.awaitOnClosedException();
-        assertEquals(ERROR_TYPE_TS_UNACCEPTABLE, protocolException.getErrorType());
-        assertArrayEquals(EXPECTED_PROTOCOL_ERROR_DATA_NONE, protocolException.getErrorData());
-
-        ikeSession.kill();
-        mIkeSessionCallback.awaitOnClosed();
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionRekeyTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionRekeyTest.java
deleted file mode 100644
index 0ca12ad..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionRekeyTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static com.android.internal.util.HexDump.hexStringToByteArray;
-
-import android.ipsec.ike.cts.IkeTunUtils.PortPair;
-import android.net.InetAddresses;
-import android.net.LinkAddress;
-import android.net.ipsec.ike.IkeFqdnIdentification;
-import android.net.ipsec.ike.IkeSession;
-import android.net.ipsec.ike.IkeSessionParams;
-import android.net.ipsec.ike.IkeTrafficSelector;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-/**
- * Explicitly test transport mode Child SA so that devices without FEATURE_IPSEC_TUNNELS can be test
- * covered. Tunnel mode Child SA setup has been tested in IkeSessionPskTest. Rekeying process is
- * independent from Child SA mode.
- */
-@RunWith(AndroidJUnit4.class)
-public class IkeSessionRekeyTest extends IkeSessionTestBase {
-    // This value is align with the test vectors hex that are generated in an IPv4 environment
-    private static final IkeTrafficSelector TRANSPORT_MODE_INBOUND_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("172.58.35.40"),
-                    InetAddresses.parseNumericAddress("172.58.35.40"));
-
-    private IkeSession openIkeSessionWithRemoteAddress(InetAddress remoteAddress) {
-        IkeSessionParams ikeParams =
-                new IkeSessionParams.Builder(sContext)
-                        .setNetwork(mTunNetwork)
-                        .setServerHostname(remoteAddress.getHostAddress())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithNormalModeCipher())
-                        .addSaProposal(SaProposalTest.buildIkeSaProposalWithCombinedModeCipher())
-                        .setLocalIdentification(new IkeFqdnIdentification(LOCAL_HOSTNAME))
-                        .setRemoteIdentification(new IkeFqdnIdentification(REMOTE_HOSTNAME))
-                        .setAuthPsk(IKE_PSK)
-                        .build();
-        return new IkeSession(
-                sContext,
-                ikeParams,
-                buildTransportModeChildParamsWithTs(
-                        TRANSPORT_MODE_INBOUND_TS, TRANSPORT_MODE_OUTBOUND_TS),
-                mUserCbExecutor,
-                mIkeSessionCallback,
-                mFirstChildSessionCallback);
-    }
-
-    private byte[] buildInboundPkt(PortPair outPktSrcDestPortPair, String inboundDataHex)
-            throws Exception {
-        // Build inbound packet by flipping the outbound packet addresses and ports
-        return IkeTunUtils.buildIkePacket(
-                mRemoteAddress,
-                mLocalAddress,
-                outPktSrcDestPortPair.dstPort,
-                outPktSrcDestPortPair.srcPort,
-                true /* useEncap */,
-                hexStringToByteArray(inboundDataHex));
-    }
-
-    @Test
-    public void testRekeyIke() throws Exception {
-        final String ikeInitResp =
-                "46B8ECA1E0D72A1866B5248CF6C7472D21202220000000000000015022000030"
-                        + "0000002C010100040300000C0100000C800E0100030000080300000C03000008"
-                        + "0200000500000008040000022800008800020000920D3E830E7276908209212D"
-                        + "E5A7F2A48706CFEF1BE8CB6E3B173B8B4E0D8C2DC626271FF1B13A88619E569E"
-                        + "7B03C3ED2C127390749CDC7CDC711D0A8611E4457FFCBC4F0981B3288FBF58EA"
-                        + "3E8B70E27E76AE70117FBBCB753660ADDA37EB5EB3A81BED6A374CCB7E132C2A"
-                        + "94BFCE402DC76B19C158B533F6B1F2ABF01ACCC329000024B302CA2FB85B6CF4"
-                        + "02313381246E3C53828D787F6DFEA6BD62D6405254AEE6242900001C00004004"
-                        + "7A1682B06B58596533D00324886EF1F20EF276032900001C00004005BF633E31"
-                        + "F9984B29A62E370BB2770FC09BAEA665290000080000402E290000100000402F"
-                        + "00020003000400050000000800004014";
-        final String ikeAuthResp =
-                "46B8ECA1E0D72A1866B5248CF6C7472D2E20232000000001000000F0240000D4"
-                        + "10166CA8647F56123DE74C17FA5E256043ABF73216C812EE32EE1BB01EAF4A82"
-                        + "DC107AB3ADBFEE0DEA5EEE10BDD5D43178F4C975C7C775D252273BB037283C7F"
-                        + "236FE34A6BCE4833816897075DB2055B9FFD66DFA45A0A89A8F70AFB59431EED"
-                        + "A20602FB614369D12906D3355CF7298A5D25364ABBCC75A9D88E0E6581449FCD"
-                        + "4E361A39E00EFD1FD0A69651F63DB46C12470226AA21BA5EFF48FAF0B6DDF61C"
-                        + "B0A69392CE559495EEDB4D1C1D80688434D225D57210A424C213F7C993D8A456"
-                        + "38153FBD194C5E247B592D1D048DB4C8";
-        final String rekeyIkeCreateReq =
-                "46B8ECA1E0D72A1866B5248CF6C7472D2E202400000000000000013021000114"
-                        + "13743670039E308A8409BA5FD47B67F956B36FEE88AC3B70BB5D789B8218A135"
-                        + "1B3D83E260E87B3EDB1BF064F09D4DC2611AEDBC99951B4B2DE767BD4AA2ACC3"
-                        + "3653549CFC66B75869DF003CDC9A137A9CC27776AD5732B34203E74BE8CA4858"
-                        + "1D5C0D9C9CA52D680EB299B4B21C7FA25FFEE174D57015E0FF2EAED653AAD95C"
-                        + "071ABE269A8C2C9FBC1188E07550EB992F910D4CA9689E44BA66DE0FABB2BDF9"
-                        + "8DD377186DBB25EF9B68B027BB2A27981779D8303D88D7CE860010A42862D50B"
-                        + "1E0DBFD3D27C36F14809D7F493B2B96A65534CF98B0C32AD5219AD77F681AC04"
-                        + "9D5CB89A0230A91A243FA7F16251B0D9B4B65E7330BEEAC9663EF4578991EAC8"
-                        + "46C19EBB726E7D113F1D0D601102C05E";
-        final String rekeyIkeDeleteReq =
-                "46B8ECA1E0D72A1866B5248CF6C7472D2E20250000000001000000502A000034"
-                        + "02E40C0C7B1ED977729F705BB9B643FAC513A1070A6EB28ECD2AEA8A441ADC05"
-                        + "7841382A7967BBF116AE52496590B2AD";
-        final String deleteIkeReq =
-                "7D3DEDC65407D1FC9361C8CF8C47162A2E20250800000000000000502A000034"
-                        + "201915C9E4E9173AA9EE79F3E02FE2D4954B22085C66D164762C34D347C16E9F"
-                        + "FC5F7F114428C54D8D915860C57B1BC1";
-        final long newIkeDeterministicInitSpi = Long.parseLong("7D3DEDC65407D1FC", 16);
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithRemoteAddress(mRemoteAddress);
-        PortPair localRemotePorts = performSetupIkeAndFirstChildBlocking(ikeInitResp, ikeAuthResp);
-
-        // Local request message ID starts from 2 because there is one IKE_INIT message and a single
-        // IKE_AUTH message.
-        int expectedReqMsgId = 2;
-        int expectedRespMsgId = 0;
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TRANSPORT_MODE_INBOUND_TS),
-                Arrays.asList(TRANSPORT_MODE_OUTBOUND_TS),
-                new ArrayList<LinkAddress>());
-        IpSecTransformCallRecord firstTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord firstTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(firstTransformRecordA, firstTransformRecordB);
-
-        // Inject rekey IKE requests
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, rekeyIkeCreateReq));
-        mTunUtils.awaitResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedRespMsgId++, true /* expectedUseEncap */);
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, rekeyIkeDeleteReq));
-        mTunUtils.awaitResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedRespMsgId++, true /* expectedUseEncap */);
-
-        // IKE has been rekeyed, reset message IDs
-        expectedReqMsgId = 0;
-        expectedRespMsgId = 0;
-
-        // Inject delete IKE request
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, deleteIkeReq));
-        mTunUtils.awaitResp(
-                newIkeDeterministicInitSpi, expectedRespMsgId++, true /* expectedUseEncap */);
-
-        verifyDeleteIpSecTransformPair(
-                mFirstChildSessionCallback, firstTransformRecordA, firstTransformRecordB);
-        mFirstChildSessionCallback.awaitOnClosed();
-        mIkeSessionCallback.awaitOnClosed();
-    }
-
-    @Test
-    public void testRekeyTransportModeChildSa() throws Exception {
-        final String ikeInitResp =
-                "46B8ECA1E0D72A18CECD871146CF83A121202220000000000000015022000030"
-                        + "0000002C010100040300000C0100000C800E0100030000080300000C03000008"
-                        + "0200000500000008040000022800008800020000C4904458957746BCF1C12972"
-                        + "1D4E19EB8A584F78DE673053396D167CE0F34552DBC69BA63FE7C673B4CF4A99"
-                        + "62481518EE985357876E8C47BAAA0DBE9C40AE47B12E52165874703586E8F786"
-                        + "045F72EEEB238C5D1823352BED44B71B3214609276ADC0B3D42DAC820168C4E2"
-                        + "660730DAAC92492403288805EBB9053F1AB060DA290000242D9364ACB93519FF"
-                        + "8F8B019BAA43A40D699F59714B327B8382216EF427ED52282900001C00004004"
-                        + "06D91438A0D6B734E152F76F5CC55A72A2E38A0A2900001C000040052EFF78B3"
-                        + "55B37F3CE75AFF26C721B050F892C0D6290000080000402E290000100000402F"
-                        + "00020003000400050000000800004014";
-        final String ikeAuthResp =
-                "46B8ECA1E0D72A18CECD871146CF83A12E20232000000001000000F0240000D4"
-                        + "A17BC258BA2714CF536663639DD5F665A60C75E93557CD5141990A8CEEDD2017"
-                        + "93F5B181C8569FBCD6C2A00198EC2B62D42BEFAC016B8B6BF6A7BC9CEDE3413A"
-                        + "6C495A6B8EC941864DC3E08F57D015EA6520C4B05884960B85478FCA53DA5F17"
-                        + "9628BB1097DA77461C71837207A9EB80720B3E6E661816EE4E14AC995B5E8441"
-                        + "A4C3F9097CC148142BA300076C94A23EC4ADE82B1DD2B121F7E9102860A8C3BF"
-                        + "58DDC207285A3176E924C44DE820322524E1AA438EFDFBA781B36084AED80846"
-                        + "3B77FCED9682B6E4E476408EF3F1037E";
-        final String rekeyChildCreateReq =
-                "46B8ECA1E0D72A18CECD871146CF83A12E202400000000000000015029000134"
-                        + "319D74B6B155B86942143CEC1D29D21F073F24B7BEDC9BFE0F0FDD8BDB5458C0"
-                        + "8DB93506E1A43DD0640FE7370C97F9B34FF4EC9B2DB7257A87B75632301FB68A"
-                        + "86B54871249534CA3D01C9BEB127B669F46470E1C8AAF72574C3CEEC15B901CF"
-                        + "5A0D6ADAE59C3CA64AC8C86689C860FAF9500E608DFE63F2DCD30510FD6FFCD5"
-                        + "A50838574132FD1D069BCACD4C7BAF45C9B1A7689FAD132E3F56DBCFAF905A8C"
-                        + "4145D4BA1B74A54762F8F43308D94DE05649C49D885121CE30681D51AC1E3E68"
-                        + "AB82F9A19B99579AFE257F32DBD1037814DA577379E4F42DEDAC84502E49C933"
-                        + "9EA83F6F5DB4401B660CB1681B023B8603D205DFDD1DE86AD8DE22B6B754F30D"
-                        + "05EAE81A709C2CEE81386133DC3DC7B5EF8F166E48E54A0722DD0C64F4D00638"
-                        + "40F272144C47F6ECED72A248180645DB";
-        final String rekeyChildDeleteReq =
-                "46B8ECA1E0D72A18CECD871146CF83A12E20250000000001000000502A000034"
-                        + "02D98DAF0432EBD991CA4F2D89C1E0EFABC6E91A3327A85D8914FB2F1485BE1B"
-                        + "8D3415D548F7CE0DC4224E7E9D0D3355";
-        final String deleteIkeReq =
-                "46B8ECA1E0D72A18CECD871146CF83A12E20250000000002000000502A000034"
-                        + "095041F4026B4634F04B0AB4F9349484F7BE9AEF03E3733EEE293330043B75D2"
-                        + "ABF5F965ED51127629585E1B1BBA787F";
-
-        // Open IKE Session
-        IkeSession ikeSession = openIkeSessionWithRemoteAddress(mRemoteAddress);
-        PortPair localRemotePorts = performSetupIkeAndFirstChildBlocking(ikeInitResp, ikeAuthResp);
-
-        // IKE INIT and IKE AUTH takes two exchanges. Local request message ID starts from 2
-        int expectedReqMsgId = 2;
-        int expectedRespMsgId = 0;
-
-        verifyIkeSessionSetupBlocking();
-        verifyChildSessionSetupBlocking(
-                mFirstChildSessionCallback,
-                Arrays.asList(TRANSPORT_MODE_INBOUND_TS),
-                Arrays.asList(TRANSPORT_MODE_OUTBOUND_TS),
-                new ArrayList<LinkAddress>());
-        IpSecTransformCallRecord oldTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord oldTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(oldTransformRecordA, oldTransformRecordB);
-
-        // Inject rekey Child requests
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, rekeyChildCreateReq));
-        mTunUtils.awaitResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedRespMsgId++, true /* expectedUseEncap */);
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, rekeyChildDeleteReq));
-        mTunUtils.awaitResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedRespMsgId++, true /* expectedUseEncap */);
-
-        // Verify IpSecTransforms are renewed
-        IpSecTransformCallRecord newTransformRecordA =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        IpSecTransformCallRecord newTransformRecordB =
-                mFirstChildSessionCallback.awaitNextCreatedIpSecTransform();
-        verifyCreateIpSecTransformPair(newTransformRecordA, newTransformRecordB);
-        verifyDeleteIpSecTransformPair(
-                mFirstChildSessionCallback, oldTransformRecordA, oldTransformRecordB);
-
-        // Inject delete IKE request
-        mTunUtils.injectPacket(buildInboundPkt(localRemotePorts, deleteIkeReq));
-        mTunUtils.awaitResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedRespMsgId++, true /* expectedUseEncap */);
-
-        verifyDeleteIpSecTransformPair(
-                mFirstChildSessionCallback, newTransformRecordA, newTransformRecordB);
-        mFirstChildSessionCallback.awaitOnClosed();
-        mIkeSessionCallback.awaitOnClosed();
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionTestBase.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionTestBase.java
deleted file mode 100644
index 745d8fb..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeSessionTestBase.java
+++ /dev/null
@@ -1,598 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.net.ipsec.ike.IkeSessionConfiguration.EXTENSION_TYPE_FRAGMENTATION;
-import static android.system.OsConstants.AF_INET;
-import static android.system.OsConstants.AF_INET6;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import android.annotation.NonNull;
-import android.app.AppOpsManager;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.ipsec.ike.cts.IkeTunUtils.PortPair;
-import android.ipsec.ike.cts.TestNetworkUtils.TestNetworkCallback;
-import android.net.ConnectivityManager;
-import android.net.InetAddresses;
-import android.net.IpSecManager;
-import android.net.IpSecTransform;
-import android.net.LinkAddress;
-import android.net.Network;
-import android.net.TestNetworkInterface;
-import android.net.TestNetworkManager;
-import android.net.annotations.PolicyDirection;
-import android.net.ipsec.ike.ChildSessionCallback;
-import android.net.ipsec.ike.ChildSessionConfiguration;
-import android.net.ipsec.ike.IkeSessionCallback;
-import android.net.ipsec.ike.IkeSessionConfiguration;
-import android.net.ipsec.ike.IkeSessionConnectionInfo;
-import android.net.ipsec.ike.IkeTrafficSelector;
-import android.net.ipsec.ike.TransportModeChildSessionParams;
-import android.net.ipsec.ike.TunnelModeChildSessionParams;
-import android.net.ipsec.ike.exceptions.IkeException;
-import android.net.ipsec.ike.exceptions.IkeProtocolException;
-import android.os.Binder;
-import android.os.ParcelFileDescriptor;
-import android.platform.test.annotations.AppModeFull;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import com.android.compatibility.common.util.SystemUtil;
-import com.android.net.module.util.ArrayTrackRecord;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-
-import java.net.Inet4Address;
-import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Package private base class for testing IkeSessionParams and IKE exchanges.
- *
- * <p>Subclasses MUST explicitly call #setUpTestNetwork and #tearDownTestNetwork to be able to use
- * the test network
- *
- * <p>All IKE Sessions running in test mode will generate SPIs deterministically. That is to say
- * each IKE Session will always generate the same IKE INIT SPI and test vectors are generated based
- * on this deterministic IKE SPI. Each test will use different local and remote addresses to avoid
- * the case that the next test try to allocate the same SPI before the previous test has released
- * it, since SPI resources are not released in testing thread. Similarly, each test MUST use
- * different Network instances to avoid sharing the same IkeSocket and hitting IKE SPI collision.
- */
-@RunWith(AndroidJUnit4.class)
-@AppModeFull(reason = "MANAGE_TEST_NETWORKS permission can't be granted to instant apps")
-abstract class IkeSessionTestBase extends IkeTestBase {
-    // Package-wide common expected results that will be shared by all IKE/Child SA creation tests
-    static final String EXPECTED_REMOTE_APP_VERSION_EMPTY = "";
-    static final byte[] EXPECTED_PROTOCOL_ERROR_DATA_NONE = new byte[0];
-
-    static final InetAddress EXPECTED_DNS_SERVERS_ONE =
-            InetAddresses.parseNumericAddress("8.8.8.8");
-    static final InetAddress EXPECTED_DNS_SERVERS_TWO =
-            InetAddresses.parseNumericAddress("8.8.4.4");
-
-    static final InetAddress EXPECTED_INTERNAL_ADDR =
-            InetAddresses.parseNumericAddress("198.51.100.10");
-    static final LinkAddress EXPECTED_INTERNAL_LINK_ADDR =
-            new LinkAddress(EXPECTED_INTERNAL_ADDR, IP4_PREFIX_LEN);
-    static final InetAddress EXPECTED_INTERNAL_ADDR_V6 =
-            InetAddresses.parseNumericAddress("2001:db8::2");
-    static final LinkAddress EXPECTED_INTERNAL_LINK_ADDR_V6 =
-            new LinkAddress(EXPECTED_INTERNAL_ADDR_V6, IP6_PREFIX_LEN);
-
-    static final IkeTrafficSelector TUNNEL_MODE_INBOUND_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT, MAX_PORT, EXPECTED_INTERNAL_ADDR, EXPECTED_INTERNAL_ADDR);
-    static final IkeTrafficSelector TUNNEL_MODE_OUTBOUND_TS = DEFAULT_V4_TS;
-    static final IkeTrafficSelector TUNNEL_MODE_INBOUND_TS_V6 =
-            new IkeTrafficSelector(
-                    MIN_PORT, MAX_PORT, EXPECTED_INTERNAL_ADDR_V6, EXPECTED_INTERNAL_ADDR_V6);
-    static final IkeTrafficSelector TUNNEL_MODE_OUTBOUND_TS_V6 = DEFAULT_V6_TS;
-
-    // This value is align with the test vectors hex that are generated in an IPv4 environment
-    static final IkeTrafficSelector TRANSPORT_MODE_OUTBOUND_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("10.138.0.2"),
-                    InetAddresses.parseNumericAddress("10.138.0.2"));
-
-    static final long IKE_DETERMINISTIC_INITIATOR_SPI = Long.parseLong("46B8ECA1E0D72A18", 16);
-
-    // Static state to reduce setup/teardown
-    static Context sContext = InstrumentationRegistry.getContext();
-    static ConnectivityManager sCM =
-            (ConnectivityManager) sContext.getSystemService(Context.CONNECTIVITY_SERVICE);
-    static TestNetworkManager sTNM;
-
-    private static final int TIMEOUT_MS = 500;
-
-    // Constants to be used for providing different IP addresses for each tests
-    private static final byte IP_ADDR_LAST_BYTE_MAX = (byte) 100;
-    private static final byte[] INITIAL_AVAILABLE_IP4_ADDR_LOCAL =
-            InetAddresses.parseNumericAddress("192.0.2.1").getAddress();
-    private static final byte[] INITIAL_AVAILABLE_IP4_ADDR_REMOTE =
-            InetAddresses.parseNumericAddress("198.51.100.1").getAddress();
-    private static final byte[] NEXT_AVAILABLE_IP4_ADDR_LOCAL = INITIAL_AVAILABLE_IP4_ADDR_LOCAL;
-    private static final byte[] NEXT_AVAILABLE_IP4_ADDR_REMOTE = INITIAL_AVAILABLE_IP4_ADDR_REMOTE;
-
-    ParcelFileDescriptor mTunFd;
-    TestNetworkCallback mTunNetworkCallback;
-    Network mTunNetwork;
-    IkeTunUtils mTunUtils;
-
-    InetAddress mLocalAddress;
-    InetAddress mRemoteAddress;
-
-    Executor mUserCbExecutor;
-    TestIkeSessionCallback mIkeSessionCallback;
-    TestChildSessionCallback mFirstChildSessionCallback;
-
-    // This method is guaranteed to run in subclasses and will run before subclasses' @BeforeClass
-    // methods.
-    @BeforeClass
-    public static void setUpPermissionBeforeClass() throws Exception {
-        InstrumentationRegistry.getInstrumentation()
-                .getUiAutomation()
-                .adoptShellPermissionIdentity();
-        sTNM = sContext.getSystemService(TestNetworkManager.class);
-    }
-
-    // This method is guaranteed to run in subclasses and will run after subclasses' @AfterClass
-    // methods.
-    @AfterClass
-    public static void tearDownPermissionAfterClass() throws Exception {
-        InstrumentationRegistry.getInstrumentation()
-                .getUiAutomation()
-                .dropShellPermissionIdentity();
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        mLocalAddress = getNextAvailableIpv4AddressLocal();
-        mRemoteAddress = getNextAvailableIpv4AddressRemote();
-        setUpTestNetwork(mLocalAddress);
-
-        mUserCbExecutor = Executors.newSingleThreadExecutor();
-        mIkeSessionCallback = new TestIkeSessionCallback();
-        mFirstChildSessionCallback = new TestChildSessionCallback();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        tearDownTestNetwork();
-    }
-
-    void setUpTestNetwork(InetAddress localAddr) throws Exception {
-        int prefixLen = localAddr instanceof Inet4Address ? IP4_PREFIX_LEN : IP6_PREFIX_LEN;
-
-        TestNetworkInterface testIface =
-                sTNM.createTunInterface(new LinkAddress[] {new LinkAddress(localAddr, prefixLen)});
-
-        mTunFd = testIface.getFileDescriptor();
-        mTunNetworkCallback =
-                TestNetworkUtils.setupAndGetTestNetwork(
-                        sCM, sTNM, testIface.getInterfaceName(), new Binder());
-        mTunNetwork = mTunNetworkCallback.getNetworkBlocking();
-        mTunUtils = new IkeTunUtils(mTunFd);
-    }
-
-    void tearDownTestNetwork() throws Exception {
-        sCM.unregisterNetworkCallback(mTunNetworkCallback);
-
-        sTNM.teardownTestNetwork(mTunNetwork);
-        mTunFd.close();
-    }
-
-    static void setAppOp(int appop, boolean allow) {
-        String opName = AppOpsManager.opToName(appop);
-        for (String pkg : new String[] {"com.android.shell", sContext.getPackageName()}) {
-            String cmd =
-                    String.format(
-                            "appops set %s %s %s",
-                            pkg, // Package name
-                            opName, // Appop
-                            (allow ? "allow" : "deny")); // Action
-
-            SystemUtil.runShellCommand(cmd);
-        }
-    }
-
-    Inet4Address getNextAvailableIpv4AddressLocal() throws Exception {
-        return (Inet4Address)
-                getNextAvailableAddress(
-                        NEXT_AVAILABLE_IP4_ADDR_LOCAL,
-                        INITIAL_AVAILABLE_IP4_ADDR_LOCAL,
-                        false /* isIp6 */);
-    }
-
-    Inet4Address getNextAvailableIpv4AddressRemote() throws Exception {
-        return (Inet4Address)
-                getNextAvailableAddress(
-                        NEXT_AVAILABLE_IP4_ADDR_REMOTE,
-                        INITIAL_AVAILABLE_IP4_ADDR_REMOTE,
-                        false /* isIp6 */);
-    }
-
-    InetAddress getNextAvailableAddress(
-            byte[] nextAddressBytes, byte[] initialAddressBytes, boolean isIp6) throws Exception {
-        int addressLen = isIp6 ? IP6_ADDRESS_LEN : IP4_ADDRESS_LEN;
-
-        synchronized (nextAddressBytes) {
-            if (nextAddressBytes[addressLen - 1] == IP_ADDR_LAST_BYTE_MAX) {
-                resetNextAvailableAddress(nextAddressBytes, initialAddressBytes);
-            }
-
-            InetAddress address = InetAddress.getByAddress(nextAddressBytes);
-            nextAddressBytes[addressLen - 1]++;
-            return address;
-        }
-    }
-
-    private void resetNextAvailableAddress(byte[] nextAddressBytes, byte[] initialAddressBytes) {
-        synchronized (nextAddressBytes) {
-            System.arraycopy(
-                    nextAddressBytes, 0, initialAddressBytes, 0, initialAddressBytes.length);
-        }
-    }
-
-    TransportModeChildSessionParams buildTransportModeChildParamsWithTs(
-            IkeTrafficSelector inboundTs, IkeTrafficSelector outboundTs) {
-        return new TransportModeChildSessionParams.Builder()
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithCombinedModeCipher())
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithNormalModeCipher())
-                .addInboundTrafficSelectors(inboundTs)
-                .addOutboundTrafficSelectors(outboundTs)
-                .build();
-    }
-
-    TransportModeChildSessionParams buildTransportModeChildParamsWithDefaultTs() {
-        return new TransportModeChildSessionParams.Builder()
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithCombinedModeCipher())
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithNormalModeCipher())
-                .build();
-    }
-
-    TunnelModeChildSessionParams buildTunnelModeChildSessionParams() {
-        return new TunnelModeChildSessionParams.Builder()
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithNormalModeCipher())
-                .addSaProposal(SaProposalTest.buildChildSaProposalWithCombinedModeCipher())
-                .addInternalAddressRequest(AF_INET)
-                .addInternalAddressRequest(AF_INET6)
-                .build();
-    }
-
-    PortPair performSetupIkeAndFirstChildBlocking(String ikeInitRespHex, String... ikeAuthRespHexes)
-            throws Exception {
-        return performSetupIkeAndFirstChildBlocking(
-                ikeInitRespHex,
-                1 /* expectedAuthReqPktCnt */,
-                true /*expectedAuthUseEncap*/,
-                ikeAuthRespHexes);
-    }
-
-    PortPair performSetupIkeAndFirstChildBlocking(
-            String ikeInitRespHex, boolean expectedAuthUseEncap, String... ikeAuthRespHexes)
-            throws Exception {
-        return performSetupIkeAndFirstChildBlocking(
-                ikeInitRespHex,
-                1 /* expectedAuthReqPktCnt */,
-                expectedAuthUseEncap,
-                ikeAuthRespHexes);
-    }
-
-    PortPair performSetupIkeAndFirstChildBlocking(
-            String ikeInitRespHex,
-            int expectedAuthReqPktCnt,
-            boolean expectedAuthUseEncap,
-            String... ikeAuthRespHexes)
-            throws Exception {
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI,
-                0 /* expectedMsgId */,
-                false /* expectedUseEncap */,
-                ikeInitRespHex);
-
-        byte[] ikeAuthReqPkt =
-                mTunUtils
-                        .awaitReqAndInjectResp(
-                                IKE_DETERMINISTIC_INITIATOR_SPI,
-                                1 /* expectedMsgId */,
-                                expectedAuthUseEncap,
-                                expectedAuthReqPktCnt,
-                                ikeAuthRespHexes)
-                        .get(0);
-        return IkeTunUtils.getSrcDestPortPair(ikeAuthReqPkt);
-    }
-
-    void performCloseIkeBlocking(int expectedMsgId, String deleteIkeRespHex) throws Exception {
-        performCloseIkeBlocking(expectedMsgId, true /* expectedUseEncap*/, deleteIkeRespHex);
-    }
-
-    void performCloseIkeBlocking(
-            int expectedMsgId, boolean expectedUseEncap, String deleteIkeRespHex) throws Exception {
-        mTunUtils.awaitReqAndInjectResp(
-                IKE_DETERMINISTIC_INITIATOR_SPI, expectedMsgId, expectedUseEncap, deleteIkeRespHex);
-    }
-
-    /** Testing callback that allows caller to block current thread until a method get called */
-    static class TestIkeSessionCallback implements IkeSessionCallback {
-        private CompletableFuture<IkeSessionConfiguration> mFutureIkeConfig =
-                new CompletableFuture<>();
-        private CompletableFuture<Boolean> mFutureOnClosedCall = new CompletableFuture<>();
-        private CompletableFuture<IkeException> mFutureOnClosedException =
-                new CompletableFuture<>();
-
-        private int mOnErrorExceptionsCount = 0;
-        private ArrayTrackRecord<IkeProtocolException> mOnErrorExceptionsTrackRecord =
-                new ArrayTrackRecord<>();
-
-        @Override
-        public void onOpened(@NonNull IkeSessionConfiguration sessionConfiguration) {
-            mFutureIkeConfig.complete(sessionConfiguration);
-        }
-
-        @Override
-        public void onClosed() {
-            mFutureOnClosedCall.complete(true /* unused */);
-        }
-
-        @Override
-        public void onClosedExceptionally(@NonNull IkeException exception) {
-            mFutureOnClosedException.complete(exception);
-        }
-
-        @Override
-        public void onError(@NonNull IkeProtocolException exception) {
-            mOnErrorExceptionsTrackRecord.add(exception);
-        }
-
-        public IkeSessionConfiguration awaitIkeConfig() throws Exception {
-            return mFutureIkeConfig.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-
-        public IkeException awaitOnClosedException() throws Exception {
-            return mFutureOnClosedException.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-
-        public IkeProtocolException awaitNextOnErrorException() {
-            return mOnErrorExceptionsTrackRecord.poll(
-                    (long) TIMEOUT_MS,
-                    mOnErrorExceptionsCount++,
-                    (transform) -> {
-                        return true;
-                    });
-        }
-
-        public void awaitOnClosed() throws Exception {
-            mFutureOnClosedCall.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-    }
-
-    /** Testing callback that allows caller to block current thread until a method get called */
-    static class TestChildSessionCallback implements ChildSessionCallback {
-        private CompletableFuture<ChildSessionConfiguration> mFutureChildConfig =
-                new CompletableFuture<>();
-        private CompletableFuture<Boolean> mFutureOnClosedCall = new CompletableFuture<>();
-        private CompletableFuture<IkeException> mFutureOnClosedException =
-                new CompletableFuture<>();
-
-        private int mCreatedIpSecTransformCount = 0;
-        private int mDeletedIpSecTransformCount = 0;
-        private ArrayTrackRecord<IpSecTransformCallRecord> mCreatedIpSecTransformsTrackRecord =
-                new ArrayTrackRecord<>();
-        private ArrayTrackRecord<IpSecTransformCallRecord> mDeletedIpSecTransformsTrackRecord =
-                new ArrayTrackRecord<>();
-
-        @Override
-        public void onOpened(@NonNull ChildSessionConfiguration sessionConfiguration) {
-            mFutureChildConfig.complete(sessionConfiguration);
-        }
-
-        @Override
-        public void onClosed() {
-            mFutureOnClosedCall.complete(true /* unused */);
-        }
-
-        @Override
-        public void onClosedExceptionally(@NonNull IkeException exception) {
-            mFutureOnClosedException.complete(exception);
-        }
-
-        @Override
-        public void onIpSecTransformCreated(@NonNull IpSecTransform ipSecTransform, int direction) {
-            mCreatedIpSecTransformsTrackRecord.add(
-                    new IpSecTransformCallRecord(ipSecTransform, direction));
-        }
-
-        @Override
-        public void onIpSecTransformDeleted(@NonNull IpSecTransform ipSecTransform, int direction) {
-            mDeletedIpSecTransformsTrackRecord.add(
-                    new IpSecTransformCallRecord(ipSecTransform, direction));
-        }
-
-        public ChildSessionConfiguration awaitChildConfig() throws Exception {
-            return mFutureChildConfig.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-
-        public IkeException awaitOnClosedException() throws Exception {
-            return mFutureOnClosedException.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-
-        public IpSecTransformCallRecord awaitNextCreatedIpSecTransform() {
-            return mCreatedIpSecTransformsTrackRecord.poll(
-                    (long) TIMEOUT_MS,
-                    mCreatedIpSecTransformCount++,
-                    (transform) -> {
-                        return true;
-                    });
-        }
-
-        public IpSecTransformCallRecord awaitNextDeletedIpSecTransform() {
-            return mDeletedIpSecTransformsTrackRecord.poll(
-                    (long) TIMEOUT_MS,
-                    mDeletedIpSecTransformCount++,
-                    (transform) -> {
-                        return true;
-                    });
-        }
-
-        public void awaitOnClosed() throws Exception {
-            mFutureOnClosedCall.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-    }
-
-    /**
-     * This class represents a created or deleted IpSecTransfrom that is provided by
-     * ChildSessionCallback
-     */
-    static class IpSecTransformCallRecord {
-        public final IpSecTransform ipSecTransform;
-        public final int direction;
-
-        IpSecTransformCallRecord(IpSecTransform ipSecTransform, @PolicyDirection int direction) {
-            this.ipSecTransform = ipSecTransform;
-            this.direction = direction;
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(ipSecTransform, direction);
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (!(o instanceof IpSecTransformCallRecord)) return false;
-
-            IpSecTransformCallRecord record = (IpSecTransformCallRecord) o;
-            return ipSecTransform.equals(record.ipSecTransform) && direction == record.direction;
-        }
-    }
-
-    void verifyIkeSessionSetupBlocking() throws Exception {
-        IkeSessionConfiguration ikeConfig = mIkeSessionCallback.awaitIkeConfig();
-        assertNotNull(ikeConfig);
-        assertEquals(EXPECTED_REMOTE_APP_VERSION_EMPTY, ikeConfig.getRemoteApplicationVersion());
-        assertTrue(ikeConfig.getRemoteVendorIds().isEmpty());
-        assertTrue(ikeConfig.getPcscfServers().isEmpty());
-        assertTrue(ikeConfig.isIkeExtensionEnabled(EXTENSION_TYPE_FRAGMENTATION));
-
-        IkeSessionConnectionInfo ikeConnectInfo = ikeConfig.getIkeSessionConnectionInfo();
-        assertNotNull(ikeConnectInfo);
-        assertEquals(mLocalAddress, ikeConnectInfo.getLocalAddress());
-        assertEquals(mRemoteAddress, ikeConnectInfo.getRemoteAddress());
-        assertEquals(mTunNetwork, ikeConnectInfo.getNetwork());
-    }
-
-    void verifyChildSessionSetupBlocking(
-            TestChildSessionCallback childCallback,
-            List<IkeTrafficSelector> expectedInboundTs,
-            List<IkeTrafficSelector> expectedOutboundTs,
-            List<LinkAddress> expectedInternalAddresses)
-            throws Exception {
-        verifyChildSessionSetupBlocking(
-                childCallback,
-                expectedInboundTs,
-                expectedOutboundTs,
-                expectedInternalAddresses,
-                new ArrayList<InetAddress>() /* expectedDnsServers */);
-    }
-
-    void verifyChildSessionSetupBlocking(
-            TestChildSessionCallback childCallback,
-            List<IkeTrafficSelector> expectedInboundTs,
-            List<IkeTrafficSelector> expectedOutboundTs,
-            List<LinkAddress> expectedInternalAddresses,
-            List<InetAddress> expectedDnsServers)
-            throws Exception {
-        ChildSessionConfiguration childConfig = childCallback.awaitChildConfig();
-        assertNotNull(childConfig);
-        assertEquals(expectedInboundTs, childConfig.getInboundTrafficSelectors());
-        assertEquals(expectedOutboundTs, childConfig.getOutboundTrafficSelectors());
-        assertEquals(expectedInternalAddresses, childConfig.getInternalAddresses());
-        assertEquals(expectedDnsServers, childConfig.getInternalDnsServers());
-        assertTrue(childConfig.getInternalSubnets().isEmpty());
-        assertTrue(childConfig.getInternalDhcpServers().isEmpty());
-    }
-
-    void verifyCloseIkeAndChildBlocking(
-            IpSecTransformCallRecord expectedTransformRecordA,
-            IpSecTransformCallRecord expectedTransformRecordB)
-            throws Exception {
-        verifyDeleteIpSecTransformPair(
-                mFirstChildSessionCallback, expectedTransformRecordA, expectedTransformRecordB);
-        mFirstChildSessionCallback.awaitOnClosed();
-        mIkeSessionCallback.awaitOnClosed();
-    }
-
-    static void verifyCreateIpSecTransformPair(
-            IpSecTransformCallRecord transformRecordA, IpSecTransformCallRecord transformRecordB) {
-        IpSecTransform transformA = transformRecordA.ipSecTransform;
-        IpSecTransform transformB = transformRecordB.ipSecTransform;
-
-        assertNotNull(transformA);
-        assertNotNull(transformB);
-
-        Set<Integer> expectedDirections = new HashSet<>();
-        expectedDirections.add(IpSecManager.DIRECTION_IN);
-        expectedDirections.add(IpSecManager.DIRECTION_OUT);
-
-        Set<Integer> resultDirections = new HashSet<>();
-        resultDirections.add(transformRecordA.direction);
-        resultDirections.add(transformRecordB.direction);
-
-        assertEquals(expectedDirections, resultDirections);
-    }
-
-    static void verifyDeleteIpSecTransformPair(
-            TestChildSessionCallback childCb,
-            IpSecTransformCallRecord expectedTransformRecordA,
-            IpSecTransformCallRecord expectedTransformRecordB) {
-        Set<IpSecTransformCallRecord> expectedTransforms = new HashSet<>();
-        expectedTransforms.add(expectedTransformRecordA);
-        expectedTransforms.add(expectedTransformRecordB);
-
-        Set<IpSecTransformCallRecord> resultTransforms = new HashSet<>();
-        resultTransforms.add(childCb.awaitNextDeletedIpSecTransform());
-        resultTransforms.add(childCb.awaitNextDeletedIpSecTransform());
-
-        assertEquals(expectedTransforms, resultTransforms);
-    }
-
-    /** Package private method to check if device has IPsec tunnels feature */
-    static boolean hasTunnelsFeature() {
-        return sContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_IPSEC_TUNNELS);
-    }
-
-    // TODO(b/148689509): Verify hostname based creation
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTestBase.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTestBase.java
deleted file mode 100644
index 56275e5..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTestBase.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import android.net.InetAddresses;
-import android.net.ipsec.ike.IkeTrafficSelector;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/** Shared parameters and util methods for testing different components of IKE */
-abstract class IkeTestBase {
-    static final int MIN_PORT = 0;
-    static final int MAX_PORT = 65535;
-    private static final int INBOUND_TS_START_PORT = MIN_PORT;
-    private static final int INBOUND_TS_END_PORT = 65520;
-    private static final int OUTBOUND_TS_START_PORT = 16;
-    private static final int OUTBOUND_TS_END_PORT = MAX_PORT;
-
-    static final int IP4_ADDRESS_LEN = 4;
-    static final int IP6_ADDRESS_LEN = 16;
-    static final int IP4_PREFIX_LEN = 32;
-    static final int IP6_PREFIX_LEN = 64;
-
-    static final byte[] IKE_PSK = "ikeAndroidPsk".getBytes();
-
-    static final String LOCAL_HOSTNAME = "client.test.ike.android.net";
-    static final String REMOTE_HOSTNAME = "server.test.ike.android.net";
-    static final String LOCAL_ASN1_DN_STRING = "CN=client.test.ike.android.net, O=Android, C=US";
-    static final String LOCAL_RFC822_NAME = "client.test.ike@example.com";
-    static final byte[] LOCAL_KEY_ID = "Local Key ID".getBytes();
-
-    static final int SUB_ID = 1;
-    static final byte[] EAP_IDENTITY = "test@android.net".getBytes();
-    static final String NETWORK_NAME = "android.net";
-    static final String EAP_MSCHAPV2_USERNAME = "mschapv2user";
-    static final String EAP_MSCHAPV2_PASSWORD = "password";
-
-    static final Inet4Address IPV4_ADDRESS_LOCAL =
-            (Inet4Address) (InetAddresses.parseNumericAddress("192.0.2.100"));
-    static final Inet4Address IPV4_ADDRESS_REMOTE =
-            (Inet4Address) (InetAddresses.parseNumericAddress("198.51.100.100"));
-    static final Inet6Address IPV6_ADDRESS_LOCAL =
-            (Inet6Address) (InetAddresses.parseNumericAddress("2001:db8::100"));
-    static final Inet6Address IPV6_ADDRESS_REMOTE =
-            (Inet6Address) (InetAddresses.parseNumericAddress("2001:db8:255::100"));
-
-    static final InetAddress PCSCF_IPV4_ADDRESS_1 = InetAddresses.parseNumericAddress("192.0.2.1");
-    static final InetAddress PCSCF_IPV4_ADDRESS_2 = InetAddresses.parseNumericAddress("192.0.2.2");
-    static final InetAddress PCSCF_IPV6_ADDRESS_1 =
-            InetAddresses.parseNumericAddress("2001:DB8::1");
-    static final InetAddress PCSCF_IPV6_ADDRESS_2 =
-            InetAddresses.parseNumericAddress("2001:DB8::2");
-
-    static final IkeTrafficSelector DEFAULT_V4_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("0.0.0.0"),
-                    InetAddresses.parseNumericAddress("255.255.255.255"));
-    static final IkeTrafficSelector DEFAULT_V6_TS =
-            new IkeTrafficSelector(
-                    MIN_PORT,
-                    MAX_PORT,
-                    InetAddresses.parseNumericAddress("::"),
-                    InetAddresses.parseNumericAddress("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"));
-    static final IkeTrafficSelector INBOUND_V4_TS =
-            new IkeTrafficSelector(
-                    INBOUND_TS_START_PORT,
-                    INBOUND_TS_END_PORT,
-                    InetAddresses.parseNumericAddress("192.0.2.10"),
-                    InetAddresses.parseNumericAddress("192.0.2.20"));
-    static final IkeTrafficSelector OUTBOUND_V4_TS =
-            new IkeTrafficSelector(
-                    OUTBOUND_TS_START_PORT,
-                    OUTBOUND_TS_END_PORT,
-                    InetAddresses.parseNumericAddress("198.51.100.0"),
-                    InetAddresses.parseNumericAddress("198.51.100.255"));
-
-    static final IkeTrafficSelector INBOUND_V6_TS =
-            new IkeTrafficSelector(
-                    INBOUND_TS_START_PORT,
-                    INBOUND_TS_END_PORT,
-                    InetAddresses.parseNumericAddress("2001:db8::10"),
-                    InetAddresses.parseNumericAddress("2001:db8::128"));
-    static final IkeTrafficSelector OUTBOUND_V6_TS =
-            new IkeTrafficSelector(
-                    OUTBOUND_TS_START_PORT,
-                    OUTBOUND_TS_END_PORT,
-                    InetAddresses.parseNumericAddress("2001:db8:255::64"),
-                    InetAddresses.parseNumericAddress("2001:db8:255::255"));
-
-    // Verify Config requests in TunnelModeChildSessionParams and IkeSessionParams
-    <T> void verifyConfigRequestTypes(
-            Map<Class<? extends T>, Integer> expectedReqCntMap, List<? extends T> resultReqList) {
-        Map<Class<? extends T>, Integer> resultReqCntMap = new HashMap<>();
-
-        // Verify that every config request type in resultReqList is expected, and build
-        // resultReqCntMap at the same time
-        for (T resultReq : resultReqList) {
-            boolean isResultReqExpected = false;
-
-            for (Class<? extends T> expectedReqInterface : expectedReqCntMap.keySet()) {
-                if (expectedReqInterface.isInstance(resultReq)) {
-                    isResultReqExpected = true;
-
-                    resultReqCntMap.put(
-                            expectedReqInterface,
-                            resultReqCntMap.getOrDefault(expectedReqInterface, 0) + 1);
-                }
-            }
-
-            if (!isResultReqExpected) {
-                fail("Failed due to unexpected config request " + resultReq);
-            }
-        }
-
-        assertEquals(expectedReqCntMap, resultReqCntMap);
-
-        // TODO: Think of a neat way to validate both counts and values in this method. Probably can
-        // build Runnables as validators for count and values.
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTunUtils.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTunUtils.java
deleted file mode 100644
index 193455a..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/IkeTunUtils.java
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.ipsec.ike.cts;
-
-import static android.ipsec.ike.cts.PacketUtils.BytePayload;
-import static android.ipsec.ike.cts.PacketUtils.IP4_HDRLEN;
-import static android.ipsec.ike.cts.PacketUtils.IP6_HDRLEN;
-import static android.ipsec.ike.cts.PacketUtils.Ip4Header;
-import static android.ipsec.ike.cts.PacketUtils.Ip6Header;
-import static android.ipsec.ike.cts.PacketUtils.IpHeader;
-import static android.ipsec.ike.cts.PacketUtils.Payload;
-import static android.ipsec.ike.cts.PacketUtils.UDP_HDRLEN;
-import static android.ipsec.ike.cts.PacketUtils.UdpHeader;
-import static android.system.OsConstants.IPPROTO_UDP;
-
-import static com.android.internal.util.HexDump.hexStringToByteArray;
-
-import static org.junit.Assert.fail;
-
-import android.os.ParcelFileDescriptor;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-
-public class IkeTunUtils extends TunUtils {
-    private static final int PORT_LEN = 2;
-
-    private static final int NON_ESP_MARKER_LEN = 4;
-    private static final byte[] NON_ESP_MARKER = new byte[NON_ESP_MARKER_LEN];
-
-    private static final int IKE_INIT_SPI_OFFSET = 0;
-    private static final int IKE_FIRST_PAYLOAD_OFFSET = 16;
-    private static final int IKE_IS_RESP_BYTE_OFFSET = 19;
-    private static final int IKE_MSG_ID_OFFSET = 20;
-    private static final int IKE_HEADER_LEN = 28;
-    private static final int IKE_FRAG_NUM_OFFSET = 32;
-    private static final int IKE_PAYLOAD_TYPE_SKF = 53;
-
-    private static final int RSP_FLAG_MASK = 0x20;
-
-    public IkeTunUtils(ParcelFileDescriptor tunFd) {
-        super(tunFd);
-    }
-
-    /**
-     * Await the expected IKE request inject an IKE response (or a list of response fragments)
-     *
-     * @param ikeRespDataFragmentsHex IKE response hex (or a list of response fragments) without
-     *     IP/UDP headers or NON ESP MARKER.
-     */
-    public byte[] awaitReqAndInjectResp(
-            long expectedInitIkeSpi,
-            int expectedMsgId,
-            boolean expectedUseEncap,
-            String... ikeRespDataFragmentsHex)
-            throws Exception {
-        return awaitReqAndInjectResp(
-                        expectedInitIkeSpi,
-                        expectedMsgId,
-                        expectedUseEncap,
-                        1 /* expectedReqPktCnt */,
-                        ikeRespDataFragmentsHex)
-                .get(0);
-    }
-
-    /**
-     * Await the expected IKE request (or the list of IKE request fragments) and inject an IKE
-     * response (or a list of response fragments)
-     *
-     * @param ikeRespDataFragmentsHex IKE response hex (or a list of response fragments) without
-     *     IP/UDP headers or NON ESP MARKER.
-     */
-    public List<byte[]> awaitReqAndInjectResp(
-            long expectedInitIkeSpi,
-            int expectedMsgId,
-            boolean expectedUseEncap,
-            int expectedReqPktCnt,
-            String... ikeRespDataFragmentsHex)
-            throws Exception {
-        List<byte[]> reqList = new ArrayList<>(expectedReqPktCnt);
-        if (expectedReqPktCnt == 1) {
-            // Expecting one complete IKE packet
-            byte[] req =
-                    awaitIkePacket(
-                            (pkt) -> {
-                                return isExpectedIkePkt(
-                                        pkt,
-                                        expectedInitIkeSpi,
-                                        expectedMsgId,
-                                        false /* expectedResp */,
-                                        expectedUseEncap);
-                            });
-            reqList.add(req);
-        } else {
-            // Expecting "expectedReqPktCnt" number of request fragments
-            for (int i = 0; i < expectedReqPktCnt; i++) {
-                // IKE Fragment number always starts from 1
-                int expectedFragNum = i + 1;
-                byte[] req =
-                        awaitIkePacket(
-                                (pkt) -> {
-                                    return isExpectedIkeFragPkt(
-                                            pkt,
-                                            expectedInitIkeSpi,
-                                            expectedMsgId,
-                                            false /* expectedResp */,
-                                            expectedUseEncap,
-                                            expectedFragNum);
-                                });
-                reqList.add(req);
-            }
-        }
-
-        // All request fragments have the same addresses and ports
-        byte[] request = reqList.get(0);
-
-        // Build response header by flipping address and port
-        InetAddress srcAddr = getAddress(request, false /* shouldGetSource */);
-        InetAddress dstAddr = getAddress(request, true /* shouldGetSource */);
-        int srcPort = getPort(request, false /* shouldGetSource */);
-        int dstPort = getPort(request, true /* shouldGetSource */);
-        for (String resp : ikeRespDataFragmentsHex) {
-            byte[] response =
-                    buildIkePacket(
-                            srcAddr,
-                            dstAddr,
-                            srcPort,
-                            dstPort,
-                            expectedUseEncap,
-                            hexStringToByteArray(resp));
-            injectPacket(response);
-        }
-
-        return reqList;
-    }
-
-    /** Await the expected IKE response */
-    public byte[] awaitResp(long expectedInitIkeSpi, int expectedMsgId, boolean expectedUseEncap)
-            throws Exception {
-        return awaitIkePacket(
-                (pkt) -> {
-                    return isExpectedIkePkt(
-                            pkt,
-                            expectedInitIkeSpi,
-                            expectedMsgId,
-                            true /* expectedResp*/,
-                            expectedUseEncap);
-                });
-    }
-
-    private byte[] awaitIkePacket(Predicate<byte[]> pktVerifier) throws Exception {
-        long endTime = System.currentTimeMillis() + TIMEOUT;
-        int startIndex = 0;
-        synchronized (mPackets) {
-            while (System.currentTimeMillis() < endTime) {
-                byte[] ikePkt = getFirstMatchingPacket(pktVerifier, startIndex);
-                if (ikePkt != null) {
-                    return ikePkt; // We've found the packet we're looking for.
-                }
-
-                startIndex = mPackets.size();
-
-                // Try to prevent waiting too long. If waitTimeout <= 0, we've already hit timeout
-                long waitTimeout = endTime - System.currentTimeMillis();
-                if (waitTimeout > 0) {
-                    mPackets.wait(waitTimeout);
-                }
-            }
-
-            fail("No matching packet found");
-        }
-
-        throw new IllegalStateException(
-                "Hit an impossible case where fail() didn't throw an exception");
-    }
-
-    private static boolean isExpectedIkePkt(
-            byte[] pkt,
-            long expectedInitIkeSpi,
-            int expectedMsgId,
-            boolean expectedResp,
-            boolean expectedUseEncap) {
-        int ipProtocolOffset = isIpv6(pkt) ? IP6_PROTO_OFFSET : IP4_PROTO_OFFSET;
-        int ikeOffset = getIkeOffset(pkt, expectedUseEncap);
-
-        return pkt[ipProtocolOffset] == IPPROTO_UDP
-                && expectedUseEncap == hasNonEspMarker(pkt)
-                && isExpectedSpiAndMsgId(
-                        pkt, ikeOffset, expectedInitIkeSpi, expectedMsgId, expectedResp);
-    }
-
-    private static boolean isExpectedIkeFragPkt(
-            byte[] pkt,
-            long expectedInitIkeSpi,
-            int expectedMsgId,
-            boolean expectedResp,
-            boolean expectedUseEncap,
-            int expectedFragNum) {
-        return isExpectedIkePkt(
-                        pkt, expectedInitIkeSpi, expectedMsgId, expectedResp, expectedUseEncap)
-                && isExpectedFragNum(pkt, getIkeOffset(pkt, expectedUseEncap), expectedFragNum);
-    }
-
-    private static int getIkeOffset(byte[] pkt, boolean useEncap) {
-        if (isIpv6(pkt)) {
-            // IPv6 UDP expectedUseEncap not supported by kernels; assume non-expectedUseEncap.
-            return IP6_HDRLEN + UDP_HDRLEN;
-        } else {
-            // Use default IPv4 header length (assuming no options)
-            int ikeOffset = IP4_HDRLEN + UDP_HDRLEN;
-            return useEncap ? ikeOffset + NON_ESP_MARKER_LEN : ikeOffset;
-        }
-    }
-
-    private static boolean hasNonEspMarker(byte[] pkt) {
-        ByteBuffer buffer = ByteBuffer.wrap(pkt);
-        int ikeOffset = IP4_HDRLEN + UDP_HDRLEN;
-        if (buffer.remaining() < ikeOffset) return false;
-
-        buffer.get(new byte[ikeOffset]); // Skip IP and UDP header
-        byte[] nonEspMarker = new byte[NON_ESP_MARKER_LEN];
-        if (buffer.remaining() < NON_ESP_MARKER_LEN) return false;
-
-        buffer.get(nonEspMarker);
-        return Arrays.equals(NON_ESP_MARKER, nonEspMarker);
-    }
-
-    private static boolean isExpectedSpiAndMsgId(
-            byte[] pkt,
-            int ikeOffset,
-            long expectedInitIkeSpi,
-            int expectedMsgId,
-            boolean expectedResp) {
-        if (pkt.length <= ikeOffset + IKE_HEADER_LEN) return false;
-
-        ByteBuffer buffer = ByteBuffer.wrap(pkt);
-        buffer.get(new byte[ikeOffset]); // Skip IP, UDP header (and NON_ESP_MARKER)
-        buffer.mark(); // Mark this position so that later we can reset back here
-
-        // Check SPI
-        buffer.get(new byte[IKE_INIT_SPI_OFFSET]);
-        long initSpi = buffer.getLong();
-        if (expectedInitIkeSpi != initSpi) {
-            return false;
-        }
-
-        // Check direction
-        buffer.reset();
-        buffer.get(new byte[IKE_IS_RESP_BYTE_OFFSET]);
-        byte flagsByte = buffer.get();
-        boolean isResp = ((flagsByte & RSP_FLAG_MASK) != 0);
-        if (expectedResp != isResp) {
-            return false;
-        }
-
-        // Check message ID
-        buffer.reset();
-        buffer.get(new byte[IKE_MSG_ID_OFFSET]);
-
-        // Both the expected message ID and the packet's msgId are signed integers, so directly
-        // compare them.
-        int msgId = buffer.getInt();
-        if (expectedMsgId != msgId) {
-            return false;
-        }
-
-        return true;
-    }
-
-    private static boolean isExpectedFragNum(byte[] pkt, int ikeOffset, int expectedFragNum) {
-        ByteBuffer buffer = ByteBuffer.wrap(pkt);
-        buffer.get(new byte[ikeOffset]);
-        buffer.mark(); // Mark this position so that later we can reset back here
-
-        // Check if it is a fragment packet
-        buffer.get(new byte[IKE_FIRST_PAYLOAD_OFFSET]);
-        int firstPayload = Byte.toUnsignedInt(buffer.get());
-        if (firstPayload != IKE_PAYLOAD_TYPE_SKF) {
-            return false;
-        }
-
-        // Check fragment number
-        buffer.reset();
-        buffer.get(new byte[IKE_FRAG_NUM_OFFSET]);
-        int fragNum = Short.toUnsignedInt(buffer.getShort());
-        return expectedFragNum == fragNum;
-    }
-
-    public static class PortPair {
-        public final int srcPort;
-        public final int dstPort;
-
-        public PortPair(int sourcePort, int destinationPort) {
-            srcPort = sourcePort;
-            dstPort = destinationPort;
-        }
-    }
-
-    public static PortPair getSrcDestPortPair(byte[] outboundIkePkt) throws Exception {
-        return new PortPair(
-                getPort(outboundIkePkt, true /* shouldGetSource */),
-                getPort(outboundIkePkt, false /* shouldGetSource */));
-    }
-
-    private static InetAddress getAddress(byte[] pkt, boolean shouldGetSource) throws Exception {
-        int ipLen = isIpv6(pkt) ? IP6_ADDR_LEN : IP4_ADDR_LEN;
-        int srcIpOffset = isIpv6(pkt) ? IP6_ADDR_OFFSET : IP4_ADDR_OFFSET;
-        int ipOffset = shouldGetSource ? srcIpOffset : srcIpOffset + ipLen;
-
-        ByteBuffer buffer = ByteBuffer.wrap(pkt);
-        buffer.get(new byte[ipOffset]);
-        byte[] ipAddrBytes = new byte[ipLen];
-        buffer.get(ipAddrBytes);
-        return InetAddress.getByAddress(ipAddrBytes);
-    }
-
-    private static int getPort(byte[] pkt, boolean shouldGetSource) {
-        ByteBuffer buffer = ByteBuffer.wrap(pkt);
-        int srcPortOffset = isIpv6(pkt) ? IP6_HDRLEN : IP4_HDRLEN;
-        int portOffset = shouldGetSource ? srcPortOffset : srcPortOffset + PORT_LEN;
-
-        buffer.get(new byte[portOffset]);
-        return Short.toUnsignedInt(buffer.getShort());
-    }
-
-    public static byte[] buildIkePacket(
-            InetAddress srcAddr,
-            InetAddress dstAddr,
-            int srcPort,
-            int dstPort,
-            boolean useEncap,
-            byte[] ikePacket)
-            throws Exception {
-        if (useEncap) {
-            ByteBuffer buffer = ByteBuffer.allocate(NON_ESP_MARKER_LEN + ikePacket.length);
-            buffer.put(NON_ESP_MARKER);
-            buffer.put(ikePacket);
-            ikePacket = buffer.array();
-        }
-
-        UdpHeader udpPkt = new UdpHeader(srcPort, dstPort, new BytePayload(ikePacket));
-        IpHeader ipPkt = getIpHeader(udpPkt.getProtocolId(), srcAddr, dstAddr, udpPkt);
-        return ipPkt.getPacketBytes();
-    }
-
-    private static IpHeader getIpHeader(
-            int protocol, InetAddress src, InetAddress dst, Payload payload) {
-        if ((src instanceof Inet6Address) != (dst instanceof Inet6Address)) {
-            throw new IllegalArgumentException("Invalid src/dst address combination");
-        }
-
-        if (src instanceof Inet6Address) {
-            return new Ip6Header(protocol, (Inet6Address) src, (Inet6Address) dst, payload);
-        } else {
-            return new Ip4Header(protocol, (Inet4Address) src, (Inet4Address) dst, payload);
-        }
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/PacketUtils.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/PacketUtils.java
deleted file mode 100644
index 5a4347b..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/PacketUtils.java
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.system.OsConstants.IPPROTO_IPV6;
-import static android.system.OsConstants.IPPROTO_UDP;
-
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.InetAddress;
-import java.nio.ByteBuffer;
-import java.nio.ShortBuffer;
-import java.security.GeneralSecurityException;
-import java.security.SecureRandom;
-import java.util.Arrays;
-
-import javax.crypto.Cipher;
-import javax.crypto.Mac;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-
-/**
- * This code is a exact copy of {@link PacketUtils} in
- * cts/tests/tests/net/src/android/net/cts/PacketUtils.java.
- *
- * <p>TODO(b/148689509): Statically include the PacketUtils source file instead of copying it.
- */
-public class PacketUtils {
-    private static final String TAG = PacketUtils.class.getSimpleName();
-
-    private static final int DATA_BUFFER_LEN = 4096;
-
-    static final int IP4_HDRLEN = 20;
-    static final int IP6_HDRLEN = 40;
-    static final int UDP_HDRLEN = 8;
-    static final int TCP_HDRLEN = 20;
-    static final int TCP_HDRLEN_WITH_TIMESTAMP_OPT = TCP_HDRLEN + 12;
-
-    // Not defined in OsConstants
-    static final int IPPROTO_IPV4 = 4;
-    static final int IPPROTO_ESP = 50;
-
-    // Encryption parameters
-    static final int AES_GCM_IV_LEN = 8;
-    static final int AES_CBC_IV_LEN = 16;
-    static final int AES_GCM_BLK_SIZE = 4;
-    static final int AES_CBC_BLK_SIZE = 16;
-
-    // Encryption algorithms
-    static final String AES = "AES";
-    static final String AES_CBC = "AES/CBC/NoPadding";
-    static final String HMAC_SHA_256 = "HmacSHA256";
-
-    public interface Payload {
-        byte[] getPacketBytes(IpHeader header) throws Exception;
-
-        void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception;
-
-        short length();
-
-        int getProtocolId();
-    }
-
-    public abstract static class IpHeader {
-
-        public final byte proto;
-        public final InetAddress srcAddr;
-        public final InetAddress dstAddr;
-        public final Payload payload;
-
-        public IpHeader(int proto, InetAddress src, InetAddress dst, Payload payload) {
-            this.proto = (byte) proto;
-            this.srcAddr = src;
-            this.dstAddr = dst;
-            this.payload = payload;
-        }
-
-        public abstract byte[] getPacketBytes() throws Exception;
-
-        public abstract int getProtocolId();
-    }
-
-    public static class Ip4Header extends IpHeader {
-        private short checksum;
-
-        public Ip4Header(int proto, Inet4Address src, Inet4Address dst, Payload payload) {
-            super(proto, src, dst, payload);
-        }
-
-        public byte[] getPacketBytes() throws Exception {
-            ByteBuffer resultBuffer = buildHeader();
-            payload.addPacketBytes(this, resultBuffer);
-
-            return getByteArrayFromBuffer(resultBuffer);
-        }
-
-        public ByteBuffer buildHeader() {
-            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
-
-            // Version, IHL
-            bb.put((byte) (0x45));
-
-            // DCSP, ECN
-            bb.put((byte) 0);
-
-            // Total Length
-            bb.putShort((short) (IP4_HDRLEN + payload.length()));
-
-            // Empty for Identification, Flags and Fragment Offset
-            bb.putShort((short) 0);
-            bb.put((byte) 0x40);
-            bb.put((byte) 0x00);
-
-            // TTL
-            bb.put((byte) 64);
-
-            // Protocol
-            bb.put(proto);
-
-            // Header Checksum
-            final int ipChecksumOffset = bb.position();
-            bb.putShort((short) 0);
-
-            // Src/Dst addresses
-            bb.put(srcAddr.getAddress());
-            bb.put(dstAddr.getAddress());
-
-            bb.putShort(ipChecksumOffset, calculateChecksum(bb));
-
-            return bb;
-        }
-
-        private short calculateChecksum(ByteBuffer bb) {
-            int checksum = 0;
-
-            // Calculate sum of 16-bit values, excluding checksum. IPv4 headers are always 32-bit
-            // aligned, so no special cases needed for unaligned values.
-            ShortBuffer shortBuffer = ByteBuffer.wrap(getByteArrayFromBuffer(bb)).asShortBuffer();
-            while (shortBuffer.hasRemaining()) {
-                short val = shortBuffer.get();
-
-                // Wrap as needed
-                checksum = addAndWrapForChecksum(checksum, val);
-            }
-
-            return onesComplement(checksum);
-        }
-
-        public int getProtocolId() {
-            return IPPROTO_IPV4;
-        }
-    }
-
-    public static class Ip6Header extends IpHeader {
-        public Ip6Header(int nextHeader, Inet6Address src, Inet6Address dst, Payload payload) {
-            super(nextHeader, src, dst, payload);
-        }
-
-        public byte[] getPacketBytes() throws Exception {
-            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
-
-            // Version | Traffic Class (First 4 bits)
-            bb.put((byte) 0x60);
-
-            // Traffic class (Last 4 bits), Flow Label
-            bb.put((byte) 0);
-            bb.put((byte) 0);
-            bb.put((byte) 0);
-
-            // Payload Length
-            bb.putShort((short) payload.length());
-
-            // Next Header
-            bb.put(proto);
-
-            // Hop Limit
-            bb.put((byte) 64);
-
-            // Src/Dst addresses
-            bb.put(srcAddr.getAddress());
-            bb.put(dstAddr.getAddress());
-
-            // Payload
-            payload.addPacketBytes(this, bb);
-
-            return getByteArrayFromBuffer(bb);
-        }
-
-        public int getProtocolId() {
-            return IPPROTO_IPV6;
-        }
-    }
-
-    public static class BytePayload implements Payload {
-        public final byte[] payload;
-
-        public BytePayload(byte[] payload) {
-            this.payload = payload;
-        }
-
-        public int getProtocolId() {
-            return -1;
-        }
-
-        public byte[] getPacketBytes(IpHeader header) {
-            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
-
-            addPacketBytes(header, bb);
-            return getByteArrayFromBuffer(bb);
-        }
-
-        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) {
-            resultBuffer.put(payload);
-        }
-
-        public short length() {
-            return (short) payload.length;
-        }
-    }
-
-    public static class UdpHeader implements Payload {
-
-        public final short srcPort;
-        public final short dstPort;
-        public final Payload payload;
-
-        public UdpHeader(int srcPort, int dstPort, Payload payload) {
-            this.srcPort = (short) srcPort;
-            this.dstPort = (short) dstPort;
-            this.payload = payload;
-        }
-
-        public int getProtocolId() {
-            return IPPROTO_UDP;
-        }
-
-        public short length() {
-            return (short) (payload.length() + 8);
-        }
-
-        public byte[] getPacketBytes(IpHeader header) throws Exception {
-            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
-
-            addPacketBytes(header, bb);
-            return getByteArrayFromBuffer(bb);
-        }
-
-        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception {
-            // Source, Destination port
-            resultBuffer.putShort(srcPort);
-            resultBuffer.putShort(dstPort);
-
-            // Payload Length
-            resultBuffer.putShort(length());
-
-            // Get payload bytes for checksum + payload
-            ByteBuffer payloadBuffer = ByteBuffer.allocate(DATA_BUFFER_LEN);
-            payload.addPacketBytes(header, payloadBuffer);
-            byte[] payloadBytes = getByteArrayFromBuffer(payloadBuffer);
-
-            // Checksum
-            resultBuffer.putShort(calculateChecksum(header, payloadBytes));
-
-            // Payload
-            resultBuffer.put(payloadBytes);
-        }
-
-        private short calculateChecksum(IpHeader header, byte[] payloadBytes) throws Exception {
-            int newChecksum = 0;
-            ShortBuffer srcBuffer = ByteBuffer.wrap(header.srcAddr.getAddress()).asShortBuffer();
-            ShortBuffer dstBuffer = ByteBuffer.wrap(header.dstAddr.getAddress()).asShortBuffer();
-
-            while (srcBuffer.hasRemaining() || dstBuffer.hasRemaining()) {
-                short val = srcBuffer.hasRemaining() ? srcBuffer.get() : dstBuffer.get();
-
-                // Wrap as needed
-                newChecksum = addAndWrapForChecksum(newChecksum, val);
-            }
-
-            // Add pseudo-header values. Proto is 0-padded, so just use the byte.
-            newChecksum = addAndWrapForChecksum(newChecksum, header.proto);
-            newChecksum = addAndWrapForChecksum(newChecksum, length());
-            newChecksum = addAndWrapForChecksum(newChecksum, srcPort);
-            newChecksum = addAndWrapForChecksum(newChecksum, dstPort);
-            newChecksum = addAndWrapForChecksum(newChecksum, length());
-
-            ShortBuffer payloadShortBuffer = ByteBuffer.wrap(payloadBytes).asShortBuffer();
-            while (payloadShortBuffer.hasRemaining()) {
-                newChecksum = addAndWrapForChecksum(newChecksum, payloadShortBuffer.get());
-            }
-            if (payload.length() % 2 != 0) {
-                newChecksum =
-                        addAndWrapForChecksum(
-                                newChecksum, (payloadBytes[payloadBytes.length - 1] << 8));
-            }
-
-            return onesComplement(newChecksum);
-        }
-    }
-
-    public static class EspHeader implements Payload {
-        public final int nextHeader;
-        public final int spi;
-        public final int seqNum;
-        public final byte[] key;
-        public final byte[] payload;
-
-        /**
-         * Generic constructor for ESP headers.
-         *
-         * <p>For Tunnel mode, payload will be a full IP header + attached payloads
-         *
-         * <p>For Transport mode, payload will be only the attached payloads, but with the checksum
-         * calculated using the pre-encryption IP header
-         */
-        public EspHeader(int nextHeader, int spi, int seqNum, byte[] key, byte[] payload) {
-            this.nextHeader = nextHeader;
-            this.spi = spi;
-            this.seqNum = seqNum;
-            this.key = key;
-            this.payload = payload;
-        }
-
-        public int getProtocolId() {
-            return IPPROTO_ESP;
-        }
-
-        public short length() {
-            // ALWAYS uses AES-CBC, HMAC-SHA256 (128b trunc len)
-            return (short)
-                    calculateEspPacketSize(payload.length, AES_CBC_IV_LEN, AES_CBC_BLK_SIZE, 128);
-        }
-
-        public byte[] getPacketBytes(IpHeader header) throws Exception {
-            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
-
-            addPacketBytes(header, bb);
-            return getByteArrayFromBuffer(bb);
-        }
-
-        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception {
-            ByteBuffer espPayloadBuffer = ByteBuffer.allocate(DATA_BUFFER_LEN);
-            espPayloadBuffer.putInt(spi);
-            espPayloadBuffer.putInt(seqNum);
-            espPayloadBuffer.put(getCiphertext(key));
-
-            espPayloadBuffer.put(getIcv(getByteArrayFromBuffer(espPayloadBuffer)), 0, 16);
-            resultBuffer.put(getByteArrayFromBuffer(espPayloadBuffer));
-        }
-
-        private byte[] getIcv(byte[] authenticatedSection) throws GeneralSecurityException {
-            Mac sha256HMAC = Mac.getInstance(HMAC_SHA_256);
-            SecretKeySpec authKey = new SecretKeySpec(key, HMAC_SHA_256);
-            sha256HMAC.init(authKey);
-
-            return sha256HMAC.doFinal(authenticatedSection);
-        }
-
-        /**
-         * Encrypts and builds ciphertext block. Includes the IV, Padding and Next-Header blocks
-         *
-         * <p>The ciphertext does NOT include the SPI/Sequence numbers, or the ICV.
-         */
-        private byte[] getCiphertext(byte[] key) throws GeneralSecurityException {
-            int paddedLen = calculateEspEncryptedLength(payload.length, AES_CBC_BLK_SIZE);
-            ByteBuffer paddedPayload = ByteBuffer.allocate(paddedLen);
-            paddedPayload.put(payload);
-
-            // Add padding - consecutive integers from 0x01
-            int pad = 1;
-            while (paddedPayload.position() < paddedPayload.limit()) {
-                paddedPayload.put((byte) pad++);
-            }
-
-            paddedPayload.position(paddedPayload.limit() - 2);
-            paddedPayload.put((byte) (paddedLen - 2 - payload.length)); // Pad length
-            paddedPayload.put((byte) nextHeader);
-
-            // Generate Initialization Vector
-            byte[] iv = new byte[AES_CBC_IV_LEN];
-            new SecureRandom().nextBytes(iv);
-            IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
-            SecretKeySpec secretKeySpec = new SecretKeySpec(key, AES);
-
-            // Encrypt payload
-            Cipher cipher = Cipher.getInstance(AES_CBC);
-            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
-            byte[] encrypted = cipher.doFinal(getByteArrayFromBuffer(paddedPayload));
-
-            // Build ciphertext
-            ByteBuffer cipherText = ByteBuffer.allocate(AES_CBC_IV_LEN + encrypted.length);
-            cipherText.put(iv);
-            cipherText.put(encrypted);
-
-            return getByteArrayFromBuffer(cipherText);
-        }
-    }
-
-    private static int addAndWrapForChecksum(int currentChecksum, int value) {
-        currentChecksum += value & 0x0000ffff;
-
-        // Wrap anything beyond the first 16 bits, and add to lower order bits
-        return (currentChecksum >>> 16) + (currentChecksum & 0x0000ffff);
-    }
-
-    private static short onesComplement(int val) {
-        val = (val >>> 16) + (val & 0xffff);
-
-        if (val == 0) return 0;
-        return (short) ((~val) & 0xffff);
-    }
-
-    public static int calculateEspPacketSize(
-            int payloadLen, int cryptIvLength, int cryptBlockSize, int authTruncLen) {
-        final int ESP_HDRLEN = 4 + 4; // SPI + Seq#
-        final int ICV_LEN = authTruncLen / 8; // Auth trailer; based on truncation length
-        payloadLen += cryptIvLength; // Initialization Vector
-
-        // Align to block size of encryption algorithm
-        payloadLen = calculateEspEncryptedLength(payloadLen, cryptBlockSize);
-        return payloadLen + ESP_HDRLEN + ICV_LEN;
-    }
-
-    private static int calculateEspEncryptedLength(int payloadLen, int cryptBlockSize) {
-        payloadLen += 2; // ESP trailer
-
-        // Align to block size of encryption algorithm
-        return payloadLen + calculateEspPadLen(payloadLen, cryptBlockSize);
-    }
-
-    private static int calculateEspPadLen(int payloadLen, int cryptBlockSize) {
-        return (cryptBlockSize - (payloadLen % cryptBlockSize)) % cryptBlockSize;
-    }
-
-    private static byte[] getByteArrayFromBuffer(ByteBuffer buffer) {
-        return Arrays.copyOfRange(buffer.array(), 0, buffer.position());
-    }
-
-    /*
-     * Debug printing
-     */
-    private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
-
-    public static String bytesToHex(byte[] bytes) {
-        StringBuilder sb = new StringBuilder();
-        for (byte b : bytes) {
-            sb.append(hexArray[b >>> 4]);
-            sb.append(hexArray[b & 0x0F]);
-            sb.append(' ');
-        }
-        return sb.toString();
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/SaProposalTest.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/SaProposalTest.java
deleted file mode 100644
index e58a3fe..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/SaProposalTest.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.net.ipsec.ike.SaProposal.DH_GROUP_1024_BIT_MODP;
-import static android.net.ipsec.ike.SaProposal.DH_GROUP_2048_BIT_MODP;
-import static android.net.ipsec.ike.SaProposal.DH_GROUP_NONE;
-import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_3DES;
-import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_CBC;
-import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_12;
-import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_16;
-import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_8;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_AES_XCBC_96;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA1_96;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_256_128;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_384_192;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_512_256;
-import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_NONE;
-import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_128;
-import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_192;
-import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_256;
-import static android.net.ipsec.ike.SaProposal.KEY_LEN_UNUSED;
-import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_AES128_XCBC;
-import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_HMAC_SHA1;
-import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_SHA2_256;
-import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_SHA2_384;
-import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_SHA2_512;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import android.net.ipsec.ike.ChildSaProposal;
-import android.net.ipsec.ike.IkeSaProposal;
-import android.util.Pair;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-public class SaProposalTest {
-    private static final List<Pair<Integer, Integer>> NORMAL_MODE_CIPHERS = new ArrayList<>();
-    private static final List<Pair<Integer, Integer>> COMBINED_MODE_CIPHERS = new ArrayList<>();
-    private static final List<Integer> INTEGRITY_ALGOS = new ArrayList<>();
-    private static final List<Integer> DH_GROUPS = new ArrayList<>();
-    private static final List<Integer> DH_GROUPS_WITH_NONE = new ArrayList<>();
-    private static final List<Integer> PRFS = new ArrayList<>();
-
-    static {
-        NORMAL_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_3DES, KEY_LEN_UNUSED));
-        NORMAL_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_128));
-        NORMAL_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_192));
-        NORMAL_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_256));
-
-        COMBINED_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_128));
-        COMBINED_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_192));
-        COMBINED_MODE_CIPHERS.add(new Pair<>(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_256));
-
-        INTEGRITY_ALGOS.add(INTEGRITY_ALGORITHM_HMAC_SHA1_96);
-        INTEGRITY_ALGOS.add(INTEGRITY_ALGORITHM_AES_XCBC_96);
-        INTEGRITY_ALGOS.add(INTEGRITY_ALGORITHM_HMAC_SHA2_256_128);
-        INTEGRITY_ALGOS.add(INTEGRITY_ALGORITHM_HMAC_SHA2_384_192);
-        INTEGRITY_ALGOS.add(INTEGRITY_ALGORITHM_HMAC_SHA2_512_256);
-
-        DH_GROUPS.add(DH_GROUP_1024_BIT_MODP);
-        DH_GROUPS.add(DH_GROUP_2048_BIT_MODP);
-
-        DH_GROUPS_WITH_NONE.add(DH_GROUP_NONE);
-        DH_GROUPS_WITH_NONE.addAll(DH_GROUPS);
-
-        PRFS.add(PSEUDORANDOM_FUNCTION_HMAC_SHA1);
-        PRFS.add(PSEUDORANDOM_FUNCTION_AES128_XCBC);
-        PRFS.add(PSEUDORANDOM_FUNCTION_SHA2_256);
-        PRFS.add(PSEUDORANDOM_FUNCTION_SHA2_384);
-        PRFS.add(PSEUDORANDOM_FUNCTION_SHA2_512);
-    }
-
-    // Package private
-    static IkeSaProposal buildIkeSaProposalWithNormalModeCipher() {
-        return buildIkeSaProposal(NORMAL_MODE_CIPHERS, INTEGRITY_ALGOS, PRFS, DH_GROUPS);
-    }
-
-    // Package private
-    static IkeSaProposal buildIkeSaProposalWithCombinedModeCipher() {
-        return buildIkeSaProposalWithCombinedModeCipher(true /* hasIntegrityNone */);
-    }
-
-    private static IkeSaProposal buildIkeSaProposalWithCombinedModeCipher(
-            boolean hasIntegrityNone) {
-        List<Integer> integerAlgos = new ArrayList<>();
-        if (hasIntegrityNone) {
-            integerAlgos.add(INTEGRITY_ALGORITHM_NONE);
-        }
-        return buildIkeSaProposal(COMBINED_MODE_CIPHERS, integerAlgos, PRFS, DH_GROUPS);
-    }
-
-    private static IkeSaProposal buildIkeSaProposal(
-            List<Pair<Integer, Integer>> ciphers,
-            List<Integer> integrityAlgos,
-            List<Integer> prfs,
-            List<Integer> dhGroups) {
-        IkeSaProposal.Builder builder = new IkeSaProposal.Builder();
-
-        for (Pair<Integer, Integer> pair : ciphers) {
-            builder.addEncryptionAlgorithm(pair.first, pair.second);
-        }
-        for (int algo : integrityAlgos) {
-            builder.addIntegrityAlgorithm(algo);
-        }
-        for (int algo : prfs) {
-            builder.addPseudorandomFunction(algo);
-        }
-        for (int algo : dhGroups) {
-            builder.addDhGroup(algo);
-        }
-
-        return builder.build();
-    }
-
-    // Package private
-    static ChildSaProposal buildChildSaProposalWithNormalModeCipher() {
-        return buildChildSaProposal(NORMAL_MODE_CIPHERS, INTEGRITY_ALGOS, DH_GROUPS_WITH_NONE);
-    }
-
-    // Package private
-    static ChildSaProposal buildChildSaProposalWithCombinedModeCipher() {
-        return buildChildSaProposalWithCombinedModeCipher(true /* hasIntegrityNone */);
-    }
-
-    private static ChildSaProposal buildChildSaProposalWithCombinedModeCipher(
-            boolean hasIntegrityNone) {
-        List<Integer> integerAlgos = new ArrayList<>();
-        if (hasIntegrityNone) {
-            integerAlgos.add(INTEGRITY_ALGORITHM_NONE);
-        }
-
-        return buildChildSaProposal(COMBINED_MODE_CIPHERS, integerAlgos, DH_GROUPS_WITH_NONE);
-    }
-
-    private static ChildSaProposal buildChildSaProposal(
-            List<Pair<Integer, Integer>> ciphers,
-            List<Integer> integrityAlgos,
-            List<Integer> dhGroups) {
-        ChildSaProposal.Builder builder = new ChildSaProposal.Builder();
-
-        for (Pair<Integer, Integer> pair : ciphers) {
-            builder.addEncryptionAlgorithm(pair.first, pair.second);
-        }
-        for (int algo : integrityAlgos) {
-            builder.addIntegrityAlgorithm(algo);
-        }
-        for (int algo : dhGroups) {
-            builder.addDhGroup(algo);
-        }
-
-        return builder.build();
-    }
-
-    // Package private
-    static ChildSaProposal buildChildSaProposalWithOnlyCiphers() {
-        return buildChildSaProposal(
-                COMBINED_MODE_CIPHERS, Collections.EMPTY_LIST, Collections.EMPTY_LIST);
-    }
-
-    @Test
-    public void testBuildIkeSaProposalWithNormalModeCipher() {
-        IkeSaProposal saProposal = buildIkeSaProposalWithNormalModeCipher();
-
-        assertEquals(NORMAL_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertEquals(INTEGRITY_ALGOS, saProposal.getIntegrityAlgorithms());
-        assertEquals(PRFS, saProposal.getPseudorandomFunctions());
-        assertEquals(DH_GROUPS, saProposal.getDhGroups());
-    }
-
-    @Test
-    public void testBuildIkeSaProposalWithCombinedModeCipher() {
-        IkeSaProposal saProposal =
-                buildIkeSaProposalWithCombinedModeCipher(false /* hasIntegrityNone */);
-
-        assertEquals(COMBINED_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertEquals(PRFS, saProposal.getPseudorandomFunctions());
-        assertEquals(DH_GROUPS, saProposal.getDhGroups());
-        assertTrue(saProposal.getIntegrityAlgorithms().isEmpty());
-    }
-
-    @Test
-    public void testBuildIkeSaProposalWithCombinedModeCipherAndIntegrityNone() {
-        IkeSaProposal saProposal =
-                buildIkeSaProposalWithCombinedModeCipher(true /* hasIntegrityNone */);
-
-        assertEquals(COMBINED_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertEquals(PRFS, saProposal.getPseudorandomFunctions());
-        assertEquals(DH_GROUPS, saProposal.getDhGroups());
-        assertEquals(Arrays.asList(INTEGRITY_ALGORITHM_NONE), saProposal.getIntegrityAlgorithms());
-    }
-
-    @Test
-    public void testBuildChildSaProposalWithNormalModeCipher() {
-        ChildSaProposal saProposal = buildChildSaProposalWithNormalModeCipher();
-
-        assertEquals(NORMAL_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertEquals(INTEGRITY_ALGOS, saProposal.getIntegrityAlgorithms());
-        assertEquals(DH_GROUPS_WITH_NONE, saProposal.getDhGroups());
-    }
-
-    @Test
-    public void testBuildChildProposalWithCombinedModeCipher() {
-        ChildSaProposal saProposal =
-                buildChildSaProposalWithCombinedModeCipher(false /* hasIntegrityNone */);
-
-        assertEquals(COMBINED_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertTrue(saProposal.getIntegrityAlgorithms().isEmpty());
-        assertEquals(DH_GROUPS_WITH_NONE, saProposal.getDhGroups());
-    }
-
-    @Test
-    public void testBuildChildProposalWithCombinedModeCipherAndIntegrityNone() {
-        ChildSaProposal saProposal =
-                buildChildSaProposalWithCombinedModeCipher(true /* hasIntegrityNone */);
-
-        assertEquals(COMBINED_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertEquals(Arrays.asList(INTEGRITY_ALGORITHM_NONE), saProposal.getIntegrityAlgorithms());
-        assertEquals(DH_GROUPS_WITH_NONE, saProposal.getDhGroups());
-    }
-
-    @Test
-    public void testBuildChildSaProposalWithOnlyCiphers() {
-        ChildSaProposal saProposal = buildChildSaProposalWithOnlyCiphers();
-
-        assertEquals(COMBINED_MODE_CIPHERS, saProposal.getEncryptionAlgorithms());
-        assertTrue(saProposal.getIntegrityAlgorithms().isEmpty());
-        assertTrue(saProposal.getDhGroups().isEmpty());
-    }
-
-    // TODO(b/148689509): Test throwing exception when algorithm combination is invalid
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/TestNetworkUtils.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/TestNetworkUtils.java
deleted file mode 100644
index 2f2a6a4..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/TestNetworkUtils.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.ipsec.ike.cts;
-
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED;
-import static android.net.NetworkCapabilities.TRANSPORT_TEST;
-
-import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkRequest;
-import android.net.TestNetworkManager;
-import android.os.IBinder;
-import android.os.RemoteException;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-// TODO(b/148689509): Share this class with net CTS test (e.g. IpSecManagerTunnelTest)
-public class TestNetworkUtils {
-    private static final int TIMEOUT_MS = 500;
-
-    /** Callback to receive requested test network. */
-    public static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
-        private final CompletableFuture<Network> futureNetwork = new CompletableFuture<>();
-
-        @Override
-        public void onAvailable(Network network) {
-            futureNetwork.complete(network);
-        }
-
-        public Network getNetworkBlocking() throws Exception {
-            return futureNetwork.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-        }
-    }
-
-    /**
-     * Set up test network.
-     *
-     * <p>Caller MUST have MANAGE_TEST_NETWORKS permission to use this method.
-     *
-     * @param connMgr ConnectivityManager to request network.
-     * @param testNetworkMgr TestNetworkManager to set up test network.
-     * @param ifname the name of the interface to be used for the Network LinkProperties.
-     * @param binder a binder object guarding the lifecycle of this test network.
-     * @return TestNetworkCallback to retrieve the test network.
-     * @throws RemoteException if test network setup failed.
-     * @see android.net.TestNetworkManager
-     */
-    public static TestNetworkCallback setupAndGetTestNetwork(
-            ConnectivityManager connMgr,
-            TestNetworkManager testNetworkMgr,
-            String ifname,
-            IBinder binder)
-            throws RemoteException {
-        NetworkRequest nr =
-                new NetworkRequest.Builder()
-                        .addTransportType(TRANSPORT_TEST)
-                        .removeCapability(NET_CAPABILITY_TRUSTED)
-                        .removeCapability(NET_CAPABILITY_NOT_VPN)
-                        .setNetworkSpecifier(ifname)
-                        .build();
-
-        TestNetworkCallback cb = new TestNetworkCallback();
-        connMgr.requestNetwork(nr, cb);
-
-        // Setup the test network after network request is filed to prevent Network from being
-        // reaped due to no requests matching it.
-        testNetworkMgr.setupTestNetwork(ifname, binder);
-
-        return cb;
-    }
-}
diff --git a/tests/tests/ipsec/src/android/ipsec/ike/cts/TunUtils.java b/tests/tests/ipsec/src/android/ipsec/ike/cts/TunUtils.java
deleted file mode 100644
index dc197f9..0000000
--- a/tests/tests/ipsec/src/android/ipsec/ike/cts/TunUtils.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.ipsec.ike.cts;
-
-import static android.ipsec.ike.cts.PacketUtils.IP4_HDRLEN;
-import static android.ipsec.ike.cts.PacketUtils.IP6_HDRLEN;
-import static android.ipsec.ike.cts.PacketUtils.IPPROTO_ESP;
-import static android.ipsec.ike.cts.PacketUtils.UDP_HDRLEN;
-import static android.system.OsConstants.IPPROTO_UDP;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
-
-import android.os.ParcelFileDescriptor;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.function.Predicate;
-
-/**
- * This code is a exact copy of {@link TunUtils} in
- * cts/tests/tests/net/src/android/net/cts/TunUtils.java, except the import path of PacketUtils is
- * the path to the copy of PacktUtils.
- *
- * <p>TODO(b/148689509): Statically include the TunUtils source file instead of copying it.
- */
-public class TunUtils {
-    private static final String TAG = TunUtils.class.getSimpleName();
-
-    private static final int DATA_BUFFER_LEN = 4096;
-    static final int TIMEOUT = 500;
-
-    static final int IP4_PROTO_OFFSET = 9;
-    static final int IP6_PROTO_OFFSET = 6;
-
-    static final int IP4_ADDR_OFFSET = 12;
-    static final int IP4_ADDR_LEN = 4;
-    static final int IP6_ADDR_OFFSET = 8;
-    static final int IP6_ADDR_LEN = 16;
-
-    final List<byte[]> mPackets = new ArrayList<>();
-    private final ParcelFileDescriptor mTunFd;
-    private final Thread mReaderThread;
-
-    public TunUtils(ParcelFileDescriptor tunFd) {
-        mTunFd = tunFd;
-
-        // Start background reader thread
-        mReaderThread =
-                new Thread(
-                        () -> {
-                            try {
-                                // Loop will exit and thread will quit when tunFd is closed.
-                                // Receiving either EOF or an exception will exit this reader loop.
-                                // FileInputStream in uninterruptable, so there's no good way to
-                                // ensure that this thread shuts down except upon FD closure.
-                                while (true) {
-                                    byte[] intercepted = receiveFromTun();
-                                    if (intercepted == null) {
-                                        // Exit once we've hit EOF
-                                        return;
-                                    } else if (intercepted.length > 0) {
-                                        // Only save packet if we've received any bytes.
-                                        synchronized (mPackets) {
-                                            mPackets.add(intercepted);
-                                            mPackets.notifyAll();
-                                        }
-                                    }
-                                }
-                            } catch (IOException ignored) {
-                                // Simply exit this reader thread
-                                return;
-                            }
-                        });
-        mReaderThread.start();
-    }
-
-    private byte[] receiveFromTun() throws IOException {
-        FileInputStream in = new FileInputStream(mTunFd.getFileDescriptor());
-        byte[] inBytes = new byte[DATA_BUFFER_LEN];
-        int bytesRead = in.read(inBytes);
-
-        if (bytesRead < 0) {
-            return null; // return null for EOF
-        } else if (bytesRead >= DATA_BUFFER_LEN) {
-            throw new IllegalStateException("Too big packet. Fragmentation unsupported");
-        }
-        return Arrays.copyOf(inBytes, bytesRead);
-    }
-
-    byte[] getFirstMatchingPacket(Predicate<byte[]> verifier, int startIndex) {
-        synchronized (mPackets) {
-            for (int i = startIndex; i < mPackets.size(); i++) {
-                byte[] pkt = mPackets.get(i);
-                if (verifier.test(pkt)) {
-                    return pkt;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Checks if the specified bytes were ever sent in plaintext.
-     *
-     * <p>Only checks for known plaintext bytes to prevent triggering on ICMP/RA packets or the like
-     *
-     * @param plaintext the plaintext bytes to check for
-     * @param startIndex the index in the list to check for
-     */
-    public boolean hasPlaintextPacket(byte[] plaintext, int startIndex) {
-        Predicate<byte[]> verifier =
-                (pkt) -> {
-                    return Collections.indexOfSubList(Arrays.asList(pkt), Arrays.asList(plaintext))
-                            != -1;
-                };
-        return getFirstMatchingPacket(verifier, startIndex) != null;
-    }
-
-    public byte[] getEspPacket(int spi, boolean encap, int startIndex) {
-        return getFirstMatchingPacket(
-                (pkt) -> {
-                    return isEsp(pkt, spi, encap);
-                },
-                startIndex);
-    }
-
-    public byte[] awaitEspPacketNoPlaintext(
-            int spi, byte[] plaintext, boolean useEncap, int expectedPacketSize) throws Exception {
-        long endTime = System.currentTimeMillis() + TIMEOUT;
-        int startIndex = 0;
-
-        synchronized (mPackets) {
-            while (System.currentTimeMillis() < endTime) {
-                byte[] espPkt = getEspPacket(spi, useEncap, startIndex);
-                if (espPkt != null) {
-                    // Validate packet size
-                    assertEquals(expectedPacketSize, espPkt.length);
-
-                    // Always check plaintext from start
-                    assertFalse(hasPlaintextPacket(plaintext, 0));
-                    return espPkt; // We've found the packet we're looking for.
-                }
-
-                startIndex = mPackets.size();
-
-                // Try to prevent waiting too long. If waitTimeout <= 0, we've already hit timeout
-                long waitTimeout = endTime - System.currentTimeMillis();
-                if (waitTimeout > 0) {
-                    mPackets.wait(waitTimeout);
-                }
-            }
-
-            fail("No such ESP packet found with SPI " + spi);
-        }
-        return null;
-    }
-
-    private static boolean isSpiEqual(byte[] pkt, int espOffset, int spi) {
-        // Check SPI byte by byte.
-        return pkt[espOffset] == (byte) ((spi >>> 24) & 0xff)
-                && pkt[espOffset + 1] == (byte) ((spi >>> 16) & 0xff)
-                && pkt[espOffset + 2] == (byte) ((spi >>> 8) & 0xff)
-                && pkt[espOffset + 3] == (byte) (spi & 0xff);
-    }
-
-    private static boolean isEsp(byte[] pkt, int spi, boolean encap) {
-        if (isIpv6(pkt)) {
-            // IPv6 UDP encap not supported by kernels; assume non-encap.
-            return pkt[IP6_PROTO_OFFSET] == IPPROTO_ESP && isSpiEqual(pkt, IP6_HDRLEN, spi);
-        } else {
-            // Use default IPv4 header length (assuming no options)
-            if (encap) {
-                return pkt[IP4_PROTO_OFFSET] == IPPROTO_UDP
-                        && isSpiEqual(pkt, IP4_HDRLEN + UDP_HDRLEN, spi);
-            } else {
-                return pkt[IP4_PROTO_OFFSET] == IPPROTO_ESP && isSpiEqual(pkt, IP4_HDRLEN, spi);
-            }
-        }
-    }
-
-    static boolean isIpv6(byte[] pkt) {
-        // First nibble shows IP version. 0x60 for IPv6
-        return (pkt[0] & (byte) 0xF0) == (byte) 0x60;
-    }
-
-    private static byte[] getReflectedPacket(byte[] pkt) {
-        byte[] reflected = Arrays.copyOf(pkt, pkt.length);
-
-        if (isIpv6(pkt)) {
-            // Set reflected packet's dst to that of the original's src
-            System.arraycopy(
-                    pkt, // src
-                    IP6_ADDR_OFFSET + IP6_ADDR_LEN, // src offset
-                    reflected, // dst
-                    IP6_ADDR_OFFSET, // dst offset
-                    IP6_ADDR_LEN); // len
-            // Set reflected packet's src IP to that of the original's dst IP
-            System.arraycopy(
-                    pkt, // src
-                    IP6_ADDR_OFFSET, // src offset
-                    reflected, // dst
-                    IP6_ADDR_OFFSET + IP6_ADDR_LEN, // dst offset
-                    IP6_ADDR_LEN); // len
-        } else {
-            // Set reflected packet's dst to that of the original's src
-            System.arraycopy(
-                    pkt, // src
-                    IP4_ADDR_OFFSET + IP4_ADDR_LEN, // src offset
-                    reflected, // dst
-                    IP4_ADDR_OFFSET, // dst offset
-                    IP4_ADDR_LEN); // len
-            // Set reflected packet's src IP to that of the original's dst IP
-            System.arraycopy(
-                    pkt, // src
-                    IP4_ADDR_OFFSET, // src offset
-                    reflected, // dst
-                    IP4_ADDR_OFFSET + IP4_ADDR_LEN, // dst offset
-                    IP4_ADDR_LEN); // len
-        }
-        return reflected;
-    }
-
-    /** Takes all captured packets, flips the src/dst, and re-injects them. */
-    public void reflectPackets() throws IOException {
-        synchronized (mPackets) {
-            for (byte[] pkt : mPackets) {
-                injectPacket(getReflectedPacket(pkt));
-            }
-        }
-    }
-
-    public void injectPacket(byte[] pkt) throws IOException {
-        FileOutputStream out = new FileOutputStream(mTunFd.getFileDescriptor());
-        out.write(pkt);
-        out.flush();
-    }
-
-    /** Resets the intercepted packets. */
-    public void reset() throws IOException {
-        synchronized (mPackets) {
-            mPackets.clear();
-        }
-    }
-}
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
index d457995..1af904f 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
@@ -234,7 +234,8 @@
                 assertEquals(1, certificates.length);
 
                 X509Certificate attestationCert = (X509Certificate) certificates[0];
-                assertNull(attestationCert.getExtensionValue(Attestation.KEY_DESCRIPTION_OID));
+                assertNull(attestationCert.getExtensionValue(Attestation.ASN1_OID));
+                assertNull(attestationCert.getExtensionValue(Attestation.EAT_OID));
             } finally {
                 keyStore.deleteEntry(keystoreAlias);
             }
@@ -272,7 +273,7 @@
             verifyCertificateChain(certificates, TestUtils.hasStrongBox(getContext()));
 
             X509Certificate attestationCert = (X509Certificate) certificates[0];
-            checkDeviceLocked(new Attestation(attestationCert));
+            checkDeviceLocked(Attestation.loadFromCertificate(attestationCert));
         } finally {
             keyStore.deleteEntry(keystoreAlias);
         }
@@ -402,7 +403,7 @@
                 assertEquals(1, certificates.length);
 
                 X509Certificate attestationCert = (X509Certificate) certificates[0];
-                assertNull(attestationCert.getExtensionValue(Attestation.KEY_DESCRIPTION_OID));
+                assertNull(attestationCert.getExtensionValue(Attestation.ASN1_OID));
             } finally {
                 keyStore.deleteEntry(keystoreAlias);
             }
@@ -441,7 +442,7 @@
             verifyCertificateChain(certificates, TestUtils.hasStrongBox(getContext()));
 
             X509Certificate attestationCert = (X509Certificate) certificates[0];
-            checkDeviceLocked(new Attestation(attestationCert));
+            checkDeviceLocked(Attestation.loadFromCertificate(attestationCert));
         } finally {
             keyStore.deleteEntry(keystoreAlias);
         }
@@ -559,12 +560,13 @@
             verifyCertificateChain(certificates, false /* expectStrongBox */);
 
             X509Certificate attestationCert = (X509Certificate) certificates[0];
-            Attestation attestation = new Attestation(attestationCert);
+            Attestation attestation = Attestation.loadFromCertificate(attestationCert);
 
-            checkRsaKeyDetails(attestation, keySize, purposes, ImmutableSet.copyOf(paddingModes));
+            checkRsaKeyDetails(attestation, keySize, purposes,
+                ImmutableSet.copyOf(paddingModes));
             checkKeyUsage(attestationCert, purposes);
-            checkKeyIndependentAttestationInfo(challenge, purposes, startTime, includeValidityDates,
-                    devicePropertiesAttestation, attestation);
+            checkKeyIndependentAttestationInfo(challenge, purposes, startTime,
+                includeValidityDates, devicePropertiesAttestation, attestation);
         } finally {
             keyStore.deleteEntry(keystoreAlias);
         }
@@ -618,12 +620,12 @@
             verifyCertificateChain(certificates, false /* expectStrongBox */);
 
             X509Certificate attestationCert = (X509Certificate) certificates[0];
-            Attestation attestation = new Attestation(attestationCert);
+            Attestation attestation = Attestation.loadFromCertificate(attestationCert);
 
             checkEcKeyDetails(attestation, ecCurve, keySize);
             checkKeyUsage(attestationCert, purposes);
-            checkKeyIndependentAttestationInfo(challenge, purposes, startTime, includeValidityDates,
-                    devicePropertiesAttestation, attestation);
+            checkKeyIndependentAttestationInfo(challenge, purposes, startTime,
+                includeValidityDates, devicePropertiesAttestation, attestation);
         } finally {
             keyStore.deleteEntry(keystoreAlias);
         }
@@ -635,6 +637,7 @@
         int kmVersion = attestation.getKeymasterVersion();
         assertNull(attestation.getTeeEnforced().getAttestationApplicationId());
         aaid = attestation.getSoftwareEnforced().getAttestationApplicationId();
+
         if (kmVersion >= 3) {
             // must be present and correct
             assertNotNull(aaid);
@@ -695,9 +698,11 @@
         checkUnexpectedOids(attestation);
         checkAttestationSecurityLevelDependentParams(attestation);
         assertNotNull(attestation.getAttestationChallenge());
-        assertTrue(Arrays.equals(challenge, attestation.getAttestationChallenge()));
-        assertNotNull(attestation.getUniqueId());
-        assertEquals(0, attestation.getUniqueId().length);
+        assertThat(attestation.getAttestationChallenge(), is(challenge));
+        // In EAT, this is null if not filled in. In ASN.1, this is an array with length 0.
+        if (attestation.getUniqueId() != null) {
+            assertEquals(0, attestation.getUniqueId().length);
+        }
         checkPurposes(attestation, purposes);
         checkDigests(attestation,
                 ImmutableSet.of(KM_DIGEST_NONE, KM_DIGEST_SHA_2_256, KM_DIGEST_SHA_2_512));
@@ -919,8 +924,8 @@
 
     @SuppressWarnings("unchecked")
     private void checkAttestationSecurityLevelDependentParams(Attestation attestation) {
-        assertThat("Attestation version must be 1, 2, 3, or 4", attestation.getAttestationVersion(),
-               either(is(1)).or(is(2)).or(is(3)).or(is(4)));
+        assertThat("Attestation version must be 1, 2, 3, 4 or 5", attestation.getAttestationVersion(),
+               either(is(1)).or(is(2)).or(is(3)).or(is(4)).or(is(5)));
 
         AuthorizationList teeEnforced = attestation.getTeeEnforced();
         AuthorizationList softwareEnforced = attestation.getSoftwareEnforced();
@@ -997,7 +1002,7 @@
     }
 
     private void checkRootOfTrust(Attestation attestation, boolean requireLocked) {
-        RootOfTrust rootOfTrust = attestation.getTeeEnforced().getRootOfTrust();
+        RootOfTrust rootOfTrust = attestation.getRootOfTrust();
         assertNotNull(rootOfTrust);
         assertNotNull(rootOfTrust.getVerifiedBootKey());
         assertTrue("Verified boot key is only " + rootOfTrust.getVerifiedBootKey().length +
diff --git a/tests/tests/media/AndroidTest.xml b/tests/tests/media/AndroidTest.xml
index c54ecd0..c158663 100644
--- a/tests/tests/media/AndroidTest.xml
+++ b/tests/tests/media/AndroidTest.xml
@@ -26,7 +26,7 @@
     </target_preparer>
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer">
         <option name="push-all" value="true" />
-        <option name="media-folder-name" value="CtsMediaTestCases-1.3" />
+        <option name="media-folder-name" value="CtsMediaTestCases-1.4" />
         <option name="dynamic-config-module" value="CtsMediaTestCases" />
     </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
diff --git a/tests/tests/media/DynamicConfig.xml b/tests/tests/media/DynamicConfig.xml
index 0fd0a0b..4548620 100644
--- a/tests/tests/media/DynamicConfig.xml
+++ b/tests/tests/media/DynamicConfig.xml
@@ -51,6 +51,6 @@
         <value>http://redirector.gvt1.com/videoplayback?id=c80658495af60617&amp;itag=17&amp;source=youtube&amp;ip=0.0.0.0&amp;ipbits=0&amp;expire=19000000000&amp;sparams=ip,ipbits,expire,id,itag,source&amp;signature=70E979A621001201BC18622BDBF914FA870BDA40.6E78890B80F4A33A18835F775B1FF64F0A4D0003&amp;key=ik0&amp;user=android-device-test</value>
     </entry>
     <entry key="media_files_url">
-    <value>https://storage.googleapis.com/android_media/cts/tests/tests/media/CtsMediaTestCases-1.3.zip</value>
+    <value>https://storage.googleapis.com/android_media/cts/tests/tests/media/CtsMediaTestCases-1.4.zip</value>
     </entry>
 </dynamicConfig>
diff --git a/tests/tests/media/res/raw/audio_aac_mono_70kbs_44100hz_aac_mono_70kbs_44100hz.mp4 b/tests/tests/media/res/raw/audio_aac_mono_70kbs_44100hz_aac_mono_70kbs_44100hz.mp4
deleted file mode 100644
index 157c222..0000000
--- a/tests/tests/media/res/raw/audio_aac_mono_70kbs_44100hz_aac_mono_70kbs_44100hz.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/audio_with_metadata.mp3 b/tests/tests/media/res/raw/audio_with_metadata.mp3
deleted file mode 100644
index 04f65bc..0000000
--- a/tests/tests/media/res/raw/audio_with_metadata.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/big5_1.mp3 b/tests/tests/media/res/raw/big5_1.mp3
deleted file mode 100644
index faa3eb4..0000000
--- a/tests/tests/media/res/raw/big5_1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/big5_2.mp3 b/tests/tests/media/res/raw/big5_2.mp3
deleted file mode 100644
index a69da4f..0000000
--- a/tests/tests/media/res/raw/big5_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames.mp4 b/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames.mp4
deleted file mode 100644
index 8c0d787..0000000
--- a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_editlist.mp4 b/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_editlist.mp4
deleted file mode 100644
index 6609614..0000000
--- a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_editlist.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_empty_normal_editlist_entries.mp4 b/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_empty_normal_editlist_entries.mp4
deleted file mode 100644
index 5b175ee..0000000
--- a/tests/tests/media/res/raw/binary_counter_320x240_30fps_600frames_empty_normal_editlist_entries.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/binary_counter_320x240_720x240_30fps_600frames.mp4 b/tests/tests/media/res/raw/binary_counter_320x240_720x240_30fps_600frames.mp4
deleted file mode 100644
index 2822d20..0000000
--- a/tests/tests/media/res/raw/binary_counter_320x240_720x240_30fps_600frames.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/bug13652927.ogg b/tests/tests/media/res/raw/bug13652927.ogg
deleted file mode 100644
index 065d9e5..0000000
--- a/tests/tests/media/res/raw/bug13652927.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/camera_click.ogg b/tests/tests/media/res/raw/camera_click.ogg
deleted file mode 100644
index b836e10..0000000
--- a/tests/tests/media/res/raw/camera_click.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt2020_lr_hlg_h265.mp4 b/tests/tests/media/res/raw/color_176x144_bt2020_lr_hlg_h265.mp4
deleted file mode 100644
index 748151c..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt2020_lr_hlg_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt2020_lr_smpte2084_h265.mp4 b/tests/tests/media/res/raw/color_176x144_bt2020_lr_smpte2084_h265.mp4
deleted file mode 100644
index f21237f..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt2020_lr_smpte2084_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h264.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h264.mp4
deleted file mode 100644
index 84701c3..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h265.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h265.mp4
deleted file mode 100644
index 7d948d4..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_mpeg2.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_mpeg2.mp4
deleted file mode 100644
index 0edf5c4..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_525_lr_sdr_mpeg2.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h264.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h264.mp4
deleted file mode 100644
index ed3b47d..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h265.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h265.mp4
deleted file mode 100644
index 11025be..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_625_fr_sdr_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt601_625_lr_sdr_mpeg2.mp4 b/tests/tests/media/res/raw/color_176x144_bt601_625_lr_sdr_mpeg2.mp4
deleted file mode 100644
index a16fc6f..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt601_625_lr_sdr_mpeg2.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h264.mp4 b/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h264.mp4
deleted file mode 100644
index d95d5c7..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h265.mp4 b/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h265.mp4
deleted file mode 100644
index dfd97fe..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_mpeg2.mp4 b/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_mpeg2.mp4
deleted file mode 100644
index 3385ed1..0000000
--- a/tests/tests/media/res/raw/color_176x144_bt709_lr_sdr_mpeg2.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h264.mp4 b/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h264.mp4
deleted file mode 100644
index 2360277..0000000
--- a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h265.mp4 b/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h265.mp4
deleted file mode 100644
index fe34c5b..0000000
--- a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_mpeg2.mp4 b/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_mpeg2.mp4
deleted file mode 100644
index 9de85c7..0000000
--- a/tests/tests/media/res/raw/color_176x144_srgb_lr_sdr_mpeg2.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_3.mp3 b/tests/tests/media/res/raw/cp1251_3.mp3
deleted file mode 100644
index 179a1a5..0000000
--- a/tests/tests/media/res/raw/cp1251_3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_3_a_ms_acm_mp3.mkv b/tests/tests/media/res/raw/cp1251_3_a_ms_acm_mp3.mkv
deleted file mode 100644
index c06a542..0000000
--- a/tests/tests/media/res/raw/cp1251_3_a_ms_acm_mp3.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_4.mp3 b/tests/tests/media/res/raw/cp1251_4.mp3
deleted file mode 100644
index 3df1d32..0000000
--- a/tests/tests/media/res/raw/cp1251_4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_5.mp3 b/tests/tests/media/res/raw/cp1251_5.mp3
deleted file mode 100644
index 46df442..0000000
--- a/tests/tests/media/res/raw/cp1251_5.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_6.mp3 b/tests/tests/media/res/raw/cp1251_6.mp3
deleted file mode 100644
index 545834d..0000000
--- a/tests/tests/media/res/raw/cp1251_6.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_7.mp3 b/tests/tests/media/res/raw/cp1251_7.mp3
deleted file mode 100644
index d1c492b..0000000
--- a/tests/tests/media/res/raw/cp1251_7.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_8.mp3 b/tests/tests/media/res/raw/cp1251_8.mp3
deleted file mode 100644
index 17f7e31..0000000
--- a/tests/tests/media/res/raw/cp1251_8.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_v1.mp3 b/tests/tests/media/res/raw/cp1251_v1.mp3
deleted file mode 100644
index 173d970..0000000
--- a/tests/tests/media/res/raw/cp1251_v1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/cp1251_v1v2.mp3 b/tests/tests/media/res/raw/cp1251_v1v2.mp3
deleted file mode 100644
index abffa92..0000000
--- a/tests/tests/media/res/raw/cp1251_v1v2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/football_qvga_desc.txt b/tests/tests/media/res/raw/football_qvga_desc.txt
deleted file mode 100644
index f6b44b2..0000000
--- a/tests/tests/media/res/raw/football_qvga_desc.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-Football_qvga.yuv contains 3 seconds of raw 320x240 yuv420 video @ 30 fps.
-Extracted from http://media.xiph.org/video/derf/y4m/football_cif.y4m.
\ No newline at end of file
diff --git a/tests/tests/media/res/raw/gb18030_1.mp3 b/tests/tests/media/res/raw/gb18030_1.mp3
deleted file mode 100644
index dc63de5..0000000
--- a/tests/tests/media/res/raw/gb18030_1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_2.mp3 b/tests/tests/media/res/raw/gb18030_2.mp3
deleted file mode 100644
index 6109c97..0000000
--- a/tests/tests/media/res/raw/gb18030_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_3.mp3 b/tests/tests/media/res/raw/gb18030_3.mp3
deleted file mode 100644
index 4fcb22f..0000000
--- a/tests/tests/media/res/raw/gb18030_3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_4.mp3 b/tests/tests/media/res/raw/gb18030_4.mp3
deleted file mode 100644
index fedffd7..0000000
--- a/tests/tests/media/res/raw/gb18030_4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_6.mp3 b/tests/tests/media/res/raw/gb18030_6.mp3
deleted file mode 100644
index b4817b2..0000000
--- a/tests/tests/media/res/raw/gb18030_6.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_7.mp3 b/tests/tests/media/res/raw/gb18030_7.mp3
deleted file mode 100644
index 7932596..0000000
--- a/tests/tests/media/res/raw/gb18030_7.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_8.mp3 b/tests/tests/media/res/raw/gb18030_8.mp3
deleted file mode 100644
index f5f54de..0000000
--- a/tests/tests/media/res/raw/gb18030_8.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_utf8_mixed_1.mp3 b/tests/tests/media/res/raw/gb18030_utf8_mixed_1.mp3
deleted file mode 100644
index af2c7ac..0000000
--- a/tests/tests/media/res/raw/gb18030_utf8_mixed_1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_utf8_mixed_2.mp3 b/tests/tests/media/res/raw/gb18030_utf8_mixed_2.mp3
deleted file mode 100644
index d1c88fe..0000000
--- a/tests/tests/media/res/raw/gb18030_utf8_mixed_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/gb18030_utf8_mixed_3.mp3 b/tests/tests/media/res/raw/gb18030_utf8_mixed_3.mp3
deleted file mode 100644
index ddae12f..0000000
--- a/tests/tests/media/res/raw/gb18030_utf8_mixed_3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/heap_oob_flac.mp3 b/tests/tests/media/res/raw/heap_oob_flac.mp3
deleted file mode 100644
index ae542d0..0000000
--- a/tests/tests/media/res/raw/heap_oob_flac.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/hebrew.mp3 b/tests/tests/media/res/raw/hebrew.mp3
deleted file mode 100644
index 59d76d8..0000000
--- a/tests/tests/media/res/raw/hebrew.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/hebrew2.mp3 b/tests/tests/media/res/raw/hebrew2.mp3
deleted file mode 100644
index d48cad2..0000000
--- a/tests/tests/media/res/raw/hebrew2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test0.mp3 b/tests/tests/media/res/raw/id3test0.mp3
deleted file mode 100644
index 5730b6b..0000000
--- a/tests/tests/media/res/raw/id3test0.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test1.mp3 b/tests/tests/media/res/raw/id3test1.mp3
deleted file mode 100644
index af52e0f..0000000
--- a/tests/tests/media/res/raw/id3test1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test10.mp3 b/tests/tests/media/res/raw/id3test10.mp3
deleted file mode 100644
index ac01a00..0000000
--- a/tests/tests/media/res/raw/id3test10.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test11.mp3 b/tests/tests/media/res/raw/id3test11.mp3
deleted file mode 100644
index 5786b80..0000000
--- a/tests/tests/media/res/raw/id3test11.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test2.mp3 b/tests/tests/media/res/raw/id3test2.mp3
deleted file mode 100644
index 7fdb737..0000000
--- a/tests/tests/media/res/raw/id3test2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test3.mp3 b/tests/tests/media/res/raw/id3test3.mp3
deleted file mode 100644
index a9ce936..0000000
--- a/tests/tests/media/res/raw/id3test3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test4.mp3 b/tests/tests/media/res/raw/id3test4.mp3
deleted file mode 100644
index f2d2df9..0000000
--- a/tests/tests/media/res/raw/id3test4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test5.mp3 b/tests/tests/media/res/raw/id3test5.mp3
deleted file mode 100644
index 4ee1200..0000000
--- a/tests/tests/media/res/raw/id3test5.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test6.mp3 b/tests/tests/media/res/raw/id3test6.mp3
deleted file mode 100644
index 017e0c0..0000000
--- a/tests/tests/media/res/raw/id3test6.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test7.mp3 b/tests/tests/media/res/raw/id3test7.mp3
deleted file mode 100644
index d106a46..0000000
--- a/tests/tests/media/res/raw/id3test7.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test8.mp3 b/tests/tests/media/res/raw/id3test8.mp3
deleted file mode 100644
index ab83c86..0000000
--- a/tests/tests/media/res/raw/id3test8.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/id3test9.mp3 b/tests/tests/media/res/raw/id3test9.mp3
deleted file mode 100644
index 84d2c49..0000000
--- a/tests/tests/media/res/raw/id3test9.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_1.ogg b/tests/tests/media/res/raw/iso88591_1.ogg
deleted file mode 100644
index c20bf34..0000000
--- a/tests/tests/media/res/raw/iso88591_1.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_10.mp3 b/tests/tests/media/res/raw/iso88591_10.mp3
deleted file mode 100644
index 4d43200..0000000
--- a/tests/tests/media/res/raw/iso88591_10.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_11.mp3 b/tests/tests/media/res/raw/iso88591_11.mp3
deleted file mode 100644
index 3760238..0000000
--- a/tests/tests/media/res/raw/iso88591_11.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_12.mp3 b/tests/tests/media/res/raw/iso88591_12.mp3
deleted file mode 100644
index 1ffcc0c9..0000000
--- a/tests/tests/media/res/raw/iso88591_12.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_13.mp3 b/tests/tests/media/res/raw/iso88591_13.mp3
deleted file mode 100644
index 91987c1..0000000
--- a/tests/tests/media/res/raw/iso88591_13.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_2.mp3 b/tests/tests/media/res/raw/iso88591_2.mp3
deleted file mode 100644
index bcfdaad..0000000
--- a/tests/tests/media/res/raw/iso88591_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_3.mp3 b/tests/tests/media/res/raw/iso88591_3.mp3
deleted file mode 100644
index 2b6a03f..0000000
--- a/tests/tests/media/res/raw/iso88591_3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_4.mp3 b/tests/tests/media/res/raw/iso88591_4.mp3
deleted file mode 100644
index 0623fff..0000000
--- a/tests/tests/media/res/raw/iso88591_4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_5.mp3 b/tests/tests/media/res/raw/iso88591_5.mp3
deleted file mode 100644
index 8051af5..0000000
--- a/tests/tests/media/res/raw/iso88591_5.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_6.mp3 b/tests/tests/media/res/raw/iso88591_6.mp3
deleted file mode 100644
index 4dc2b49..0000000
--- a/tests/tests/media/res/raw/iso88591_6.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_7.mp3 b/tests/tests/media/res/raw/iso88591_7.mp3
deleted file mode 100644
index 72f5c5b..0000000
--- a/tests/tests/media/res/raw/iso88591_7.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_8.mp3 b/tests/tests/media/res/raw/iso88591_8.mp3
deleted file mode 100644
index f841d59..0000000
--- a/tests/tests/media/res/raw/iso88591_8.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_utf8_mixed_1.mp3 b/tests/tests/media/res/raw/iso88591_utf8_mixed_1.mp3
deleted file mode 100644
index 78bad13..0000000
--- a/tests/tests/media/res/raw/iso88591_utf8_mixed_1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_utf8_mixed_2.mp3 b/tests/tests/media/res/raw/iso88591_utf8_mixed_2.mp3
deleted file mode 100644
index c7d8429..0000000
--- a/tests/tests/media/res/raw/iso88591_utf8_mixed_2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/iso88591_utf8_mixed_3.mp3 b/tests/tests/media/res/raw/iso88591_utf8_mixed_3.mp3
deleted file mode 100644
index c8d4afa..0000000
--- a/tests/tests/media/res/raw/iso88591_utf8_mixed_3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/jpeg_with_datetime_tag.jpg b/tests/tests/media/res/raw/jpeg_with_datetime_tag.jpg
deleted file mode 100644
index f50e845..0000000
--- a/tests/tests/media/res/raw/jpeg_with_datetime_tag.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftaac.aac b/tests/tests/media/res/raw/loudsoftaac.aac
deleted file mode 100644
index 1534ef2..0000000
--- a/tests/tests/media/res/raw/loudsoftaac.aac
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftfaac.m4a b/tests/tests/media/res/raw/loudsoftfaac.m4a
deleted file mode 100644
index b4895b5..0000000
--- a/tests/tests/media/res/raw/loudsoftfaac.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftitunes.m4a b/tests/tests/media/res/raw/loudsoftitunes.m4a
deleted file mode 100644
index b01b36b..0000000
--- a/tests/tests/media/res/raw/loudsoftitunes.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftmp3.mp3 b/tests/tests/media/res/raw/loudsoftmp3.mp3
deleted file mode 100644
index b32c8bd..0000000
--- a/tests/tests/media/res/raw/loudsoftmp3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftogg.ogg b/tests/tests/media/res/raw/loudsoftogg.ogg
deleted file mode 100644
index dc122d9..0000000
--- a/tests/tests/media/res/raw/loudsoftogg.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftoggmkv.mkv b/tests/tests/media/res/raw/loudsoftoggmkv.mkv
deleted file mode 100644
index d4d62dc..0000000
--- a/tests/tests/media/res/raw/loudsoftoggmkv.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/loudsoftoggmp4.mp4 b/tests/tests/media/res/raw/loudsoftoggmp4.mp4
deleted file mode 100644
index 8e1154e..0000000
--- a/tests/tests/media/res/raw/loudsoftoggmp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/midi8sec.mid b/tests/tests/media/res/raw/midi8sec.mid
deleted file mode 100644
index 746aca1..0000000
--- a/tests/tests/media/res/raw/midi8sec.mid
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/mkv_avc_adpcm_ima.mkv b/tests/tests/media/res/raw/mkv_avc_adpcm_ima.mkv
deleted file mode 100755
index 1cba11a..0000000
--- a/tests/tests/media/res/raw/mkv_avc_adpcm_ima.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/mkv_avc_adpcm_ms.mkv b/tests/tests/media/res/raw/mkv_avc_adpcm_ms.mkv
deleted file mode 100755
index 33d272c..0000000
--- a/tests/tests/media/res/raw/mkv_avc_adpcm_ms.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monodcneg.mp3 b/tests/tests/media/res/raw/monodcneg.mp3
deleted file mode 100644
index 7d262de..0000000
--- a/tests/tests/media/res/raw/monodcneg.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monodcpos.mp3 b/tests/tests/media/res/raw/monodcpos.mp3
deleted file mode 100644
index 81a7943..0000000
--- a/tests/tests/media/res/raw/monodcpos.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/mononoisedcpos.m4a b/tests/tests/media/res/raw/mononoisedcpos.m4a
deleted file mode 100644
index d0ae090..0000000
--- a/tests/tests/media/res/raw/mononoisedcpos.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestgsm.wav b/tests/tests/media/res/raw/monotestgsm.wav
deleted file mode 100644
index 6062f36..0000000
--- a/tests/tests/media/res/raw/monotestgsm.wav
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestm4a.m4a b/tests/tests/media/res/raw/monotestm4a.m4a
deleted file mode 100644
index 9ef6651..0000000
--- a/tests/tests/media/res/raw/monotestm4a.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestmp3.mp3 b/tests/tests/media/res/raw/monotestmp3.mp3
deleted file mode 100644
index 43a8ac3..0000000
--- a/tests/tests/media/res/raw/monotestmp3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestogg.ogg b/tests/tests/media/res/raw/monotestogg.ogg
deleted file mode 100644
index 3dc5644..0000000
--- a/tests/tests/media/res/raw/monotestogg.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestoggmkv.mkv b/tests/tests/media/res/raw/monotestoggmkv.mkv
deleted file mode 100644
index 7d0fada..0000000
--- a/tests/tests/media/res/raw/monotestoggmkv.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/monotestoggmp4.mp4 b/tests/tests/media/res/raw/monotestoggmp4.mp4
deleted file mode 100644
index eca0440..0000000
--- a/tests/tests/media/res/raw/monotestoggmp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/okgoogle123_good.wav b/tests/tests/media/res/raw/okgoogle123_good.wav
deleted file mode 100644
index ffd5a7f8..0000000
--- a/tests/tests/media/res/raw/okgoogle123_good.wav
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_0.jpg b/tests/tests/media/res/raw/orientation_0.jpg
deleted file mode 100644
index 9b4d44a..0000000
--- a/tests/tests/media/res/raw/orientation_0.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_180.jpg b/tests/tests/media/res/raw/orientation_180.jpg
deleted file mode 100644
index 005fee2..0000000
--- a/tests/tests/media/res/raw/orientation_180.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_270.jpg b/tests/tests/media/res/raw/orientation_270.jpg
deleted file mode 100644
index b2c269f8..0000000
--- a/tests/tests/media/res/raw/orientation_270.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_90.jpg b/tests/tests/media/res/raw/orientation_90.jpg
deleted file mode 100644
index aefca34..0000000
--- a/tests/tests/media/res/raw/orientation_90.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_stripped_0.jpg b/tests/tests/media/res/raw/orientation_stripped_0.jpg
deleted file mode 100644
index 4656475..0000000
--- a/tests/tests/media/res/raw/orientation_stripped_0.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_stripped_180.jpg b/tests/tests/media/res/raw/orientation_stripped_180.jpg
deleted file mode 100644
index eb77283..0000000
--- a/tests/tests/media/res/raw/orientation_stripped_180.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_stripped_270.jpg b/tests/tests/media/res/raw/orientation_stripped_270.jpg
deleted file mode 100644
index 606520d..0000000
--- a/tests/tests/media/res/raw/orientation_stripped_270.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/orientation_stripped_90.jpg b/tests/tests/media/res/raw/orientation_stripped_90.jpg
deleted file mode 100644
index 43cc074..0000000
--- a/tests/tests/media/res/raw/orientation_stripped_90.jpg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/playlist1.pls b/tests/tests/media/res/raw/playlist1.pls
deleted file mode 100644
index 27ad178f92..0000000
--- a/tests/tests/media/res/raw/playlist1.pls
+++ /dev/null
@@ -1,3 +0,0 @@
-[playlist]
-File1=testmp3.mp3
-File2=testmp3_2.mp3
diff --git a/tests/tests/media/res/raw/playlist2.m3u b/tests/tests/media/res/raw/playlist2.m3u
deleted file mode 100644
index b307703..0000000
--- a/tests/tests/media/res/raw/playlist2.m3u
+++ /dev/null
@@ -1,7 +0,0 @@
-# comments should be ignored
-
-# first track
-testmp3_2.mp3
-
-# second track
-testmp3.mp3
diff --git a/tests/tests/media/res/raw/shiftjis1.mp3 b/tests/tests/media/res/raw/shiftjis1.mp3
deleted file mode 100644
index 1c50c76..0000000
--- a/tests/tests/media/res/raw/shiftjis1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis2.mp3 b/tests/tests/media/res/raw/shiftjis2.mp3
deleted file mode 100644
index 808c597..0000000
--- a/tests/tests/media/res/raw/shiftjis2.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis3.mp3 b/tests/tests/media/res/raw/shiftjis3.mp3
deleted file mode 100644
index 820631b..0000000
--- a/tests/tests/media/res/raw/shiftjis3.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis4.mp3 b/tests/tests/media/res/raw/shiftjis4.mp3
deleted file mode 100644
index 3fbc25e..0000000
--- a/tests/tests/media/res/raw/shiftjis4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis5.mp3 b/tests/tests/media/res/raw/shiftjis5.mp3
deleted file mode 100644
index 90520f8..0000000
--- a/tests/tests/media/res/raw/shiftjis5.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis6.mp3 b/tests/tests/media/res/raw/shiftjis6.mp3
deleted file mode 100644
index 5310936..0000000
--- a/tests/tests/media/res/raw/shiftjis6.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis7.mp3 b/tests/tests/media/res/raw/shiftjis7.mp3
deleted file mode 100644
index 6143126..0000000
--- a/tests/tests/media/res/raw/shiftjis7.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/shiftjis8.mp3 b/tests/tests/media/res/raw/shiftjis8.mp3
deleted file mode 100644
index c45c130..0000000
--- a/tests/tests/media/res/raw/shiftjis8.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_11khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_11khz_aot2_mp4.m4a
deleted file mode 100755
index 019dbae..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_11khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_12khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_12khz_aot2_mp4.m4a
deleted file mode 100755
index 0aae458..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_12khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot2_mp4.m4a
deleted file mode 100755
index b8e767b..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index 86ff942..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_16khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot2_mp4.m4a
deleted file mode 100755
index ce240bb..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index b07b036..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_22khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot2_mp4.m4a
deleted file mode 100755
index 7245bbb..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index 252366b..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_24khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot2_mp4.m4a
deleted file mode 100755
index e4216da..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index a0c6a46..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_32khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot2_mp4.m4a
deleted file mode 100755
index d44a956..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index 4b3a860..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_44khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot2_mp4.m4a
deleted file mode 100755
index 438b066..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index b6a2e69..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_48khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep1_1ch_8khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep1_1ch_8khz_aot2_mp4.m4a
deleted file mode 100755
index 4b690e2..0000000
--- a/tests/tests/media/res/raw/sinesweep1_1ch_8khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep51m4a.m4a b/tests/tests/media/res/raw/sinesweep51m4a.m4a
deleted file mode 100644
index 1e35934..0000000
--- a/tests/tests/media/res/raw/sinesweep51m4a.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_11khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_11khz_aot2_mp4.m4a
deleted file mode 100755
index bd83ec8..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_11khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_12khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_12khz_aot2_mp4.m4a
deleted file mode 100755
index 054d6d8..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_12khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot2_mp4.m4a
deleted file mode 100755
index 321a3b5..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index f04f29f..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_16khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot2_mp4.m4a
deleted file mode 100755
index 432b379..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index 0a300f8..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_22khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot2_mp4.m4a
deleted file mode 100755
index c859c9a..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index cdc8928..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_24khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot2_mp4.m4a
deleted file mode 100755
index 48c7b02..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index 76c9d47..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_32khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot2_mp4.m4a
deleted file mode 100755
index dd752b0..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot39_fl512_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot39_fl512_mp4.m4a
deleted file mode 100755
index 76fba31..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_44khz_aot39_fl512_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot2_mp4.m4a
deleted file mode 100755
index 2960b54..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot39_fl480_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot39_fl480_mp4.m4a
deleted file mode 100755
index baea42e..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_48khz_aot39_fl480_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweep_2ch_8khz_aot2_mp4.m4a b/tests/tests/media/res/raw/sinesweep_2ch_8khz_aot2_mp4.m4a
deleted file mode 100755
index 0863187..0000000
--- a/tests/tests/media/res/raw/sinesweep_2ch_8khz_aot2_mp4.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepalac.mov b/tests/tests/media/res/raw/sinesweepalac.mov
deleted file mode 100644
index f0e76e4..0000000
--- a/tests/tests/media/res/raw/sinesweepalac.mov
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepflac.flac b/tests/tests/media/res/raw/sinesweepflac.flac
deleted file mode 100644
index c51b3c5..0000000
--- a/tests/tests/media/res/raw/sinesweepflac.flac
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepflac24.flac b/tests/tests/media/res/raw/sinesweepflac24.flac
deleted file mode 100644
index ac40ea9..0000000
--- a/tests/tests/media/res/raw/sinesweepflac24.flac
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepflacmkv.mkv b/tests/tests/media/res/raw/sinesweepflacmkv.mkv
deleted file mode 100644
index 2f622cd..0000000
--- a/tests/tests/media/res/raw/sinesweepflacmkv.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepflacmp4.mp4 b/tests/tests/media/res/raw/sinesweepflacmp4.mp4
deleted file mode 100644
index f397afa..0000000
--- a/tests/tests/media/res/raw/sinesweepflacmp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepid3v23ext.mp3 b/tests/tests/media/res/raw/sinesweepid3v23ext.mp3
deleted file mode 100644
index 8249f4a..0000000
--- a/tests/tests/media/res/raw/sinesweepid3v23ext.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepid3v23extbe.mp3 b/tests/tests/media/res/raw/sinesweepid3v23extbe.mp3
deleted file mode 100644
index 8d04b44..0000000
--- a/tests/tests/media/res/raw/sinesweepid3v23extbe.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepid3v24ext.mp3 b/tests/tests/media/res/raw/sinesweepid3v24ext.mp3
deleted file mode 100644
index 40b392f..0000000
--- a/tests/tests/media/res/raw/sinesweepid3v24ext.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepm4a.m4a b/tests/tests/media/res/raw/sinesweepm4a.m4a
deleted file mode 100644
index 533a515..0000000
--- a/tests/tests/media/res/raw/sinesweepm4a.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepmp3lame.mp3 b/tests/tests/media/res/raw/sinesweepmp3lame.mp3
deleted file mode 100644
index 4d8ae70..0000000
--- a/tests/tests/media/res/raw/sinesweepmp3lame.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepmp3smpb.mp3 b/tests/tests/media/res/raw/sinesweepmp3smpb.mp3
deleted file mode 100644
index 47a1e9d..0000000
--- a/tests/tests/media/res/raw/sinesweepmp3smpb.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepogg.ogg b/tests/tests/media/res/raw/sinesweepogg.ogg
deleted file mode 100644
index e4fd4aa..0000000
--- a/tests/tests/media/res/raw/sinesweepogg.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepoggalbumart.ogg b/tests/tests/media/res/raw/sinesweepoggalbumart.ogg
deleted file mode 100644
index 00ad4ad..0000000
--- a/tests/tests/media/res/raw/sinesweepoggalbumart.ogg
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepoggmkv.mkv b/tests/tests/media/res/raw/sinesweepoggmkv.mkv
deleted file mode 100644
index 35bc5ca..0000000
--- a/tests/tests/media/res/raw/sinesweepoggmkv.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepoggmp4.mp4 b/tests/tests/media/res/raw/sinesweepoggmp4.mp4
deleted file mode 100644
index d53fad4..0000000
--- a/tests/tests/media/res/raw/sinesweepoggmp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepopus.mkv b/tests/tests/media/res/raw/sinesweepopus.mkv
deleted file mode 100644
index 230dd36..0000000
--- a/tests/tests/media/res/raw/sinesweepopus.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepopusmp4.mp4 b/tests/tests/media/res/raw/sinesweepopusmp4.mp4
deleted file mode 100644
index 6894908..0000000
--- a/tests/tests/media/res/raw/sinesweepopusmp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweeptsaac.m4a b/tests/tests/media/res/raw/sinesweeptsaac.m4a
deleted file mode 100644
index f583012..0000000
--- a/tests/tests/media/res/raw/sinesweeptsaac.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepvorbis.mkv b/tests/tests/media/res/raw/sinesweepvorbis.mkv
deleted file mode 100644
index 613ab71..0000000
--- a/tests/tests/media/res/raw/sinesweepvorbis.mkv
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/sinesweepvorbismp4.mp4 b/tests/tests/media/res/raw/sinesweepvorbismp4.mp4
deleted file mode 100644
index 660ca02..0000000
--- a/tests/tests/media/res/raw/sinesweepvorbismp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/stereonoisedcpos.m4a b/tests/tests/media/res/raw/stereonoisedcpos.m4a
deleted file mode 100644
index 77362df..0000000
--- a/tests/tests/media/res/raw/stereonoisedcpos.m4a
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_h264.mp4 b/tests/tests/media/res/raw/swirl_128x128_h264.mp4
deleted file mode 100644
index 3ff485a..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_h264_albumart.mp4 b/tests/tests/media/res/raw/swirl_128x128_h264_albumart.mp4
deleted file mode 100644
index f493f25..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_h264_albumart.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_h265.mp4 b/tests/tests/media/res/raw/swirl_128x128_h265.mp4
deleted file mode 100644
index a0b112b..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_mpeg4.mp4 b/tests/tests/media/res/raw/swirl_128x128_mpeg4.mp4
deleted file mode 100644
index 694ce95..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_mpeg4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_vp8.webm b/tests/tests/media/res/raw/swirl_128x128_vp8.webm
deleted file mode 100644
index 7b606a2..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_vp8.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x128_vp9.webm b/tests/tests/media/res/raw/swirl_128x128_vp9.webm
deleted file mode 100644
index 7acff11..0000000
--- a/tests/tests/media/res/raw/swirl_128x128_vp9.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_128x96_h263.3gp b/tests/tests/media/res/raw/swirl_128x96_h263.3gp
deleted file mode 100644
index f0ef242..0000000
--- a/tests/tests/media/res/raw/swirl_128x96_h263.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_130x132_h264.mp4 b/tests/tests/media/res/raw/swirl_130x132_h264.mp4
deleted file mode 100644
index 60027fd..0000000
--- a/tests/tests/media/res/raw/swirl_130x132_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_130x132_h265.mp4 b/tests/tests/media/res/raw/swirl_130x132_h265.mp4
deleted file mode 100644
index 46fab26..0000000
--- a/tests/tests/media/res/raw/swirl_130x132_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_130x132_mpeg4.mp4 b/tests/tests/media/res/raw/swirl_130x132_mpeg4.mp4
deleted file mode 100644
index ed6b529..0000000
--- a/tests/tests/media/res/raw/swirl_130x132_mpeg4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_130x132_vp8.webm b/tests/tests/media/res/raw/swirl_130x132_vp8.webm
deleted file mode 100644
index a3f2d21..0000000
--- a/tests/tests/media/res/raw/swirl_130x132_vp8.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_130x132_vp9.webm b/tests/tests/media/res/raw/swirl_130x132_vp9.webm
deleted file mode 100644
index 840dc59..0000000
--- a/tests/tests/media/res/raw/swirl_130x132_vp9.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_132x130_h264.mp4 b/tests/tests/media/res/raw/swirl_132x130_h264.mp4
deleted file mode 100644
index dc17f8f..0000000
--- a/tests/tests/media/res/raw/swirl_132x130_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_132x130_h265.mp4 b/tests/tests/media/res/raw/swirl_132x130_h265.mp4
deleted file mode 100644
index f9a59f5..0000000
--- a/tests/tests/media/res/raw/swirl_132x130_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_132x130_mpeg4.mp4 b/tests/tests/media/res/raw/swirl_132x130_mpeg4.mp4
deleted file mode 100644
index ed975db..0000000
--- a/tests/tests/media/res/raw/swirl_132x130_mpeg4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_132x130_vp8.webm b/tests/tests/media/res/raw/swirl_132x130_vp8.webm
deleted file mode 100644
index 8cd8d4e..0000000
--- a/tests/tests/media/res/raw/swirl_132x130_vp8.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_132x130_vp9.webm b/tests/tests/media/res/raw/swirl_132x130_vp9.webm
deleted file mode 100644
index 4a8d79f..0000000
--- a/tests/tests/media/res/raw/swirl_132x130_vp9.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_136x144_h264.mp4 b/tests/tests/media/res/raw/swirl_136x144_h264.mp4
deleted file mode 100644
index bc5fadf..0000000
--- a/tests/tests/media/res/raw/swirl_136x144_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_136x144_h265.mp4 b/tests/tests/media/res/raw/swirl_136x144_h265.mp4
deleted file mode 100644
index 38f1fc8..0000000
--- a/tests/tests/media/res/raw/swirl_136x144_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_136x144_mpeg4.mp4 b/tests/tests/media/res/raw/swirl_136x144_mpeg4.mp4
deleted file mode 100644
index c74bd96..0000000
--- a/tests/tests/media/res/raw/swirl_136x144_mpeg4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_136x144_vp8.webm b/tests/tests/media/res/raw/swirl_136x144_vp8.webm
deleted file mode 100644
index 960d02f..0000000
--- a/tests/tests/media/res/raw/swirl_136x144_vp8.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_136x144_vp9.webm b/tests/tests/media/res/raw/swirl_136x144_vp9.webm
deleted file mode 100644
index 5898f07..0000000
--- a/tests/tests/media/res/raw/swirl_136x144_vp9.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_144x136_h264.mp4 b/tests/tests/media/res/raw/swirl_144x136_h264.mp4
deleted file mode 100644
index 962a218..0000000
--- a/tests/tests/media/res/raw/swirl_144x136_h264.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_144x136_h265.mp4 b/tests/tests/media/res/raw/swirl_144x136_h265.mp4
deleted file mode 100644
index 8098621..0000000
--- a/tests/tests/media/res/raw/swirl_144x136_h265.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_144x136_mpeg4.mp4 b/tests/tests/media/res/raw/swirl_144x136_mpeg4.mp4
deleted file mode 100644
index 81c1db3..0000000
--- a/tests/tests/media/res/raw/swirl_144x136_mpeg4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_144x136_vp8.webm b/tests/tests/media/res/raw/swirl_144x136_vp8.webm
deleted file mode 100644
index b050ade..0000000
--- a/tests/tests/media/res/raw/swirl_144x136_vp8.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_144x136_vp9.webm b/tests/tests/media/res/raw/swirl_144x136_vp9.webm
deleted file mode 100644
index 9c0539a..0000000
--- a/tests/tests/media/res/raw/swirl_144x136_vp9.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_176x144_h263.3gp b/tests/tests/media/res/raw/swirl_176x144_h263.3gp
deleted file mode 100644
index ee51660..0000000
--- a/tests/tests/media/res/raw/swirl_176x144_h263.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/swirl_352x288_h263.3gp b/tests/tests/media/res/raw/swirl_352x288_h263.3gp
deleted file mode 100644
index 53830a9..0000000
--- a/tests/tests/media/res/raw/swirl_352x288_h263.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/test_subtitle1_srt.3gp b/tests/tests/media/res/raw/test_subtitle1_srt.3gp
deleted file mode 100644
index 8dbc240..0000000
--- a/tests/tests/media/res/raw/test_subtitle1_srt.3gp
+++ /dev/null
@@ -1,39 +0,0 @@
-1
-00:00:0,000 --> 00:00:0,500
-2:0000
-
-2
-00:00:1,000 --> 00:00:1,500
-2:1000
-
-3
-00:00:2,000 --> 00:00:2,500
-2:2000
-
-4
-00:00:3,000 --> 00:00:3,500
-2:3000
-
-5
-00:00:4,000 --> 00:00:4,500
-2:4000
-
-6
-00:00:5,000 --> 00:00:5,500
-2:5000
-
-7
-00:00:6,000 --> 00:00:6,500
-2:6000
-
-8
-00:00:7,000 --> 00:00:7,500
-2:7000
-
-9
-00:00:8,000 --> 00:00:8,500
-2:8000
-
-10
-00:00:9,000 --> 00:00:9,500
-2:9000
diff --git a/tests/tests/media/res/raw/test_subtitle2_srt.3gp b/tests/tests/media/res/raw/test_subtitle2_srt.3gp
deleted file mode 100644
index 7ac2e72..0000000
--- a/tests/tests/media/res/raw/test_subtitle2_srt.3gp
+++ /dev/null
@@ -1,39 +0,0 @@
-1
-00:00:0,500 --> 00:00:1,000
-3:500
-
-2
-00:00:1,500 --> 00:00:2,000
-3:1500
-
-3
-00:00:2,500 --> 00:00:3,000
-3:2500
-
-4
-00:00:3,500 --> 00:00:4,000
-3:3500
-
-5
-00:00:4,500 --> 00:00:5,000
-3:4500
-
-6
-00:00:5,500 --> 00:00:6,000
-3:5500
-
-7
-00:00:6,500 --> 00:00:7,000
-3:6500
-
-8
-00:00:7,500 --> 00:00:8,000
-3:7500
-
-9
-00:00:8,500 --> 00:00:9,000
-3:8500
-
-10
-00:00:9,500 --> 00:00:10,000
-3:9500
diff --git a/tests/tests/media/res/raw/testac3mp4.mp4 b/tests/tests/media/res/raw/testac3mp4.mp4
deleted file mode 100644
index af527b1..0000000
--- a/tests/tests/media/res/raw/testac3mp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testac3ts.ts b/tests/tests/media/res/raw/testac3ts.ts
deleted file mode 100644
index a67b8b8..0000000
--- a/tests/tests/media/res/raw/testac3ts.ts
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testamr.amr b/tests/tests/media/res/raw/testamr.amr
deleted file mode 100644
index 36c259c..0000000
--- a/tests/tests/media/res/raw/testamr.amr
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testeac3mp4.mp4 b/tests/tests/media/res/raw/testeac3mp4.mp4
deleted file mode 100644
index ac9cad2..0000000
--- a/tests/tests/media/res/raw/testeac3mp4.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testeac3ts.ts b/tests/tests/media/res/raw/testeac3ts.ts
deleted file mode 100644
index 1e7bc14..0000000
--- a/tests/tests/media/res/raw/testeac3ts.ts
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testimy.imy b/tests/tests/media/res/raw/testimy.imy
deleted file mode 100644
index b66f02b..0000000
--- a/tests/tests/media/res/raw/testimy.imy
+++ /dev/null
@@ -1,10 +0,0 @@
-BEGIN:IMELODY

-VERSION:1.2

-FORMAT:CLASS1.0

-NAME:Test

-COMPOSER:Android

-BEAT:120

-STYLE:S1

-VOLUME:V7

-MELODY:a1b2c3vibeoffledoffbackoffa3.vibeonledonbackon*4d3a3vibeoffbackoffbackoffg3.backon(*5c4c1..)@9*5#f2*5#f2

-END:IMELODY

diff --git a/tests/tests/media/res/raw/testmp3_4.mp3 b/tests/tests/media/res/raw/testmp3_4.mp3
deleted file mode 100755
index 2098ebd..0000000
--- a/tests/tests/media/res/raw/testmp3_4.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testota.ota b/tests/tests/media/res/raw/testota.ota
deleted file mode 100644
index 7aa5f996..0000000
--- a/tests/tests/media/res/raw/testota.ota
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/testrtttl.rtttl b/tests/tests/media/res/raw/testrtttl.rtttl
deleted file mode 100644
index 1f7e270..0000000
--- a/tests/tests/media/res/raw/testrtttl.rtttl
+++ /dev/null
@@ -1 +0,0 @@
-Test:d=2,o=6,b=120,l=2,s=n:a,b,c,d,e,4a,4b#,4c,4d,a4,b4,c4,d4
diff --git a/tests/tests/media/res/raw/testvideo_with_2_subtitle_tracks.mp4 b/tests/tests/media/res/raw/testvideo_with_2_subtitle_tracks.mp4
deleted file mode 100755
index ac70dd3..0000000
--- a/tests/tests/media/res/raw/testvideo_with_2_subtitle_tracks.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/timestamps_binary_counter_320x240_30fps_600frames.txt b/tests/tests/media/res/raw/timestamps_binary_counter_320x240_30fps_600frames.txt
deleted file mode 100644
index 388bacc..0000000
--- a/tests/tests/media/res/raw/timestamps_binary_counter_320x240_30fps_600frames.txt
+++ /dev/null
@@ -1,600 +0,0 @@
-66666
-166666
-100000
-133333
-300000
-233333
-200000
-266666
-433333
-366666
-333333
-400000
-566666
-500000
-466666
-533333
-666666
-600000
-633333
-800000
-733333
-700000
-766666
-900000
-833333
-866666
-1033333
-966666
-933333
-1000000
-1066666
-1166666
-1100000
-1133333
-1300000
-1233333
-1200000
-1266666
-1433333
-1366666
-1333333
-1400000
-1566666
-1500000
-1466666
-1533333
-1666666
-1600000
-1633333
-1800000
-1733333
-1700000
-1766666
-1900000
-1833333
-1866666
-2000000
-1933333
-1966666
-2033333
-2066666
-2166666
-2100000
-2133333
-2300000
-2233333
-2200000
-2266666
-2433333
-2366666
-2333333
-2400000
-2566666
-2500000
-2466666
-2533333
-2700000
-2633333
-2600000
-2666666
-2833333
-2766666
-2733333
-2800000
-2966666
-2900000
-2866666
-2933333
-3033333
-3000000
-3066666
-3166666
-3100000
-3133333
-3300000
-3233333
-3200000
-3266666
-3433333
-3366666
-3333333
-3400000
-3566666
-3500000
-3466666
-3533333
-3666666
-3600000
-3633333
-3800000
-3733333
-3700000
-3766666
-3900000
-3833333
-3866666
-4000000
-3933333
-3966666
-4033333
-4066666
-4166666
-4100000
-4133333
-4300000
-4233333
-4200000
-4266666
-4433333
-4366666
-4333333
-4400000
-4566666
-4500000
-4466666
-4533333
-4666666
-4600000
-4633333
-4733333
-4700000
-4833333
-4766666
-4800000
-4966666
-4900000
-4866666
-4933333
-5033333
-5000000
-5066666
-5166666
-5100000
-5133333
-5300000
-5233333
-5200000
-5266666
-5433333
-5366666
-5333333
-5400000
-5566666
-5500000
-5466666
-5533333
-5666666
-5600000
-5633333
-5800000
-5733333
-5700000
-5766666
-5900000
-5833333
-5866666
-6033333
-5966666
-5933333
-6000000
-6066666
-6166666
-6100000
-6133333
-6300000
-6233333
-6200000
-6266666
-6433333
-6366666
-6333333
-6400000
-6566666
-6500000
-6466666
-6533333
-6666666
-6600000
-6633333
-6800000
-6733333
-6700000
-6766666
-6900000
-6833333
-6866666
-7000000
-6933333
-6966666
-7033333
-7066666
-7166666
-7100000
-7133333
-7300000
-7233333
-7200000
-7266666
-7433333
-7366666
-7333333
-7400000
-7566666
-7500000
-7466666
-7533333
-7700000
-7633333
-7600000
-7666666
-7833333
-7766666
-7733333
-7800000
-7966666
-7900000
-7866666
-7933333
-8033333
-8000000
-8066666
-8166666
-8100000
-8133333
-8300000
-8233333
-8200000
-8266666
-8433333
-8366666
-8333333
-8400000
-8566666
-8500000
-8466666
-8533333
-8666666
-8600000
-8633333
-8800000
-8733333
-8700000
-8766666
-8900000
-8833333
-8866666
-9000000
-8933333
-8966666
-9033333
-9066666
-9166666
-9100000
-9133333
-9300000
-9233333
-9200000
-9266666
-9366666
-9333333
-9500000
-9433333
-9400000
-9466666
-9633333
-9566666
-9533333
-9600000
-9766666
-9700000
-9666666
-9733333
-9900000
-9833333
-9800000
-9866666
-10000000
-9933333
-9966666
-10033333
-10066666
-10166666
-10100000
-10133333
-10300000
-10233333
-10200000
-10266666
-10433333
-10366666
-10333333
-10400000
-10566666
-10500000
-10466666
-10533333
-10666666
-10600000
-10633333
-10800000
-10733333
-10700000
-10766666
-10900000
-10833333
-10866666
-11033333
-10966666
-10933333
-11000000
-11066666
-11166666
-11100000
-11133333
-11300000
-11233333
-11200000
-11266666
-11433333
-11366666
-11333333
-11400000
-11566666
-11500000
-11466666
-11533333
-11666666
-11600000
-11633333
-11800000
-11733333
-11700000
-11766666
-11900000
-11833333
-11866666
-12000000
-11933333
-11966666
-12033333
-12066666
-12166666
-12100000
-12133333
-12300000
-12233333
-12200000
-12266666
-12433333
-12366666
-12333333
-12400000
-12566666
-12500000
-12466666
-12533333
-12700000
-12633333
-12600000
-12666666
-12833333
-12766666
-12733333
-12800000
-12966666
-12900000
-12866666
-12933333
-13033333
-13000000
-13066666
-13166666
-13100000
-13133333
-13300000
-13233333
-13200000
-13266666
-13433333
-13366666
-13333333
-13400000
-13566666
-13500000
-13466666
-13533333
-13666666
-13600000
-13633333
-13800000
-13733333
-13700000
-13766666
-13900000
-13833333
-13866666
-14000000
-13933333
-13966666
-14033333
-14066666
-14166666
-14100000
-14133333
-14300000
-14233333
-14200000
-14266666
-14433333
-14366666
-14333333
-14400000
-14566666
-14500000
-14466666
-14533333
-14666666
-14600000
-14633333
-14733333
-14700000
-14833333
-14766666
-14800000
-14966666
-14900000
-14866666
-14933333
-15033333
-15000000
-15066666
-15166666
-15100000
-15133333
-15300000
-15233333
-15200000
-15266666
-15433333
-15366666
-15333333
-15400000
-15566666
-15500000
-15466666
-15533333
-15666666
-15600000
-15633333
-15800000
-15733333
-15700000
-15766666
-15900000
-15833333
-15866666
-16033333
-15966666
-15933333
-16000000
-16066666
-16166666
-16100000
-16133333
-16300000
-16233333
-16200000
-16266666
-16433333
-16366666
-16333333
-16400000
-16566666
-16500000
-16466666
-16533333
-16666666
-16600000
-16633333
-16800000
-16733333
-16700000
-16766666
-16900000
-16833333
-16866666
-17000000
-16933333
-16966666
-17033333
-17066666
-17166666
-17100000
-17133333
-17300000
-17233333
-17200000
-17266666
-17433333
-17366666
-17333333
-17400000
-17566666
-17500000
-17466666
-17533333
-17700000
-17633333
-17600000
-17666666
-17833333
-17766666
-17733333
-17800000
-17966666
-17900000
-17866666
-17933333
-18033333
-18000000
-18066666
-18166666
-18100000
-18133333
-18300000
-18233333
-18200000
-18266666
-18433333
-18366666
-18333333
-18400000
-18566666
-18500000
-18466666
-18533333
-18666666
-18600000
-18633333
-18800000
-18733333
-18700000
-18766666
-18900000
-18833333
-18866666
-19000000
-18933333
-18966666
-19033333
-19066666
-19166666
-19100000
-19133333
-19300000
-19233333
-19200000
-19266666
-19366666
-19333333
-19500000
-19433333
-19400000
-19466666
-19633333
-19566666
-19533333
-19600000
-19766666
-19700000
-19666666
-19733333
-19900000
-19833333
-19800000
-19866666
-20000000
-19933333
-19966666
-20033333
diff --git a/tests/tests/media/res/raw/utf16_1.mp3 b/tests/tests/media/res/raw/utf16_1.mp3
deleted file mode 100644
index 829d311..0000000
--- a/tests/tests/media/res/raw/utf16_1.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_1280x720_webm_vp9_csd_309kbps_25fps_vorbis_stereo_128kbps_48000hz.webm b/tests/tests/media/res/raw/video_1280x720_webm_vp9_csd_309kbps_25fps_vorbis_stereo_128kbps_48000hz.webm
deleted file mode 100644
index 8f00ded..0000000
--- a/tests/tests/media/res/raw/video_1280x720_webm_vp9_csd_309kbps_25fps_vorbis_stereo_128kbps_48000hz.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_11025hz.3gp
deleted file mode 100644
index d2a6ddf..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_22050hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_22050hz.3gp
deleted file mode 100644
index b7c2bed..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_mono_24kbps_22050hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_11025hz.3gp
deleted file mode 100644
index 4b10c21..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_22050hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_22050hz.3gp
deleted file mode 100644
index 61e90a6..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_128kbps_22050hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_11025hz.3gp
deleted file mode 100644
index 9ce8a32..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_22050hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_22050hz.3gp
deleted file mode 100644
index eec1e10..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_12fps_aac_stereo_24kbps_22050hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_11025hz.3gp
deleted file mode 100644
index b39c665..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_22050hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_22050hz.3gp
deleted file mode 100644
index e50f329..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_mono_24kbps_22050hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_128kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_128kbps_11025hz.3gp
deleted file mode 100644
index cc50019..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_128kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_11025hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_11025hz.3gp
deleted file mode 100644
index 22a7b8b..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_11025hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_22050hz.3gp b/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_22050hz.3gp
deleted file mode 100644
index 55a73ec..0000000
--- a/tests/tests/media/res/raw/video_176x144_3gp_h263_56kbps_25fps_aac_stereo_24kbps_22050hz.3gp
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_256x144_webm_vp9_hdr_83kbps_24fps.webm b/tests/tests/media/res/raw/video_256x144_webm_vp9_hdr_83kbps_24fps.webm
deleted file mode 100644
index bc4ef33..0000000
--- a/tests/tests/media/res/raw/video_256x144_webm_vp9_hdr_83kbps_24fps.webm
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4 b/tests/tests/media/res/raw/video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4
deleted file mode 100644
index 601dda1..0000000
--- a/tests/tests/media/res/raw/video_480x360_mp4_h264_1000kbps_25fps_aac_stereo_128kbps_44100hz.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_dovi_3840x2160_30fps_dav1_10_2.mp4 b/tests/tests/media/res/raw/video_dovi_3840x2160_30fps_dav1_10_2.mp4
deleted file mode 100644
index 38e791f..0000000
--- a/tests/tests/media/res/raw/video_dovi_3840x2160_30fps_dav1_10_2.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_0.mp4 b/tests/tests/media/res/raw/video_h264_mpeg4_rotate_0.mp4
deleted file mode 100644
index 73a7309..0000000
--- a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_0.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_180.mp4 b/tests/tests/media/res/raw/video_h264_mpeg4_rotate_180.mp4
deleted file mode 100644
index 7c6a927..0000000
--- a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_180.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_270.mp4 b/tests/tests/media/res/raw/video_h264_mpeg4_rotate_270.mp4
deleted file mode 100644
index 684ba40..0000000
--- a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_270.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_90.mp4 b/tests/tests/media/res/raw/video_h264_mpeg4_rotate_90.mp4
deleted file mode 100644
index 921a58f..0000000
--- a/tests/tests/media/res/raw/video_h264_mpeg4_rotate_90.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/voice12_48k_128kbps_15s_ac3_readme.txt b/tests/tests/media/res/raw/voice12_48k_128kbps_15s_ac3_readme.txt
deleted file mode 100644
index 3073d48..0000000
--- a/tests/tests/media/res/raw/voice12_48k_128kbps_15s_ac3_readme.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-file=voice12_48k_128kbps_15s.raw
-author=Phil Burk
-copyright=2016 Google Inc
-license=Apache Open Source V2
-channels=2
-encoding=AC3
-rate=48000
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_00.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_00.vp9
deleted file mode 100644
index 1d65e32..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_00.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_00_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_00_vp9_md5
deleted file mode 100644
index aa90d5a..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_00_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-c3fbb7abbdb5bd4ed4a7e34768c17df1  vp90-2-00-quantizer-00-352x288-0001.i420
-08203c2595bdb2d58ead6f921345d699  vp90-2-00-quantizer-00-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_01.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_01.vp9
deleted file mode 100644
index c2aebcf..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_01.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_01_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_01_vp9_md5
deleted file mode 100644
index 85e12ba..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_01_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-f041b870cf9236d5f22e2b08a77d5958  vp90-2-00-quantizer-01-352x288-0001.i420
-cbdb7526986ae15592891488c9afc84c  vp90-2-00-quantizer-01-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_02.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_02.vp9
deleted file mode 100644
index 6baa992..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_02.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_02_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_02_vp9_md5
deleted file mode 100644
index e1bbcaa..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_02_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-98048cfdb4af5059f4085c5acc94ef8f  vp90-2-00-quantizer-02-352x288-0001.i420
-8160183e1eed1d0af4427be216b8b9f7  vp90-2-00-quantizer-02-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_03.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_03.vp9
deleted file mode 100644
index 7b7ead0..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_03.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_03_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_03_vp9_md5
deleted file mode 100644
index fb6f597..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_03_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-15c548208f5eda243a151a42f4d64855  vp90-2-00-quantizer-03-352x288-0001.i420
-e96d463dc8e9b27b1c2ec40f77eee6ef  vp90-2-00-quantizer-03-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_04.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_04.vp9
deleted file mode 100644
index 4eb17d0..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_04.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_04_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_04_vp9_md5
deleted file mode 100644
index fbe7558..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_04_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-928c64a0747ac57ab50c1520d694fea7  vp90-2-00-quantizer-04-352x288-0001.i420
-a6f6daa293231e95ef30ed168f582c84  vp90-2-00-quantizer-04-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_05.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_05.vp9
deleted file mode 100644
index b11f071..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_05.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_05_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_05_vp9_md5
deleted file mode 100644
index 4977060..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_05_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-082460718b7d7046c8fb23184b7f71ca  vp90-2-00-quantizer-05-352x288-0001.i420
-4a41aad51c40a92df72333e13f47d3fe  vp90-2-00-quantizer-05-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_06.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_06.vp9
deleted file mode 100644
index 11e2814..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_06.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_06_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_06_vp9_md5
deleted file mode 100644
index 2a90a40..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_06_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-cfca1bed96ff62a69b2d841fda01c6b9  vp90-2-00-quantizer-06-352x288-0001.i420
-9b4d61f1b998745c108f8eb67925e03d  vp90-2-00-quantizer-06-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_07.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_07.vp9
deleted file mode 100644
index 38f752c..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_07.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_07_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_07_vp9_md5
deleted file mode 100644
index 6b77e7f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_07_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6f5122064bead9d9882bec2698a6ed9c  vp90-2-00-quantizer-07-352x288-0001.i420
-50dae67d2f57a76eece210dee8b6df9e  vp90-2-00-quantizer-07-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_08.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_08.vp9
deleted file mode 100644
index a666e85..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_08_vp9_md5
deleted file mode 100644
index d0dba67..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_08_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-eb3d6985fcda5d93dd62d53354e8a093  vp90-2-00-quantizer-08-352x288-0001.i420
-5b1f5b7780b4cafe1f75e56a0b526643  vp90-2-00-quantizer-08-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_09.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_09.vp9
deleted file mode 100644
index d5e9268..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_09.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_09_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_09_vp9_md5
deleted file mode 100644
index a1d78c2..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_09_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-d7ccaf28c59875fe91983def5490d2b1  vp90-2-00-quantizer-09-352x288-0001.i420
-bd98fe9492054826748de840b4495309  vp90-2-00-quantizer-09-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_10.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_10.vp9
deleted file mode 100644
index ad74ec5..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_10_vp9_md5
deleted file mode 100644
index cc8a716..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_10_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-20dda6231f9801c9c237c6d09d9939b6  vp90-2-00-quantizer-10-352x288-0001.i420
-23c91e93807fb9a4ed5bd5bdd449d99f  vp90-2-00-quantizer-10-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_11.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_11.vp9
deleted file mode 100644
index 144a555..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_11.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_11_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_11_vp9_md5
deleted file mode 100644
index 39464f2..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_11_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-960833315ebcdee97f46c4d98d0f3fef  vp90-2-00-quantizer-11-352x288-0001.i420
-eec40507d17b64b7895a61cb87b2096a  vp90-2-00-quantizer-11-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_12.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_12.vp9
deleted file mode 100644
index c831b57..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_12.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_12_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_12_vp9_md5
deleted file mode 100644
index 57e7dbe..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_12_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6533224d3b6ba1ec0dd973bbe56c6349  vp90-2-00-quantizer-12-352x288-0001.i420
-12ceadc6d28327a24a75f8c40b6084d1  vp90-2-00-quantizer-12-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_13.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_13.vp9
deleted file mode 100644
index 168bca9..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_13.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_13_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_13_vp9_md5
deleted file mode 100644
index 03acb52..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_13_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-7268de6756014f79a56dcf010c52a97f  vp90-2-00-quantizer-13-352x288-0001.i420
-9e39e9b0e2295b8460dfa05f44762771  vp90-2-00-quantizer-13-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_14.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_14.vp9
deleted file mode 100644
index 0113e12..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_14.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_14_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_14_vp9_md5
deleted file mode 100644
index 2525db5..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_14_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-57e9e333c641fa952f7485b788df225a  vp90-2-00-quantizer-14-352x288-0001.i420
-551f0cea83dcdf4540c3983736757874  vp90-2-00-quantizer-14-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_15.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_15.vp9
deleted file mode 100644
index fe7add2..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_15.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_15_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_15_vp9_md5
deleted file mode 100644
index c6e5377..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_15_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-17a0a2842856b9e89aede237648d5dda  vp90-2-00-quantizer-15-352x288-0001.i420
-c9fcade888a38621bebe3d4b41664245  vp90-2-00-quantizer-15-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_16.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_16.vp9
deleted file mode 100644
index c9c35b4..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_16_vp9_md5
deleted file mode 100644
index c1abf24..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_16_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6cc2089e9a3d352fe10b59ccd935c677  vp90-2-00-quantizer-16-352x288-0001.i420
-d165bf7b9cb901e121a65038758d8613  vp90-2-00-quantizer-16-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_17.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_17.vp9
deleted file mode 100644
index cd8dd67..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_17.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_17_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_17_vp9_md5
deleted file mode 100644
index 40d8f03..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_17_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-bc80511c83162c09661f155cd29f6dd8  vp90-2-00-quantizer-17-352x288-0001.i420
-a62f1cbdb3f86d2fb4c880cfd917def5  vp90-2-00-quantizer-17-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_18.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_18.vp9
deleted file mode 100644
index 4b0fe9f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_18_vp9_md5
deleted file mode 100644
index 3cb5fbe..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_18_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-b2d350f6faa41cb50c2e8a9907d0f4a5  vp90-2-00-quantizer-18-352x288-0001.i420
-39b4380d16bc8e093dd4dba475175fb3  vp90-2-00-quantizer-18-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_19.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_19.vp9
deleted file mode 100644
index f14d8d6..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_19.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_19_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_19_vp9_md5
deleted file mode 100644
index 36dbdac..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_19_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-441e09be3c15fcb240afd74bb7a10a72  vp90-2-00-quantizer-19-352x288-0001.i420
-32ae5dac876ca5d5ae6ab7c74f4dc25d  vp90-2-00-quantizer-19-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_20.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_20.vp9
deleted file mode 100644
index 062fd61..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_20.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_20_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_20_vp9_md5
deleted file mode 100644
index ca80f66..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_20_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-7786eb9944dba0553e129133523a98c1  vp90-2-00-quantizer-20-352x288-0001.i420
-206d888f8453427f10a40aa8bf5f6df0  vp90-2-00-quantizer-20-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_21.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_21.vp9
deleted file mode 100644
index 500950c..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_21.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_21_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_21_vp9_md5
deleted file mode 100644
index b31ac9e..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_21_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-aab95e195be71feca050a839d7b3154d  vp90-2-00-quantizer-21-352x288-0001.i420
-02a05d699bbbdc477e34bb0dad9f0391  vp90-2-00-quantizer-21-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_22.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_22.vp9
deleted file mode 100644
index 88dad68..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_22.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_22_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_22_vp9_md5
deleted file mode 100644
index 8f50f51..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_22_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-41f853c3ee2d4611b645cc643d82e287  vp90-2-00-quantizer-22-352x288-0001.i420
-1c240c653110ff8609ca0f0287a6496d  vp90-2-00-quantizer-22-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_23.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_23.vp9
deleted file mode 100644
index 1834017..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_23.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_23_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_23_vp9_md5
deleted file mode 100644
index ea0aaaa..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_23_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-bc5b07369df50c8f97ce1a377fe513cf  vp90-2-00-quantizer-23-352x288-0001.i420
-ce62ddb4f3e305d0f8587ae8bb44cc79  vp90-2-00-quantizer-23-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_24.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_24.vp9
deleted file mode 100644
index d9dac53..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_24.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_24_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_24_vp9_md5
deleted file mode 100644
index 49f378f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_24_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-982d54041221c977b6f0e37a9236cc76  vp90-2-00-quantizer-24-352x288-0001.i420
-57631e7f13f645c834e2944ebfd6d40e  vp90-2-00-quantizer-24-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_25.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_25.vp9
deleted file mode 100644
index e04f1b6..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_25.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_25_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_25_vp9_md5
deleted file mode 100644
index 90ed556..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_25_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-b0fb55f3f2f56b3d27038e83c10123ce  vp90-2-00-quantizer-25-352x288-0001.i420
-9fcac3becdcc2d30d778a55eca4c2018  vp90-2-00-quantizer-25-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_26.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_26.vp9
deleted file mode 100644
index 3b5abd3..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_26.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_26_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_26_vp9_md5
deleted file mode 100644
index dbec99c..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_26_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-4f645e0f354da77b9e2f2a6753c361da  vp90-2-00-quantizer-26-352x288-0001.i420
-b7542998ec298273ca662bc9b658d10e  vp90-2-00-quantizer-26-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_27.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_27.vp9
deleted file mode 100644
index 6dbea83..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_27.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_27_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_27_vp9_md5
deleted file mode 100644
index 14ec691..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_27_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6edc96a3747cad43828397045764206e  vp90-2-00-quantizer-27-352x288-0001.i420
-5fbc65d20fdca1abd69079851ce676d3  vp90-2-00-quantizer-27-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_28.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_28.vp9
deleted file mode 100644
index 8f928cc..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_28.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_28_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_28_vp9_md5
deleted file mode 100644
index 0e2d177..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_28_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-5db3e910e70da38bb91d01d73acc33dd  vp90-2-00-quantizer-28-352x288-0001.i420
-b920ee7f7e61b7fdf9f44b1f738d0292  vp90-2-00-quantizer-28-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_29.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_29.vp9
deleted file mode 100644
index f343340..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_29.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_29_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_29_vp9_md5
deleted file mode 100644
index 1187388..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_29_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-3cb3e310be5305077efa6216f6f10654  vp90-2-00-quantizer-29-352x288-0001.i420
-692d3e098af5978fe1a898ebc1a66a7a  vp90-2-00-quantizer-29-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_30.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_30.vp9
deleted file mode 100644
index f6ce3c8..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_30.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_30_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_30_vp9_md5
deleted file mode 100644
index 39a6f82..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_30_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-e3b3cea66ea38c5dfba1aa73bb4c611d  vp90-2-00-quantizer-30-352x288-0001.i420
-42bb3e54b19c3f4c4f7ee3a6ba012e19  vp90-2-00-quantizer-30-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_31.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_31.vp9
deleted file mode 100644
index e83141f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_31.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_31_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_31_vp9_md5
deleted file mode 100644
index 9d84937..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_31_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-2523e9ecfd3781eafcd7da192dc105e9  vp90-2-00-quantizer-31-352x288-0001.i420
-6d5feea012b9a1f51fc643633e728764  vp90-2-00-quantizer-31-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_32.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_32.vp9
deleted file mode 100644
index 5987ec8..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_32_vp9_md5
deleted file mode 100644
index 5e6cdde..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_32_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-0a0305eba36500ebf6cc6cc0f01f5a3b  vp90-2-00-quantizer-32-352x288-0001.i420
-2c76bcd6763467f9057a726fbcf50ab1  vp90-2-00-quantizer-32-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_33.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_33.vp9
deleted file mode 100644
index c053597..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_33.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_33_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_33_vp9_md5
deleted file mode 100644
index 4604865..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_33_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-c68433e0e94047c220be9b629334f744  vp90-2-00-quantizer-33-352x288-0001.i420
-fcfa4dff7a39bc9c5e315849ecbb46ea  vp90-2-00-quantizer-33-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_34.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_34.vp9
deleted file mode 100644
index 3b13d0c..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_34_vp9_md5
deleted file mode 100644
index 42ec3bd..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_34_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-ad9dc2f912c137b014a33e2792c88a25  vp90-2-00-quantizer-34-352x288-0001.i420
-11221ee4ea5c776f43af68756682cd5a  vp90-2-00-quantizer-34-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_35.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_35.vp9
deleted file mode 100644
index 9e88eaf..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_35.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_35_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_35_vp9_md5
deleted file mode 100644
index 7467703..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_35_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-75031f898cccf303a64ab46b1f815389  vp90-2-00-quantizer-35-352x288-0001.i420
-a4fc864e7fbc470dfcab6207e0eea152  vp90-2-00-quantizer-35-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_36.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_36.vp9
deleted file mode 100644
index 89095d8..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_36.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_36_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_36_vp9_md5
deleted file mode 100644
index f83c5fd..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_36_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-c7824af009fde6cafdd8d39fae6bb6cf  vp90-2-00-quantizer-36-352x288-0001.i420
-516a82d5fc4dfa3daf713ed2ec36041b  vp90-2-00-quantizer-36-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_37.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_37.vp9
deleted file mode 100644
index 51ea020..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_37.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_37_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_37_vp9_md5
deleted file mode 100644
index 56ae9cf..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_37_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-00-quantizer-37-352x288-0001.i420
-fb23e0bc64728a492a33d985032f21b8  vp90-2-00-quantizer-37-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_38.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_38.vp9
deleted file mode 100644
index b502d01..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_38.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_38_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_38_vp9_md5
deleted file mode 100644
index 5c70650..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_38_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-8347bfb891317e89ef66781d6c28e24f  vp90-2-00-quantizer-38-352x288-0001.i420
-a5722f824d32deac042513a1a7dcdcd0  vp90-2-00-quantizer-38-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_39.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_39.vp9
deleted file mode 100644
index 559a435..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_39.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_39_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_39_vp9_md5
deleted file mode 100644
index 7c9fece..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_39_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-018968f97fac3bdff146cf22c1da5ef0  vp90-2-00-quantizer-39-352x288-0001.i420
-ca8b09b01e5132183395e238f1c7901e  vp90-2-00-quantizer-39-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_40.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_40.vp9
deleted file mode 100644
index 2cbb549..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_40.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_40_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_40_vp9_md5
deleted file mode 100644
index 6b3c92a..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_40_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-792660f6589ad5340be4bd0554435866  vp90-2-00-quantizer-40-352x288-0001.i420
-68c84c8a15d679e0a73678b93215c62c  vp90-2-00-quantizer-40-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_41.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_41.vp9
deleted file mode 100644
index 910d486..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_41.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_41_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_41_vp9_md5
deleted file mode 100644
index 7df4a7f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_41_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-a456bdfc6c1c07b4cb3a3848843743b9  vp90-2-00-quantizer-41-352x288-0001.i420
-fe41a12b8cb6bc5667ba2179e076f3b0  vp90-2-00-quantizer-41-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_42.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_42.vp9
deleted file mode 100644
index 53c6b55..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_42.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_42_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_42_vp9_md5
deleted file mode 100644
index 4abe677..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_42_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-f016dd8431694d989700fb1ba71a5b2d  vp90-2-00-quantizer-42-352x288-0001.i420
-e89c3c5b935157b40f2fb0ab92415828  vp90-2-00-quantizer-42-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_43.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_43.vp9
deleted file mode 100644
index 0d3e706..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_43.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_43_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_43_vp9_md5
deleted file mode 100644
index 2db4096..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_43_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-7b8ab82625f3006bac89d4fb5197e71c  vp90-2-00-quantizer-43-352x288-0001.i420
-18bd3716045563dfba2c72b640b3274b  vp90-2-00-quantizer-43-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_44.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_44.vp9
deleted file mode 100644
index 4b1c580..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_44.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_44_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_44_vp9_md5
deleted file mode 100644
index aa705be..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_44_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-66fde04d8320c750e56406feefd29979  vp90-2-00-quantizer-44-352x288-0001.i420
-f9d01d8fc1722ec345e624e14b404215  vp90-2-00-quantizer-44-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_45.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_45.vp9
deleted file mode 100644
index 12779d6..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_45.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_45_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_45_vp9_md5
deleted file mode 100644
index 4472c2f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_45_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-cc97597b015896d73f3e60e7ae44c4da  vp90-2-00-quantizer-45-352x288-0001.i420
-fea98bc508f92135641ab99762444b14  vp90-2-00-quantizer-45-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_46.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_46.vp9
deleted file mode 100644
index 8f1aff1..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_46.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_46_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_46_vp9_md5
deleted file mode 100644
index bb306b1..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_46_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-79ed95c741178bb3c0954f1f6f8e21a3  vp90-2-00-quantizer-46-352x288-0001.i420
-f02a06a5e2b5b7619c9a52c5bea0564d  vp90-2-00-quantizer-46-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_47.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_47.vp9
deleted file mode 100644
index e8d81b4..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_47.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_47_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_47_vp9_md5
deleted file mode 100644
index 5734952..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_47_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-9b98e948b8c2a822f21bd8419e6f4410  vp90-2-00-quantizer-47-352x288-0001.i420
-491382d68c16c2a3c6f1746598bc4a97  vp90-2-00-quantizer-47-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_48.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_48.vp9
deleted file mode 100644
index 9644566..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_48.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_48_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_48_vp9_md5
deleted file mode 100644
index 0b79523..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_48_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-f0f095b0edae7262f44d7ed7ef84ded4  vp90-2-00-quantizer-48-352x288-0001.i420
-0e833889ccac81d60251007d1baf6500  vp90-2-00-quantizer-48-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_49.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_49.vp9
deleted file mode 100644
index c0efd85..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_49.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_49_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_49_vp9_md5
deleted file mode 100644
index 72f8300..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_49_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6c1b7b7827617fb9b8417aca2cfdbcaa  vp90-2-00-quantizer-49-352x288-0001.i420
-4c1fc8a89297fdcf79f0faabd42b8684  vp90-2-00-quantizer-49-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_50.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_50.vp9
deleted file mode 100644
index 3797305..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_50.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_50_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_50_vp9_md5
deleted file mode 100644
index f104046..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_50_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-ca6142db68463487bc28c888ab38476c  vp90-2-00-quantizer-50-352x288-0001.i420
-02a71153ec70f569524c3d814cb62f86  vp90-2-00-quantizer-50-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_51.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_51.vp9
deleted file mode 100644
index ad66216..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_51.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_51_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_51_vp9_md5
deleted file mode 100644
index 7874a6f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_51_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-eece2627df1ddf0872256eb92352e179  vp90-2-00-quantizer-51-352x288-0001.i420
-0ee9f221246ad747250e4b5e8ba586e2  vp90-2-00-quantizer-51-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_52.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_52.vp9
deleted file mode 100644
index b729121..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_52.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_52_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_52_vp9_md5
deleted file mode 100644
index d5092d6..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_52_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-7290039d974c4e50db9d69f9864bcdbe  vp90-2-00-quantizer-52-352x288-0001.i420
-264765de9d02503038a4da54133b9f85  vp90-2-00-quantizer-52-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_53.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_53.vp9
deleted file mode 100644
index eace52e..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_53.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_53_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_53_vp9_md5
deleted file mode 100644
index 3566f61..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_53_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-917af24da66f143a56a01eb2c2254285  vp90-2-00-quantizer-53-352x288-0001.i420
-45a05d3bc644420519619e4115662a70  vp90-2-00-quantizer-53-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_54.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_54.vp9
deleted file mode 100644
index 0100c2b..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_54.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_54_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_54_vp9_md5
deleted file mode 100644
index 96fdd4b6..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_54_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-6fea2820bb10a9dec9add4d2452b01f5  vp90-2-00-quantizer-54-352x288-0001.i420
-74675169a4bfc2ff5463c4db5d85a79f  vp90-2-00-quantizer-54-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_55.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_55.vp9
deleted file mode 100644
index d84bbb2..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_55.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_55_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_55_vp9_md5
deleted file mode 100644
index ec38867..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_55_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-11e5d196f6537fb7d85988d90195e556  vp90-2-00-quantizer-55-352x288-0001.i420
-8536106795f7c93c5a43a11493527469  vp90-2-00-quantizer-55-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_56.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_56.vp9
deleted file mode 100644
index befee07..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_56.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_56_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_56_vp9_md5
deleted file mode 100644
index a93ced9..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_56_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-40839b7a3a40ec10f96b8a75224f646d  vp90-2-00-quantizer-56-352x288-0001.i420
-11408dd73e8c45ddaab99f5c9650102b  vp90-2-00-quantizer-56-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_57.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_57.vp9
deleted file mode 100644
index 7df44d5..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_57.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_57_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_57_vp9_md5
deleted file mode 100644
index 1979cd8..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_57_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-d0e9fa03dd48da4592ebaadb4e3794e0  vp90-2-00-quantizer-57-352x288-0001.i420
-5172e29b1e04cd543833d6a68aab297c  vp90-2-00-quantizer-57-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_58.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_58.vp9
deleted file mode 100644
index 49a5fa9..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_58.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_58_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_58_vp9_md5
deleted file mode 100644
index cb06866..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_58_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-bef4a27d460e7697e038fe6f1c8bd597  vp90-2-00-quantizer-58-352x288-0001.i420
-124674686cafc5f2ff5bc7ea412b8f3b  vp90-2-00-quantizer-58-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_59.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_59.vp9
deleted file mode 100644
index fd50ac3..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_59.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_59_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_59_vp9_md5
deleted file mode 100644
index 240ea59..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_59_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-ae9d99e9d16ef20073300559566844ae  vp90-2-00-quantizer-59-352x288-0001.i420
-da9405e5a6bfe4ed18d927ba2004008e  vp90-2-00-quantizer-59-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_60.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_60.vp9
deleted file mode 100644
index d2caca9..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_60.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_60_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_60_vp9_md5
deleted file mode 100644
index 550fee98..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_60_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-9e66bb8e1b5e206ea4afe4bf2d335ac5  vp90-2-00-quantizer-60-352x288-0001.i420
-092b74c905c12c1e87e90f5a79857736  vp90-2-00-quantizer-60-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_61.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_61.vp9
deleted file mode 100644
index f20df40..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_61.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_61_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_61_vp9_md5
deleted file mode 100644
index 2e3edd3..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_61_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-d062dc6be246c8042744018765ef50a8  vp90-2-00-quantizer-61-352x288-0001.i420
-45fd9cbacb6a91060a7e49a58a85869d  vp90-2-00-quantizer-61-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_62.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_62.vp9
deleted file mode 100644
index 2b8fd32..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_62.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_62_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_62_vp9_md5
deleted file mode 100644
index 1d266b3..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_62_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-62f7e42fe653e81c5a65a25389e045b5  vp90-2-00-quantizer-62-352x288-0001.i420
-cb0cdd0b25689e0a43328550011d960d  vp90-2-00-quantizer-62-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_63.vp9 b/tests/tests/media/res/raw/vp90_2_00_quantizer_63.vp9
deleted file mode 100644
index 28c2564..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_63.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_00_quantizer_63_vp9_md5 b/tests/tests/media/res/raw/vp90_2_00_quantizer_63_vp9_md5
deleted file mode 100644
index b5d122f..0000000
--- a/tests/tests/media/res/raw/vp90_2_00_quantizer_63_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-8467643dceff827e04acd82eeff1d1b0  vp90-2-00-quantizer-63-352x288-0001.i420
-c786f49d66f4dfd685dea9605821a19f  vp90-2-00-quantizer-63-352x288-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_1.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_1.vp9
deleted file mode 100644
index dd0f0ee..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_1.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_1_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_1_vp9_md5
deleted file mode 100644
index 1db2ed2..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_1_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-1-352x288-0001.i420
-aa20a75be3a316193496706c9f760d08  vp90-2-01-sharpness-1-352x288-0002.i420
-95567be97a64d3c9efe45f2524116a2e  vp90-2-01-sharpness-1-352x288-0003.i420
-219e86cd6b3cca312856eead21776b1c  vp90-2-01-sharpness-1-352x288-0004.i420
-4a67fd359ca362398e97c15eb018a2bb  vp90-2-01-sharpness-1-352x288-0005.i420
-9916d4e359274d690827f0eb22547423  vp90-2-01-sharpness-1-352x288-0006.i420
-a07785b52561150c48f1a8eff89d5d75  vp90-2-01-sharpness-1-352x288-0007.i420
-a3382a92982953dfa20018e5ac975b51  vp90-2-01-sharpness-1-352x288-0008.i420
-911836989ca7b148438aa3ec7fc7e303  vp90-2-01-sharpness-1-352x288-0009.i420
-5627b981e3fc9e4401d35d3a5ab25917  vp90-2-01-sharpness-1-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_2.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_2.vp9
deleted file mode 100644
index d1d1a06..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_2.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_2_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_2_vp9_md5
deleted file mode 100644
index cb4d78e..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_2_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-2-352x288-0001.i420
-cd94572239817ae7c9b07de739c3272b  vp90-2-01-sharpness-2-352x288-0002.i420
-383cf752d457e122b5ff49d08960208e  vp90-2-01-sharpness-2-352x288-0003.i420
-1c0a6ec9cd3ce29b8b004e7526f1b07e  vp90-2-01-sharpness-2-352x288-0004.i420
-91c42a8a108d67947cabfc2a5a80df66  vp90-2-01-sharpness-2-352x288-0005.i420
-08c57fc1f3fec0305883315a66c714d1  vp90-2-01-sharpness-2-352x288-0006.i420
-70cb8d8dc83eac82f2d3c4b0376bb1aa  vp90-2-01-sharpness-2-352x288-0007.i420
-ffd62a9ef829ec81f0f74f740488a41f  vp90-2-01-sharpness-2-352x288-0008.i420
-bab0aa23b5854e2a70926046e4618710  vp90-2-01-sharpness-2-352x288-0009.i420
-fec456f38f2a43661e786a8d5f67ed15  vp90-2-01-sharpness-2-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_3.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_3.vp9
deleted file mode 100644
index ac4d3c7..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_3.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_3_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_3_vp9_md5
deleted file mode 100644
index 5f66ebd..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_3_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-3-352x288-0001.i420
-0d487a146393a0b8b84b4be1b371b507  vp90-2-01-sharpness-3-352x288-0002.i420
-68372e191eba620a431cfff226026ac3  vp90-2-01-sharpness-3-352x288-0003.i420
-de7fd274460e36b983fe93acc208d72f  vp90-2-01-sharpness-3-352x288-0004.i420
-afbd36c61bab65b98ff9acf08e215721  vp90-2-01-sharpness-3-352x288-0005.i420
-e1e9fc2ab4e7a187a8d8d84aae48d6b9  vp90-2-01-sharpness-3-352x288-0006.i420
-11d95de6a9cc5e00511e99534779faac  vp90-2-01-sharpness-3-352x288-0007.i420
-cd2f5539fdfc2d8eefe6b6da28c13398  vp90-2-01-sharpness-3-352x288-0008.i420
-a8b3aeed41da7aeb8d5b962ee4a4af93  vp90-2-01-sharpness-3-352x288-0009.i420
-4283670bd1c1c506ef18d3dafca22035  vp90-2-01-sharpness-3-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_4.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_4.vp9
deleted file mode 100644
index 4f9ac94..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_4.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_4_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_4_vp9_md5
deleted file mode 100644
index dc3f2c1..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_4_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-4-352x288-0001.i420
-8bad76c55b5149169d64ce6512521de6  vp90-2-01-sharpness-4-352x288-0002.i420
-c1d986e1f9bf46382e598ba289b9bd7c  vp90-2-01-sharpness-4-352x288-0003.i420
-86c097ac6069c786023d3561dae68bac  vp90-2-01-sharpness-4-352x288-0004.i420
-8c238a2831b8c7c49736b6de6ff76ed8  vp90-2-01-sharpness-4-352x288-0005.i420
-cb5a038ed0a74a317ee72dae93a7ee3e  vp90-2-01-sharpness-4-352x288-0006.i420
-f8fe330a257e3e4e4c39c1c12820a654  vp90-2-01-sharpness-4-352x288-0007.i420
-a73e2fcdcbb9334c0c123f8276a2c881  vp90-2-01-sharpness-4-352x288-0008.i420
-24fccece8ee639e4d0e00e4060e1db0c  vp90-2-01-sharpness-4-352x288-0009.i420
-46d6e9aad69a39c718c5fd1e41e86e6e  vp90-2-01-sharpness-4-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_5.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_5.vp9
deleted file mode 100644
index 7f5e528..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_5.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_5_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_5_vp9_md5
deleted file mode 100644
index a545e7c..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_5_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-5-352x288-0001.i420
-f1ce0a5d57a46c9ff1331804b7b03fdb  vp90-2-01-sharpness-5-352x288-0002.i420
-0364a085b06bee6b980189cf5378eda9  vp90-2-01-sharpness-5-352x288-0003.i420
-4b5358698d734b0ae210909a913d4c1e  vp90-2-01-sharpness-5-352x288-0004.i420
-dc22565aaceee77b15fd8ab3c84bd5e0  vp90-2-01-sharpness-5-352x288-0005.i420
-5f6340b656536292b46ba9a647aeb6e4  vp90-2-01-sharpness-5-352x288-0006.i420
-b7d4bce9a04b2a6caa45801be15e331e  vp90-2-01-sharpness-5-352x288-0007.i420
-534c851cfe59ffc047815ece98d8cede  vp90-2-01-sharpness-5-352x288-0008.i420
-786b0e1564d5c71aabfc2dd528cff4e7  vp90-2-01-sharpness-5-352x288-0009.i420
-cac0366209cf471bb7cc3e64966cbbd4  vp90-2-01-sharpness-5-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_6.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_6.vp9
deleted file mode 100644
index 5f8d031..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_6.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_6_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_6_vp9_md5
deleted file mode 100644
index 0c36072..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_6_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-6-352x288-0001.i420
-45d9ca07ed04210b1ebc743169bc8ec4  vp90-2-01-sharpness-6-352x288-0002.i420
-5b646cc309a711f1d8814f925002d8c4  vp90-2-01-sharpness-6-352x288-0003.i420
-34db8db727fa1ded0a55cc7cf85be249  vp90-2-01-sharpness-6-352x288-0004.i420
-54173d08afe6369b16a9c0c9cc6ce04d  vp90-2-01-sharpness-6-352x288-0005.i420
-76275b0a478cdb3c1fb527ebbce023c3  vp90-2-01-sharpness-6-352x288-0006.i420
-e7643cdf0c42f2af700d8730bfc1a453  vp90-2-01-sharpness-6-352x288-0007.i420
-6e53097e56f680cb658d63100e7736f7  vp90-2-01-sharpness-6-352x288-0008.i420
-1a407c3c8ea1d5245ae68c5ce7de70e1  vp90-2-01-sharpness-6-352x288-0009.i420
-6cbca24912cadf09b20be74f14e359c9  vp90-2-01-sharpness-6-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_7.vp9 b/tests/tests/media/res/raw/vp90_2_01_sharpness_7.vp9
deleted file mode 100644
index 325523f..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_7.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_01_sharpness_7_vp9_md5 b/tests/tests/media/res/raw/vp90_2_01_sharpness_7_vp9_md5
deleted file mode 100644
index 6c94a52..0000000
--- a/tests/tests/media/res/raw/vp90_2_01_sharpness_7_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a2e5c820fd9733e18f9349fb658ca281  vp90-2-01-sharpness-7-352x288-0001.i420
-f719d0be18d16a448b4e7da3e2d9bf28  vp90-2-01-sharpness-7-352x288-0002.i420
-83ee8ebc0ca796782a2376a76f2ffc26  vp90-2-01-sharpness-7-352x288-0003.i420
-7cf5afdbc229e1af50a5377cfc23d831  vp90-2-01-sharpness-7-352x288-0004.i420
-44244e896e0362f6376ba5afa563ba8b  vp90-2-01-sharpness-7-352x288-0005.i420
-df5f518d44eb6cb91b2df5a30d27ef82  vp90-2-01-sharpness-7-352x288-0006.i420
-43cc3f151b8337aca7ee659c8abeb783  vp90-2-01-sharpness-7-352x288-0007.i420
-4e89573470d9b97464e10806fc81aa8b  vp90-2-01-sharpness-7-352x288-0008.i420
-62e0ba70f07ece8d85372f0a42e83a9a  vp90-2-01-sharpness-7-352x288-0009.i420
-45ac2928acb11326f6c4a21401f3609c  vp90-2-01-sharpness-7-352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x08.vp9
deleted file mode 100644
index 269acbb..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x08_vp9_md5
deleted file mode 100644
index c74db82..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-52def242c36123e5a8f5f53d6a971399  vp90-2-02-size-08x08-8x8-0001.i420
-79c93360fbd47179400414bbfee0901c  vp90-2-02-size-08x08-8x8-0002.i420
-c3b1947c79537baa7838905276276a91  vp90-2-02-size-08x08-8x8-0003.i420
-20f35e501bdee0bc63e87b9240265c25  vp90-2-02-size-08x08-8x8-0004.i420
-5e8f1c464bafd54833c51860906b5368  vp90-2-02-size-08x08-8x8-0005.i420
-f57b592600dfc99e634a083278af769a  vp90-2-02-size-08x08-8x8-0006.i420
-7b02191f85590cbad3f148c7b92d6436  vp90-2-02-size-08x08-8x8-0007.i420
-b0a1c9870447a1744f64cd4087ef55ee  vp90-2-02-size-08x08-8x8-0008.i420
-c82712b1ba7a95efb67cbdde0ad708b6  vp90-2-02-size-08x08-8x8-0009.i420
-89f4539f8d7a7b45a91fd2f46335988e  vp90-2-02-size-08x08-8x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x10.vp9
deleted file mode 100644
index 714467a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x10_vp9_md5
deleted file mode 100644
index c051eb9..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-ea3e0f807304b0eb2d3e329b0124f75c  vp90-2-02-size-08x10-8x10-0001.i420
-8d13cf682d63e7eb13094f55d67fc458  vp90-2-02-size-08x10-8x10-0002.i420
-e729cc6c3684c94a8f6118c618efc3ea  vp90-2-02-size-08x10-8x10-0003.i420
-ac43a0ace8e4112e877c2491ecc14fb5  vp90-2-02-size-08x10-8x10-0004.i420
-53695f90b88d8e8cb838f0faec3238d3  vp90-2-02-size-08x10-8x10-0005.i420
-40afd1c4dfd4a2e3b31631c46d252bcc  vp90-2-02-size-08x10-8x10-0006.i420
-2b656f76f2e84d2f82d9bda2b5be94d3  vp90-2-02-size-08x10-8x10-0007.i420
-b22f004d678d047bc401be5e040cf883  vp90-2-02-size-08x10-8x10-0008.i420
-57c840319abfb9c31013fbde54de3fb0  vp90-2-02-size-08x10-8x10-0009.i420
-0f3dfc156216d7cfb6fd1d8c77dadab9  vp90-2-02-size-08x10-8x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x16.vp9
deleted file mode 100644
index 815483f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x16_vp9_md5
deleted file mode 100644
index d95f639..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-0553e56a9d89aea496421885aab491f5  vp90-2-02-size-08x16-8x16-0001.i420
-b2a14cf676f7ebf3c50450050f76ad16  vp90-2-02-size-08x16-8x16-0002.i420
-a308d981e09b50571fb0c8ebdcefe505  vp90-2-02-size-08x16-8x16-0003.i420
-d592ec625a0ac0373e82610c3eed9864  vp90-2-02-size-08x16-8x16-0004.i420
-acd19642455e643023b4fb882c3891ba  vp90-2-02-size-08x16-8x16-0005.i420
-5af5390fd8c29b795e0ddf83f3f34284  vp90-2-02-size-08x16-8x16-0006.i420
-473505aa2a76231725cf2107d6c9dbef  vp90-2-02-size-08x16-8x16-0007.i420
-84860db6887e320f2d64f80cf0032e57  vp90-2-02-size-08x16-8x16-0008.i420
-408e9cf60e99ae99d204ff08f3196d1a  vp90-2-02-size-08x16-8x16-0009.i420
-d8af96b79258f9382e911ed38340bdf5  vp90-2-02-size-08x16-8x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x18.vp9
deleted file mode 100644
index 542ae03..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x18_vp9_md5
deleted file mode 100644
index d22d06a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-4c41f93b1b280b37bc77d7047435eaa4  vp90-2-02-size-08x18-8x18-0001.i420
-c9c80fdba2ebc2b8c3490ae35e34f84f  vp90-2-02-size-08x18-8x18-0002.i420
-089d86acb3263fa5ef4f591a7f44556d  vp90-2-02-size-08x18-8x18-0003.i420
-938fca6d93b83484144f5054e4838a41  vp90-2-02-size-08x18-8x18-0004.i420
-e0592e2ac9f5e09525ce0d3904cadf47  vp90-2-02-size-08x18-8x18-0005.i420
-ea43ff5d1330986e60c08567262ea764  vp90-2-02-size-08x18-8x18-0006.i420
-08b40fe109ee90188f1cba9bbb1b376e  vp90-2-02-size-08x18-8x18-0007.i420
-b067068a2a7e36d5c5b5b405a1e73a18  vp90-2-02-size-08x18-8x18-0008.i420
-9cf2d350296288803434b7451bd2be85  vp90-2-02-size-08x18-8x18-0009.i420
-3c785e21dc228d6396738fbfcb470289  vp90-2-02-size-08x18-8x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x32.vp9
deleted file mode 100644
index 57dafca..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x32_vp9_md5
deleted file mode 100644
index 32a5a7b..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f92a7777fd69aa2f2914d9a41c4828ba  vp90-2-02-size-08x32-8x32-0001.i420
-62e1cc73487d2249a88a60e35a22d9c7  vp90-2-02-size-08x32-8x32-0002.i420
-aa2619b605cb65eda15fdd99d5775550  vp90-2-02-size-08x32-8x32-0003.i420
-e6f0a491c543b835d0cefe5ca62c3dbe  vp90-2-02-size-08x32-8x32-0004.i420
-361be1a06913c398f09494ca1b2d288f  vp90-2-02-size-08x32-8x32-0005.i420
-0497bf849a973357c0ccb8d43f5bd8b4  vp90-2-02-size-08x32-8x32-0006.i420
-5ac6ac523147c409dd00820622161dd7  vp90-2-02-size-08x32-8x32-0007.i420
-7d07245574a46c524360f09be29a5f19  vp90-2-02-size-08x32-8x32-0008.i420
-fcfa7fbcaf42f81e4e34a4ee5a029ca1  vp90-2-02-size-08x32-8x32-0009.i420
-336e3fe4f15d3d6c82d82b1855dcfeb4  vp90-2-02-size-08x32-8x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x34.vp9
deleted file mode 100644
index 68ff21f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x34_vp9_md5
deleted file mode 100644
index 626dce9..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f3f2cd8f157466ff23dace85d77367ce  vp90-2-02-size-08x34-8x34-0001.i420
-639d9b70a14062e95559c12d2b597f91  vp90-2-02-size-08x34-8x34-0002.i420
-b2ee07a6656af583f19593229fa11848  vp90-2-02-size-08x34-8x34-0003.i420
-74e3b5ab4c798a0afe745694e871bbd5  vp90-2-02-size-08x34-8x34-0004.i420
-35f1c30d0f8678f319a392a6c53b5989  vp90-2-02-size-08x34-8x34-0005.i420
-07e2b4c0b92a394bfb11124fe80476f0  vp90-2-02-size-08x34-8x34-0006.i420
-7864bd20dfc5280e5f027d67ea22bf30  vp90-2-02-size-08x34-8x34-0007.i420
-10a2925a7b91dfa9b82de76069388fd4  vp90-2-02-size-08x34-8x34-0008.i420
-79cc7f7a149e8d6e04e065f75e63733c  vp90-2-02-size-08x34-8x34-0009.i420
-6453d10d97532d9bb03f7c06cba9fca0  vp90-2-02-size-08x34-8x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x64.vp9
deleted file mode 100644
index 337dfb9..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x64_vp9_md5
deleted file mode 100644
index f66d0c7..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-764bd02b781a38c621a109c12f3d9393  vp90-2-02-size-08x64-8x64-0001.i420
-79496bd2b9212026af816b3b7a0587d5  vp90-2-02-size-08x64-8x64-0002.i420
-2a3afd47ba3d075033fd94d5c3746c45  vp90-2-02-size-08x64-8x64-0003.i420
-fca00cad8d37a6646337baebadd0ca31  vp90-2-02-size-08x64-8x64-0004.i420
-aca376fb3f8a5ef670ecc2430037262a  vp90-2-02-size-08x64-8x64-0005.i420
-7e6c8d96d1e24855c3e380f1bf2ce02c  vp90-2-02-size-08x64-8x64-0006.i420
-09e051241972969d439f27f324d78490  vp90-2-02-size-08x64-8x64-0007.i420
-2566b2a425caaba41305bf04ff10ea01  vp90-2-02-size-08x64-8x64-0008.i420
-db3995bedee42ada1b4ee63c339daf1b  vp90-2-02-size-08x64-8x64-0009.i420
-b00b8f1bf4fd907f0487738f5b5442c6  vp90-2-02-size-08x64-8x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_08x66.vp9
deleted file mode 100644
index 46febdd..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_08x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_08x66_vp9_md5
deleted file mode 100644
index 0c4649c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_08x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-df20e8df89449fe50bb610e95a449a95  vp90-2-02-size-08x66-8x66-0001.i420
-18f1a66d463274d1b0489f3a50e86857  vp90-2-02-size-08x66-8x66-0002.i420
-b0cc102875a94c9a92e53826617adbe9  vp90-2-02-size-08x66-8x66-0003.i420
-dfece7c17b4b149283ef51bdc1bd440e  vp90-2-02-size-08x66-8x66-0004.i420
-6e346884f67be259fcabe493109cb63c  vp90-2-02-size-08x66-8x66-0005.i420
-6d282127311eb2d958377490d7cb77f0  vp90-2-02-size-08x66-8x66-0006.i420
-637ac8b14ca5ddbaf7b8910406c3cd08  vp90-2-02-size-08x66-8x66-0007.i420
-e7980f3fcb36969da0d218c4389fa9e8  vp90-2-02-size-08x66-8x66-0008.i420
-730a1c95b9fb165f6e1a2f33a0d25de0  vp90-2-02-size-08x66-8x66-0009.i420
-7bd8424d0783b1c8ad617e17408371bb  vp90-2-02-size-08x66-8x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x08.vp9
deleted file mode 100644
index a27acd8..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x08_vp9_md5
deleted file mode 100644
index 2f8e4be..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e1e66a88615da98523ef887f1463fc42  vp90-2-02-size-10x08-10x8-0001.i420
-549842fa98c8faf572882d38b0aae390  vp90-2-02-size-10x08-10x8-0002.i420
-17ee85785517705fdc78c6122a4b2548  vp90-2-02-size-10x08-10x8-0003.i420
-1143391d419dac30a6c11f366157c974  vp90-2-02-size-10x08-10x8-0004.i420
-b62d2a962c4c36809ef75a610106715c  vp90-2-02-size-10x08-10x8-0005.i420
-e6f143ca33fbc0e776bb149950cdedff  vp90-2-02-size-10x08-10x8-0006.i420
-01716a1077ec66df00474fd4510d2789  vp90-2-02-size-10x08-10x8-0007.i420
-8cb5b6a865fa2cbb15f0d7736fda88a6  vp90-2-02-size-10x08-10x8-0008.i420
-0fb9fd883e895a540fe1704dddbbab04  vp90-2-02-size-10x08-10x8-0009.i420
-150a3b99aa24ef102c92f87c8adb4386  vp90-2-02-size-10x08-10x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x10.vp9
deleted file mode 100644
index de3d37c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x10_vp9_md5
deleted file mode 100644
index 13ae622..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-083d638f2e147295d817bb14fff5e4f4  vp90-2-02-size-10x10-10x10-0001.i420
-6dbdc445b6fd6bb99f2025cc2a40977e  vp90-2-02-size-10x10-10x10-0002.i420
-41714089383b181d64fbfa7de5904608  vp90-2-02-size-10x10-10x10-0003.i420
-11fdb8465e1599f7a9227706646d2cba  vp90-2-02-size-10x10-10x10-0004.i420
-907876b3342a10040db0851a936af4e3  vp90-2-02-size-10x10-10x10-0005.i420
-e7b18d47d06b25de205d873d3d941640  vp90-2-02-size-10x10-10x10-0006.i420
-523ce7413c8da7f6a657a9b661f36c44  vp90-2-02-size-10x10-10x10-0007.i420
-23caff863af875c66c903662a3e1e6a1  vp90-2-02-size-10x10-10x10-0008.i420
-ed4cc5557203e5b7a119112ee9ceb00b  vp90-2-02-size-10x10-10x10-0009.i420
-4bb78a996be3188888d1c60e11a08e1b  vp90-2-02-size-10x10-10x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x16.vp9
deleted file mode 100644
index 843a547..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x16_vp9_md5
deleted file mode 100644
index b614000..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fab07d6209d2413e0a434e1aaaa12154  vp90-2-02-size-10x16-10x16-0001.i420
-f9ffffdb96f98527ba2e553d1265edbb  vp90-2-02-size-10x16-10x16-0002.i420
-56a992264cf7da2b23dd97435e9d0365  vp90-2-02-size-10x16-10x16-0003.i420
-b1db980423d8004bd45a789b02b92a65  vp90-2-02-size-10x16-10x16-0004.i420
-b29496aedc7026566367b634f55ebb28  vp90-2-02-size-10x16-10x16-0005.i420
-2bc9def672da4a2fc17cbd669e2b8081  vp90-2-02-size-10x16-10x16-0006.i420
-8c54721514cdf577a52a8668b9135f13  vp90-2-02-size-10x16-10x16-0007.i420
-2efab81d5e039d82b3bc7b0303b022c4  vp90-2-02-size-10x16-10x16-0008.i420
-bd0f42b91b5d126fd0baec765b1096ad  vp90-2-02-size-10x16-10x16-0009.i420
-c6bfea2735a629167bc6a7a7c76eb7f3  vp90-2-02-size-10x16-10x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x18.vp9
deleted file mode 100644
index bd9c902..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x18_vp9_md5
deleted file mode 100644
index 0639abf..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-0e9182e214aae732d94d007e5fe44888  vp90-2-02-size-10x18-10x18-0001.i420
-2630e2674b5611d68218fddac08815e2  vp90-2-02-size-10x18-10x18-0002.i420
-d5cdd7d6a3de17939f60bb60ef6877da  vp90-2-02-size-10x18-10x18-0003.i420
-29d1961096061029e78963fa82581eca  vp90-2-02-size-10x18-10x18-0004.i420
-5c2629f8aa59757f6b4aafa9f6cbcba1  vp90-2-02-size-10x18-10x18-0005.i420
-1f1a8b61e4fbd6222ddf42e9d0a07032  vp90-2-02-size-10x18-10x18-0006.i420
-cfb9771190ac2d0129907102d6abb63f  vp90-2-02-size-10x18-10x18-0007.i420
-cd98dd856ba573a26a943cbe53221f26  vp90-2-02-size-10x18-10x18-0008.i420
-ca13c161f067c4a4ce22bd58a2aca55b  vp90-2-02-size-10x18-10x18-0009.i420
-de4bd1a474a76a35b796a5fc45b4f893  vp90-2-02-size-10x18-10x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x32.vp9
deleted file mode 100644
index 4fa4f8b..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x32_vp9_md5
deleted file mode 100644
index aca6be0..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-622e6407a051ea08706394d03330ffbf  vp90-2-02-size-10x32-10x32-0001.i420
-1841a0daf7c3ef7be94e01fdb1d3968a  vp90-2-02-size-10x32-10x32-0002.i420
-37790e6cb2415f7add0ac5d3ab354755  vp90-2-02-size-10x32-10x32-0003.i420
-91485880e17c292096a7335566d3648f  vp90-2-02-size-10x32-10x32-0004.i420
-eb6f74983d5fd13d6bd90afbce8836e1  vp90-2-02-size-10x32-10x32-0005.i420
-0069ab5ff7f0d4d601f7d0f9b7a08338  vp90-2-02-size-10x32-10x32-0006.i420
-dbf04254765f7497070387e8c34895c6  vp90-2-02-size-10x32-10x32-0007.i420
-410a9b2d9855b2c29618070994adae96  vp90-2-02-size-10x32-10x32-0008.i420
-7e7f34effd90209f29f1b9ae01488b3b  vp90-2-02-size-10x32-10x32-0009.i420
-471530f74082c01c9b0f1fcf3d240d77  vp90-2-02-size-10x32-10x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x34.vp9
deleted file mode 100644
index e039c58..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x34_vp9_md5
deleted file mode 100644
index 1bd82bf..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-bfeeaf51f972fd0dfe9ee757083cbb54  vp90-2-02-size-10x34-10x34-0001.i420
-10cd4ed6d762004846412d9cd0caa407  vp90-2-02-size-10x34-10x34-0002.i420
-04cca4008d656ed180de88dd2ddb4f21  vp90-2-02-size-10x34-10x34-0003.i420
-ec777e377836895748c06849fa35ed2d  vp90-2-02-size-10x34-10x34-0004.i420
-b55633d0f9239dff3e45a4abce4a35a7  vp90-2-02-size-10x34-10x34-0005.i420
-063c3ab4b4c599942c3a8a5b7bfe5029  vp90-2-02-size-10x34-10x34-0006.i420
-07b920169d32b5fc51d5b9ae16fef5bf  vp90-2-02-size-10x34-10x34-0007.i420
-8d49e727db9d3072b5ab7bab2133d9be  vp90-2-02-size-10x34-10x34-0008.i420
-17441437203447e946a57d2f96966332  vp90-2-02-size-10x34-10x34-0009.i420
-5d3f14af0e5cd81d0c7d2059f13efa5a  vp90-2-02-size-10x34-10x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x64.vp9
deleted file mode 100644
index 33817f0..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x64_vp9_md5
deleted file mode 100644
index 26da4b6..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-835254d0eecb17bed1f2b0f3a1638165  vp90-2-02-size-10x64-10x64-0001.i420
-c0c95ce9890eab339a0e0f8b26cb095c  vp90-2-02-size-10x64-10x64-0002.i420
-f0337d645ade07cb716952b0d19352e8  vp90-2-02-size-10x64-10x64-0003.i420
-7e3deb21cb3f0ead90c8af94464cde14  vp90-2-02-size-10x64-10x64-0004.i420
-c6b1ca6cfce358c411c0637c581157c8  vp90-2-02-size-10x64-10x64-0005.i420
-10fce3f11f1ce90286ff4d74fe44fcfd  vp90-2-02-size-10x64-10x64-0006.i420
-ee0565a1f121bc905a35550619127a50  vp90-2-02-size-10x64-10x64-0007.i420
-0624b601d379616eb792c94be60b6c91  vp90-2-02-size-10x64-10x64-0008.i420
-a1bb79cdf347548f1103f580f2b6930f  vp90-2-02-size-10x64-10x64-0009.i420
-40e96e16c7e065aa7932e5aa57f32398  vp90-2-02-size-10x64-10x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_10x66.vp9
deleted file mode 100644
index c0ffdc8..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_10x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_10x66_vp9_md5
deleted file mode 100644
index 40a8a9a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_10x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1bd8b2d3bf679c4b925780bf82e12fae  vp90-2-02-size-10x66-10x66-0001.i420
-a0254b4cd4928fe1080cd6f8828288a9  vp90-2-02-size-10x66-10x66-0002.i420
-e416e99644cca481dc2806708d716ecb  vp90-2-02-size-10x66-10x66-0003.i420
-b1ed3203ffc77ed814f1cda7bfe721d2  vp90-2-02-size-10x66-10x66-0004.i420
-0ff7b9d84765f7b0b0650775ba72b334  vp90-2-02-size-10x66-10x66-0005.i420
-8b6cd91e035bad19b46b132bd411231d  vp90-2-02-size-10x66-10x66-0006.i420
-c714759a9a64402043ad00e5677c954c  vp90-2-02-size-10x66-10x66-0007.i420
-8e4738010b724ce66bcd0a5d5afcfbc1  vp90-2-02-size-10x66-10x66-0008.i420
-998a7aab8ed94f4b69bed39fb487f8d5  vp90-2-02-size-10x66-10x66-0009.i420
-9964683a15a65c032631a4f608e6009b  vp90-2-02-size-10x66-10x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_130x132.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_130x132.vp9
deleted file mode 100644
index e14d5cc..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_130x132.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_130x132_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_130x132_vp9_md5
deleted file mode 100644
index 451d950..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_130x132_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-8faddcc51f9bff5759dc15c7e6f5ce3f  vp90_2_02_size_130x132.webm-130x132-0001.i420
-74fe93bd53a03c466da40d67431b6d41  vp90_2_02_size_130x132.webm-130x132-0002.i420
-3a40cd8fdab88af3d15b5d4af7d62245  vp90_2_02_size_130x132.webm-130x132-0003.i420
-5c232e8e11f4254f9bf437dcf91418b9  vp90_2_02_size_130x132.webm-130x132-0004.i420
-eb7f2d1700705697d05e322abe12d732  vp90_2_02_size_130x132.webm-130x132-0005.i420
-f3accfe25de02102fd996622f9b43499  vp90_2_02_size_130x132.webm-130x132-0006.i420
-270a3780fc7b84afbe8a340bc2e61871  vp90_2_02_size_130x132.webm-130x132-0007.i420
-c169f3a5d566a1a4afde6c309f1e4644  vp90_2_02_size_130x132.webm-130x132-0008.i420
-48b6fefacb63f286096fb0b65f8bc7c4  vp90_2_02_size_130x132.webm-130x132-0009.i420
-fcc24b1b542545bab9e45b9d79f6b41f  vp90_2_02_size_130x132.webm-130x132-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_132x130.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_132x130.vp9
deleted file mode 100644
index 5282d3d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_132x130.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_132x130_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_132x130_vp9_md5
deleted file mode 100644
index 415deb4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_132x130_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d75a9541df281c3fb1cd24f8be0788b3  vp90_2_02_size_132x130.webm-132x130-0001.i420
-a060549076fbf8856925c7f4a0e007b3  vp90_2_02_size_132x130.webm-132x130-0002.i420
-73ecf525a1a395deed6a7256e2c501d0  vp90_2_02_size_132x130.webm-132x130-0003.i420
-ec636e97f829b3457b7adda98c1c3580  vp90_2_02_size_132x130.webm-132x130-0004.i420
-f56f3f415b6b5d12fb5824aa82365cb3  vp90_2_02_size_132x130.webm-132x130-0005.i420
-376735c39fea4c2f48b8d2d260f9b73e  vp90_2_02_size_132x130.webm-132x130-0006.i420
-c616f543aaa73342b561f08ec24d9792  vp90_2_02_size_132x130.webm-132x130-0007.i420
-b86a6ecf6e5df70b9505861bcc8ac95e  vp90_2_02_size_132x130.webm-132x130-0008.i420
-1d9bc98446d2068fe37abc60abce0d28  vp90_2_02_size_132x130.webm-132x130-0009.i420
-febd071a35d2407e29f72c46f14f4667  vp90_2_02_size_132x130.webm-132x130-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_132x132.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_132x132.vp9
deleted file mode 100644
index 7c36464..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_132x132.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_132x132_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_132x132_vp9_md5
deleted file mode 100644
index cb04a76..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_132x132_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5dc0ef6d1452bf220dfe752b9c0a6081  vp90_2_02_size_132x132.webm-132x132-0001.i420
-cdec24d8945577908cd05a3254edc1ea  vp90_2_02_size_132x132.webm-132x132-0002.i420
-ce4978e6ab380156c33943b225145af2  vp90_2_02_size_132x132.webm-132x132-0003.i420
-516c9256ab785f04f41fa7b44ac89e6d  vp90_2_02_size_132x132.webm-132x132-0004.i420
-16071c396c07639360260d6544bbc198  vp90_2_02_size_132x132.webm-132x132-0005.i420
-8876317adaf2ee98682b0dbfa50b9cbc  vp90_2_02_size_132x132.webm-132x132-0006.i420
-a30299b275dfd0a08191f6a9f6633138  vp90_2_02_size_132x132.webm-132x132-0007.i420
-49b3e47e41d00cc283d3906bde82abc7  vp90_2_02_size_132x132.webm-132x132-0008.i420
-a922b8d8d9883b5fd05358724a1a84c2  vp90_2_02_size_132x132.webm-132x132-0009.i420
-1bc5c3b99f979087cd6065a9894b0d6d  vp90_2_02_size_132x132.webm-132x132-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x08.vp9
deleted file mode 100644
index 4de0d73..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x08_vp9_md5
deleted file mode 100644
index 3e3e92a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-68dccd167f9aa18df0840ebb8715eb68  vp90-2-02-size-16x08-16x8-0001.i420
-65c90bb99fdbee7abf21031d34cb18dc  vp90-2-02-size-16x08-16x8-0002.i420
-9ef1feb2dcbd4d73f3ee84e9e1cd2668  vp90-2-02-size-16x08-16x8-0003.i420
-b6281f7c88e9aa132d3902046f8cde5a  vp90-2-02-size-16x08-16x8-0004.i420
-4b439b716a294bddf9f56a229705907b  vp90-2-02-size-16x08-16x8-0005.i420
-d42c0a6f0d24522c90bc2233bc1df2c7  vp90-2-02-size-16x08-16x8-0006.i420
-74b763a5a12c4c4a581efb1818a92970  vp90-2-02-size-16x08-16x8-0007.i420
-0c3a0916ddfda5abdd3ac382f036e71f  vp90-2-02-size-16x08-16x8-0008.i420
-26ff590e8ae726f70e8b36f5eaee7a19  vp90-2-02-size-16x08-16x8-0009.i420
-30fa5810995d7132387ea585c4a1cc3a  vp90-2-02-size-16x08-16x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x10.vp9
deleted file mode 100644
index 541937a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x10_vp9_md5
deleted file mode 100644
index 9e00483..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fb3cad61d7d9eb511758dbf87dd8abe1  vp90-2-02-size-16x10-16x10-0001.i420
-4fbc1aa5559c8db2930803893bd6ba75  vp90-2-02-size-16x10-16x10-0002.i420
-2d8e2ee04dcc6097ca9e3f27070cdcc8  vp90-2-02-size-16x10-16x10-0003.i420
-05d419f1322855ba3620665b68ce9910  vp90-2-02-size-16x10-16x10-0004.i420
-b004f8d88cb2c94f4e9a13cfa5bd480a  vp90-2-02-size-16x10-16x10-0005.i420
-9d9dec90e2213c0411939131aa9adf7f  vp90-2-02-size-16x10-16x10-0006.i420
-a00874356ff1b1e9da1a400424661f8d  vp90-2-02-size-16x10-16x10-0007.i420
-fda587eb6323cd98c773f05905ac1794  vp90-2-02-size-16x10-16x10-0008.i420
-781c63d221a04d8130806c799d16753a  vp90-2-02-size-16x10-16x10-0009.i420
-f346e311829f3789dc5a94da48ada5f4  vp90-2-02-size-16x10-16x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x16.vp9
deleted file mode 100644
index 4b7f230..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x16_vp9_md5
deleted file mode 100644
index 11de2b8..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b5c9daafa548e54a8e33e9881fda33f4  vp90-2-02-size-16x16-16x16-0001.i420
-1193acd7ea4b7aac968e35ef83c64378  vp90-2-02-size-16x16-16x16-0002.i420
-cd0e42c0b5a8b3be6f0e1d224062bf99  vp90-2-02-size-16x16-16x16-0003.i420
-ed79c71d17f68f86cbfa75ea2bfe97f3  vp90-2-02-size-16x16-16x16-0004.i420
-1502a859c7e07b31faad5b80e3e27cf7  vp90-2-02-size-16x16-16x16-0005.i420
-df3f093da914ea947db93c3baa188ecb  vp90-2-02-size-16x16-16x16-0006.i420
-480f86eb183b99277c1b38fdaafe2970  vp90-2-02-size-16x16-16x16-0007.i420
-023e0114282e04963f0f52e00e65ac61  vp90-2-02-size-16x16-16x16-0008.i420
-e67f29cf0acc7f9b553458e1e5c59ebf  vp90-2-02-size-16x16-16x16-0009.i420
-a779a14ba718f0c1df8a7edc9467d12e  vp90-2-02-size-16x16-16x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x18.vp9
deleted file mode 100644
index de0bddc..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x18_vp9_md5
deleted file mode 100644
index 7dcc81a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5156b11cd9995d0c1638c9b0d2b0786c  vp90-2-02-size-16x18-16x18-0001.i420
-ef78557f93fb3ea770c7d49ab60edf21  vp90-2-02-size-16x18-16x18-0002.i420
-f31fb9bb14566e4538a45ac7bf398b2a  vp90-2-02-size-16x18-16x18-0003.i420
-97633875537f76ade183e975fa91b0fb  vp90-2-02-size-16x18-16x18-0004.i420
-602cf54f9af852175173c21abd63796f  vp90-2-02-size-16x18-16x18-0005.i420
-0b3741a6842cb65d6d21eda891882033  vp90-2-02-size-16x18-16x18-0006.i420
-44240a27a6b6d36c9661d499fb965f87  vp90-2-02-size-16x18-16x18-0007.i420
-9050f263f9a4767f9323ec8aa42cf7e6  vp90-2-02-size-16x18-16x18-0008.i420
-57fa3a8494375f588a95376bc0c3cb28  vp90-2-02-size-16x18-16x18-0009.i420
-084595f2a65aa10e7d3845044a0e7213  vp90-2-02-size-16x18-16x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x32.vp9
deleted file mode 100644
index 35371d5..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x32_vp9_md5
deleted file mode 100644
index f7b1555..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c73d611490a5ddec6c690589deaf5e86  vp90-2-02-size-16x32-16x32-0001.i420
-5d8eaeb222aa64abda59ce7b09b2f6d9  vp90-2-02-size-16x32-16x32-0002.i420
-34321856b8dd5bbb9b63db04d3532289  vp90-2-02-size-16x32-16x32-0003.i420
-947337d2fec8a09242f60e31e99f4065  vp90-2-02-size-16x32-16x32-0004.i420
-bb7d92f6fc055f0cf0e97bd2be56cc9e  vp90-2-02-size-16x32-16x32-0005.i420
-5d343c82bcdd0e9d08581043cddfd0ca  vp90-2-02-size-16x32-16x32-0006.i420
-612ded93207712e4916d584cc4a7b87c  vp90-2-02-size-16x32-16x32-0007.i420
-6ba5e0d19893e1b96f5ca86e0bfd7e18  vp90-2-02-size-16x32-16x32-0008.i420
-336572e1dcb110b1eb87bea81e0752f4  vp90-2-02-size-16x32-16x32-0009.i420
-705f73d0a39afce59ea571e68bfe25df  vp90-2-02-size-16x32-16x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x34.vp9
deleted file mode 100644
index a9c1024..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x34_vp9_md5
deleted file mode 100644
index 169e06c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b8bf711d9a1ce49180ed56407c8a4b0a  vp90-2-02-size-16x34-16x34-0001.i420
-0457929b06ce46aec63d66bd38586e3f  vp90-2-02-size-16x34-16x34-0002.i420
-3b5f417ee5a936797a6f0d138b8ed73b  vp90-2-02-size-16x34-16x34-0003.i420
-5d1a42aeecfd5c8513cb2df94c206c8b  vp90-2-02-size-16x34-16x34-0004.i420
-a0ab2dddbc810a1667d779f6ed69d010  vp90-2-02-size-16x34-16x34-0005.i420
-b150cd7c4ec83e6f9d948e99d7465350  vp90-2-02-size-16x34-16x34-0006.i420
-ea39622ad21312bd8bcecdaf09aa18fb  vp90-2-02-size-16x34-16x34-0007.i420
-467a42e1226a01c8ba244f312f588bab  vp90-2-02-size-16x34-16x34-0008.i420
-f2311e15228ffc7fd377b89c203d0fbf  vp90-2-02-size-16x34-16x34-0009.i420
-5df58b3ac0a7856796a46f27be7dcf4c  vp90-2-02-size-16x34-16x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x64.vp9
deleted file mode 100644
index 4f9d19c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x64_vp9_md5
deleted file mode 100644
index 5b981881..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-925fdc485f3baa1ed145ae391519d7fd  vp90-2-02-size-16x64-16x64-0001.i420
-d37af656da2d7a727c8451773495d5ed  vp90-2-02-size-16x64-16x64-0002.i420
-8a0f207a99e46f3d3b2aaa3f1b061981  vp90-2-02-size-16x64-16x64-0003.i420
-a3914c7b739d3af2641fd6aae35428ef  vp90-2-02-size-16x64-16x64-0004.i420
-0ba3b49970d7b029f2dfa991fdfc6e61  vp90-2-02-size-16x64-16x64-0005.i420
-55838d1d787dc5a4fa4da2994f04587f  vp90-2-02-size-16x64-16x64-0006.i420
-c089f7ba2b2983df2a4dc2e07798af31  vp90-2-02-size-16x64-16x64-0007.i420
-c23dcb3b109543a61ccfa404a726caae  vp90-2-02-size-16x64-16x64-0008.i420
-01aaf09960f5ca599ca32768f017d0c9  vp90-2-02-size-16x64-16x64-0009.i420
-79fe955692ecba8bbb00b20a42ca8104  vp90-2-02-size-16x64-16x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_16x66.vp9
deleted file mode 100644
index 4499869..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_16x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_16x66_vp9_md5
deleted file mode 100644
index 34f48af..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_16x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c7b0d91f362dff0a581434af6e902d43  vp90-2-02-size-16x66-16x66-0001.i420
-d8b016ef59c6bc193b29d1c714f342c1  vp90-2-02-size-16x66-16x66-0002.i420
-c520bd8d4b81aafc7687befff66c7396  vp90-2-02-size-16x66-16x66-0003.i420
-92e81bbd3af675c9cdb1cb00d03dabe1  vp90-2-02-size-16x66-16x66-0004.i420
-a271db3defe5daa6d9e0a73a580f4f88  vp90-2-02-size-16x66-16x66-0005.i420
-4077e857321e241bb98dfd89c0aca46f  vp90-2-02-size-16x66-16x66-0006.i420
-0466e1453a94baf876e9f64b60235300  vp90-2-02-size-16x66-16x66-0007.i420
-9d2cb9c7b180d44841e0e4d8a595d912  vp90-2-02-size-16x66-16x66-0008.i420
-500f443eeb0ecef47c34d1e91f0df6ce  vp90-2-02-size-16x66-16x66-0009.i420
-83354487982915c33b1c6243d80adaeb  vp90-2-02-size-16x66-16x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_178x180.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_178x180.vp9
deleted file mode 100644
index c7f72dc..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_178x180.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_178x180_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_178x180_vp9_md5
deleted file mode 100644
index 8af554c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_178x180_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-ca7515c880d0a8230432e77abf3e3d33  vp90_2_02_size_178x180.webm-178x180-0001.i420
-7612d57deeb9d947529f73dd1b64a08d  vp90_2_02_size_178x180.webm-178x180-0002.i420
-a230690af19b975ffaca630e84e648fe  vp90_2_02_size_178x180.webm-178x180-0003.i420
-c6f829cb3462fcc0f7259819797c3283  vp90_2_02_size_178x180.webm-178x180-0004.i420
-3d13df53df5abb8d7602ffb0a3c89bb6  vp90_2_02_size_178x180.webm-178x180-0005.i420
-08ed7474c5630c1d7de6e32906f8b62f  vp90_2_02_size_178x180.webm-178x180-0006.i420
-d09e4324a86be4e4141fcd72b855744b  vp90_2_02_size_178x180.webm-178x180-0007.i420
-2934746d377ee23fd3eaeea27d049210  vp90_2_02_size_178x180.webm-178x180-0008.i420
-9cbad3dfc8a5665f57f483fede1ac91c  vp90_2_02_size_178x180.webm-178x180-0009.i420
-9c2dc6879c5778f293db30eac2fe7103  vp90_2_02_size_178x180.webm-178x180-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_180x178.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_180x178.vp9
deleted file mode 100644
index 340be2b..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_180x178.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_180x178_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_180x178_vp9_md5
deleted file mode 100644
index dd72479..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_180x178_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-461aa52a5658cbb30320be36bf42867d  vp90_2_02_size_180x178.webm-180x178-0001.i420
-a6c5fb033c04b5bdbe47a07a2ea8a001  vp90_2_02_size_180x178.webm-180x178-0002.i420
-de1d2789826b143aaae0b7c337332a69  vp90_2_02_size_180x178.webm-180x178-0003.i420
-aaf60e6369a72ea8fe47b3767b6b4aef  vp90_2_02_size_180x178.webm-180x178-0004.i420
-40c6bfaf1f4bcd39d6c6cf588ea445cb  vp90_2_02_size_180x178.webm-180x178-0005.i420
-3bfe6508595fb0c000c196cb6387531b  vp90_2_02_size_180x178.webm-180x178-0006.i420
-b70dcaad6d9dd7fe378b323460c3a243  vp90_2_02_size_180x178.webm-180x178-0007.i420
-201fce98c70f2623196a44e40a4850ac  vp90_2_02_size_180x178.webm-180x178-0008.i420
-aba16ce70b06355a025d003d6974790b  vp90_2_02_size_180x178.webm-180x178-0009.i420
-39220f4dd594972d258788528d19460c  vp90_2_02_size_180x178.webm-180x178-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_180x180.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_180x180.vp9
deleted file mode 100644
index c01cc6f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_180x180.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_180x180_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_180x180_vp9_md5
deleted file mode 100644
index f257f21..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_180x180_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-325a336bcaf9987ab1ad3f6a7328d2be  vp90_2_02_size_180x180.webm-180x180-0001.i420
-e7d73157a4861d98318240b60d157f55  vp90_2_02_size_180x180.webm-180x180-0002.i420
-1db60eb53a9756c751325942a021b36e  vp90_2_02_size_180x180.webm-180x180-0003.i420
-c0adb82dc19f4cabcebd18f0d7712ee5  vp90_2_02_size_180x180.webm-180x180-0004.i420
-35b768881097c1e6b99814e4fbf905d1  vp90_2_02_size_180x180.webm-180x180-0005.i420
-c3af16f1334c6baa0a51086f57c7cfd5  vp90_2_02_size_180x180.webm-180x180-0006.i420
-d30718f4a93162e7752e5177096718ee  vp90_2_02_size_180x180.webm-180x180-0007.i420
-b73f17d3affa5a9f69273579c09f4566  vp90_2_02_size_180x180.webm-180x180-0008.i420
-f596f4234d2486985a2d94ce73bd72ad  vp90_2_02_size_180x180.webm-180x180-0009.i420
-aab77693ee7b744c81a0b913f5318ac2  vp90_2_02_size_180x180.webm-180x180-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x08.vp9
deleted file mode 100644
index c1b063e..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x08_vp9_md5
deleted file mode 100644
index 19f6cbe..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-3219af4ef540636b0f67a989e9966059  vp90-2-02-size-18x08-18x8-0001.i420
-1a3655c2cfd2ee332bc89da5b3faf778  vp90-2-02-size-18x08-18x8-0002.i420
-d638d5b361a6d81440e26993ed86c97d  vp90-2-02-size-18x08-18x8-0003.i420
-d9bc2e7cffd66db4ba9dcbce99448d4d  vp90-2-02-size-18x08-18x8-0004.i420
-399f962e0a0573915bc4da4a9f1effcf  vp90-2-02-size-18x08-18x8-0005.i420
-69d917e19b903e4f07f848e9e557bbe7  vp90-2-02-size-18x08-18x8-0006.i420
-d6311488a58acf6eb0cc45bc4fe3c2da  vp90-2-02-size-18x08-18x8-0007.i420
-0ce360a84d5755307f98d65c83f190e1  vp90-2-02-size-18x08-18x8-0008.i420
-2554828e6dbf94424ccac30fb153872e  vp90-2-02-size-18x08-18x8-0009.i420
-598a55f9735e85b8d45105dd6be7f97b  vp90-2-02-size-18x08-18x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x10.vp9
deleted file mode 100644
index 5b1d1f4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x10_vp9_md5
deleted file mode 100644
index f79825a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-bf574489e9360b6475aa012c747e7924  vp90-2-02-size-18x10-18x10-0001.i420
-851100301c2937312a6fd32f5aab5a09  vp90-2-02-size-18x10-18x10-0002.i420
-0f7c1209e44ea7cd4df12d82f9224684  vp90-2-02-size-18x10-18x10-0003.i420
-28d121f9c40de5280435bfdeaec0c072  vp90-2-02-size-18x10-18x10-0004.i420
-bb00898d03ce4dff5f7bee719dd3f5b5  vp90-2-02-size-18x10-18x10-0005.i420
-a098cc66bc25b81f84b0e930b0915cdb  vp90-2-02-size-18x10-18x10-0006.i420
-81e25f19bfcbfce17bd7138eedae04ee  vp90-2-02-size-18x10-18x10-0007.i420
-69c36c5ce555a461f16a1733450f7258  vp90-2-02-size-18x10-18x10-0008.i420
-c95236d9e7c624bb664310bd9ef47fb4  vp90-2-02-size-18x10-18x10-0009.i420
-7ab0942e686939951037314e9402d2c1  vp90-2-02-size-18x10-18x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x16.vp9
deleted file mode 100644
index f27acd1..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x16_vp9_md5
deleted file mode 100644
index aeafea2..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-9535aaa2ea26fbdc16e7fe9cba3fc9b4  vp90-2-02-size-18x16-18x16-0001.i420
-7f6e7ca33c0b27ff052dc2ab6721e37d  vp90-2-02-size-18x16-18x16-0002.i420
-d37e3f169457a9c7f2a197353e39d3d6  vp90-2-02-size-18x16-18x16-0003.i420
-f26d7d81dd81d051680ea2485e812705  vp90-2-02-size-18x16-18x16-0004.i420
-704b01955ced6d101b9e9315d3327f28  vp90-2-02-size-18x16-18x16-0005.i420
-30d46d6a0f6be383dede451cacf465f4  vp90-2-02-size-18x16-18x16-0006.i420
-83c7ed04f0af61ec665041967cbce05d  vp90-2-02-size-18x16-18x16-0007.i420
-152daf37dd37607886c50dd4c7796357  vp90-2-02-size-18x16-18x16-0008.i420
-609d807351ba74b1c432e3d0516add91  vp90-2-02-size-18x16-18x16-0009.i420
-67953f0c735984232cb6782217cdcdf6  vp90-2-02-size-18x16-18x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x18.vp9
deleted file mode 100644
index 35ec6a7..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x18_vp9_md5
deleted file mode 100644
index 9600c40e..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-83790b0e7004d8d89b7134ee1a88d885  vp90-2-02-size-18x18-18x18-0001.i420
-0baf0bf556ae56d2f4b04567e6ac7ed9  vp90-2-02-size-18x18-18x18-0002.i420
-c648854a4d49f7e407a2450cf4ba292a  vp90-2-02-size-18x18-18x18-0003.i420
-510c3aca23339841ffc72ed5c75d184e  vp90-2-02-size-18x18-18x18-0004.i420
-1c1f3116ec4d4ee1ad790652e49233ad  vp90-2-02-size-18x18-18x18-0005.i420
-f94891f4e16fd32d638a2c696f5922e6  vp90-2-02-size-18x18-18x18-0006.i420
-e164814c22e38cbe45312dfd48d987fc  vp90-2-02-size-18x18-18x18-0007.i420
-f582515fcc6c4308ad931d2f6cf371a0  vp90-2-02-size-18x18-18x18-0008.i420
-0a446974bd227ee34a1621a2b7852abb  vp90-2-02-size-18x18-18x18-0009.i420
-beca28bdae8d1fe20036b3646f3109cd  vp90-2-02-size-18x18-18x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x32.vp9
deleted file mode 100644
index f288c06..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x32_vp9_md5
deleted file mode 100644
index 697fa7d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-62eabc8819ded6ddba2c3a5029497cf0  vp90-2-02-size-18x32-18x32-0001.i420
-b760182fddf8bc05f149e80bbcb2c281  vp90-2-02-size-18x32-18x32-0002.i420
-0c44be0472ebd2653ce9fb174c6180ab  vp90-2-02-size-18x32-18x32-0003.i420
-bbb033c3bfeeb6f59cb43013597b9d92  vp90-2-02-size-18x32-18x32-0004.i420
-a769975cdbc6529525f7cac8a0d9299a  vp90-2-02-size-18x32-18x32-0005.i420
-15b02059bbced62f19c0626efea1ecb9  vp90-2-02-size-18x32-18x32-0006.i420
-47f4b50322ed31649bdcfffb05c70fa2  vp90-2-02-size-18x32-18x32-0007.i420
-8649cdd0a958047839f5b6e7bbf6f288  vp90-2-02-size-18x32-18x32-0008.i420
-2c766e3fd3882a9a5aff52ffe9d1d341  vp90-2-02-size-18x32-18x32-0009.i420
-184a62b7332a1c24acbf03f670fb7ac1  vp90-2-02-size-18x32-18x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x34.vp9
deleted file mode 100644
index 6b8c0724..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x34_vp9_md5
deleted file mode 100644
index 2b9926c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-612cc424eaae924cb25c7732c422f752  vp90-2-02-size-18x34-18x34-0001.i420
-010e8c2a814862529fcf8d7771ba2d7f  vp90-2-02-size-18x34-18x34-0002.i420
-7d791b7a5916738998f77586339d5840  vp90-2-02-size-18x34-18x34-0003.i420
-aeada5f59f3dda9ab3e898f305428cb2  vp90-2-02-size-18x34-18x34-0004.i420
-06af894d38a1f0d3665c0081f5397ddf  vp90-2-02-size-18x34-18x34-0005.i420
-24bf31323c568e652550e9d35de9c96c  vp90-2-02-size-18x34-18x34-0006.i420
-a9681ec47d3e6a19321b9ea47221dc3f  vp90-2-02-size-18x34-18x34-0007.i420
-73ae7268df79c4012952bd3e8011e894  vp90-2-02-size-18x34-18x34-0008.i420
-67aa4145398ca17036959251cb4ce17b  vp90-2-02-size-18x34-18x34-0009.i420
-de247b80114c722da849f5aa23adbb38  vp90-2-02-size-18x34-18x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x64.vp9
deleted file mode 100644
index da13d78..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x64_vp9_md5
deleted file mode 100644
index 0fbd0c0..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-72c74de547d9ed1b17bc962dbd5e0bb1  vp90-2-02-size-18x64-18x64-0001.i420
-462849f9e2204738e9f08b40e682a6ae  vp90-2-02-size-18x64-18x64-0002.i420
-f0ee17692fd816747b11d5737b511cda  vp90-2-02-size-18x64-18x64-0003.i420
-0234d23406660ede76dd22b35a708390  vp90-2-02-size-18x64-18x64-0004.i420
-6544fdb9dc225d155820d3c7dfc909eb  vp90-2-02-size-18x64-18x64-0005.i420
-1c073544794389596177512fb4dcffce  vp90-2-02-size-18x64-18x64-0006.i420
-864709daac7b091d33afa2210c145084  vp90-2-02-size-18x64-18x64-0007.i420
-b049c4ac941743613ede9a41b16acde5  vp90-2-02-size-18x64-18x64-0008.i420
-ad0c4adb0efec03729a79f42eec66267  vp90-2-02-size-18x64-18x64-0009.i420
-146057d941f5a47eb8b2c9eefeaf3100  vp90-2-02-size-18x64-18x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_18x66.vp9
deleted file mode 100644
index b1ffba7..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_18x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_18x66_vp9_md5
deleted file mode 100644
index 46a7a3d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_18x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c3fc4a1593b9cc2f3752106af8539386  vp90-2-02-size-18x66-18x66-0001.i420
-7f2ffe6bc1750f6749bb5ad12cbaf34b  vp90-2-02-size-18x66-18x66-0002.i420
-2539b10a981d59ef54efd77cd7276aaa  vp90-2-02-size-18x66-18x66-0003.i420
-0bff22b4dfb7485fbedd6ff5b99673d1  vp90-2-02-size-18x66-18x66-0004.i420
-6a2b38f4abee785260a61bc60f16e7fa  vp90-2-02-size-18x66-18x66-0005.i420
-2fbb69b5519b51548bf1ee425ff79c55  vp90-2-02-size-18x66-18x66-0006.i420
-dbd267028be2256111b2411b91fcc117  vp90-2-02-size-18x66-18x66-0007.i420
-12b2f1003633c9e19cae3d0fda06102d  vp90-2-02-size-18x66-18x66-0008.i420
-d419a756c492867523af5185fd57d989  vp90-2-02-size-18x66-18x66-0009.i420
-8a7d36760bf5db32baef349b97316b47  vp90-2-02-size-18x66-18x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x08.vp9
deleted file mode 100644
index 97e741c..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x08_vp9_md5
deleted file mode 100644
index b744f57..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c7b30cde5664387b0f7a80d9b01e4fe2  vp90-2-02-size-32x08-32x8-0001.i420
-2228a2a4e54ab5145525e5803c314dcd  vp90-2-02-size-32x08-32x8-0002.i420
-8c048469eba24f3163c36b7461b3b42a  vp90-2-02-size-32x08-32x8-0003.i420
-f6b8e8e701dea09dcf1158e9a52921c6  vp90-2-02-size-32x08-32x8-0004.i420
-b3a5fde0daf2eef8fc08521f88f79692  vp90-2-02-size-32x08-32x8-0005.i420
-653ae11cc1380ae7f39b2e007f896d81  vp90-2-02-size-32x08-32x8-0006.i420
-6e66fe002a7dff95e13cc9d3d13d9686  vp90-2-02-size-32x08-32x8-0007.i420
-13308c917a1e22c2f702afc32b8a23c2  vp90-2-02-size-32x08-32x8-0008.i420
-4fee1e63f9452dc3f81c1d634bd7f41d  vp90-2-02-size-32x08-32x8-0009.i420
-666b43ead5c7c99ae5b7637da5aa4d62  vp90-2-02-size-32x08-32x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x10.vp9
deleted file mode 100644
index acfa19b..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x10_vp9_md5
deleted file mode 100644
index cb40846..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-7c5b5df373ebfd31d210ff910e02213b  vp90-2-02-size-32x10-32x10-0001.i420
-c5b0a5e3eceb792b15818324a43aa2a8  vp90-2-02-size-32x10-32x10-0002.i420
-1d9c0eafd4638dfe4fe308174fde2faf  vp90-2-02-size-32x10-32x10-0003.i420
-47301d12055944b35008028761cf5e7b  vp90-2-02-size-32x10-32x10-0004.i420
-9586ac1087423dcd3b0ff96d43ae475e  vp90-2-02-size-32x10-32x10-0005.i420
-26bfe1afea96c7ef2084fffd1fa99a33  vp90-2-02-size-32x10-32x10-0006.i420
-0995c8a1935266159a7ef3f95d7f4697  vp90-2-02-size-32x10-32x10-0007.i420
-8cfcc0ea67507ab7f3551d8ac50f93a5  vp90-2-02-size-32x10-32x10-0008.i420
-658cf3cb887b055d9de7d50db4eb78a9  vp90-2-02-size-32x10-32x10-0009.i420
-856bd5189688f7ccfe9995752bc0f1f6  vp90-2-02-size-32x10-32x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x16.vp9
deleted file mode 100644
index dec3c01..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x16_vp9_md5
deleted file mode 100644
index 7609114..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-7c2818db2632e5c5beee17e7105d9209  vp90-2-02-size-32x16-32x16-0001.i420
-cead72bd22995e98b54a91c7b4a20975  vp90-2-02-size-32x16-32x16-0002.i420
-eb6baee5d65d778052c88ba5db2f9174  vp90-2-02-size-32x16-32x16-0003.i420
-1f5f38e89e985e9e4172446de05e91fd  vp90-2-02-size-32x16-32x16-0004.i420
-57b57ffcb03627942fc5868324a10feb  vp90-2-02-size-32x16-32x16-0005.i420
-4b4066a452d8e9cd687cd611f5d9cb88  vp90-2-02-size-32x16-32x16-0006.i420
-113e5069b2a4d2c2e802b72649eb435d  vp90-2-02-size-32x16-32x16-0007.i420
-e176bb233f76f9fd4c55d62d53487b60  vp90-2-02-size-32x16-32x16-0008.i420
-f2ff3def712a846ea7b678bd9078e32b  vp90-2-02-size-32x16-32x16-0009.i420
-21007ed1c727c5ccc5955188a2cec276  vp90-2-02-size-32x16-32x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x18.vp9
deleted file mode 100644
index 2062e61..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x18_vp9_md5
deleted file mode 100644
index 4bd047f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-9da5409d344e7b8380688569e54803a5  vp90-2-02-size-32x18-32x18-0001.i420
-9b51e14e2e624ee2b430e9eaf1a48798  vp90-2-02-size-32x18-32x18-0002.i420
-b8811779f363b9a595e3a92737771ea9  vp90-2-02-size-32x18-32x18-0003.i420
-e5a0c335e5e713a3e77fff0b65127fb9  vp90-2-02-size-32x18-32x18-0004.i420
-1bffa3283b463a356794c8f7a73f8c54  vp90-2-02-size-32x18-32x18-0005.i420
-97c13270621a583eb9e13c05f9d792f0  vp90-2-02-size-32x18-32x18-0006.i420
-a6f81a4dde1ffc352ebe9d8ab8782f35  vp90-2-02-size-32x18-32x18-0007.i420
-91a955a86ce9378ff3442794ce0934c6  vp90-2-02-size-32x18-32x18-0008.i420
-2e4f8938e9c88b328a258a0b99366ea6  vp90-2-02-size-32x18-32x18-0009.i420
-adbbbc192cf36e1fc7c308824765d482  vp90-2-02-size-32x18-32x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x32.vp9
deleted file mode 100644
index fbfa4ab..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x32_vp9_md5
deleted file mode 100644
index 4e5b3c4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-117915db1856cee26f05a609c8c8de2e  vp90-2-02-size-32x32-32x32-0001.i420
-943771a98b26b174e88ed1f4e872e504  vp90-2-02-size-32x32-32x32-0002.i420
-3e0d2585e1f1cb540998d107aca5c395  vp90-2-02-size-32x32-32x32-0003.i420
-e64a9e1e0232983a69ab48453025b23d  vp90-2-02-size-32x32-32x32-0004.i420
-2c6ef6637fb7b9425f7d7ea28cd84087  vp90-2-02-size-32x32-32x32-0005.i420
-419a5a31a43955d408c13ee8a5ddce9c  vp90-2-02-size-32x32-32x32-0006.i420
-2ab13e1c236553d42d59498ca350b190  vp90-2-02-size-32x32-32x32-0007.i420
-b8068beb037f3232d4da38fe33a8a885  vp90-2-02-size-32x32-32x32-0008.i420
-160df68b9e3f75e9b1f8ed7cce327bc2  vp90-2-02-size-32x32-32x32-0009.i420
-1ccafa8c7babdce0983aeb20d298b0ee  vp90-2-02-size-32x32-32x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x34.vp9
deleted file mode 100644
index 7ea9965..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x34_vp9_md5
deleted file mode 100644
index 28b1e11..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-770582911fd0095ebbeae384e87665ac  vp90-2-02-size-32x34-32x34-0001.i420
-f99d7e3131f04413cba2f9de6818976d  vp90-2-02-size-32x34-32x34-0002.i420
-3bfbb8c9c48f24cd596973a6deb33a3f  vp90-2-02-size-32x34-32x34-0003.i420
-0b8166afdd357f20c76f77d228bb7171  vp90-2-02-size-32x34-32x34-0004.i420
-3a3d7f2a03e19a82250d6ca0238f9791  vp90-2-02-size-32x34-32x34-0005.i420
-9b558f9b8744b016059f69f3fca90d2c  vp90-2-02-size-32x34-32x34-0006.i420
-c857736342f1145d919cb77732120006  vp90-2-02-size-32x34-32x34-0007.i420
-11dc5dda4c883a3146db060dd50343d0  vp90-2-02-size-32x34-32x34-0008.i420
-7526a62ae87de174be86eac7bb36c7f3  vp90-2-02-size-32x34-32x34-0009.i420
-9ef38f47cfc461710ff0dd75690473c0  vp90-2-02-size-32x34-32x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x64.vp9
deleted file mode 100644
index 0bc9223..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x64_vp9_md5
deleted file mode 100644
index d00ccc6..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-caa8471a8b381d53c3e8fc627946a871  vp90-2-02-size-32x64-32x64-0001.i420
-2cba86ea14c0f28e242625b08f5e9b88  vp90-2-02-size-32x64-32x64-0002.i420
-cea0440ff6569fc82c3030e0340fb649  vp90-2-02-size-32x64-32x64-0003.i420
-c18ef37f1356ade96a2f40af954b31c8  vp90-2-02-size-32x64-32x64-0004.i420
-21e6e549378bcff47913ef292e74dc37  vp90-2-02-size-32x64-32x64-0005.i420
-a9d3d483f74a5afe5d80725ce696fd20  vp90-2-02-size-32x64-32x64-0006.i420
-a436e2586b0963747deaf5e450e2b230  vp90-2-02-size-32x64-32x64-0007.i420
-9daaadf265df56974cb0950843d9fd8c  vp90-2-02-size-32x64-32x64-0008.i420
-e0b84714bad2519e62b7d16705fb09d5  vp90-2-02-size-32x64-32x64-0009.i420
-8cdfce574edbe548da7f6cd9a7076b9e  vp90-2-02-size-32x64-32x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_32x66.vp9
deleted file mode 100644
index 9d96d3d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_32x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_32x66_vp9_md5
deleted file mode 100644
index 4a00973..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_32x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-920ea4b8a00d41489d122d641d6e4fe5  vp90-2-02-size-32x66-32x66-0001.i420
-8bfc8d452a79f2978b8e973b77cbf8a8  vp90-2-02-size-32x66-32x66-0002.i420
-09f3f0d31d3377a844fa5385d9b36b9f  vp90-2-02-size-32x66-32x66-0003.i420
-df43fae763da9360c8062bb92ee091a8  vp90-2-02-size-32x66-32x66-0004.i420
-445d8c675bb865d1814fcfa6b8a9afd3  vp90-2-02-size-32x66-32x66-0005.i420
-dc7d43db86aac6636724de8790eda555  vp90-2-02-size-32x66-32x66-0006.i420
-d3a9fc272424449ffc5b7e69f8f9948b  vp90-2-02-size-32x66-32x66-0007.i420
-11ef33b9bccca54b3703bf24ab55e2d6  vp90-2-02-size-32x66-32x66-0008.i420
-ce31b8bf9b00b427ca956abb800d8034  vp90-2-02-size-32x66-32x66-0009.i420
-e707f824d6e95d482bf3a0b4d52ea069  vp90-2-02-size-32x66-32x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x08.vp9
deleted file mode 100644
index 3a1d276..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x08_vp9_md5
deleted file mode 100644
index 2940416..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c14f2ba5b4582c9d3a488976814691b3  vp90-2-02-size-34x08-34x8-0001.i420
-4387a4dce19007b7efb810b5a4069749  vp90-2-02-size-34x08-34x8-0002.i420
-ecfe868d28f4861a5612edfd57447a02  vp90-2-02-size-34x08-34x8-0003.i420
-5cba54f568534d29169ac31c8fa505e0  vp90-2-02-size-34x08-34x8-0004.i420
-fe9aab7b3378b9fc3e373ee626b887db  vp90-2-02-size-34x08-34x8-0005.i420
-fce72dfc7f9c0cb50ff73761b4d82c1f  vp90-2-02-size-34x08-34x8-0006.i420
-d4d98f42b1377e0f0ffaa66aa81d40c3  vp90-2-02-size-34x08-34x8-0007.i420
-65c027646dc95a749ce2d7ad0a6beccc  vp90-2-02-size-34x08-34x8-0008.i420
-317b283a0d907270f671272771022e69  vp90-2-02-size-34x08-34x8-0009.i420
-d3e2c008584608502f3e24c5c5f64028  vp90-2-02-size-34x08-34x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x10.vp9
deleted file mode 100644
index 336a18a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x10_vp9_md5
deleted file mode 100644
index 9e19ab4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fd7212b519783cf4831ce4bff91f2312  vp90-2-02-size-34x10-34x10-0001.i420
-9768722ee939d80a6716865fdebca33d  vp90-2-02-size-34x10-34x10-0002.i420
-328ee0f774eeafde00dcc4b9a8f4e9af  vp90-2-02-size-34x10-34x10-0003.i420
-f882fa6015fcb042094eadab5fa952cf  vp90-2-02-size-34x10-34x10-0004.i420
-4331a3dabeae27d2bf3590eb96ce914a  vp90-2-02-size-34x10-34x10-0005.i420
-0e15106bd8e90377f6ed8b464d17159c  vp90-2-02-size-34x10-34x10-0006.i420
-8f062653ac2b83f7e541393e838d0e0f  vp90-2-02-size-34x10-34x10-0007.i420
-eeb98c1728c1a74510f8bfaf10fc0002  vp90-2-02-size-34x10-34x10-0008.i420
-30bb058a67d6a5ee3693b21cbca5349a  vp90-2-02-size-34x10-34x10-0009.i420
-7ce4b79983b3abc37b141a3bea56e0b7  vp90-2-02-size-34x10-34x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x16.vp9
deleted file mode 100644
index 41d41f3..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x16_vp9_md5
deleted file mode 100644
index 1c01cd4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e443c43101be00470c6a61c1a2995b5a  vp90-2-02-size-34x16-34x16-0001.i420
-1e79b1b46ec704d360b5fb725913b0f1  vp90-2-02-size-34x16-34x16-0002.i420
-6d5e77cafab6bc43498980c515d299d3  vp90-2-02-size-34x16-34x16-0003.i420
-91c3bba5fd2aa29ee54c8f3783cfe5a2  vp90-2-02-size-34x16-34x16-0004.i420
-9548d07c2a6204694d34e973e8339077  vp90-2-02-size-34x16-34x16-0005.i420
-6819a34c7e3c13bee3ea2b18e12e92fd  vp90-2-02-size-34x16-34x16-0006.i420
-f75920457f01f65bf30ba1ec41076d4e  vp90-2-02-size-34x16-34x16-0007.i420
-3a04f6cc0c348c21464b173ac6005043  vp90-2-02-size-34x16-34x16-0008.i420
-93a3336374e8cc4dfb2c0b4716ab60ec  vp90-2-02-size-34x16-34x16-0009.i420
-148af188b8a2ee93de406a01c2af180d  vp90-2-02-size-34x16-34x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x18.vp9
deleted file mode 100644
index 9c2f4ea..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x18_vp9_md5
deleted file mode 100644
index 74ee172..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-ab7eabb355e5163e7451945018fadebd  vp90-2-02-size-34x18-34x18-0001.i420
-b9a77cc0c769535808996a6de7b374ff  vp90-2-02-size-34x18-34x18-0002.i420
-bd773f11d89091b3c9ebc22d8291dd49  vp90-2-02-size-34x18-34x18-0003.i420
-278c215d6c188752818f07f4d317c0e0  vp90-2-02-size-34x18-34x18-0004.i420
-b59856932c675c1ba587644c23cdb002  vp90-2-02-size-34x18-34x18-0005.i420
-2bcaef04f89326a56025269a68742043  vp90-2-02-size-34x18-34x18-0006.i420
-5abb4a1b96b4bc003cd19a146347c54e  vp90-2-02-size-34x18-34x18-0007.i420
-26e36058f451ff80d498ac1c0343489f  vp90-2-02-size-34x18-34x18-0008.i420
-57ac43fcc6f1a2c863188aca68d52524  vp90-2-02-size-34x18-34x18-0009.i420
-282467118b5b7a986ccd28d16dab3ea7  vp90-2-02-size-34x18-34x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x32.vp9
deleted file mode 100644
index 2c020b4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x32_vp9_md5
deleted file mode 100644
index fb6d77d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-7e334867e27046fabf0f39365311c38c  vp90-2-02-size-34x32-34x32-0001.i420
-d2a49216ecedea62f546e54c1552f163  vp90-2-02-size-34x32-34x32-0002.i420
-f66e10d1779533e5b6e2b98369134833  vp90-2-02-size-34x32-34x32-0003.i420
-0054b8d4393df58eee87784862a29901  vp90-2-02-size-34x32-34x32-0004.i420
-b9cdf3ebea0d1e3f1e0c42db2e11a3c2  vp90-2-02-size-34x32-34x32-0005.i420
-c08a728d955a559457c82e44c3296148  vp90-2-02-size-34x32-34x32-0006.i420
-d05f4c4a8b0e606525c3d388d26a9351  vp90-2-02-size-34x32-34x32-0007.i420
-78fc2544da88a1a21d6626b0f7bbcf8c  vp90-2-02-size-34x32-34x32-0008.i420
-90832c4fed05390377551359bb9a91f7  vp90-2-02-size-34x32-34x32-0009.i420
-5290a0e77081863398f36c7ae192710b  vp90-2-02-size-34x32-34x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x34.vp9
deleted file mode 100644
index bcc9c17..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x34_vp9_md5
deleted file mode 100644
index 36d92f5..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1bb98ba89abf6b86f47a851f8126e1ff  vp90-2-02-size-34x34-34x34-0001.i420
-b960cc795c179afe7eec360c57fddd7f  vp90-2-02-size-34x34-34x34-0002.i420
-a93cd094a80c542ecb7b6ac7720c5eff  vp90-2-02-size-34x34-34x34-0003.i420
-f1cd34e4f0bf9b1238769f028708b742  vp90-2-02-size-34x34-34x34-0004.i420
-f01437ad14450d2136a8fc971f180eb7  vp90-2-02-size-34x34-34x34-0005.i420
-8778230f1182c2227bf1e253bd85df4c  vp90-2-02-size-34x34-34x34-0006.i420
-1d1d5cf6c5cc9e73a1fa5b882e441d74  vp90-2-02-size-34x34-34x34-0007.i420
-2f7a1867487c56c252e35225f71adb55  vp90-2-02-size-34x34-34x34-0008.i420
-1d1aea21f70ceed596f22ec32d8712ee  vp90-2-02-size-34x34-34x34-0009.i420
-260e66df92f32bc853f4cd4ede692ea4  vp90-2-02-size-34x34-34x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x64.vp9
deleted file mode 100644
index daa63a3..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x64_vp9_md5
deleted file mode 100644
index 6a6795e..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-3856635223f578e1e7f7e7250a53cb8d  vp90-2-02-size-34x64-34x64-0001.i420
-ee8d7c3a0ea165420d7e733b9e59219a  vp90-2-02-size-34x64-34x64-0002.i420
-3d33f06bac22131f04e3411fc216dc02  vp90-2-02-size-34x64-34x64-0003.i420
-7aea667775077de32250dac25fd24bb3  vp90-2-02-size-34x64-34x64-0004.i420
-43fb534551f153c5e9e60240df0bf3b4  vp90-2-02-size-34x64-34x64-0005.i420
-d42b721aa2242d4258d97f840fdcc901  vp90-2-02-size-34x64-34x64-0006.i420
-e876200d720cbe6e36e0ffb775c5ad6c  vp90-2-02-size-34x64-34x64-0007.i420
-453078449d8701270564086e58a1d69e  vp90-2-02-size-34x64-34x64-0008.i420
-22cb799a817d45a7591489e6faa31cb9  vp90-2-02-size-34x64-34x64-0009.i420
-628dc3f03bf5dd5cae135ad1e4b9ebf7  vp90-2-02-size-34x64-34x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_34x66.vp9
deleted file mode 100644
index ca90995..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_34x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_34x66_vp9_md5
deleted file mode 100644
index af3cde6..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_34x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-bf4e568217906ee4b58dc4707bee8ef6  vp90-2-02-size-34x66-34x66-0001.i420
-f823f8c7b6e47ba43215f3becd35208e  vp90-2-02-size-34x66-34x66-0002.i420
-1d986d65b502e77764428e21e77503a6  vp90-2-02-size-34x66-34x66-0003.i420
-73520382bc54d6aee165402518dd7b5d  vp90-2-02-size-34x66-34x66-0004.i420
-c84e943758f2d7e37126172728838640  vp90-2-02-size-34x66-34x66-0005.i420
-1d4b298da98e4b66b31ad6874f726aa6  vp90-2-02-size-34x66-34x66-0006.i420
-e67748eeb3c818deb8b51d321cd16a9c  vp90-2-02-size-34x66-34x66-0007.i420
-4d1514c63e669261beef9e35b04c241e  vp90-2-02-size-34x66-34x66-0008.i420
-57705e2131e2129efbc68b74a1e0459c  vp90-2-02-size-34x66-34x66-0009.i420
-681acf1b384856d6e544d8e7a79fc628  vp90-2-02-size-34x66-34x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x08.vp9
deleted file mode 100644
index cfb8189..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x08_vp9_md5
deleted file mode 100644
index 0b40ce8..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d801797c94039b0a166d46e151ec912c  vp90-2-02-size-64x08-64x8-0001.i420
-161ec22caa3689b214d9ab993424584b  vp90-2-02-size-64x08-64x8-0002.i420
-499b589ecf1873e388c256ce948eabb9  vp90-2-02-size-64x08-64x8-0003.i420
-22bc77650e3df70e3e36f2a1b8d8aa71  vp90-2-02-size-64x08-64x8-0004.i420
-750e40530257a68211596a60de18bffa  vp90-2-02-size-64x08-64x8-0005.i420
-4f812a92157e7186642656b59bc28a3d  vp90-2-02-size-64x08-64x8-0006.i420
-a3f141cec127a2c2e16740b8dd4ce56a  vp90-2-02-size-64x08-64x8-0007.i420
-a5ba9959bf65ab6e254e5b359a3d59b5  vp90-2-02-size-64x08-64x8-0008.i420
-baa72b8a57277d9e9ad4b92aab04f5d1  vp90-2-02-size-64x08-64x8-0009.i420
-4cb9aebb6c9d5bd164461726de201549  vp90-2-02-size-64x08-64x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x10.vp9
deleted file mode 100644
index 243962a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x10_vp9_md5
deleted file mode 100644
index acd1ed1..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-97eb5fd0599d482662eb0a1def5c5ef2  vp90-2-02-size-64x10-64x10-0001.i420
-dfdc1b61b478dcca8d411021486aa2ec  vp90-2-02-size-64x10-64x10-0002.i420
-2cf560f068bdcb9e345951739091808e  vp90-2-02-size-64x10-64x10-0003.i420
-33cacb04c0797fc7bd774251e04b7fb9  vp90-2-02-size-64x10-64x10-0004.i420
-7fca126c0542c0dcdcf769b156bd85f5  vp90-2-02-size-64x10-64x10-0005.i420
-8a46c5a48cb5bd34be8e647c127f8d61  vp90-2-02-size-64x10-64x10-0006.i420
-1ddf07562c0b7dc68ed61b8e1a09fcf0  vp90-2-02-size-64x10-64x10-0007.i420
-d75911d5eb7fc75ffc3ee40344fc7ed2  vp90-2-02-size-64x10-64x10-0008.i420
-498329c8a01d950286af11e1fcf3ac07  vp90-2-02-size-64x10-64x10-0009.i420
-7a6ec019df5f3e419d389699094f87c3  vp90-2-02-size-64x10-64x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x16.vp9
deleted file mode 100644
index 28663da..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x16_vp9_md5
deleted file mode 100644
index dd67756..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a43068a364cc42619e62406dcf17ddfc  vp90-2-02-size-64x16-64x16-0001.i420
-94691f93299bbf5b6ba3022b02b3e069  vp90-2-02-size-64x16-64x16-0002.i420
-3c8fc275490b4daf63ef6d8f9b7f81f6  vp90-2-02-size-64x16-64x16-0003.i420
-96c06031f0fcad49dfed256c5c737d07  vp90-2-02-size-64x16-64x16-0004.i420
-f722d3a51790b55d070d57d3b9a53d0d  vp90-2-02-size-64x16-64x16-0005.i420
-a753b3dfe13f5778f9f054e73e512ef1  vp90-2-02-size-64x16-64x16-0006.i420
-fa12cbe6cbc38fa8a38ecbcf1af8833c  vp90-2-02-size-64x16-64x16-0007.i420
-cb42303391ef6f76f77d14d2600cce12  vp90-2-02-size-64x16-64x16-0008.i420
-e0c18bb1d4dcc8168b5fdd7c7963987e  vp90-2-02-size-64x16-64x16-0009.i420
-581b5291cb60e50326c0dfa6a2d09d8a  vp90-2-02-size-64x16-64x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x18.vp9
deleted file mode 100644
index 9fb5e37..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x18_vp9_md5
deleted file mode 100644
index 4a01c17..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-adf7e84a351847683f6a8dd177019e29  vp90-2-02-size-64x18-64x18-0001.i420
-8227cf283a27277fbab3d7826e340337  vp90-2-02-size-64x18-64x18-0002.i420
-a5551b16db948e395537310d12128e76  vp90-2-02-size-64x18-64x18-0003.i420
-4b57ed07dbc15de9ab6143656b2a7e8e  vp90-2-02-size-64x18-64x18-0004.i420
-a15489495f0acc41f446e9689e4142d6  vp90-2-02-size-64x18-64x18-0005.i420
-b0a0d5d3ff756e8ae19797455432755c  vp90-2-02-size-64x18-64x18-0006.i420
-094a440243d36edcdd3e9d0d070de011  vp90-2-02-size-64x18-64x18-0007.i420
-a780bd61e1abbfbb28581784531608bd  vp90-2-02-size-64x18-64x18-0008.i420
-55886a8c7aad65683aa9366a38382512  vp90-2-02-size-64x18-64x18-0009.i420
-5ae5b24383f66720a62ed1001664051f  vp90-2-02-size-64x18-64x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x32.vp9
deleted file mode 100644
index c80dcf2..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x32_vp9_md5
deleted file mode 100644
index 15e0b11..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-931ab6a2482c3e84bc7ef8dfbc251307  vp90-2-02-size-64x32-64x32-0001.i420
-3552a9d8470a64ed627a6dbb799b7811  vp90-2-02-size-64x32-64x32-0002.i420
-cae1863fc606a0e3df3e708b7eefdf99  vp90-2-02-size-64x32-64x32-0003.i420
-4b825a07e235c4708b12a726da8e4cdf  vp90-2-02-size-64x32-64x32-0004.i420
-0dac578ef616a13be2b9db3c0d775524  vp90-2-02-size-64x32-64x32-0005.i420
-bfd47cbab8285f301777351c8bc5553c  vp90-2-02-size-64x32-64x32-0006.i420
-f29f9a0cfeaaae3bdeb26933bc7c17dc  vp90-2-02-size-64x32-64x32-0007.i420
-c7f3a4d24dcf72ef195a402eff77d8f6  vp90-2-02-size-64x32-64x32-0008.i420
-88ede6207441a7953cf893032c353663  vp90-2-02-size-64x32-64x32-0009.i420
-258f4e86541813e3edb1fe5332ff4ab1  vp90-2-02-size-64x32-64x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x34.vp9
deleted file mode 100644
index ddd6d64..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x34_vp9_md5
deleted file mode 100644
index 2727525..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-68d00958a78e6252dd75d632806e2022  vp90-2-02-size-64x34-64x34-0001.i420
-f7b6266e74200a669eecd241db787ee2  vp90-2-02-size-64x34-64x34-0002.i420
-c8b88d43aee037857310edeb74bc66f4  vp90-2-02-size-64x34-64x34-0003.i420
-c6d9a52baf3ca962574bff1364fcb8dc  vp90-2-02-size-64x34-64x34-0004.i420
-b384fbf3ceef0affa69f5e81681edc6e  vp90-2-02-size-64x34-64x34-0005.i420
-cd473f0c8d1cde98153402123a3ee7cf  vp90-2-02-size-64x34-64x34-0006.i420
-c0f320a23c3e39719a3b3590fe3c2ab5  vp90-2-02-size-64x34-64x34-0007.i420
-751207d15a791728c1022f711a25cd68  vp90-2-02-size-64x34-64x34-0008.i420
-7396df89a0d88044cf7527420d193636  vp90-2-02-size-64x34-64x34-0009.i420
-b772dd247838b0c3ed12713447894323  vp90-2-02-size-64x34-64x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x64.vp9
deleted file mode 100644
index af3b43d..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x64_vp9_md5
deleted file mode 100644
index 9733f63..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-35f17db9076fa20368fddfa01543c746  vp90-2-02-size-64x64-64x64-0001.i420
-61cd775dfc177262da9a91d3912e6718  vp90-2-02-size-64x64-64x64-0002.i420
-8b8cf175f91425d703332b22b46c1c0e  vp90-2-02-size-64x64-64x64-0003.i420
-6041afbdd81e228f8f16384d3f9e988e  vp90-2-02-size-64x64-64x64-0004.i420
-d30bd08897b50f518920014c7fa55df9  vp90-2-02-size-64x64-64x64-0005.i420
-fb67222a183876b502f93e48bb779b70  vp90-2-02-size-64x64-64x64-0006.i420
-60830425ca1dcf3df4ee9c6cd75f066a  vp90-2-02-size-64x64-64x64-0007.i420
-3e178df858f7fcaa2552a1c5c719b5cc  vp90-2-02-size-64x64-64x64-0008.i420
-66718eb0c3981beb7c1119df8a2cd27e  vp90-2-02-size-64x64-64x64-0009.i420
-7c1912448c7756f7451888050760d73d  vp90-2-02-size-64x64-64x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_64x66.vp9
deleted file mode 100644
index eecb1c0..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_64x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_64x66_vp9_md5
deleted file mode 100644
index 1c4d7e9..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_64x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-88587de65acfc85ff56daac8ef5d12e6  vp90-2-02-size-64x66-64x66-0001.i420
-be41f6c788b929b5b6b27c5674f40abd  vp90-2-02-size-64x66-64x66-0002.i420
-04ab3f88ca062a6911405fd84c7e9de4  vp90-2-02-size-64x66-64x66-0003.i420
-231436e0a68d19d3882f285d38aca3fb  vp90-2-02-size-64x66-64x66-0004.i420
-1a067e147a6740bb4ce57c4184437eea  vp90-2-02-size-64x66-64x66-0005.i420
-be0c47e06c7e9439570473adf4713f5f  vp90-2-02-size-64x66-64x66-0006.i420
-a213b0611247eafab0711748c25e88a0  vp90-2-02-size-64x66-64x66-0007.i420
-b1df495aa3afb74399f91c74b527b93c  vp90-2-02-size-64x66-64x66-0008.i420
-46319f21069541e1ee1652621b957860  vp90-2-02-size-64x66-64x66-0009.i420
-313517a5721b2b14683e7eefc83e51b1  vp90-2-02-size-64x66-64x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x08.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x08.vp9
deleted file mode 100644
index 3b05d4f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x08.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x08_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x08_vp9_md5
deleted file mode 100644
index 1879fe4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x08_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-3b16847e60786706fc339abc452746ff  vp90-2-02-size-66x08-66x8-0001.i420
-365a5951cb127d6df183fe5d5000f493  vp90-2-02-size-66x08-66x8-0002.i420
-6d4bceb815ca7717c4a3f86a6670703a  vp90-2-02-size-66x08-66x8-0003.i420
-5a0a03d4788934285448c85788ae8d71  vp90-2-02-size-66x08-66x8-0004.i420
-8712f9a82d07447e7a0d0a37ddc3858d  vp90-2-02-size-66x08-66x8-0005.i420
-cff32e6c183c16962207a86d7c6cf0a0  vp90-2-02-size-66x08-66x8-0006.i420
-dc933d90f87110651d7efb39854d3d46  vp90-2-02-size-66x08-66x8-0007.i420
-d1299562a022521f0c3cb30668f83b6d  vp90-2-02-size-66x08-66x8-0008.i420
-5054254ca125d7c7e6df4001397170cd  vp90-2-02-size-66x08-66x8-0009.i420
-a6bd7c7c0b02afa8d25f911ec847c61a  vp90-2-02-size-66x08-66x8-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x10.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x10.vp9
deleted file mode 100644
index 32c62e4..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x10.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x10_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x10_vp9_md5
deleted file mode 100644
index 56a9c16..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x10_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-7cbd8c6b2fb35c0c3063cb7a379944c9  vp90-2-02-size-66x10-66x10-0001.i420
-14062e74b98bed1ca982f408bc14326c  vp90-2-02-size-66x10-66x10-0002.i420
-f6d6868d849aa74b27df1c5f40c7096e  vp90-2-02-size-66x10-66x10-0003.i420
-719c8d7e3769466ee8e3dca3f4747a0e  vp90-2-02-size-66x10-66x10-0004.i420
-a72e1a7a4c82ec09ea77f87b0e6f25aa  vp90-2-02-size-66x10-66x10-0005.i420
-a5163d142b429afa155cc2f1401a0b8a  vp90-2-02-size-66x10-66x10-0006.i420
-27762d813dd1f80d6aaed5f197124fa5  vp90-2-02-size-66x10-66x10-0007.i420
-02e94454660f3528abbde8f50e94288f  vp90-2-02-size-66x10-66x10-0008.i420
-1d57dcfa57a55d96f14cfe471aac2e0b  vp90-2-02-size-66x10-66x10-0009.i420
-7804477923c0cd067bd09ebca3529775  vp90-2-02-size-66x10-66x10-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x16.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x16.vp9
deleted file mode 100644
index 6a0d1ac..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x16.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x16_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x16_vp9_md5
deleted file mode 100644
index 2aae0a2..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x16_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fa2f292d273c37dc2804a70d1cae1e9d  vp90-2-02-size-66x16-66x16-0001.i420
-ba75d90652c021bc7ca061352e6e94ce  vp90-2-02-size-66x16-66x16-0002.i420
-e65d9a205bd17d100e50c7b6a7ea772d  vp90-2-02-size-66x16-66x16-0003.i420
-46f9e9ff891576b9462f21d48b7b9e2b  vp90-2-02-size-66x16-66x16-0004.i420
-d23cedacf3a37cf6b2774e0b18b6b9d7  vp90-2-02-size-66x16-66x16-0005.i420
-84329f7716a6db5a7e64a68a1155bfc6  vp90-2-02-size-66x16-66x16-0006.i420
-ad62286b0e13f4e54df4445cdd4fd4e3  vp90-2-02-size-66x16-66x16-0007.i420
-4511529eb24b21eb63e280070f888642  vp90-2-02-size-66x16-66x16-0008.i420
-4e1c122df1785e0e9134c43c85082e05  vp90-2-02-size-66x16-66x16-0009.i420
-ac3a3747a00be3f9f58155648fcf9b24  vp90-2-02-size-66x16-66x16-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x18.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x18.vp9
deleted file mode 100644
index e2535f0..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x18.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x18_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x18_vp9_md5
deleted file mode 100644
index 05e3eaf..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x18_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fda5ad9bf70a51b3a41bdcabf2cce32a  vp90-2-02-size-66x18-66x18-0001.i420
-91916fb20ad542a7a3ad276e6505f9b0  vp90-2-02-size-66x18-66x18-0002.i420
-e18e5d11aec483c76afd68f7e64415a4  vp90-2-02-size-66x18-66x18-0003.i420
-c13da01c2b6c09101bda7af93ad5fd07  vp90-2-02-size-66x18-66x18-0004.i420
-ed8d2568b2ad9c7bd980cba0d3b95cff  vp90-2-02-size-66x18-66x18-0005.i420
-e6f3cf312b69d37579e77f2e52cc936b  vp90-2-02-size-66x18-66x18-0006.i420
-e509f3682e9c4bcdb0889e044b1979b7  vp90-2-02-size-66x18-66x18-0007.i420
-acc3945e557cd7a9642f08a656444976  vp90-2-02-size-66x18-66x18-0008.i420
-44ddd03aa8f03ba393f12fc6a1b3fc17  vp90-2-02-size-66x18-66x18-0009.i420
-fdd3e68132c742d9f0cf0ea6fff2a074  vp90-2-02-size-66x18-66x18-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x32.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x32.vp9
deleted file mode 100644
index 445d975..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x32.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x32_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x32_vp9_md5
deleted file mode 100644
index 996f32b..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x32_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-013cd22aea6bfeccc8ec809abd52be5c  vp90-2-02-size-66x32-66x32-0001.i420
-0980adfb0ef879b3c960797272f025ad  vp90-2-02-size-66x32-66x32-0002.i420
-d1411ffa0429befb8c71d3ab45acee92  vp90-2-02-size-66x32-66x32-0003.i420
-6c6f825379eaf21709a45be77def7a63  vp90-2-02-size-66x32-66x32-0004.i420
-bab632ef00a080739a41c692f2b21c3a  vp90-2-02-size-66x32-66x32-0005.i420
-fc0f6045aca252f2e904730227b8f337  vp90-2-02-size-66x32-66x32-0006.i420
-c8dbea209329463bfd9238a11b8d5b17  vp90-2-02-size-66x32-66x32-0007.i420
-457247bf4186ed8459e0a1564f0e68f2  vp90-2-02-size-66x32-66x32-0008.i420
-baa55e20bd7c73960b080d8a0c8db4d5  vp90-2-02-size-66x32-66x32-0009.i420
-dc8933e8edc98cd0cfca44ae22997c62  vp90-2-02-size-66x32-66x32-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x34.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x34.vp9
deleted file mode 100644
index 8705e9f..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x34.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x34_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x34_vp9_md5
deleted file mode 100644
index ca0e251..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x34_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-6821eb3fcd1d10db32eff70468dcf9c1  vp90-2-02-size-66x34-66x34-0001.i420
-ed0094d347d9f250d46b4903cbc14801  vp90-2-02-size-66x34-66x34-0002.i420
-fd018555dc9a62b8074d46e7c0fd0b40  vp90-2-02-size-66x34-66x34-0003.i420
-05d5baf9f2e62bbeeb3809a099e84147  vp90-2-02-size-66x34-66x34-0004.i420
-7a150c265214269c08e05fe4f296122d  vp90-2-02-size-66x34-66x34-0005.i420
-9a7ae61d4bb125ee4c4ccce9cc1c3664  vp90-2-02-size-66x34-66x34-0006.i420
-5a88fd6d96dcbc4255e98dfe19ff96b8  vp90-2-02-size-66x34-66x34-0007.i420
-4192c273a46b2b196c871ead0e61ec71  vp90-2-02-size-66x34-66x34-0008.i420
-e79ebfc47e755f5db221f392c3216278  vp90-2-02-size-66x34-66x34-0009.i420
-b995c5f483a2e553baf4f66d1a47fc57  vp90-2-02-size-66x34-66x34-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x64.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x64.vp9
deleted file mode 100644
index c91df34..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x64.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x64_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x64_vp9_md5
deleted file mode 100644
index 9802722..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x64_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-929086fbb3e117bd53110b64c1ee915b  vp90-2-02-size-66x64-66x64-0001.i420
-9ed45f5e40dd2393434e14a0c0160c63  vp90-2-02-size-66x64-66x64-0002.i420
-5cdade692b1baf23e61896da18e3e44f  vp90-2-02-size-66x64-66x64-0003.i420
-11a2ebac61a3f826ec41c8031899e55c  vp90-2-02-size-66x64-66x64-0004.i420
-621a1e0142b94d14db9c2121553a11fb  vp90-2-02-size-66x64-66x64-0005.i420
-029a29590f7255f1bc9ff9b7a000ca25  vp90-2-02-size-66x64-66x64-0006.i420
-5fde42becf6bf054d04e2a0fa1b2d55e  vp90-2-02-size-66x64-66x64-0007.i420
-5b8ba552cef1931e1412fb4f3420748b  vp90-2-02-size-66x64-66x64-0008.i420
-d41cd7d418f6ec1db802a01a90cfee1e  vp90-2-02-size-66x64-66x64-0009.i420
-cea99c93a84a82edff8c6069d131453f  vp90-2-02-size-66x64-66x64-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x66.vp9 b/tests/tests/media/res/raw/vp90_2_02_size_66x66.vp9
deleted file mode 100644
index e50c30a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x66.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_66x66_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_66x66_vp9_md5
deleted file mode 100644
index 4cf3ed2..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_66x66_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-69f9028d52f95d2e7f986c57b19fc018  vp90-2-02-size-66x66-66x66-0001.i420
-068e611f62b3f6222f6b1699748c8fbf  vp90-2-02-size-66x66-66x66-0002.i420
-3d3fec78ff2274241a7958f17a773a19  vp90-2-02-size-66x66-66x66-0003.i420
-93d71ef1a2d00c7e70e76ccc1859143d  vp90-2-02-size-66x66-66x66-0004.i420
-5a35a640d52bc0930825b963b0b9e830  vp90-2-02-size-66x66-66x66-0005.i420
-782223239e6b1ca1bedbd25d9652a07c  vp90-2-02-size-66x66-66x66-0006.i420
-a4b5e8a319cbc9a12d3e36127c7f0fbb  vp90-2-02-size-66x66-66x66-0007.i420
-a3e2d9a78fa42b3c817aadfd31fd2d16  vp90-2-02-size-66x66-66x66-0008.i420
-e9fc6b83535735f46006f3e4b376755f  vp90-2-02-size-66x66-66x66-0009.i420
-80223f600dfe86021bd0e83fecdc4b2b  vp90-2-02-size-66x66-66x66-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_02_size_lf_1920x1080_vp9_md5 b/tests/tests/media/res/raw/vp90_2_02_size_lf_1920x1080_vp9_md5
deleted file mode 100644
index 557ac7a..0000000
--- a/tests/tests/media/res/raw/vp90_2_02_size_lf_1920x1080_vp9_md5
+++ /dev/null
@@ -1,217 +0,0 @@
-3fb5a1b268b017332fda7fa981032c2c  vp90-2-02-size-lf-1920x1080-1920x1080-0001.i420
-7380f42c862bb0418274010f71f8291f  vp90-2-02-size-lf-1920x1080-1920x1080-0002.i420
-1931968e92c34f693582d1ae28e7a145  vp90-2-02-size-lf-1920x1080-1920x1080-0003.i420
-40606221248726f3412d8e08e489a94f  vp90-2-02-size-lf-1920x1080-1920x1080-0004.i420
-5ecd3fd1d4b607e3d84fb597a948d84b  vp90-2-02-size-lf-1920x1080-1920x1080-0005.i420
-db805d6f9289f1525c4ea594bf323fdc  vp90-2-02-size-lf-1920x1080-1920x1080-0006.i420
-7584c857279bfcf6e5e1e29557c2a6f0  vp90-2-02-size-lf-1920x1080-1920x1080-0007.i420
-bf436864c58c4d2db1d9b31ce06a8f70  vp90-2-02-size-lf-1920x1080-1920x1080-0008.i420
-9712ccf78bcddc0c44c221c2767e1f28  vp90-2-02-size-lf-1920x1080-1920x1080-0009.i420
-3071176342e59678d99dd8686336e476  vp90-2-02-size-lf-1920x1080-1920x1080-0010.i420
-92cfa56092e8e4d5269de441d31ec739  vp90-2-02-size-lf-1920x1080-1920x1080-0011.i420
-d0bc77ad1997bc38f312846a40d11a16  vp90-2-02-size-lf-1920x1080-1920x1080-0012.i420
-c656c39e3527eee973033b42d4b9deef  vp90-2-02-size-lf-1920x1080-1920x1080-0013.i420
-725ccfe5d0736997aa78f7d948692cdb  vp90-2-02-size-lf-1920x1080-1920x1080-0014.i420
-51f2245ebc2da1e3bdd0708e9d18e1eb  vp90-2-02-size-lf-1920x1080-1920x1080-0015.i420
-530c48d99fad9cddad22ee67ba4fd4d4  vp90-2-02-size-lf-1920x1080-1920x1080-0016.i420
-d55a6ebe71df8d47ac0f2b2f243f740a  vp90-2-02-size-lf-1920x1080-1920x1080-0017.i420
-aa84ff7d5dc665441376f8a75bd9bf05  vp90-2-02-size-lf-1920x1080-1920x1080-0018.i420
-70459811c09abf51e7e421656bff1939  vp90-2-02-size-lf-1920x1080-1920x1080-0019.i420
-bb69e3d69ef55a6d19506dd556168901  vp90-2-02-size-lf-1920x1080-1920x1080-0020.i420
-4f1daad761f0949509ffd9873ca03cd4  vp90-2-02-size-lf-1920x1080-1920x1080-0021.i420
-37a037e9de60b411701fda7706db37d6  vp90-2-02-size-lf-1920x1080-1920x1080-0022.i420
-09869838e806717791fe867b018d18ff  vp90-2-02-size-lf-1920x1080-1920x1080-0023.i420
-367385d264306ddd25231bb9f8681160  vp90-2-02-size-lf-1920x1080-1920x1080-0024.i420
-42c9da4939d435fcec3def2fa2bc5e26  vp90-2-02-size-lf-1920x1080-1920x1080-0025.i420
-26da302e6e86a632dfa8d8a78e83e269  vp90-2-02-size-lf-1920x1080-1920x1080-0026.i420
-8387287bfa4e62dd575941fab6f95f96  vp90-2-02-size-lf-1920x1080-1920x1080-0027.i420
-7fcc408015aed7f70c0c2321b61d166d  vp90-2-02-size-lf-1920x1080-1920x1080-0028.i420
-2394b1c14a156421cc7b30fa95c1a49b  vp90-2-02-size-lf-1920x1080-1920x1080-0029.i420
-34d91c69395380155f6f1020cda78bf9  vp90-2-02-size-lf-1920x1080-1920x1080-0030.i420
-3f081ccd624b2648b7fde66e23b05e1d  vp90-2-02-size-lf-1920x1080-1920x1080-0031.i420
-ca08738b7c81f2f10ea2f65bf5fd7876  vp90-2-02-size-lf-1920x1080-1920x1080-0032.i420
-f65c4dc7c172666ba3bb9bd402d5767c  vp90-2-02-size-lf-1920x1080-1920x1080-0033.i420
-d7ea91467fea6c268b6cd8da9067d12b  vp90-2-02-size-lf-1920x1080-1920x1080-0034.i420
-9888aa4a9b3ff09ada838b5ab0f1216c  vp90-2-02-size-lf-1920x1080-1920x1080-0035.i420
-015d788822a605d03877454c8ffd065a  vp90-2-02-size-lf-1920x1080-1920x1080-0036.i420
-d9d6a53eed5627764c107aafaa64d9a8  vp90-2-02-size-lf-1920x1080-1920x1080-0037.i420
-0b4a40dc0a6a1f5caf16ddd4dde26186  vp90-2-02-size-lf-1920x1080-1920x1080-0038.i420
-4a3f4c2e6d559a1a93b50e716dddf0bf  vp90-2-02-size-lf-1920x1080-1920x1080-0039.i420
-d10f631f4a15b6f1060233a6519eefcc  vp90-2-02-size-lf-1920x1080-1920x1080-0040.i420
-cc650873b637c244cb1415e39051d013  vp90-2-02-size-lf-1920x1080-1920x1080-0041.i420
-44a697f932e97b7f53a989e429fdca29  vp90-2-02-size-lf-1920x1080-1920x1080-0042.i420
-a09c7c567353412a36776398975fbe6a  vp90-2-02-size-lf-1920x1080-1920x1080-0043.i420
-49e3469e2b27fc776bcc0e146910ce2b  vp90-2-02-size-lf-1920x1080-1920x1080-0044.i420
-dd3261b098648b62fa0eab900b0056ba  vp90-2-02-size-lf-1920x1080-1920x1080-0045.i420
-853f90bb3e23e837ad0cb33106c2256f  vp90-2-02-size-lf-1920x1080-1920x1080-0046.i420
-0df1eadd74d643e029188f242af2f533  vp90-2-02-size-lf-1920x1080-1920x1080-0047.i420
-c1d3b56a0a622b176b81400421e87176  vp90-2-02-size-lf-1920x1080-1920x1080-0048.i420
-3c723084af1b727f78fdb9a0e5912a58  vp90-2-02-size-lf-1920x1080-1920x1080-0049.i420
-9806a519be5c399ae8c2b816772786ec  vp90-2-02-size-lf-1920x1080-1920x1080-0050.i420
-f25fd27140575595c5f944446e57e502  vp90-2-02-size-lf-1920x1080-1920x1080-0051.i420
-8c8e4f402372d76e2844794d2ddada43  vp90-2-02-size-lf-1920x1080-1920x1080-0052.i420
-c2cce3cc8291978008779f567e912361  vp90-2-02-size-lf-1920x1080-1920x1080-0053.i420
-d3d2819296938ded08b07b2206387afd  vp90-2-02-size-lf-1920x1080-1920x1080-0054.i420
-fce62f1e083bf305f966696617549fc8  vp90-2-02-size-lf-1920x1080-1920x1080-0055.i420
-70ccdb87e5d4458ab60fb6b7a263880f  vp90-2-02-size-lf-1920x1080-1920x1080-0056.i420
-a8def4b2a416924ac1a8933901e6cdee  vp90-2-02-size-lf-1920x1080-1920x1080-0057.i420
-a4f09f6e2f534716e0ab92c094cd0525  vp90-2-02-size-lf-1920x1080-1920x1080-0058.i420
-91e264c9da9dd14b631ef6483a458ead  vp90-2-02-size-lf-1920x1080-1920x1080-0059.i420
-8506e8b6033f50212c7a4fb751074667  vp90-2-02-size-lf-1920x1080-1920x1080-0060.i420
-eb14b107652f8f71ff06b1f73fbc8ec7  vp90-2-02-size-lf-1920x1080-1920x1080-0061.i420
-4684a67783e8663bdf275352108f4eef  vp90-2-02-size-lf-1920x1080-1920x1080-0062.i420
-9568285e9a9542f5a708a31e2e157c5b  vp90-2-02-size-lf-1920x1080-1920x1080-0063.i420
-b5349702a8cb8679a362ba8bc550bf7c  vp90-2-02-size-lf-1920x1080-1920x1080-0064.i420
-fb7920dc58fd81ddf221fc9031fbc19f  vp90-2-02-size-lf-1920x1080-1920x1080-0065.i420
-b8f752ad92003e481c94beb3b8599214  vp90-2-02-size-lf-1920x1080-1920x1080-0066.i420
-3d93fc99118832ac7c3897f3e9b3a82e  vp90-2-02-size-lf-1920x1080-1920x1080-0067.i420
-98003f945aa8ba7aae4d9f6255002f62  vp90-2-02-size-lf-1920x1080-1920x1080-0068.i420
-a18ff6d6fa7645f922de2f3ba4053f49  vp90-2-02-size-lf-1920x1080-1920x1080-0069.i420
-1232126ef24ff4787b11b32223d34018  vp90-2-02-size-lf-1920x1080-1920x1080-0070.i420
-a83f92c62e008939b3de91cdf9c1282f  vp90-2-02-size-lf-1920x1080-1920x1080-0071.i420
-cd47127ea0b864e5636222b40cdb5fbe  vp90-2-02-size-lf-1920x1080-1920x1080-0072.i420
-544233ce095abea8ffe427a603224ddd  vp90-2-02-size-lf-1920x1080-1920x1080-0073.i420
-7192883aca7eda74dd7e61d1cc6f6e2e  vp90-2-02-size-lf-1920x1080-1920x1080-0074.i420
-e8db34581dd264810ad683cd6475cf23  vp90-2-02-size-lf-1920x1080-1920x1080-0075.i420
-c215af24670915f3a123beb970ccba22  vp90-2-02-size-lf-1920x1080-1920x1080-0076.i420
-40d89931ddef819030a46d81e114f0b5  vp90-2-02-size-lf-1920x1080-1920x1080-0077.i420
-064781c2e9e9d564c9098be2aa5b6299  vp90-2-02-size-lf-1920x1080-1920x1080-0078.i420
-9ebab2d14446bdd11b62a6b308889b64  vp90-2-02-size-lf-1920x1080-1920x1080-0079.i420
-77ca0761cab449ea90bc8b1e1de5ae3a  vp90-2-02-size-lf-1920x1080-1920x1080-0080.i420
-74cb71b2755157dc7c1ef211b2346270  vp90-2-02-size-lf-1920x1080-1920x1080-0081.i420
-23ce88228df42b9e69ad3f4f25dd20cf  vp90-2-02-size-lf-1920x1080-1920x1080-0082.i420
-52ac5c9e14482dfde27ad838145c5986  vp90-2-02-size-lf-1920x1080-1920x1080-0083.i420
-929381d60199bb8c250324ca96323008  vp90-2-02-size-lf-1920x1080-1920x1080-0084.i420
-94f9ca3acbe3ed61bffec3f48e1dc43a  vp90-2-02-size-lf-1920x1080-1920x1080-0085.i420
-955a4095051cdf3699e5385396a04d69  vp90-2-02-size-lf-1920x1080-1920x1080-0086.i420
-dd784f3a18eae98cae4f795f854d6f03  vp90-2-02-size-lf-1920x1080-1920x1080-0087.i420
-1ebeb7d3d528292c8ae1b54b30692c81  vp90-2-02-size-lf-1920x1080-1920x1080-0088.i420
-f38b83c5b2827c4efddcb6777fd6cd5d  vp90-2-02-size-lf-1920x1080-1920x1080-0089.i420
-011dff2cf18e5b4bac6035edf57372d6  vp90-2-02-size-lf-1920x1080-1920x1080-0090.i420
-a1e8ae0f840b6aeddf283f44aa57262e  vp90-2-02-size-lf-1920x1080-1920x1080-0091.i420
-bf8f75c177756e4e8c8ad0d494b7921c  vp90-2-02-size-lf-1920x1080-1920x1080-0092.i420
-d3e9bf1a44f61e47a3d0f4ca04921a11  vp90-2-02-size-lf-1920x1080-1920x1080-0093.i420
-874f5b4db9dfdb78d9a654a9ce3da4ba  vp90-2-02-size-lf-1920x1080-1920x1080-0094.i420
-a8f7ef85e67a1b3c6c730565e0e1ab3e  vp90-2-02-size-lf-1920x1080-1920x1080-0095.i420
-33d6e20c9921719b4dcd9ccdcf242ebf  vp90-2-02-size-lf-1920x1080-1920x1080-0096.i420
-ee13704be5bb72bc91e05dc07154c8b4  vp90-2-02-size-lf-1920x1080-1920x1080-0097.i420
-8edfa18ab4a51243581302b7b12655c5  vp90-2-02-size-lf-1920x1080-1920x1080-0098.i420
-4d71c47f48e498c525b3a2907b4dad10  vp90-2-02-size-lf-1920x1080-1920x1080-0099.i420
-6de62f06881c7db2e37391f3928f9ac1  vp90-2-02-size-lf-1920x1080-1920x1080-0100.i420
-70f76a47c7ed5568ff4d21c53c58482e  vp90-2-02-size-lf-1920x1080-1920x1080-0101.i420
-e7faf1645e75a6d0927336c08a018a34  vp90-2-02-size-lf-1920x1080-1920x1080-0102.i420
-e206df8ed03f809e31f704863851ec77  vp90-2-02-size-lf-1920x1080-1920x1080-0103.i420
-03eb13cf9426514e58deeda33f4766d0  vp90-2-02-size-lf-1920x1080-1920x1080-0104.i420
-e06bc2064d306de26356f6d67c2bc21b  vp90-2-02-size-lf-1920x1080-1920x1080-0105.i420
-dd8a993039b6d9c78e2f03c7efcb4984  vp90-2-02-size-lf-1920x1080-1920x1080-0106.i420
-26cb793df8bc7f1ddcd9bd897e877ef0  vp90-2-02-size-lf-1920x1080-1920x1080-0107.i420
-7e3d32618b104c9c47d4464aa2df4709  vp90-2-02-size-lf-1920x1080-1920x1080-0108.i420
-64b1e12d7b87decd877e6c23ffd275d7  vp90-2-02-size-lf-1920x1080-1920x1080-0109.i420
-323ddc3a19c198f7768dacaf6faad602  vp90-2-02-size-lf-1920x1080-1920x1080-0110.i420
-126d984b9bdaf3397ea4ebec52775e7f  vp90-2-02-size-lf-1920x1080-1920x1080-0111.i420
-76a4586be73d0401c339790c1045abab  vp90-2-02-size-lf-1920x1080-1920x1080-0112.i420
-68466c976fb0309ada2cc7bc514c7d78  vp90-2-02-size-lf-1920x1080-1920x1080-0113.i420
-38135b5505f21ec8d23f97cb29ef1161  vp90-2-02-size-lf-1920x1080-1920x1080-0114.i420
-d657d27a111e9d81b1fbedc7f9c035c9  vp90-2-02-size-lf-1920x1080-1920x1080-0115.i420
-f399d1dc319f560206f09ca5fb59c837  vp90-2-02-size-lf-1920x1080-1920x1080-0116.i420
-269b8a8582e28e11ca3d21dc0f4dc2a6  vp90-2-02-size-lf-1920x1080-1920x1080-0117.i420
-3550fd48042d272f051bb4a6fc76c9df  vp90-2-02-size-lf-1920x1080-1920x1080-0118.i420
-5be1f4ed7eea3b62d6c55003ded2906a  vp90-2-02-size-lf-1920x1080-1920x1080-0119.i420
-7c607aade4b3451f9a081367584ae5f7  vp90-2-02-size-lf-1920x1080-1920x1080-0120.i420
-a724b1ee8504955503aca7af81425008  vp90-2-02-size-lf-1920x1080-1920x1080-0121.i420
-f58ea230bd73fa111982093742f22055  vp90-2-02-size-lf-1920x1080-1920x1080-0122.i420
-8ad4a70efa7bbc936049de2cd5b973b8  vp90-2-02-size-lf-1920x1080-1920x1080-0123.i420
-4ecbe738e3d31d546332ae248e6ba075  vp90-2-02-size-lf-1920x1080-1920x1080-0124.i420
-507a6fe3e6c95dfec41950382ed49f0e  vp90-2-02-size-lf-1920x1080-1920x1080-0125.i420
-833dc6d11dbfc1fa8465b292a66afa32  vp90-2-02-size-lf-1920x1080-1920x1080-0126.i420
-0ac2d4983e91ba36a69d11ae9a32f31a  vp90-2-02-size-lf-1920x1080-1920x1080-0127.i420
-0e61c144b842d46b7f63f433dc7be802  vp90-2-02-size-lf-1920x1080-1920x1080-0128.i420
-e93dc18eddef0a93ba652ed898fc4898  vp90-2-02-size-lf-1920x1080-1920x1080-0129.i420
-6745736a1f8ce3dae8532a007023ac6a  vp90-2-02-size-lf-1920x1080-1920x1080-0130.i420
-75f9739dc3e003fdb356221a5654c0e4  vp90-2-02-size-lf-1920x1080-1920x1080-0131.i420
-d189cf9fffb8118f31a294deab61585a  vp90-2-02-size-lf-1920x1080-1920x1080-0132.i420
-2738879f462aca9015e212e644420b7b  vp90-2-02-size-lf-1920x1080-1920x1080-0133.i420
-eff4b276b3c4f454b0822ae4f8d88a0b  vp90-2-02-size-lf-1920x1080-1920x1080-0134.i420
-2e461ae7d93bb4cfd4e072a35b651d17  vp90-2-02-size-lf-1920x1080-1920x1080-0135.i420
-bf9a82ea0e3628e4fd1eeb03cb1f50bc  vp90-2-02-size-lf-1920x1080-1920x1080-0136.i420
-c8dff3e50d37f9e1ce8b92a0762c57be  vp90-2-02-size-lf-1920x1080-1920x1080-0137.i420
-51e6f9efc88a795de0a4d16a6a71d497  vp90-2-02-size-lf-1920x1080-1920x1080-0138.i420
-761b5005e7f8ab8185ccedb660ded250  vp90-2-02-size-lf-1920x1080-1920x1080-0139.i420
-f98da0c03436b1c759d368b9d42db679  vp90-2-02-size-lf-1920x1080-1920x1080-0140.i420
-dec3590e5c11737670703e73ed69783f  vp90-2-02-size-lf-1920x1080-1920x1080-0141.i420
-0481f4aec0c9eafb3f9a10cf80c0b056  vp90-2-02-size-lf-1920x1080-1920x1080-0142.i420
-67478cb1e4de699d529046f983105477  vp90-2-02-size-lf-1920x1080-1920x1080-0143.i420
-80f371f7fa43cab698b832a4010e5a88  vp90-2-02-size-lf-1920x1080-1920x1080-0144.i420
-4e9095ab5204a387f63118949bb90f9e  vp90-2-02-size-lf-1920x1080-1920x1080-0145.i420
-f943ce3342b90b01fabd3d5bc779bb01  vp90-2-02-size-lf-1920x1080-1920x1080-0146.i420
-1b12d49c5685111fa4faa8edc8b683ad  vp90-2-02-size-lf-1920x1080-1920x1080-0147.i420
-8ee848ae53f7b86a254e49562bbfe849  vp90-2-02-size-lf-1920x1080-1920x1080-0148.i420
-2d83c434c41329ae3a8b56c10a27f2e7  vp90-2-02-size-lf-1920x1080-1920x1080-0149.i420
-af6a63fc13b919dabedd86db735990f3  vp90-2-02-size-lf-1920x1080-1920x1080-0150.i420
-a807fce07a52227202dcdcbbfb4eb1bc  vp90-2-02-size-lf-1920x1080-1920x1080-0151.i420
-95aebea323577226684914c6b74830c5  vp90-2-02-size-lf-1920x1080-1920x1080-0152.i420
-65d64ebdaadb116608f06add0e8fada2  vp90-2-02-size-lf-1920x1080-1920x1080-0153.i420
-b064af776f8c562ea6b41e0c74710869  vp90-2-02-size-lf-1920x1080-1920x1080-0154.i420
-26291594af160501023eb0035443b7c3  vp90-2-02-size-lf-1920x1080-1920x1080-0155.i420
-79a414d560d3e36314c981f1e30e053b  vp90-2-02-size-lf-1920x1080-1920x1080-0156.i420
-3455e01e2cd146aefbad54cb032b15f1  vp90-2-02-size-lf-1920x1080-1920x1080-0157.i420
-eaa2e271058202cbc0933dea8f46f570  vp90-2-02-size-lf-1920x1080-1920x1080-0158.i420
-42da27c94aaa56ae27fddf75bf51f47f  vp90-2-02-size-lf-1920x1080-1920x1080-0159.i420
-746cca013c7b6df41e3233214ca7a5d7  vp90-2-02-size-lf-1920x1080-1920x1080-0160.i420
-ab20ad95d6b3e0d689186cde51e4a86a  vp90-2-02-size-lf-1920x1080-1920x1080-0161.i420
-b8a02e44615a697da3de946e8cf4e8e4  vp90-2-02-size-lf-1920x1080-1920x1080-0162.i420
-4df5b10cb1c784362035f69bdb183be0  vp90-2-02-size-lf-1920x1080-1920x1080-0163.i420
-f2e5dd616e8125b1b46c410141180fb0  vp90-2-02-size-lf-1920x1080-1920x1080-0164.i420
-e09ab4ca180cb477a3a87bc8fd1e2ce0  vp90-2-02-size-lf-1920x1080-1920x1080-0165.i420
-5ee431b26d6c83689bf18eb8d805f31e  vp90-2-02-size-lf-1920x1080-1920x1080-0166.i420
-bca8aaf030c959ac37c3e084be6cf8b3  vp90-2-02-size-lf-1920x1080-1920x1080-0167.i420
-8dd977323d8a5dba5c98c6671821e066  vp90-2-02-size-lf-1920x1080-1920x1080-0168.i420
-aed8ef2c20f9726542c78fade0fb0968  vp90-2-02-size-lf-1920x1080-1920x1080-0169.i420
-e19775ba9c5b6dbf1e84fd0531bd1f2a  vp90-2-02-size-lf-1920x1080-1920x1080-0170.i420
-a69c5daf6e6e3b579a3430fc95f37dac  vp90-2-02-size-lf-1920x1080-1920x1080-0171.i420
-3503bc793f86b75d9aa1c9c51b2d0f6f  vp90-2-02-size-lf-1920x1080-1920x1080-0172.i420
-bdcee02e245b92acf06588370df2e5e6  vp90-2-02-size-lf-1920x1080-1920x1080-0173.i420
-8bbb9460d0f419969491669664891d88  vp90-2-02-size-lf-1920x1080-1920x1080-0174.i420
-d4b993d87c2f4042c0b647e4e50cca38  vp90-2-02-size-lf-1920x1080-1920x1080-0175.i420
-5acb9f10167b208a32babbe56fd07587  vp90-2-02-size-lf-1920x1080-1920x1080-0176.i420
-958900bb713559d272470f1e85cffcda  vp90-2-02-size-lf-1920x1080-1920x1080-0177.i420
-f355f1858fd2c8a4932dfd6d6cfe7673  vp90-2-02-size-lf-1920x1080-1920x1080-0178.i420
-45caac733e395f63c82c9d8ab050c858  vp90-2-02-size-lf-1920x1080-1920x1080-0179.i420
-8b05c2c352c4adc5cabc0184a1f510f5  vp90-2-02-size-lf-1920x1080-1920x1080-0180.i420
-167c3fe4df204bab9cceb17ae655aa61  vp90-2-02-size-lf-1920x1080-1920x1080-0181.i420
-3859339e9a63d0e05797f0de535f7be8  vp90-2-02-size-lf-1920x1080-1920x1080-0182.i420
-2d5cc539454cb6aace19ab9bba60b066  vp90-2-02-size-lf-1920x1080-1920x1080-0183.i420
-f51299a0601fb1621d2de6b0e2391a9a  vp90-2-02-size-lf-1920x1080-1920x1080-0184.i420
-92b0ed2528c0756b0c84721a306ba61b  vp90-2-02-size-lf-1920x1080-1920x1080-0185.i420
-8f1870cce38718b02d0a4e26a5a2619e  vp90-2-02-size-lf-1920x1080-1920x1080-0186.i420
-e0ed74a244b8698baaefd837ab1590ff  vp90-2-02-size-lf-1920x1080-1920x1080-0187.i420
-c8b10e2ac68bd0106e34a57943f23e12  vp90-2-02-size-lf-1920x1080-1920x1080-0188.i420
-f5e505e3d681763fd447214aed863ab9  vp90-2-02-size-lf-1920x1080-1920x1080-0189.i420
-c2cc70d65ba1c13c5e07a1d28611792a  vp90-2-02-size-lf-1920x1080-1920x1080-0190.i420
-e518aac5c551f7c09652c25905cce41f  vp90-2-02-size-lf-1920x1080-1920x1080-0191.i420
-66379f7a3b2de153486a76b459e2ce3b  vp90-2-02-size-lf-1920x1080-1920x1080-0192.i420
-552afad8181d6d138e2e62c971a10a42  vp90-2-02-size-lf-1920x1080-1920x1080-0193.i420
-ac21d5c2ef3ccaabbaa9f08fcc9d0db8  vp90-2-02-size-lf-1920x1080-1920x1080-0194.i420
-f67af966e3fa79a6fce48b7d9e1fb593  vp90-2-02-size-lf-1920x1080-1920x1080-0195.i420
-dd6331e4361f8b8bd45d571db2e0344b  vp90-2-02-size-lf-1920x1080-1920x1080-0196.i420
-14a0db3c0a39b7431c337622ed4078a5  vp90-2-02-size-lf-1920x1080-1920x1080-0197.i420
-8d3394abad260b5e4e24abe4a898cb7b  vp90-2-02-size-lf-1920x1080-1920x1080-0198.i420
-e085ce3274d77fa874ab70183353b4c1  vp90-2-02-size-lf-1920x1080-1920x1080-0199.i420
-de083fffb4226ec227d3aa9c873dfcf7  vp90-2-02-size-lf-1920x1080-1920x1080-0200.i420
-4628eff51846a97fb708c4d3753ffee4  vp90-2-02-size-lf-1920x1080-1920x1080-0201.i420
-b480e4409fa8ca9c2e0d4bd57b7e8cf6  vp90-2-02-size-lf-1920x1080-1920x1080-0202.i420
-ff21164cc573b6f79739165b61b68dd0  vp90-2-02-size-lf-1920x1080-1920x1080-0203.i420
-ec391026b77527ed48029adfbd1afc93  vp90-2-02-size-lf-1920x1080-1920x1080-0204.i420
-23186dd93e32603c3709aa3419963ca9  vp90-2-02-size-lf-1920x1080-1920x1080-0205.i420
-6a1968207b37594cc82736f086a0a023  vp90-2-02-size-lf-1920x1080-1920x1080-0206.i420
-57358a332af03e5d96d8c1cd5e4a497d  vp90-2-02-size-lf-1920x1080-1920x1080-0207.i420
-584ac2ecc56e1a9f0f1a5356b161a7a6  vp90-2-02-size-lf-1920x1080-1920x1080-0208.i420
-f566d1e385f25ef9b74989cbe7bbca7b  vp90-2-02-size-lf-1920x1080-1920x1080-0209.i420
-a4bf059ee8207d1edeebc3193e8db8e0  vp90-2-02-size-lf-1920x1080-1920x1080-0210.i420
-cc5948fa18d6e73afa253eedbfaecd41  vp90-2-02-size-lf-1920x1080-1920x1080-0211.i420
-61d44c8bfca18b6742fed974366898b8  vp90-2-02-size-lf-1920x1080-1920x1080-0212.i420
-c48d67da0d72daaf635226b9e30e05e3  vp90-2-02-size-lf-1920x1080-1920x1080-0213.i420
-b4596a68e708f304875fd2306fec56e9  vp90-2-02-size-lf-1920x1080-1920x1080-0214.i420
-b59be425ebea3d15b4be140e552ab944  vp90-2-02-size-lf-1920x1080-1920x1080-0215.i420
-1e966f137918375ae060d4c49cf38664  vp90-2-02-size-lf-1920x1080-1920x1080-0216.i420
-0ff25f8e98719fd57dc31d391bb930c4  vp90-2-02-size-lf-1920x1080-1920x1080-0217.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_deltaq.vp9 b/tests/tests/media/res/raw/vp90_2_03_deltaq.vp9
deleted file mode 100644
index 9033b23..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_deltaq.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_deltaq_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_deltaq_vp9_md5
deleted file mode 100644
index aca350c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_deltaq_vp9_md5
+++ /dev/null
@@ -1,2 +0,0 @@
-2f90d606edc511c8c960530dd915cb98  vp90-2-03-deltaq-352x240-0001.i420
-7fd451a057d6341b2b0d116f59e41a13  vp90-2-03-deltaq-352x240-0002.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x196.vp9
deleted file mode 100644
index 06988f1..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x196_vp9_md5
deleted file mode 100644
index 847972f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-14cc1c34b8106e35238d4650a9123852  vp90-2-03-size-196x196-196x196-0001.i420
-66e0bb9136ea24e30b781a4610b428a1  vp90-2-03-size-196x196-196x196-0002.i420
-8e36679c20a3a3e974fdacf7a9343817  vp90-2-03-size-196x196-196x196-0003.i420
-2669fd03ce7ce01f4fc9db23e06fffdb  vp90-2-03-size-196x196-196x196-0004.i420
-46ced29eb6edf2136c8ee19e9a87380f  vp90-2-03-size-196x196-196x196-0005.i420
-4e4138b65a30bc56cd18663a1799f98f  vp90-2-03-size-196x196-196x196-0006.i420
-580b0431b5f808c67e50ed34e62f39ad  vp90-2-03-size-196x196-196x196-0007.i420
-1339bbe256d8499ab17d6a550f7dac70  vp90-2-03-size-196x196-196x196-0008.i420
-89b9dac29a4c4136249c40a3763dc114  vp90-2-03-size-196x196-196x196-0009.i420
-a735d341d7df9dcd0b6e51a82b813f61  vp90-2-03-size-196x196-196x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x198.vp9
deleted file mode 100644
index cffe250..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x198_vp9_md5
deleted file mode 100644
index 33056c5..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d2bd2dfaf2ac22b3f2499844f228d89a  vp90-2-03-size-196x198-196x198-0001.i420
-e066448baeb39da04b22d4d2ebd27b0a  vp90-2-03-size-196x198-196x198-0002.i420
-aace53c0ecca2596c51dd5e70da7abc4  vp90-2-03-size-196x198-196x198-0003.i420
-077256d024ab101918d10ae61142f203  vp90-2-03-size-196x198-196x198-0004.i420
-e2bfdad36b0365d41dc6813a371111ee  vp90-2-03-size-196x198-196x198-0005.i420
-17495af68b0a2c075899849382f3b046  vp90-2-03-size-196x198-196x198-0006.i420
-7853db163344798e5c37672adaac92d8  vp90-2-03-size-196x198-196x198-0007.i420
-7b2ee2e1ca709c58457c7d818e47c95c  vp90-2-03-size-196x198-196x198-0008.i420
-f7eb3ce10561628f932861358a30b414  vp90-2-03-size-196x198-196x198-0009.i420
-3182374f5aa539fd0faa44ed4a7492e5  vp90-2-03-size-196x198-196x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x200.vp9
deleted file mode 100644
index 53e2c03..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x200_vp9_md5
deleted file mode 100644
index 7746aba..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b2f2ac3e3833ae1b4dd075fe00210373  vp90-2-03-size-196x200-196x200-0001.i420
-c0cce05e56a07111fe62553fa3a87074  vp90-2-03-size-196x200-196x200-0002.i420
-626aab3de03242073e03504e166b4697  vp90-2-03-size-196x200-196x200-0003.i420
-574d2c810f0bbfac57f1f06c2b97445c  vp90-2-03-size-196x200-196x200-0004.i420
-7d5bc5860bd1422d08396fe080452099  vp90-2-03-size-196x200-196x200-0005.i420
-5d47bbfb0f5cdecfe8415ca2caddc206  vp90-2-03-size-196x200-196x200-0006.i420
-fbef6a0fa51029d0475975945ccf4b36  vp90-2-03-size-196x200-196x200-0007.i420
-c9179c153bcb2a8e9d17ed04e5e2c39c  vp90-2-03-size-196x200-196x200-0008.i420
-107d796592cf2140d4d492beadba2d68  vp90-2-03-size-196x200-196x200-0009.i420
-eee46f9ee67fc1121bffb63aeb7c768f  vp90-2-03-size-196x200-196x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x202.vp9
deleted file mode 100644
index 87394bd..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x202_vp9_md5
deleted file mode 100644
index 351cf95..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-7109d2ef160828ece26337f36fcfc092  vp90-2-03-size-196x202-196x202-0001.i420
-bdaa6612f81a956d9b20d55a04df8346  vp90-2-03-size-196x202-196x202-0002.i420
-15eb75495d2713a64415b990b058d5ca  vp90-2-03-size-196x202-196x202-0003.i420
-b997c84553475ba84e8ba3d7ee19ae4e  vp90-2-03-size-196x202-196x202-0004.i420
-63a8badd691bcf643cf676d029ce8a6c  vp90-2-03-size-196x202-196x202-0005.i420
-b8ca23d9b3418c4c36040a215b2b7917  vp90-2-03-size-196x202-196x202-0006.i420
-1be0da18386c35e4a5e5d5d32d9a4468  vp90-2-03-size-196x202-196x202-0007.i420
-e75a03fa70fe7e6b3a8d8ce7dc8305f1  vp90-2-03-size-196x202-196x202-0008.i420
-cbd2b60df9209025c8e890771a05321d  vp90-2-03-size-196x202-196x202-0009.i420
-c655d6fcc3333917b66358a9ac2b1357  vp90-2-03-size-196x202-196x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x208.vp9
deleted file mode 100644
index d20e7cc..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x208_vp9_md5
deleted file mode 100644
index 94a9277..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-efa2a2a76a0fe709a78e491346cfcf29  vp90-2-03-size-196x208-196x208-0001.i420
-97de85e21b408878853fa870104707d7  vp90-2-03-size-196x208-196x208-0002.i420
-419bd1157e156d3059190d6b561c57dd  vp90-2-03-size-196x208-196x208-0003.i420
-fbb6e01c524fc7c8007c6cfe2c64f467  vp90-2-03-size-196x208-196x208-0004.i420
-7453994c2e9901fa23f295ec0b556f9c  vp90-2-03-size-196x208-196x208-0005.i420
-ba39dc984789fa2c4b833cd88013cc97  vp90-2-03-size-196x208-196x208-0006.i420
-cea5061cac1be18d5f9a9301a5460491  vp90-2-03-size-196x208-196x208-0007.i420
-1c583018c425b1a91949e0c3eb0a4152  vp90-2-03-size-196x208-196x208-0008.i420
-b48be02280ac6f97731af69bcf18de25  vp90-2-03-size-196x208-196x208-0009.i420
-6f8ab465214d8374c9ff77b939da333e  vp90-2-03-size-196x208-196x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x210.vp9
deleted file mode 100644
index c1dfbb3..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x210_vp9_md5
deleted file mode 100644
index eddddaf..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fccc18714a9ed3840bd6e9c6ca4858e5  vp90-2-03-size-196x210-196x210-0001.i420
-a8f6eb43cf6ed670eb180c5051de06f7  vp90-2-03-size-196x210-196x210-0002.i420
-6a9baf9eae6e799deaefd6e801f7ace3  vp90-2-03-size-196x210-196x210-0003.i420
-3bb44c8a45aab088c9887c11bc6a4acf  vp90-2-03-size-196x210-196x210-0004.i420
-0907a7e926be9e54bbb087251b4715d9  vp90-2-03-size-196x210-196x210-0005.i420
-10fef2876c20eb3f9570c0c23e5acc69  vp90-2-03-size-196x210-196x210-0006.i420
-ffe5d2b6d874af0f878075c97940ccfb  vp90-2-03-size-196x210-196x210-0007.i420
-d10fae10144ff88075048827203f7e9c  vp90-2-03-size-196x210-196x210-0008.i420
-bdf35736ac625f2178902c1f24d513c0  vp90-2-03-size-196x210-196x210-0009.i420
-30882bf2c21785be6234b637c4b16b28  vp90-2-03-size-196x210-196x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x224.vp9
deleted file mode 100644
index 605dddf..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x224_vp9_md5
deleted file mode 100644
index 18395ce..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-13263674ea5aa619250dfd139bda872f  vp90-2-03-size-196x224-196x224-0001.i420
-39f5cbd8917f2b3a1df8cf2b786266de  vp90-2-03-size-196x224-196x224-0002.i420
-f9aade31f9e3065f3d5b8645ef099ac6  vp90-2-03-size-196x224-196x224-0003.i420
-124f9664380f092e692b5e881f5a8fcc  vp90-2-03-size-196x224-196x224-0004.i420
-e8e040e417830f5e911537828ace21b7  vp90-2-03-size-196x224-196x224-0005.i420
-84ce09882b9c184a787e8022e6d8c8de  vp90-2-03-size-196x224-196x224-0006.i420
-b1397fd91814e4fdc4f75c89161ced26  vp90-2-03-size-196x224-196x224-0007.i420
-d64f39d64d248f0223ed359e092d46cb  vp90-2-03-size-196x224-196x224-0008.i420
-e04ee663dcc52eebd74255671c6f4ec9  vp90-2-03-size-196x224-196x224-0009.i420
-955303cb73bf072c693f37d9778ca2b6  vp90-2-03-size-196x224-196x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_196x226.vp9
deleted file mode 100644
index 29f7381..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_196x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_196x226_vp9_md5
deleted file mode 100644
index 1c250d6..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_196x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5cb240f10761f59687612ed589759800  vp90-2-03-size-196x226-196x226-0001.i420
-9d8d5b57336ddfa5c9c5100a0302197d  vp90-2-03-size-196x226-196x226-0002.i420
-9db74997d23b16f527c63e88795331dc  vp90-2-03-size-196x226-196x226-0003.i420
-52758cd901533e790334d464bee516da  vp90-2-03-size-196x226-196x226-0004.i420
-40e671b9b85d07b13acba85eb64bbbaa  vp90-2-03-size-196x226-196x226-0005.i420
-8524b2cd2c9bb3e41c6167f8269e75d2  vp90-2-03-size-196x226-196x226-0006.i420
-ff194ad6fa180fde86cc05a99c0580ec  vp90-2-03-size-196x226-196x226-0007.i420
-22ab303cb37745a73c227cd7d1c70003  vp90-2-03-size-196x226-196x226-0008.i420
-01986c58e82e0b5194418f5b75a8599c  vp90-2-03-size-196x226-196x226-0009.i420
-eedfc9c14cbf3fa10402dbed52103848  vp90-2-03-size-196x226-196x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x196.vp9
deleted file mode 100644
index 78d6b72..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x196_vp9_md5
deleted file mode 100644
index fc8de27..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c980866a6f17d4107ce128ee112d74cf  vp90-2-03-size-198x196-198x196-0001.i420
-d4d5d2a10e73f1d09919355dc4d63d48  vp90-2-03-size-198x196-198x196-0002.i420
-82c76ed020acb68ff9d8bd81899aa6f8  vp90-2-03-size-198x196-198x196-0003.i420
-8330705fa354fb5838af56dcf9cc0980  vp90-2-03-size-198x196-198x196-0004.i420
-e47b63d839a592e6372d18249bf5bc0c  vp90-2-03-size-198x196-198x196-0005.i420
-b6095b6f752a50e96cab52e7c3fd52f3  vp90-2-03-size-198x196-198x196-0006.i420
-fc4786f48b6ee31043d94f79c5c8a54f  vp90-2-03-size-198x196-198x196-0007.i420
-7d3d06c96496bd5ab44fe5489877771d  vp90-2-03-size-198x196-198x196-0008.i420
-5b96de089a9faa2dc01697fe9dd97f7f  vp90-2-03-size-198x196-198x196-0009.i420
-d7361203b4c264067dcb7bf6912e8df2  vp90-2-03-size-198x196-198x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x198.vp9
deleted file mode 100644
index b66e0d8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x198_vp9_md5
deleted file mode 100644
index 7eae1b0..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-ee0760611da9938e72f551d219671c76  vp90-2-03-size-198x198-198x198-0001.i420
-c512cb8a864c25318254438c7170f373  vp90-2-03-size-198x198-198x198-0002.i420
-aaea10aeb7dfd1f9f6dc77adccfcd56f  vp90-2-03-size-198x198-198x198-0003.i420
-fb4e68ce202d9c6ecbddc6fe50b1cd7b  vp90-2-03-size-198x198-198x198-0004.i420
-57a803d02f0d71ec4c3c17a112574525  vp90-2-03-size-198x198-198x198-0005.i420
-526d0beaf7ef721c3a6ae8bf3505fd78  vp90-2-03-size-198x198-198x198-0006.i420
-972ab31f81dbb79c2273bcfc98569e8b  vp90-2-03-size-198x198-198x198-0007.i420
-e1f05d62691bd1a9494d57449417415c  vp90-2-03-size-198x198-198x198-0008.i420
-bc39a559b25e5a1ac698e0101bd6bf29  vp90-2-03-size-198x198-198x198-0009.i420
-04caed04ac21c76af873e21899860fb2  vp90-2-03-size-198x198-198x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x200.vp9
deleted file mode 100644
index 5f6d62e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x200_vp9_md5
deleted file mode 100644
index 777aeef..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-fb0e8171b0f91d9b2ceb5430db27a67b  vp90-2-03-size-198x200-198x200-0001.i420
-73f121e6aa0e6290cfd06ac9b033c772  vp90-2-03-size-198x200-198x200-0002.i420
-4113897efc44f49f5169a579bee03596  vp90-2-03-size-198x200-198x200-0003.i420
-aec1d4cf1a15e12b689980cfe136d5d6  vp90-2-03-size-198x200-198x200-0004.i420
-1322af65f647254330120e67ddae38bd  vp90-2-03-size-198x200-198x200-0005.i420
-5d28c1684451812c9db41433e6286d85  vp90-2-03-size-198x200-198x200-0006.i420
-33843fc49d1d8655520c2f42332222ca  vp90-2-03-size-198x200-198x200-0007.i420
-92a8125d8c75eaf6159d5f431c5c71bf  vp90-2-03-size-198x200-198x200-0008.i420
-5bc96553842f65a3e37f012b72b580f5  vp90-2-03-size-198x200-198x200-0009.i420
-de5eb6299ee5034dc3b01cdc94bf810a  vp90-2-03-size-198x200-198x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x202.vp9
deleted file mode 100644
index 89f03df..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x202_vp9_md5
deleted file mode 100644
index a5eef00..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f5e1cf4cc56742fadddf42189a3f65e3  vp90-2-03-size-198x202-198x202-0001.i420
-f3e8ca2c8deb29a6b5bfe415b39c901e  vp90-2-03-size-198x202-198x202-0002.i420
-89c513049e41e145bca46a7f7119567c  vp90-2-03-size-198x202-198x202-0003.i420
-419089035739e84f1aa14ccdf34edcb1  vp90-2-03-size-198x202-198x202-0004.i420
-4962c98c23b16b9257869a8ad5138731  vp90-2-03-size-198x202-198x202-0005.i420
-fde9e858ec895c36c2d8071e69f68db6  vp90-2-03-size-198x202-198x202-0006.i420
-42e1271915f31a00be3627fa866ce3ee  vp90-2-03-size-198x202-198x202-0007.i420
-c15f794933f913861a6d0041ff2fccdb  vp90-2-03-size-198x202-198x202-0008.i420
-35dab245ba952dc6fddc1a9668c30b28  vp90-2-03-size-198x202-198x202-0009.i420
-30bb4ef77cdde9cf5aea0f1287183b23  vp90-2-03-size-198x202-198x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x208.vp9
deleted file mode 100644
index 49eca9f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x208_vp9_md5
deleted file mode 100644
index eccf93d..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d45b561f81cbfcca8a1dddbc2bf8ca31  vp90-2-03-size-198x208-198x208-0001.i420
-3664f63b2e59e380622caadb7a05545e  vp90-2-03-size-198x208-198x208-0002.i420
-0662fa199512320704efecc10af1aaa4  vp90-2-03-size-198x208-198x208-0003.i420
-d8dc00882e73be89d0585663892cbcff  vp90-2-03-size-198x208-198x208-0004.i420
-ff64b8d50b7c5b484a06dab09a26147c  vp90-2-03-size-198x208-198x208-0005.i420
-1771b6a55112eb7ea10885d1390339cc  vp90-2-03-size-198x208-198x208-0006.i420
-0d5944e8a13e3c2faffb562bbe2671a8  vp90-2-03-size-198x208-198x208-0007.i420
-744bed3a88407b75a8ff27a1b0cec64e  vp90-2-03-size-198x208-198x208-0008.i420
-3887415f2ab10d2a265c4a413e7060b9  vp90-2-03-size-198x208-198x208-0009.i420
-7dd683019b19b464bc0436f41e0b7c87  vp90-2-03-size-198x208-198x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x210.vp9
deleted file mode 100644
index 97dfd89..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x210_vp9_md5
deleted file mode 100644
index 0c19c2f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-8525a27170982c059d5904c1af3b43fb  vp90-2-03-size-198x210-198x210-0001.i420
-c4eb329733913360384d3917a58f6f36  vp90-2-03-size-198x210-198x210-0002.i420
-ec118b87c9cba0e4bd89fd43567cca4e  vp90-2-03-size-198x210-198x210-0003.i420
-7e57c6caba7924823977e2c9bc11f7fa  vp90-2-03-size-198x210-198x210-0004.i420
-f77ffb7228a5eda848acc40ff636ecad  vp90-2-03-size-198x210-198x210-0005.i420
-c5dddafbe3badcbbcaaebe97076e0394  vp90-2-03-size-198x210-198x210-0006.i420
-34d69ae2e5b4c4fbcc51627237c9abc5  vp90-2-03-size-198x210-198x210-0007.i420
-d9c63fa8b18d6c54e5fa31db866c06cc  vp90-2-03-size-198x210-198x210-0008.i420
-7ab392764a399328bf35977539e3148a  vp90-2-03-size-198x210-198x210-0009.i420
-7fbb7bae3ec775298aaa49a286dfb9d1  vp90-2-03-size-198x210-198x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x224.vp9
deleted file mode 100644
index 360ab98..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x224_vp9_md5
deleted file mode 100644
index 12c6979..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5f69230bfd8bb485bd85552b18339fc0  vp90-2-03-size-198x224-198x224-0001.i420
-f5c365774fc1d0bffd5025ce2e931aaf  vp90-2-03-size-198x224-198x224-0002.i420
-2898234103c3624e6470ae82c916e000  vp90-2-03-size-198x224-198x224-0003.i420
-d82a7fa705180b68a8ee8cb7de0cdd2d  vp90-2-03-size-198x224-198x224-0004.i420
-144a162d418deae62883a2cc4c341b4c  vp90-2-03-size-198x224-198x224-0005.i420
-b3419a48385e42ca15717289ff2daa1c  vp90-2-03-size-198x224-198x224-0006.i420
-d6306b5737f88f989bf2e6a1084a94fe  vp90-2-03-size-198x224-198x224-0007.i420
-5669761d7417b52b3cf81d44a13e3fb7  vp90-2-03-size-198x224-198x224-0008.i420
-3f730b8658d7a6657d1af38c75357512  vp90-2-03-size-198x224-198x224-0009.i420
-27df68d515148f732325bf821037d59f  vp90-2-03-size-198x224-198x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_198x226.vp9
deleted file mode 100644
index c4d1a7c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_198x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_198x226_vp9_md5
deleted file mode 100644
index 31305ef..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_198x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-412c33a8fd71c99e68e6701b050b107c  vp90-2-03-size-198x226-198x226-0001.i420
-8e69483ff8a094096dd550b30be20dde  vp90-2-03-size-198x226-198x226-0002.i420
-b8df87ab3d2613be31a3743e34d7e794  vp90-2-03-size-198x226-198x226-0003.i420
-ec4b08a4014950f1fe04e83f8a790af0  vp90-2-03-size-198x226-198x226-0004.i420
-030da2b60627d879730108826ce6632c  vp90-2-03-size-198x226-198x226-0005.i420
-03aab0c9b4d75bc0b47fa5237e9efe3d  vp90-2-03-size-198x226-198x226-0006.i420
-fd01e369df258f340eb8e486c07ae136  vp90-2-03-size-198x226-198x226-0007.i420
-1c301f0e60c96008fd7b6e8de1ebaa29  vp90-2-03-size-198x226-198x226-0008.i420
-912723f43b2b36366c3e6ab122d31801  vp90-2-03-size-198x226-198x226-0009.i420
-b2774a66f7aa0fb7dd7e64b0d67818cd  vp90-2-03-size-198x226-198x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x196.vp9
deleted file mode 100644
index 2d8ea87..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x196_vp9_md5
deleted file mode 100644
index 0b38c2b..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-651a0627c6cdaee8b46e1f8c4121a368  vp90-2-03-size-200x196-200x196-0001.i420
-3e63075148df16f69c933cf6c63e078c  vp90-2-03-size-200x196-200x196-0002.i420
-edf18e52b7d52af2bb7594ed358542d8  vp90-2-03-size-200x196-200x196-0003.i420
-30284124756d00d10f4f8428206ceab8  vp90-2-03-size-200x196-200x196-0004.i420
-6f6ecde53cd0ea5298f4529d396460c6  vp90-2-03-size-200x196-200x196-0005.i420
-0431d389278957fbef3e72f69f3ce008  vp90-2-03-size-200x196-200x196-0006.i420
-a047c60c4c60d2ea1f79c86dc98cdf8e  vp90-2-03-size-200x196-200x196-0007.i420
-dceda8bf128a8cdcadfa6c5db49cde51  vp90-2-03-size-200x196-200x196-0008.i420
-d8a6283637f5abda17e0bf150eac2983  vp90-2-03-size-200x196-200x196-0009.i420
-33dca31ef26fdd0daf9971c8de685d01  vp90-2-03-size-200x196-200x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x198.vp9
deleted file mode 100644
index e910dea6..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x198_vp9_md5
deleted file mode 100644
index 055811c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d4b3578d800c747bcabaa484a140ffb0  vp90-2-03-size-200x198-200x198-0001.i420
-a40f6f8c384c5dc3d5546d960bb6d9e5  vp90-2-03-size-200x198-200x198-0002.i420
-e270ae8754d9906dd88b1c7d05280801  vp90-2-03-size-200x198-200x198-0003.i420
-bde7fde5012840c5e188f3b29f4f0003  vp90-2-03-size-200x198-200x198-0004.i420
-8f8510c1130615b64fb8469af66ff678  vp90-2-03-size-200x198-200x198-0005.i420
-79b9d4e0c64f82a6e9540394222a593d  vp90-2-03-size-200x198-200x198-0006.i420
-34852ac9ca5c6bfa51736296784343c7  vp90-2-03-size-200x198-200x198-0007.i420
-b055218509dbed644113642f8f0ac8a8  vp90-2-03-size-200x198-200x198-0008.i420
-1628866b436f1c4b892474025226e545  vp90-2-03-size-200x198-200x198-0009.i420
-3fdec760c04e30c90e74afb38dbf757c  vp90-2-03-size-200x198-200x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x200.vp9
deleted file mode 100644
index 039ccef..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x200_vp9_md5
deleted file mode 100644
index b6d78f8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b339f4e563afadb25f43b8c05b12dc03  vp90-2-03-size-200x200-200x200-0001.i420
-3bd5280e7fb42400085b0b1dbba1905e  vp90-2-03-size-200x200-200x200-0002.i420
-acf1c84cabff763fe2073d2c1f183bfc  vp90-2-03-size-200x200-200x200-0003.i420
-eaa4983b6baf907efb11d137644569d2  vp90-2-03-size-200x200-200x200-0004.i420
-8a1871c8dc38a19dfd4ac571ad7f39be  vp90-2-03-size-200x200-200x200-0005.i420
-0be539bd51f5f364828dd0abc70360be  vp90-2-03-size-200x200-200x200-0006.i420
-df60622d2c9f294f61d738be9e3bd16c  vp90-2-03-size-200x200-200x200-0007.i420
-22b3f1d51ddf92c7d2add305ba0ef405  vp90-2-03-size-200x200-200x200-0008.i420
-01ba29be721e64a5a50526de0797c7d3  vp90-2-03-size-200x200-200x200-0009.i420
-7b7aa7fa0e58202b3104671375762587  vp90-2-03-size-200x200-200x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x202.vp9
deleted file mode 100644
index 10ed70e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x202_vp9_md5
deleted file mode 100644
index f93617e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c4a13df44e66f06961dd72fc990439e9  vp90-2-03-size-200x202-200x202-0001.i420
-81c73b8d3806ad96af8f422914a253f8  vp90-2-03-size-200x202-200x202-0002.i420
-05f77526125e802be9cb306e375ded6e  vp90-2-03-size-200x202-200x202-0003.i420
-ab2e224840ff89abec2c675a23a73094  vp90-2-03-size-200x202-200x202-0004.i420
-c30f58f88819eb57102678b169e15188  vp90-2-03-size-200x202-200x202-0005.i420
-33e5e2799eb4a9c548c8372fd6769db9  vp90-2-03-size-200x202-200x202-0006.i420
-fa53c1c7e60bd1d00335af542ec69ed7  vp90-2-03-size-200x202-200x202-0007.i420
-534cafe658af10a314d6d084e55b3620  vp90-2-03-size-200x202-200x202-0008.i420
-502529e4fbecc8b890abf665fa21f53c  vp90-2-03-size-200x202-200x202-0009.i420
-bf1f73c6e77370bc51a770c8ae87bd12  vp90-2-03-size-200x202-200x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x208.vp9
deleted file mode 100644
index a78b114..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x208_vp9_md5
deleted file mode 100644
index 4611a4a..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-702748bec18c500dd41d93ae74b11d56  vp90-2-03-size-200x208-200x208-0001.i420
-4fb542190dab2fd673724d47451ff6ee  vp90-2-03-size-200x208-200x208-0002.i420
-dbb4d27d52797dab67e39d32092c9d44  vp90-2-03-size-200x208-200x208-0003.i420
-e4a0ed1572207b7ba433896bba711148  vp90-2-03-size-200x208-200x208-0004.i420
-28ec32bc165f4f9d455efec8a7aa8737  vp90-2-03-size-200x208-200x208-0005.i420
-a95910575a6423abffb28ca38c384b34  vp90-2-03-size-200x208-200x208-0006.i420
-791f1c558c5467725f4614a75a8a687e  vp90-2-03-size-200x208-200x208-0007.i420
-cfd3e12f84f7a811966721e890228313  vp90-2-03-size-200x208-200x208-0008.i420
-824c5fdf938551c28ac1c996645ae52f  vp90-2-03-size-200x208-200x208-0009.i420
-7465917fdd0206e393968232a0ec5193  vp90-2-03-size-200x208-200x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x210.vp9
deleted file mode 100644
index 27a3f405..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x210_vp9_md5
deleted file mode 100644
index 75c190c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-31ef44bd12ae702f306c55eba10d2ba7  vp90-2-03-size-200x210-200x210-0001.i420
-83e9d913f5aa058d79a81047ca45e4a2  vp90-2-03-size-200x210-200x210-0002.i420
-b5e21313b859f1e2c67aaac5fefc9f68  vp90-2-03-size-200x210-200x210-0003.i420
-959d63c1b219c3479af673a9a8b8d82c  vp90-2-03-size-200x210-200x210-0004.i420
-ffcfaf42b69c7cd92f6e3c21987ff7df  vp90-2-03-size-200x210-200x210-0005.i420
-e9667d3ee4d8179da44de4fbffcb7df2  vp90-2-03-size-200x210-200x210-0006.i420
-5e2c841bcf4ec6f3a05020d36986fe5b  vp90-2-03-size-200x210-200x210-0007.i420
-19fe287c30bd4c90b00a9631409568c0  vp90-2-03-size-200x210-200x210-0008.i420
-58a8843e50b19860a0a91e1e1bb63bfd  vp90-2-03-size-200x210-200x210-0009.i420
-0ebd31e18597a567f96645acbb2500cf  vp90-2-03-size-200x210-200x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x224.vp9
deleted file mode 100644
index 61d8df6..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x224_vp9_md5
deleted file mode 100644
index 0f64dfc..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-315d69847bf752a84231a368278eb0b6  vp90-2-03-size-200x224-200x224-0001.i420
-d245738f8627fc345ab38a547bc7d352  vp90-2-03-size-200x224-200x224-0002.i420
-982681cdca448919c2eead94435772ad  vp90-2-03-size-200x224-200x224-0003.i420
-7b67b2d96476e17cd407bbccb19fd070  vp90-2-03-size-200x224-200x224-0004.i420
-c38dde73ca097049d1fc689e18a49b5d  vp90-2-03-size-200x224-200x224-0005.i420
-525f323b81d780c669a03655bb0d0b56  vp90-2-03-size-200x224-200x224-0006.i420
-5dbeb96f65e383771c1c877ec559044a  vp90-2-03-size-200x224-200x224-0007.i420
-7d96e976265ef0f9faf173376caaa9e9  vp90-2-03-size-200x224-200x224-0008.i420
-6047c805a724701b80a133486aae0e65  vp90-2-03-size-200x224-200x224-0009.i420
-eb8895dd994076a52aa3a0c1758ccbb7  vp90-2-03-size-200x224-200x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_200x226.vp9
deleted file mode 100644
index cc08073..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_200x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_200x226_vp9_md5
deleted file mode 100644
index 42f870c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_200x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e45b6b9dce4a8509b7d26bc3cfdf7c86  vp90-2-03-size-200x226-200x226-0001.i420
-ddb9d5033ecfa2d6e9a5505dce374bda  vp90-2-03-size-200x226-200x226-0002.i420
-52c495d3137143e0bce9382fe5506057  vp90-2-03-size-200x226-200x226-0003.i420
-d09f3d6ad084f2966196acd48246f951  vp90-2-03-size-200x226-200x226-0004.i420
-1556d006d0119a3172b98a500b27f8d0  vp90-2-03-size-200x226-200x226-0005.i420
-904f86cfbcc3fa683d3d7744a286cd88  vp90-2-03-size-200x226-200x226-0006.i420
-b35907456b8ccab0ae8efc8405b04c89  vp90-2-03-size-200x226-200x226-0007.i420
-b7f2648fe0f873f7e9ea4a6d913e45ec  vp90-2-03-size-200x226-200x226-0008.i420
-2da76544bc7e295486c335e17047e12e  vp90-2-03-size-200x226-200x226-0009.i420
-10fd6424caf837d37564ef15f1c6f93d  vp90-2-03-size-200x226-200x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x196.vp9
deleted file mode 100644
index 5961c56..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x196_vp9_md5
deleted file mode 100644
index 1e76804..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1261466179df96099e598e46c50fa7c1  vp90-2-03-size-202x196-202x196-0001.i420
-cc0fe373cd0399cf0c95edf92d9ab01f  vp90-2-03-size-202x196-202x196-0002.i420
-7a2dc0afd06ecfcf54321fb759f57601  vp90-2-03-size-202x196-202x196-0003.i420
-db9c138503d27f87449f870ab07cab03  vp90-2-03-size-202x196-202x196-0004.i420
-ddea2e5e2659e97132a537566d5ed989  vp90-2-03-size-202x196-202x196-0005.i420
-c31e90b5eee032526c4e0603332fd160  vp90-2-03-size-202x196-202x196-0006.i420
-7e5b40f03b905d9ee749d3097a484ea0  vp90-2-03-size-202x196-202x196-0007.i420
-93e9f7defa94ff03c041448ae1e55cea  vp90-2-03-size-202x196-202x196-0008.i420
-aef8e03f0146699faa16ec28dea49dbe  vp90-2-03-size-202x196-202x196-0009.i420
-a651d949b4c8f0e455c6592dc98385f7  vp90-2-03-size-202x196-202x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x198.vp9
deleted file mode 100644
index de8d042..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x198_vp9_md5
deleted file mode 100644
index fa76001..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-181edc4ebeeff7f0527b93b84d5d8efb  vp90-2-03-size-202x198-202x198-0001.i420
-132c71b634fb67eed51fcdef1775b6b2  vp90-2-03-size-202x198-202x198-0002.i420
-fd41144770765fc893adc5843ebe32e4  vp90-2-03-size-202x198-202x198-0003.i420
-77dcbaea101142940b6a78a271842829  vp90-2-03-size-202x198-202x198-0004.i420
-01737c38c1ac711a9744256788211177  vp90-2-03-size-202x198-202x198-0005.i420
-31cd0b5f621daac309c6f249f4c26cd8  vp90-2-03-size-202x198-202x198-0006.i420
-e06d34e570dc46904fdb9eeb55811464  vp90-2-03-size-202x198-202x198-0007.i420
-71bf55030373bde1eaeb52d1e97bfa4a  vp90-2-03-size-202x198-202x198-0008.i420
-e96063ff02e8a23a666222b59391de9c  vp90-2-03-size-202x198-202x198-0009.i420
-5aa0079168ab5069e8a3064f9e2a6d8b  vp90-2-03-size-202x198-202x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x200.vp9
deleted file mode 100644
index 79ec044..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x200_vp9_md5
deleted file mode 100644
index 1e7817ef..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-20c41d4a1271183dbbc7a44e6b90ea80  vp90-2-03-size-202x200-202x200-0001.i420
-bd8c1fba8d8742f4d98b7d5097c8c828  vp90-2-03-size-202x200-202x200-0002.i420
-55cbe06a925009c1b1f9b609b60b4c1d  vp90-2-03-size-202x200-202x200-0003.i420
-78e80c7cf1f142e2dda1bc269b5b3e00  vp90-2-03-size-202x200-202x200-0004.i420
-42ee8157a4c8af6670b81e9324b251e9  vp90-2-03-size-202x200-202x200-0005.i420
-022bdf5a2e1ea5f98503cd25b383ae53  vp90-2-03-size-202x200-202x200-0006.i420
-c2073865386a991da01966878ce1ce6d  vp90-2-03-size-202x200-202x200-0007.i420
-6a5b95cd4eff0836b9180a25f663d36a  vp90-2-03-size-202x200-202x200-0008.i420
-5e5498c357340d4755dc98eb0669f103  vp90-2-03-size-202x200-202x200-0009.i420
-0907d5e4020111b1ecfe707df71bcd8a  vp90-2-03-size-202x200-202x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x202.vp9
deleted file mode 100644
index 27a554c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x202_vp9_md5
deleted file mode 100644
index f5ef776..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-610cef52d35e9c641f2b8c10489c3d12  vp90-2-03-size-202x202-202x202-0001.i420
-1f84062e607d4798b0544739fe0da99c  vp90-2-03-size-202x202-202x202-0002.i420
-ea379947b5c52ea3989dfc3f47c729d9  vp90-2-03-size-202x202-202x202-0003.i420
-1d06b72f06178cbb6bb5d188d22bff43  vp90-2-03-size-202x202-202x202-0004.i420
-25bd41bd7607f88a01aa0cdc336c9975  vp90-2-03-size-202x202-202x202-0005.i420
-86836a95a7a9fb1eefb20f7c5a15a9ab  vp90-2-03-size-202x202-202x202-0006.i420
-d8eb3fecce1b646b9877cd4fcca9f9bf  vp90-2-03-size-202x202-202x202-0007.i420
-a057e0b29e4ac9717452cc478c418c12  vp90-2-03-size-202x202-202x202-0008.i420
-9a3bab91b4f0fff174536b1609c9632c  vp90-2-03-size-202x202-202x202-0009.i420
-d1cd93975f746b6cae490aae31f89e7e  vp90-2-03-size-202x202-202x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x208.vp9
deleted file mode 100644
index 3a532a0..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x208_vp9_md5
deleted file mode 100644
index 7eae1c8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d2128e290be81bb0700ebe19e3faed4f  vp90-2-03-size-202x208-202x208-0001.i420
-dccaecb7e4ddb7e4224221a659af2a43  vp90-2-03-size-202x208-202x208-0002.i420
-be8e0966aaf3a9fe9164f63695dc3b62  vp90-2-03-size-202x208-202x208-0003.i420
-da944fadc3a239c2254678cadb4cf7fa  vp90-2-03-size-202x208-202x208-0004.i420
-3c270f3c02fcbd192b7f896f3f9ee6d9  vp90-2-03-size-202x208-202x208-0005.i420
-0b3ccda0a87c37e40104ae2f1060e8e9  vp90-2-03-size-202x208-202x208-0006.i420
-254253aba91758f302e7177e614596be  vp90-2-03-size-202x208-202x208-0007.i420
-b1501a4e372a5249e74aab77e57a28f1  vp90-2-03-size-202x208-202x208-0008.i420
-c4497fea1cefed5cf2b2908620153d26  vp90-2-03-size-202x208-202x208-0009.i420
-5ba20dfa2400b15b5394f315c5c3707d  vp90-2-03-size-202x208-202x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x210.vp9
deleted file mode 100644
index 69c00a0..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x210_vp9_md5
deleted file mode 100644
index 3d0ee16..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e4663a28cabbfdd3815efda2d38debcc  vp90-2-03-size-202x210-202x210-0001.i420
-3cc7dbec64e9f697f40d740a72c09fc7  vp90-2-03-size-202x210-202x210-0002.i420
-f108981e0ce9c6c501b9ac61d0f1ba44  vp90-2-03-size-202x210-202x210-0003.i420
-63191c7aceb8ac6b030cc1a4b3cda18c  vp90-2-03-size-202x210-202x210-0004.i420
-b0a527ae3aafe94d13573199c6f4944f  vp90-2-03-size-202x210-202x210-0005.i420
-1be14b213ebf1d653468b8c16bae03fb  vp90-2-03-size-202x210-202x210-0006.i420
-44e5a8333a043cd93b9d1cc78e5f188f  vp90-2-03-size-202x210-202x210-0007.i420
-bfd7619f990f20e23b47d0738a6a8449  vp90-2-03-size-202x210-202x210-0008.i420
-800405f45ca5198014ef8d8521b044fa  vp90-2-03-size-202x210-202x210-0009.i420
-dca4eda872349708f54486433efc8225  vp90-2-03-size-202x210-202x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x224.vp9
deleted file mode 100644
index 9e24686..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x224_vp9_md5
deleted file mode 100644
index 50b423d..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1d318f05310f6d40646f23c62c7eafe4  vp90-2-03-size-202x224-202x224-0001.i420
-42870bd73e1a0c5d84b986db3d24f0f0  vp90-2-03-size-202x224-202x224-0002.i420
-afaac676150286143c6fec7992a81467  vp90-2-03-size-202x224-202x224-0003.i420
-128f84400c272628e802c2369b6bf548  vp90-2-03-size-202x224-202x224-0004.i420
-9adc24d69f12349d8b17c84f5c111767  vp90-2-03-size-202x224-202x224-0005.i420
-b33d2f7a1955248652701f2ade8ab55d  vp90-2-03-size-202x224-202x224-0006.i420
-b8acc23721097fce6c8835f5fcfaa6ee  vp90-2-03-size-202x224-202x224-0007.i420
-b63bf9a08e4dc5879bbd91efaec95960  vp90-2-03-size-202x224-202x224-0008.i420
-96e8fe29935266f6bd486b99f917eabc  vp90-2-03-size-202x224-202x224-0009.i420
-54be14f8dde6857867cd4581f8557044  vp90-2-03-size-202x224-202x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_202x226.vp9
deleted file mode 100644
index eff9809..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_202x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_202x226_vp9_md5
deleted file mode 100644
index 88d3400..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_202x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5aa0f439c58c6335cd86d4238a8c4b68  vp90-2-03-size-202x226-202x226-0001.i420
-3616cc306ec05f89d9b0db63200e4abf  vp90-2-03-size-202x226-202x226-0002.i420
-424e98f8ec0ebf2a326a917ee0159bbe  vp90-2-03-size-202x226-202x226-0003.i420
-ed5710e412f056fa8c1a277d86dd45d7  vp90-2-03-size-202x226-202x226-0004.i420
-760b850feab485f0bda6cde9943102bc  vp90-2-03-size-202x226-202x226-0005.i420
-f4bd90ca72aa707f9b68e6192ac230fd  vp90-2-03-size-202x226-202x226-0006.i420
-58e4aad0bc2a9f3fc279df10208bd6f6  vp90-2-03-size-202x226-202x226-0007.i420
-b42f84723dd167d5c544d539275ad537  vp90-2-03-size-202x226-202x226-0008.i420
-5f54feca21331646e68797380260932a  vp90-2-03-size-202x226-202x226-0009.i420
-8e787dd318024aff25af8b4d85040f3c  vp90-2-03-size-202x226-202x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x196.vp9
deleted file mode 100644
index 6f6807f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x196_vp9_md5
deleted file mode 100644
index f32709e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-6195975181969789e101a83a555d13f7  vp90-2-03-size-208x196-208x196-0001.i420
-2aca5e3307d68a5e969564a943b8e723  vp90-2-03-size-208x196-208x196-0002.i420
-aee4b00472ee0b6b7a13e31069181db4  vp90-2-03-size-208x196-208x196-0003.i420
-7808595b650a7c14d8a4800db7c014e0  vp90-2-03-size-208x196-208x196-0004.i420
-746eb763b176286aa875ae06b81118c4  vp90-2-03-size-208x196-208x196-0005.i420
-0e8a78ec061319e27d49ca25e333e017  vp90-2-03-size-208x196-208x196-0006.i420
-ac4432db2bb0971d5f70a7dda1210c19  vp90-2-03-size-208x196-208x196-0007.i420
-78870f4bd767f8ab65d369a5b322735d  vp90-2-03-size-208x196-208x196-0008.i420
-eee9ddd91209348a64259db6a4a3f80c  vp90-2-03-size-208x196-208x196-0009.i420
-c48d21e36a9c0d0d1c64db3f776b3002  vp90-2-03-size-208x196-208x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x198.vp9
deleted file mode 100644
index d6bea55..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x198_vp9_md5
deleted file mode 100644
index a57dc44..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1f1fa3cdf865d8c75183f4ba6203b675  vp90-2-03-size-208x198-208x198-0001.i420
-ead33ead8fea5bd5d831a79f4c75a590  vp90-2-03-size-208x198-208x198-0002.i420
-9a406b4464989fd4bb7cbcb1b18aeaa7  vp90-2-03-size-208x198-208x198-0003.i420
-fab3d228e7032f2cdc440dbfcb17c4c1  vp90-2-03-size-208x198-208x198-0004.i420
-f2f3f8b8d9ece21c359c89245157c613  vp90-2-03-size-208x198-208x198-0005.i420
-321f5a8ecb2cec1780013fe72c237bde  vp90-2-03-size-208x198-208x198-0006.i420
-6f025b1f4ef61d261f05ca149a9470e6  vp90-2-03-size-208x198-208x198-0007.i420
-85abcc8d8e6b5f286ed6aa6c588cf416  vp90-2-03-size-208x198-208x198-0008.i420
-b28d710dd44389f774aa02edd6327d5c  vp90-2-03-size-208x198-208x198-0009.i420
-79374bef9819eecafa7396d70c80be7f  vp90-2-03-size-208x198-208x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x200.vp9
deleted file mode 100644
index 40aebf2..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x200_vp9_md5
deleted file mode 100644
index 35756a2..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-ff2dda3ddbe8b461d960baba0ad132bf  vp90-2-03-size-208x200-208x200-0001.i420
-d6935ac8f2250316f498e8f01afa04fd  vp90-2-03-size-208x200-208x200-0002.i420
-57173ebaef7b21698c62fa959cb40ead  vp90-2-03-size-208x200-208x200-0003.i420
-f354c76d7cf45e9f3adfdde0f6b3b5c9  vp90-2-03-size-208x200-208x200-0004.i420
-fbc968ecd214b01509a76996e45dd09a  vp90-2-03-size-208x200-208x200-0005.i420
-9c314b51a80f2a081adf9b9cc26f5f8a  vp90-2-03-size-208x200-208x200-0006.i420
-f22883a6a5b74ffa4bb16f22d496b5a5  vp90-2-03-size-208x200-208x200-0007.i420
-eb4fa914fc5658d43e32c48a0c39bab3  vp90-2-03-size-208x200-208x200-0008.i420
-d763c0c2f44b68e1e3fe9e165334eb0b  vp90-2-03-size-208x200-208x200-0009.i420
-344e1075a48cd61e79b0550809b4c91f  vp90-2-03-size-208x200-208x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x202.vp9
deleted file mode 100644
index eb6c574..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x202_vp9_md5
deleted file mode 100644
index cd27e7c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e5164f87feadf4b65257f578affc3e04  vp90-2-03-size-208x202-208x202-0001.i420
-6aee5a3b6c3a096dfc1594762b2b248f  vp90-2-03-size-208x202-208x202-0002.i420
-cb1c9dce6fdf7372e0eb2397251f0ade  vp90-2-03-size-208x202-208x202-0003.i420
-4fe5f24c08690c966b6a14ac3422510b  vp90-2-03-size-208x202-208x202-0004.i420
-b22a273814523251b365f3278d8a3a9c  vp90-2-03-size-208x202-208x202-0005.i420
-190d9dff373023a25427fc859545ea24  vp90-2-03-size-208x202-208x202-0006.i420
-a6307f38718ed686cb195e3833ab27ab  vp90-2-03-size-208x202-208x202-0007.i420
-79630bec5a91d69aca42a910413c2800  vp90-2-03-size-208x202-208x202-0008.i420
-2231cec9c03714b8671e5e1456b148c9  vp90-2-03-size-208x202-208x202-0009.i420
-278458f6734a24f2eb9bc877a6e9d7df  vp90-2-03-size-208x202-208x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x208.vp9
deleted file mode 100644
index 16612c0..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x208_vp9_md5
deleted file mode 100644
index 921cbdd..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-6bff7c1f4c5ef8412ebf669852c70de6  vp90-2-03-size-208x208-208x208-0001.i420
-fdfd7a2308de9509a41fed2880a8f0f5  vp90-2-03-size-208x208-208x208-0002.i420
-d8b464811e9c3b8a6db9cc277ac88c59  vp90-2-03-size-208x208-208x208-0003.i420
-b8fa29e79be3126dd74310d6dd09c747  vp90-2-03-size-208x208-208x208-0004.i420
-dad29803fed686887a0873eb78a469c6  vp90-2-03-size-208x208-208x208-0005.i420
-684de29bbf800f52aea4af9850bcc5b3  vp90-2-03-size-208x208-208x208-0006.i420
-06862dbce7571b4487766b179a596e1d  vp90-2-03-size-208x208-208x208-0007.i420
-99582a966bc7070112e214ce7912e485  vp90-2-03-size-208x208-208x208-0008.i420
-a61158581a5719cb0cf13fb3301cb8c4  vp90-2-03-size-208x208-208x208-0009.i420
-9c2295332f34fee3a249262c8ba843bc  vp90-2-03-size-208x208-208x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x210.vp9
deleted file mode 100644
index dfec3e8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x210_vp9_md5
deleted file mode 100644
index ab5c7d8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b15c7e98ddd137237b062cb51667522f  vp90-2-03-size-208x210-208x210-0001.i420
-00c594c68b19ef39a79a38e86853dc64  vp90-2-03-size-208x210-208x210-0002.i420
-e6742abe3d2c178af4298e121391c299  vp90-2-03-size-208x210-208x210-0003.i420
-efe5387b38c32f1c25c0fc9836921074  vp90-2-03-size-208x210-208x210-0004.i420
-e0e696f4c18af09a74e052903db1468c  vp90-2-03-size-208x210-208x210-0005.i420
-f1960270c6704ca47caed63161716025  vp90-2-03-size-208x210-208x210-0006.i420
-a1542d7749cfa447481acd7835db838a  vp90-2-03-size-208x210-208x210-0007.i420
-a91fb10a17d1d056667860cc43c81dae  vp90-2-03-size-208x210-208x210-0008.i420
-b673bfbb722522b4e7b5e9c5b85cc31f  vp90-2-03-size-208x210-208x210-0009.i420
-8b4bb57d3cf609cbf9564a96a6ca6ade  vp90-2-03-size-208x210-208x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x224.vp9
deleted file mode 100644
index b60fb5d..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x224_vp9_md5
deleted file mode 100644
index bcb9657..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-479d07bb96905ad7d5f0ec3ee12b41ba  vp90-2-03-size-208x224-208x224-0001.i420
-4b6555aaed8e5a45879773f1bf87962e  vp90-2-03-size-208x224-208x224-0002.i420
-c5f42cb796dd7b6622957016ca6b502f  vp90-2-03-size-208x224-208x224-0003.i420
-f06c954483560866fbff10bae7ba0785  vp90-2-03-size-208x224-208x224-0004.i420
-af83aff39999852310395fe241ccb49b  vp90-2-03-size-208x224-208x224-0005.i420
-108377d6f30ceba6f2377330af2da38f  vp90-2-03-size-208x224-208x224-0006.i420
-e81e6e0b37a7b92368ede9cab124567c  vp90-2-03-size-208x224-208x224-0007.i420
-59dbe51caaed8e6e825c78c5901fb22c  vp90-2-03-size-208x224-208x224-0008.i420
-24686123ea14c8d1a9b447733df0aaab  vp90-2-03-size-208x224-208x224-0009.i420
-ce2035c49237c8076f8dac0d3f61848e  vp90-2-03-size-208x224-208x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_208x226.vp9
deleted file mode 100644
index 4541cf9..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_208x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_208x226_vp9_md5
deleted file mode 100644
index e0a7e53..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_208x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-33aa4af6153570518c59960a0c959053  vp90-2-03-size-208x226-208x226-0001.i420
-024fa27dee80ad199528052aaa8d42c7  vp90-2-03-size-208x226-208x226-0002.i420
-b949ef118c7e7e62a8b88e2308219ef9  vp90-2-03-size-208x226-208x226-0003.i420
-3061ee13696ced5e10a646fdd5ca6c34  vp90-2-03-size-208x226-208x226-0004.i420
-c4984bd53dcb7b9e2570f2965d077b2f  vp90-2-03-size-208x226-208x226-0005.i420
-d564c35c5caadcfd9f80377fa414af72  vp90-2-03-size-208x226-208x226-0006.i420
-9b7d7b10ee2f3eb7a9ffddcebff45b97  vp90-2-03-size-208x226-208x226-0007.i420
-a0ede7085b04cbb3519d56b2e4347d14  vp90-2-03-size-208x226-208x226-0008.i420
-63d7af745f9e6a34b618db28fe878ffd  vp90-2-03-size-208x226-208x226-0009.i420
-85077809087e7bdfb9215bfcd1f1bbc0  vp90-2-03-size-208x226-208x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x196.vp9
deleted file mode 100644
index a5eca1f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x196_vp9_md5
deleted file mode 100644
index c23a9af..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5c69f80da667bfd20394995e93e4cd2b  vp90-2-03-size-210x196-210x196-0001.i420
-13363cd8e52ca8c1053db1c84c111bc9  vp90-2-03-size-210x196-210x196-0002.i420
-108976afdf99f59276d6f89879e3bdc3  vp90-2-03-size-210x196-210x196-0003.i420
-770ce25985e6b479d52a9185876cfe83  vp90-2-03-size-210x196-210x196-0004.i420
-eba7cbb3c91989aa4c13487ed01675b5  vp90-2-03-size-210x196-210x196-0005.i420
-f391c30a47c33a250dd20cb12f0a6e01  vp90-2-03-size-210x196-210x196-0006.i420
-c38e12de302177d19dd744a3ea227e90  vp90-2-03-size-210x196-210x196-0007.i420
-8c9370439a0b7289919c6ee68e00570f  vp90-2-03-size-210x196-210x196-0008.i420
-ac3748c4b99c4f1aba7430ae12c19cfd  vp90-2-03-size-210x196-210x196-0009.i420
-e5228dc84f7933ccc9306907d737ad3c  vp90-2-03-size-210x196-210x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x198.vp9
deleted file mode 100644
index b11e214..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x198_vp9_md5
deleted file mode 100644
index 7776c06..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-d83ee2413e701ae405a2b74863d4c5a9  vp90-2-03-size-210x198-210x198-0001.i420
-f2ebc0f7dc171e0e5d2911c7ee2df5e1  vp90-2-03-size-210x198-210x198-0002.i420
-e189ef4d8add227352a0d6ee62748ee7  vp90-2-03-size-210x198-210x198-0003.i420
-6dcb1dca1a0e2ba85034aba9f021427e  vp90-2-03-size-210x198-210x198-0004.i420
-e98c633ba8912f6d65374055ec9af543  vp90-2-03-size-210x198-210x198-0005.i420
-82111cb7d5addce16d9bcba9e0a99503  vp90-2-03-size-210x198-210x198-0006.i420
-bbbc73002f794ab0261fe384b2524226  vp90-2-03-size-210x198-210x198-0007.i420
-0bcdc427df47123959f7de9c44fe291e  vp90-2-03-size-210x198-210x198-0008.i420
-505776b3d82e38612393d60b6aa55c1d  vp90-2-03-size-210x198-210x198-0009.i420
-feb93758242b847f3d53bb4c97b0ad9c  vp90-2-03-size-210x198-210x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x200.vp9
deleted file mode 100644
index 93ace8c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x200_vp9_md5
deleted file mode 100644
index 20dea3f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-2465560246c1ee24d937cb9cbc1422f1  vp90-2-03-size-210x200-210x200-0001.i420
-8926b628dcdf2182516822c7d0d778ec  vp90-2-03-size-210x200-210x200-0002.i420
-9bd14d3ebc7fe81c4223116de1b9c2ec  vp90-2-03-size-210x200-210x200-0003.i420
-2d029d8461c20236066c0786950540fb  vp90-2-03-size-210x200-210x200-0004.i420
-39412b6e62de43bd40c58d4e2e38daf8  vp90-2-03-size-210x200-210x200-0005.i420
-3ea211c24f606b29582147bf872994dd  vp90-2-03-size-210x200-210x200-0006.i420
-261c37f88bf7f40549642578d9464aeb  vp90-2-03-size-210x200-210x200-0007.i420
-98551d44de1e23165e05975babb72446  vp90-2-03-size-210x200-210x200-0008.i420
-1d85ad052dd27e7e6bfea5d2babf5176  vp90-2-03-size-210x200-210x200-0009.i420
-ad18b6a3698a3674c2488f927810eb0d  vp90-2-03-size-210x200-210x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x202.vp9
deleted file mode 100644
index e84b816..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x202_vp9_md5
deleted file mode 100644
index 8d7e06e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-5d01848aee2b324f2e356627f9c39532  vp90-2-03-size-210x202-210x202-0001.i420
-b671fe34bc0e5a682baff929d26ea627  vp90-2-03-size-210x202-210x202-0002.i420
-e9a40f87ca5aaa5af9772e286feb9063  vp90-2-03-size-210x202-210x202-0003.i420
-4730f60d4c856e8ad877c0d8b1729ec4  vp90-2-03-size-210x202-210x202-0004.i420
-317fc01349e0984c23d15f97a3a0f442  vp90-2-03-size-210x202-210x202-0005.i420
-aea89116ffe48340d1752d1ad5195529  vp90-2-03-size-210x202-210x202-0006.i420
-14694ba65b6308e5f5571486b62ca1cc  vp90-2-03-size-210x202-210x202-0007.i420
-53c6102d877c9a30eaa20ddc45207ea0  vp90-2-03-size-210x202-210x202-0008.i420
-7d1e898b1bead878224e8ff15d624bd9  vp90-2-03-size-210x202-210x202-0009.i420
-37b684bfae5dbd33e8dbb8332b94ce8a  vp90-2-03-size-210x202-210x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x208.vp9
deleted file mode 100644
index c69fb3f..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x208_vp9_md5
deleted file mode 100644
index 72f9259..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-1156d318c00d299cf5bdc7e485966dab  vp90-2-03-size-210x208-210x208-0001.i420
-a8094f8f1e7e04e54251bee8c4c800ce  vp90-2-03-size-210x208-210x208-0002.i420
-e2a07d99ffe1cfe6b9fce36e93677fe1  vp90-2-03-size-210x208-210x208-0003.i420
-63d179b00816dbad75b778d2c23955c6  vp90-2-03-size-210x208-210x208-0004.i420
-407de5fb2dfdd52e6173905b09ff22f2  vp90-2-03-size-210x208-210x208-0005.i420
-36900199c56310e651723de4e3ad2f2c  vp90-2-03-size-210x208-210x208-0006.i420
-908db56e975b5db07af17fdc51b12be8  vp90-2-03-size-210x208-210x208-0007.i420
-400e32490b1262009a481cc331a00e44  vp90-2-03-size-210x208-210x208-0008.i420
-dc43b786cba033cc92b9921d12f7b3d7  vp90-2-03-size-210x208-210x208-0009.i420
-e8c94c5965c729f5d1ef3ba4509c97c8  vp90-2-03-size-210x208-210x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x210.vp9
deleted file mode 100644
index ad6e896..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x210_vp9_md5
deleted file mode 100644
index 6b88d01..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b65725c68978bdaaafdf735dfbafa9e3  vp90-2-03-size-210x210-210x210-0001.i420
-35be2f16bd5dedc9d3f7a016f0d71701  vp90-2-03-size-210x210-210x210-0002.i420
-8c2873a97b51510d7449869e24a348f5  vp90-2-03-size-210x210-210x210-0003.i420
-724a30e8ae539e797db8889dc08aec5e  vp90-2-03-size-210x210-210x210-0004.i420
-e3ae1246a63ea22afd026bfb859fe165  vp90-2-03-size-210x210-210x210-0005.i420
-7e1fa363cf3f44c7a3019f29c14a6da4  vp90-2-03-size-210x210-210x210-0006.i420
-c6f26619ab5687a2a698c8766b79f2eb  vp90-2-03-size-210x210-210x210-0007.i420
-be5b8c50a772afe95d72bf3cc7c4fd2f  vp90-2-03-size-210x210-210x210-0008.i420
-9eab1417ac249ce31c79750143d52084  vp90-2-03-size-210x210-210x210-0009.i420
-9d2455048dbc3cdc2343a818c5a2bcb1  vp90-2-03-size-210x210-210x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x224.vp9
deleted file mode 100644
index 4a01426..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x224_vp9_md5
deleted file mode 100644
index 7bd7a82..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-bb903b926c4b34ae336e21d65ad8fd25  vp90-2-03-size-210x224-210x224-0001.i420
-c4c0bc3b112487e994d22176817ace3c  vp90-2-03-size-210x224-210x224-0002.i420
-24e699f7a92ab1b0fe12e0b747470b5b  vp90-2-03-size-210x224-210x224-0003.i420
-200f403694d3acfda63f52e8373f1420  vp90-2-03-size-210x224-210x224-0004.i420
-6df417a8ec1810562301c89724b739d1  vp90-2-03-size-210x224-210x224-0005.i420
-55757b633d8fe669fc0f507dab4fa9f7  vp90-2-03-size-210x224-210x224-0006.i420
-45bc82bee02cb45422be3ac1019896d0  vp90-2-03-size-210x224-210x224-0007.i420
-4aaf5d07d2796910767d5084556c9cf9  vp90-2-03-size-210x224-210x224-0008.i420
-f100fa26da47250b98d95a18915f521d  vp90-2-03-size-210x224-210x224-0009.i420
-f5a8def53b4638b6ce7c8588d595d0ad  vp90-2-03-size-210x224-210x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_210x226.vp9
deleted file mode 100644
index f88afa6..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_210x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_210x226_vp9_md5
deleted file mode 100644
index 48fa3d4..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_210x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-03707b2f5c392933f7336f380423a0a1  vp90-2-03-size-210x226-210x226-0001.i420
-b388553c79573555a3b660f5e36d4e36  vp90-2-03-size-210x226-210x226-0002.i420
-a1a7fd8ba7fb0fe7733cdf5440c7c1f3  vp90-2-03-size-210x226-210x226-0003.i420
-9daff7ef71dd54951f0b75a902065259  vp90-2-03-size-210x226-210x226-0004.i420
-60218a4b8bc0a5b0b40fa560a40fb4c0  vp90-2-03-size-210x226-210x226-0005.i420
-21229bfed833468fafc27ce93db1450c  vp90-2-03-size-210x226-210x226-0006.i420
-7aa290c6e503315d7aa3517258d5f63a  vp90-2-03-size-210x226-210x226-0007.i420
-63fd08ae2e859ff3d874ab2c2ce41a42  vp90-2-03-size-210x226-210x226-0008.i420
-725b371247fae28ef4b912368738df64  vp90-2-03-size-210x226-210x226-0009.i420
-7cf2d8d9e464307311b499ff0c3ea05e  vp90-2-03-size-210x226-210x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x196.vp9
deleted file mode 100644
index 8fd0876..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x196_vp9_md5
deleted file mode 100644
index 3edb492..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-3ffc096f1b42b4d319d4a9efbefc7625  vp90-2-03-size-224x196-224x196-0001.i420
-78b3655d5cad30fa6b2c2d8fd29463de  vp90-2-03-size-224x196-224x196-0002.i420
-ab197553d9599b2a03aff62d1d694848  vp90-2-03-size-224x196-224x196-0003.i420
-be368d1f3d3fcc710565b5433940f0df  vp90-2-03-size-224x196-224x196-0004.i420
-374c5db60ea9c110b871bb45be0efff1  vp90-2-03-size-224x196-224x196-0005.i420
-ec50085400d626de5833bc0a94d9941f  vp90-2-03-size-224x196-224x196-0006.i420
-d4ae69937e2a8d9bf2023d4215749635  vp90-2-03-size-224x196-224x196-0007.i420
-9b0b81eb6d62b8014e0639932fe35bc0  vp90-2-03-size-224x196-224x196-0008.i420
-cd02d0cc268e6b6df0b2dbd3f3b137e6  vp90-2-03-size-224x196-224x196-0009.i420
-5322ba1085c114f93534e1761a0d8aa1  vp90-2-03-size-224x196-224x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x198.vp9
deleted file mode 100644
index c0b6e4c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x198_vp9_md5
deleted file mode 100644
index d0b35cd..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-cf35dffc80946e87bb9d3e18aab9d320  vp90-2-03-size-224x198-224x198-0001.i420
-a76ac92f05e9b097f8ac5882e1ffe656  vp90-2-03-size-224x198-224x198-0002.i420
-faa1e8a11c9df3e9c9a9dafbebea6d04  vp90-2-03-size-224x198-224x198-0003.i420
-905a28289c8ac793b335096ca7f84e1d  vp90-2-03-size-224x198-224x198-0004.i420
-cb480fa6977baf98a74bddf213ecba82  vp90-2-03-size-224x198-224x198-0005.i420
-35224d3708e3ba1dafcc58b803d5ea77  vp90-2-03-size-224x198-224x198-0006.i420
-d166d764e87854bca47ab7a2bc8b1f9b  vp90-2-03-size-224x198-224x198-0007.i420
-562f1e06ae36abba5f1fb53e3d6cd7e8  vp90-2-03-size-224x198-224x198-0008.i420
-1599cebef060f6464aeef15aacbde446  vp90-2-03-size-224x198-224x198-0009.i420
-3316ebca2864a9dc04db86069efb1dd1  vp90-2-03-size-224x198-224x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x200.vp9
deleted file mode 100644
index 94cc4c7..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x200_vp9_md5
deleted file mode 100644
index bb368ce..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-0819e6d715c9b4d94f05f63a7ca86199  vp90-2-03-size-224x200-224x200-0001.i420
-9b9a4b01ed4c8a93687e45245b3092a3  vp90-2-03-size-224x200-224x200-0002.i420
-3a076f5b8dba60552e84a391ee04d1c7  vp90-2-03-size-224x200-224x200-0003.i420
-7aafc561f5b96e9d286bd8deb5687774  vp90-2-03-size-224x200-224x200-0004.i420
-daa43a89ab6b2761eedaa183e33a3465  vp90-2-03-size-224x200-224x200-0005.i420
-c14874409872357b11b65f35a283e058  vp90-2-03-size-224x200-224x200-0006.i420
-37d2ef52a9c694b2596d58ed9ca0d90b  vp90-2-03-size-224x200-224x200-0007.i420
-c97bc860c006896d80f52ccc0759f472  vp90-2-03-size-224x200-224x200-0008.i420
-5f8618114a723a017e39a1af695996f3  vp90-2-03-size-224x200-224x200-0009.i420
-ee8234fc5ccd41d05eb87e1510f9795e  vp90-2-03-size-224x200-224x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x202.vp9
deleted file mode 100644
index ac4f494..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x202_vp9_md5
deleted file mode 100644
index 0c6b78c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-e1e3b4af5910383ff6f66b6ab1a29544  vp90-2-03-size-224x202-224x202-0001.i420
-8668ef92b72f35728ebb456665d48b95  vp90-2-03-size-224x202-224x202-0002.i420
-dffc7c28f86f07bf28451292990e9594  vp90-2-03-size-224x202-224x202-0003.i420
-aebfb446fa6d48db36dbd9b5cd147f1e  vp90-2-03-size-224x202-224x202-0004.i420
-e3c6cb8c5bb3a26928493bfc297ab827  vp90-2-03-size-224x202-224x202-0005.i420
-68dabae76c1d27ab0e1079d99cb6d413  vp90-2-03-size-224x202-224x202-0006.i420
-d1f7745eef748688f3871d00a7e67ef8  vp90-2-03-size-224x202-224x202-0007.i420
-36738851cc2af83fd250dea4cd63941b  vp90-2-03-size-224x202-224x202-0008.i420
-16c0315c43427e7e6719806a89551703  vp90-2-03-size-224x202-224x202-0009.i420
-c4d589c0ea4cdfc1dd6dff72084c61fd  vp90-2-03-size-224x202-224x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x208.vp9
deleted file mode 100644
index 47eae820..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x208_vp9_md5
deleted file mode 100644
index 1bcdd2c..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-85f08afadfd1204d4131b9ee9c8cc10b  vp90-2-03-size-224x208-224x208-0001.i420
-f893de5432a082b3dffcf7499827f548  vp90-2-03-size-224x208-224x208-0002.i420
-cb81e0d7b657bc5a4a9cf8ad75a76a77  vp90-2-03-size-224x208-224x208-0003.i420
-8a40842123965731c15fc23fb6366d1d  vp90-2-03-size-224x208-224x208-0004.i420
-09c6d92af14a3fcfb12705cd5da57f2a  vp90-2-03-size-224x208-224x208-0005.i420
-6bede4dc8770df534b599021b0425309  vp90-2-03-size-224x208-224x208-0006.i420
-334b0b0448e9e4e6a0cddcd2e3a0af3f  vp90-2-03-size-224x208-224x208-0007.i420
-09f491f0f3870ef96cff0384cd7183d1  vp90-2-03-size-224x208-224x208-0008.i420
-c9e5f81186ac947a77b051c8f0e76eac  vp90-2-03-size-224x208-224x208-0009.i420
-917565c3327bff78b53a78ea739472ff  vp90-2-03-size-224x208-224x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x210.vp9
deleted file mode 100644
index 50d6389..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x210_vp9_md5
deleted file mode 100644
index d522202..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-427421e5fd2087c6ff7b87a27982332f  vp90-2-03-size-224x210-224x210-0001.i420
-b68311fd44e189e4174ac357d5415068  vp90-2-03-size-224x210-224x210-0002.i420
-2c822ff45be7a1ea412d21ff82c7bc1d  vp90-2-03-size-224x210-224x210-0003.i420
-34659186d93516eae1dd4d9a391d1c3f  vp90-2-03-size-224x210-224x210-0004.i420
-1990dd822abc3a10f511589db5aa50f4  vp90-2-03-size-224x210-224x210-0005.i420
-4a4dc076172c79d9fde3e17b47109835  vp90-2-03-size-224x210-224x210-0006.i420
-51874c79850120537fa5c405721d0107  vp90-2-03-size-224x210-224x210-0007.i420
-15d7897a128de9be90be17f1679012c9  vp90-2-03-size-224x210-224x210-0008.i420
-a8d9480accf8585e94161a5f7c371cef  vp90-2-03-size-224x210-224x210-0009.i420
-8a9d3f09561b895b423ae9428f620b9b  vp90-2-03-size-224x210-224x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x224.vp9
deleted file mode 100644
index 6397922..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x224_vp9_md5
deleted file mode 100644
index 1a8a55e..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-bedd5d2725ffff06a50e23841bc2dfb8  vp90-2-03-size-224x224-224x224-0001.i420
-8c363f68b0b30f507563516aa99e23ac  vp90-2-03-size-224x224-224x224-0002.i420
-9cb7d51ca4439614dc3f5980507a4d32  vp90-2-03-size-224x224-224x224-0003.i420
-b393a18de28ab6b8d1c6afd67a7794e0  vp90-2-03-size-224x224-224x224-0004.i420
-81f69ee1e3d89cb78cac192c352f7741  vp90-2-03-size-224x224-224x224-0005.i420
-aabb51f029a9a02e71524cf3500931e9  vp90-2-03-size-224x224-224x224-0006.i420
-6581aec620c508d2b42ccceaa2c6044d  vp90-2-03-size-224x224-224x224-0007.i420
-993cde759158c30dcf0f0a9fdcdfb0d8  vp90-2-03-size-224x224-224x224-0008.i420
-85985ae8d35514d601800a06c8226625  vp90-2-03-size-224x224-224x224-0009.i420
-0eba1d7c193e473586e4a5c87d0e0d21  vp90-2-03-size-224x224-224x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_224x226.vp9
deleted file mode 100644
index 7672e82..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_224x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_224x226_vp9_md5
deleted file mode 100644
index b3a8eee..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_224x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-dca556e648a576b3973fbe4b34d0328c  vp90-2-03-size-224x226-224x226-0001.i420
-34a49e4aba4aca5c76ab0f751341c32b  vp90-2-03-size-224x226-224x226-0002.i420
-4b7cc6d500b273efe7e30fc3a3946f74  vp90-2-03-size-224x226-224x226-0003.i420
-1960f0f1edf9196c96b0de742a3cd53c  vp90-2-03-size-224x226-224x226-0004.i420
-3cb7d90178636911c5d53a5f8e75599c  vp90-2-03-size-224x226-224x226-0005.i420
-84b56c60c2282f85102048cc2cf40b88  vp90-2-03-size-224x226-224x226-0006.i420
-3ca34d2978307ec0fca05130d81bcc26  vp90-2-03-size-224x226-224x226-0007.i420
-c15560be737e02ea9d1deeca0af9bb77  vp90-2-03-size-224x226-224x226-0008.i420
-391439789a6aa7bb02d7e699795a9559  vp90-2-03-size-224x226-224x226-0009.i420
-9f681e91cbcbe9920f21236b8ff093c7  vp90-2-03-size-224x226-224x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x196.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x196.vp9
deleted file mode 100644
index e88ffc4..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x196.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x196_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x196_vp9_md5
deleted file mode 100644
index a995846..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x196_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-4757a31842453f806de2f2256329547e  vp90-2-03-size-226x196-226x196-0001.i420
-fe5fb955a4143091c5bfae7c4a4afe0f  vp90-2-03-size-226x196-226x196-0002.i420
-93766c5a03d71f99afb7705add7b63f0  vp90-2-03-size-226x196-226x196-0003.i420
-30c91162aa6fb0ed3e47325146bb6d8a  vp90-2-03-size-226x196-226x196-0004.i420
-501fe67785b970b1b62c2ae0b36b19ad  vp90-2-03-size-226x196-226x196-0005.i420
-836be5e778e3d20e75c4fcd71f765b3d  vp90-2-03-size-226x196-226x196-0006.i420
-21a9fd5e78212fe71719e173844bc6e6  vp90-2-03-size-226x196-226x196-0007.i420
-81b3919208e345d93dde62740b47dd93  vp90-2-03-size-226x196-226x196-0008.i420
-df010555a929ba88a2f25c6267e3786e  vp90-2-03-size-226x196-226x196-0009.i420
-d2cff8282e5e7a5bbd879c73df0670c3  vp90-2-03-size-226x196-226x196-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x198.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x198.vp9
deleted file mode 100644
index fa201ed..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x198.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x198_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x198_vp9_md5
deleted file mode 100644
index 3c4d3f5b..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x198_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-b97087eb8c53cf56dc44576912654fb2  vp90-2-03-size-226x198-226x198-0001.i420
-219bb68a59dc166806a5b5689a943b66  vp90-2-03-size-226x198-226x198-0002.i420
-67b2ec19dd3b74d828b51912c25249d6  vp90-2-03-size-226x198-226x198-0003.i420
-73dd9625538e10a0f94d31ac9fe3db23  vp90-2-03-size-226x198-226x198-0004.i420
-51e68f201130da18beb0cb27adcf6fa9  vp90-2-03-size-226x198-226x198-0005.i420
-455d9753b3c0ac5ad7d9da022f69acd0  vp90-2-03-size-226x198-226x198-0006.i420
-60a8905a63db4cdd2560583fb6415030  vp90-2-03-size-226x198-226x198-0007.i420
-48c156f4b2c9f936487b43713a4573fd  vp90-2-03-size-226x198-226x198-0008.i420
-a5c8f4190cb34b3ecd42ca8e09bf1646  vp90-2-03-size-226x198-226x198-0009.i420
-233a5d5187137e047993532fc2e725d3  vp90-2-03-size-226x198-226x198-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x200.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x200.vp9
deleted file mode 100644
index a61270b..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x200.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x200_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x200_vp9_md5
deleted file mode 100644
index edab982..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x200_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-0ae27db338f73f37eaed806b1c789593  vp90-2-03-size-226x200-226x200-0001.i420
-3f69273752f43699a3bc7b22a88cc3aa  vp90-2-03-size-226x200-226x200-0002.i420
-ce0dfafb59910241d2b1a2275a2c2143  vp90-2-03-size-226x200-226x200-0003.i420
-8d20f404e25766c819ee728858bcbc76  vp90-2-03-size-226x200-226x200-0004.i420
-67bc5604c5b0f6c3484b605c1f93c83a  vp90-2-03-size-226x200-226x200-0005.i420
-1c82def3a06430d205cce0db7b5714de  vp90-2-03-size-226x200-226x200-0006.i420
-654d7a676e3b8b64541ed8cdefbd7286  vp90-2-03-size-226x200-226x200-0007.i420
-6c80c78c7b652c5b3b117a0960e89951  vp90-2-03-size-226x200-226x200-0008.i420
-ae73e3c69ec6747c5234d58c5e1e36eb  vp90-2-03-size-226x200-226x200-0009.i420
-e40d716efd8caf2d4004d299fb914328  vp90-2-03-size-226x200-226x200-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x202.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x202.vp9
deleted file mode 100644
index 28732e2..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x202.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x202_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x202_vp9_md5
deleted file mode 100644
index 80e7ac2..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x202_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-0cd2876640e71de3a6df7839bd6f0b51  vp90-2-03-size-226x202-226x202-0001.i420
-f887db6839c0cddd1ea9ae6bfd2cc16d  vp90-2-03-size-226x202-226x202-0002.i420
-ff2a890cf4c4973bf181ba8424c2eadc  vp90-2-03-size-226x202-226x202-0003.i420
-f69f2e4f3036a21deb43a0bf4b95771f  vp90-2-03-size-226x202-226x202-0004.i420
-93f511739c19f1a3b356dda39d945c93  vp90-2-03-size-226x202-226x202-0005.i420
-7f79633c93765b504fef0324bd10fdba  vp90-2-03-size-226x202-226x202-0006.i420
-d6c53d3937c9a40b227b4486452e0b33  vp90-2-03-size-226x202-226x202-0007.i420
-4e26625e8997ad6fe08ae68fbdfdbfd7  vp90-2-03-size-226x202-226x202-0008.i420
-3bf4c8ac0279351bf904cf57b0fc13c1  vp90-2-03-size-226x202-226x202-0009.i420
-12d64d856025185fa9e610dfa62b05af  vp90-2-03-size-226x202-226x202-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x208.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x208.vp9
deleted file mode 100644
index f88a8b8..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x208.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x208_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x208_vp9_md5
deleted file mode 100644
index 364227a..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x208_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-6006cac6628cf9e7cea58aec07471b06  vp90-2-03-size-226x208-226x208-0001.i420
-f7e994921248b6933920c984880ec96c  vp90-2-03-size-226x208-226x208-0002.i420
-c0aeeb9d2009538d8d5e837f45e1542d  vp90-2-03-size-226x208-226x208-0003.i420
-7dacf9d00e85bd52045eb47bae5225b3  vp90-2-03-size-226x208-226x208-0004.i420
-024fd008a099ae954e38a3f0a8ebb6c9  vp90-2-03-size-226x208-226x208-0005.i420
-fb6c368a1b3578ab59aa30e0b5cc4853  vp90-2-03-size-226x208-226x208-0006.i420
-07815251f7020b627c365a7a7be694c7  vp90-2-03-size-226x208-226x208-0007.i420
-db8b8f48f3693867d2bd8208cf4f929a  vp90-2-03-size-226x208-226x208-0008.i420
-88b42d943c0978d832333a8a3f7b6bbc  vp90-2-03-size-226x208-226x208-0009.i420
-7aa760190f9328ba4f6fa87d1d9e8d3e  vp90-2-03-size-226x208-226x208-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x210.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x210.vp9
deleted file mode 100644
index 2a60796..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x210.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x210_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x210_vp9_md5
deleted file mode 100644
index f4afd83..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x210_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-a6c1b7686202f5cc64335f92be595309  vp90-2-03-size-226x210-226x210-0001.i420
-3e573d4c693a39c5d6cd46b8873e99bb  vp90-2-03-size-226x210-226x210-0002.i420
-d2388f6f641c8ddec98f11493f1a1390  vp90-2-03-size-226x210-226x210-0003.i420
-16473e33532ebc8de2f02077c406346b  vp90-2-03-size-226x210-226x210-0004.i420
-6c75d1c01276838fce40837e373f49db  vp90-2-03-size-226x210-226x210-0005.i420
-b718e7445e2b08dde78fa7f30be01346  vp90-2-03-size-226x210-226x210-0006.i420
-2f556ed5afd60b1bbae76984ce073107  vp90-2-03-size-226x210-226x210-0007.i420
-4e5d59daed044c39a14c35f18cb4fb7a  vp90-2-03-size-226x210-226x210-0008.i420
-c14901a9906ffcd0eb1efc068ce32941  vp90-2-03-size-226x210-226x210-0009.i420
-3d73b7f87bcd16c1ec565b5cc8d0fe93  vp90-2-03-size-226x210-226x210-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x224.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x224.vp9
deleted file mode 100644
index 8735e4d..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x224.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x224_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x224_vp9_md5
deleted file mode 100644
index 24df8e0..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x224_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-80fb3a643384386beadc0991f171669d  vp90-2-03-size-226x224-226x224-0001.i420
-65a4a51163f49a75f8eeecd94cb2ba47  vp90-2-03-size-226x224-226x224-0002.i420
-d5b2aac9889d2991b83fd4360ada0258  vp90-2-03-size-226x224-226x224-0003.i420
-7958ff5535358567ea7df351d78256a7  vp90-2-03-size-226x224-226x224-0004.i420
-7e7413b9a61967d0ade07b81944e9a15  vp90-2-03-size-226x224-226x224-0005.i420
-40a008016adbf9673adbbc4c0edb4454  vp90-2-03-size-226x224-226x224-0006.i420
-fef7b5e2809ef79917ab394a067ef4be  vp90-2-03-size-226x224-226x224-0007.i420
-91ee2360faf46a25b95927c55eea603f  vp90-2-03-size-226x224-226x224-0008.i420
-a47f14a80a529f79f97accbe23188046  vp90-2-03-size-226x224-226x224-0009.i420
-3613bcd41ff13006fbba3bd0087c44f4  vp90-2-03-size-226x224-226x224-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x226.vp9 b/tests/tests/media/res/raw/vp90_2_03_size_226x226.vp9
deleted file mode 100644
index c7f8202..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x226.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_03_size_226x226_vp9_md5 b/tests/tests/media/res/raw/vp90_2_03_size_226x226_vp9_md5
deleted file mode 100644
index 24f20a6..0000000
--- a/tests/tests/media/res/raw/vp90_2_03_size_226x226_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f2370fc802dafdf5082beffc1907a9c6  vp90-2-03-size-226x226-226x226-0001.i420
-aad6de7b986234a1d621935b272501c9  vp90-2-03-size-226x226-226x226-0002.i420
-8a6d3784e22e3b4f735e78916fbc3821  vp90-2-03-size-226x226-226x226-0003.i420
-0c4afce19c43fdf3bb1b972810cc9126  vp90-2-03-size-226x226-226x226-0004.i420
-814a68dd76a3135221131988910f51ba  vp90-2-03-size-226x226-226x226-0005.i420
-b2379c4b28dca10e67ac58631f9731c0  vp90-2-03-size-226x226-226x226-0006.i420
-b16fd651884340a428cea3fe0ac18ba6  vp90-2-03-size-226x226-226x226-0007.i420
-cb65cd4c421cfd6a19fb123ec27abbe6  vp90-2-03-size-226x226-226x226-0008.i420
-7f1d2686b9808de8ecc723b18136d57d  vp90-2-03-size-226x226-226x226-0009.i420
-da7fd4bff4b6db0221c42492876c5c4d  vp90-2-03-size-226x226-226x226-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_06_bilinear.vp9 b/tests/tests/media/res/raw/vp90_2_06_bilinear.vp9
deleted file mode 100644
index a492d03..0000000
--- a/tests/tests/media/res/raw/vp90_2_06_bilinear.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_06_bilinear_vp9_md5 b/tests/tests/media/res/raw/vp90_2_06_bilinear_vp9_md5
deleted file mode 100644
index 25231b98..0000000
--- a/tests/tests/media/res/raw/vp90_2_06_bilinear_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-818a5af531c921ae58dfedc75234f3c5  -352x288-0001.i420
-f863f8c68b5c87c721d345c5a894336d  -352x288-0002.i420
-3f1213e44db416530bc0717f0a795b5d  -352x288-0003.i420
-4b99c16a62c3d6687c78236fa13e1f41  -352x288-0004.i420
-80f23a3f04215dd7542128e7c53d68d0  -352x288-0005.i420
-b40b7aa34a77fe773d82d75b5bdd9c13  -352x288-0006.i420
-dd4af6263d20bbaf9afedb6695c1ba67  -352x288-0007.i420
-1f2ccf88f15c10e3c27b2368dacc3727  -352x288-0008.i420
-232b027c4e9b598f50d078bb7b7a165e  -352x288-0009.i420
-2b44367332aa0fe42362d61f18e7f8dd  -352x288-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_07_frame_parallel.vp9 b/tests/tests/media/res/raw/vp90_2_07_frame_parallel.vp9
deleted file mode 100644
index 2c80a2d..0000000
--- a/tests/tests/media/res/raw/vp90_2_07_frame_parallel.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1.vp9 b/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1.vp9
deleted file mode 100644
index 10f6eb7..0000000
--- a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1_vp9_md5 b/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1_vp9_md5
deleted file mode 100644
index a6261c8..0000000
--- a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_1_vp9_md5
+++ /dev/null
@@ -1,40 +0,0 @@
-b5d461894f957709576d15f6dce3d69e  vp90-2-07-frame_parallel-1.webm-352x288-0001.i420
-54e45dfe575d9843c198270f62154c09  vp90-2-07-frame_parallel-1.webm-352x288-0002.i420
-c3798fe06d2c0adbb43410b76c67c0cd  vp90-2-07-frame_parallel-1.webm-352x288-0003.i420
-2cc4ad256a586ff2be650adce4d7f332  vp90-2-07-frame_parallel-1.webm-352x288-0004.i420
-3e63839f0aaedfeaf71cf2868e506bdd  vp90-2-07-frame_parallel-1.webm-352x288-0005.i420
-ca0a10c9144084231f801fa6f0433eb4  vp90-2-07-frame_parallel-1.webm-352x288-0006.i420
-c920d177c21a8b0dee8fdbce1edfd75c  vp90-2-07-frame_parallel-1.webm-352x288-0007.i420
-6afe32287ff1dcaa42630bbf9fe32bad  vp90-2-07-frame_parallel-1.webm-352x288-0008.i420
-0bc39f7c6fbc1fb18dce622d17b0856e  vp90-2-07-frame_parallel-1.webm-352x288-0009.i420
-6f92688afcd228649627c1757417bfe5  vp90-2-07-frame_parallel-1.webm-352x288-0010.i420
-338920379e1746eff6bc1c53553c400e  vp90-2-07-frame_parallel-1.webm-352x288-0011.i420
-2beb514ca62779c7c20e1dff0ccc496a  vp90-2-07-frame_parallel-1.webm-352x288-0012.i420
-e7b4dcc8437af45f363a3b24439323d2  vp90-2-07-frame_parallel-1.webm-352x288-0013.i420
-10bac4f44ae04e2d9f3219044a273f3c  vp90-2-07-frame_parallel-1.webm-352x288-0014.i420
-45581dbebb5074f698ad6d22d52f02b6  vp90-2-07-frame_parallel-1.webm-352x288-0015.i420
-9480f12b47b834003d6d572b9fdfdda1  vp90-2-07-frame_parallel-1.webm-352x288-0016.i420
-b31f361b8971a56338b3960c18177b7c  vp90-2-07-frame_parallel-1.webm-352x288-0017.i420
-79d631a53008d36f8ff5248a8592ffdc  vp90-2-07-frame_parallel-1.webm-352x288-0018.i420
-0efc005919f5a1cdded77ae91245d3be  vp90-2-07-frame_parallel-1.webm-352x288-0019.i420
-bf0d1144000094b3eb333b3dab466ace  vp90-2-07-frame_parallel-1.webm-352x288-0020.i420
-80c0d7ccfa044dc8fe1967951c4d4fea  vp90-2-07-frame_parallel-1.webm-352x288-0021.i420
-28c8e8c406a804cde7feba37e0fda689  vp90-2-07-frame_parallel-1.webm-352x288-0022.i420
-8bef0cfaa4c298d93d20b88c17ef4864  vp90-2-07-frame_parallel-1.webm-352x288-0023.i420
-9488e35310228d5930fccc4a2ee5a96d  vp90-2-07-frame_parallel-1.webm-352x288-0024.i420
-638394b668015141ba1ff97c89034e32  vp90-2-07-frame_parallel-1.webm-352x288-0025.i420
-85aff2c821b25962d3f72208a5f05992  vp90-2-07-frame_parallel-1.webm-352x288-0026.i420
-ec68bb46a7ef2e90c07b7dcfb406eb20  vp90-2-07-frame_parallel-1.webm-352x288-0027.i420
-7b0f3a57f320b1fe33ad5ac03ba0e568  vp90-2-07-frame_parallel-1.webm-352x288-0028.i420
-da461e5510f591c17675d9d7ec9532c4  vp90-2-07-frame_parallel-1.webm-352x288-0029.i420
-d2997aa173f757dd2ef78b58f5d5a109  vp90-2-07-frame_parallel-1.webm-352x288-0030.i420
-ff70094752edf348767a47db71d2dfd0  vp90-2-07-frame_parallel-1.webm-352x288-0031.i420
-52ec9a87ad6df24714fbe6b3384b3f10  vp90-2-07-frame_parallel-1.webm-352x288-0032.i420
-665a0ee3f3ce1a100aae8ff12e8f5193  vp90-2-07-frame_parallel-1.webm-352x288-0033.i420
-98e6fcabfa61b3ca20844c4ce02cdc59  vp90-2-07-frame_parallel-1.webm-352x288-0034.i420
-8e9a1c517df8a280b27e525e3b60ec6f  vp90-2-07-frame_parallel-1.webm-352x288-0035.i420
-58701ab08edeed3f9f969742b64dbb35  vp90-2-07-frame_parallel-1.webm-352x288-0036.i420
-d901de4fdc5fc2352578116bacefade2  vp90-2-07-frame_parallel-1.webm-352x288-0037.i420
-3b9d9902ea331b3fb5ceb255e66731b3  vp90-2-07-frame_parallel-1.webm-352x288-0038.i420
-3ac2e9b87a373667686c82fc7f14e6be  vp90-2-07-frame_parallel-1.webm-352x288-0039.i420
-fe198064dd4e6ef3ef829ba41c92d002  vp90-2-07-frame_parallel-1.webm-352x288-0040.i420
diff --git a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_vp9_md5 b/tests/tests/media/res/raw/vp90_2_07_frame_parallel_vp9_md5
deleted file mode 100644
index 7e598ae..0000000
--- a/tests/tests/media/res/raw/vp90_2_07_frame_parallel_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-4480e19849cb7b042355a42011fa2d89  vp90-2-07-frame_parallel-352x240-0001.i420
-1d48490e61c0109b301938facb648987  vp90-2-07-frame_parallel-352x240-0002.i420
-9c9140e23a56114ea3cc9bae01c6f2be  vp90-2-07-frame_parallel-352x240-0003.i420
-cbdd934532bd9c9c27079d17e570e4af  vp90-2-07-frame_parallel-352x240-0004.i420
-db86f11f02c0936371f59a292e32976d  vp90-2-07-frame_parallel-352x240-0005.i420
-6fc5f675eb7e1ccdfa5230208dcbc608  vp90-2-07-frame_parallel-352x240-0006.i420
-39fcd15c8cf524a9acce7a66982acec5  vp90-2-07-frame_parallel-352x240-0007.i420
-8c24475c41ec9d5aaa7954f997da12c4  vp90-2-07-frame_parallel-352x240-0008.i420
-5b9747332e303f62b73d4cd2728ac93c  vp90-2-07-frame_parallel-352x240-0009.i420
-706f3fc0042b9e6e8b91318ecd55fce8  vp90-2-07-frame_parallel-352x240-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x2.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x2.vp9
deleted file mode 100644
index de3593a..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x2.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel.vp9
deleted file mode 100644
index 1895056..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel_vp9_md5
deleted file mode 100644
index 7e6b4f2..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_frame_parallel_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-124dcaf4393bbc676cefc1dcfc1474b9  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0001.i420
-02e0c145da3e3c711f13dad6d5d9f2ec  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0002.i420
-bd276b44124d01ea89cb428a3532a87e  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0003.i420
-fc1eb96ba3b93382a8cf3dee39928d85  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0004.i420
-0b7b92b084684377795f6fcc549f7677  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0005.i420
-208972b2d34f0a7a6616570d8279c1f1  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0006.i420
-33f15b325f9367cf1f58e2e25ccc7bed  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0007.i420
-d7f75036195e89dcbcaba566c1d6cad8  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0008.i420
-bdc3a5b228f0afa3f969d5f99685a501  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0009.i420
-d436084146d6be84df15f5fb94067d53  /tmp/test-vector/vp90-2-08-tile_1x2_frame_parallel-1920x1080-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x2_vp9_md5
deleted file mode 100644
index f979f7f..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x2_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-124dcaf4393bbc676cefc1dcfc1474b9  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0001.i420
-5f3357dc102c9db11e7b68d277f31f99  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0002.i420
-a5fb34b4a52fbc7b8290bffe988ffb01  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0003.i420
-1405fa1086ac63d4f5e8ed1ca0ad192a  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0004.i420
-0ead62c1d7c7c44f316e601d8fea16ba  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0005.i420
-204e05b399becce6e936bb3ac739fbe3  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0006.i420
-a27c70e46f6b2c40d6d0a13befede3ac  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0007.i420
-71434072992ec693ae809086760cad22  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0008.i420
-790a525234048c0645cc81f6a042c9c3  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0009.i420
-751b37a7b9401a5ca30dc2673070f881  /tmp/test-vector/vp90-2-08-tile_1x2-1920x1080-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x4.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x4.vp9
deleted file mode 100644
index 2cc32ae..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x4.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel.vp9
deleted file mode 100644
index d712a9c..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel_vp9_md5
deleted file mode 100644
index 0541f98..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_frame_parallel_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c8a7f0299fb945318bbb6fd531885339  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0001.i420
-88001dece48c52b0f34afc9137915c9e  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0002.i420
-71c3bc238c76f1e3a81bc70aa7dcacfc  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0003.i420
-32726efd04e67dc09c055481f0189c76  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0004.i420
-7c8fa7372885d16b73f79cbddfd7d45c  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0005.i420
-0d9a3324f574bccd9903ee040eee1787  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0006.i420
-630fb9507a52803b50ea959a36ff60b8  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0007.i420
-d5d7b249db773ec3c5b49567aff761e9  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0008.i420
-b480f582b52d291aeffb97e6d572731b  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0009.i420
-be72a4c2f29317441344cc4d73b24333  /tmp/test-vector/vp90-2-08-tile_1x4_frame_parallel-1920x1080-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x4_vp9_md5
deleted file mode 100644
index 23297f5..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x4_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-c8a7f0299fb945318bbb6fd531885339  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0001.i420
-22dde3e7feb2177aa350db7331e8fa8f  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0002.i420
-ba644eea2bd5cded05a7b82224a02d30  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0003.i420
-0611f83948b22eb4bd5973fa0485dcda  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0004.i420
-a8eea6193af51dbd06d953165b3de261  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0005.i420
-1e76d8ec66941c9185e0747307a1496c  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0006.i420
-d8404c3e80c2773173e362ff622b6f3c  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0007.i420
-beed5600864a9b961c983d7a7a670bc1  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0008.i420
-9efbe9228f6a437fe450215f711ea429  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0009.i420
-1b65f47a5c11c5b763123d337482bd92  /tmp/test-vector/vp90-2-08-tile_1x4-1920x1080-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x8.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x8.vp9
deleted file mode 100644
index 4e9374f..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x8.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel.vp9
deleted file mode 100644
index ba4e864..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel_vp9_md5
deleted file mode 100644
index f36f297..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_frame_parallel_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f91ceda125d592a3f9537d02df06c4f3  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0001.i420
-563dae097075cd4002b16ffb2be42cf2  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0002.i420
-1f035d79632516b58c56813c113e0f23  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0003.i420
-0db334dafa73ec37699a96e21bf065d0  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0004.i420
-445a1d62a17f7362c1a14179bededcab  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0005.i420
-4c80d03262518f957c54afd6e02d3610  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0006.i420
-bc6be97c7e509af0903509a260f5ccb6  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0007.i420
-27a679a8bbf2eef3eb1dc6cb221ec467  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0008.i420
-eb3b064727f265bd29407f334a51c1ab  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0009.i420
-3e0caeeef59797f9ec278e190170c285  /tmp/vids/vp90-2-08-tile_1x8_frame_parallel-3840x2160-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_1x8_vp9_md5
deleted file mode 100644
index a13a4d7..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_1x8_vp9_md5
+++ /dev/null
@@ -1,10 +0,0 @@
-f91ceda125d592a3f9537d02df06c4f3  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0001.i420
-a911be78a743ed0f21463bfb82efbd44  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0002.i420
-85d7cddba48b9e26b089da7f40fd4c71  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0003.i420
-39241fe3e171fafbc95966c03042699d  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0004.i420
-7b8500c53fce2702d204b6fc888f33fb  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0005.i420
-8197c61dcecdbd975fe54771f34c5df2  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0006.i420
-f28ebf18412521df51b9d6a3ffd44f4b  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0007.i420
-0d576800a02952e825f1721fc13ac695  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0008.i420
-0eb34a14d7a89ee4c951759a35673b13  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0009.i420
-11fb21038d63e3b431f92e0a4152c2f4  /tmp/vids/vp90-2-08-tile_1x8-3840x2160-0010.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_4x1.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_4x1.vp9
deleted file mode 100644
index e4f9580..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_4x1.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_4x1_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_4x1_vp9_md5
deleted file mode 100644
index 85d3f2a..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_4x1_vp9_md5
+++ /dev/null
@@ -1,5 +0,0 @@
-82fe82552fc693418e68f7757c67bbcb  vp90-2-08-tile-4x1-1920x1080-0001.i420
-28db6328c54d2dbe7e9efae5ca58cec8  vp90-2-08-tile-4x1-1920x1080-0002.i420
-72f6459dd217ddd05f42cd9e8d6f689f  vp90-2-08-tile-4x1-1920x1080-0003.i420
-12eeebc1533f812d01df0e2b2b8cf0f3  vp90-2-08-tile-4x1-1920x1080-0004.i420
-7ddc1f11bb28f6ad235832e6a1bb88dd  vp90-2-08-tile-4x1-1920x1080-0005.i420
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_4x4.vp9 b/tests/tests/media/res/raw/vp90_2_08_tile_4x4.vp9
deleted file mode 100644
index 99e18c7..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_4x4.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_08_tile_4x4_vp9_md5 b/tests/tests/media/res/raw/vp90_2_08_tile_4x4_vp9_md5
deleted file mode 100644
index 5bb175c..0000000
--- a/tests/tests/media/res/raw/vp90_2_08_tile_4x4_vp9_md5
+++ /dev/null
@@ -1,5 +0,0 @@
-a3b9b715a7e2aed15430faabb3c8b7b3  vp90-2-08-tile-4x4-1920x1080-0001.i420
-85fa2105aa554e680056d1a413ac9673  vp90-2-08-tile-4x4-1920x1080-0002.i420
-4abb371be22d7914bb62b30d901c30ce  vp90-2-08-tile-4x4-1920x1080-0003.i420
-83c2528204ae3fd4d4cc8fc67b641d3a  vp90-2-08-tile-4x4-1920x1080-0004.i420
-86fcc862b8c8d64690ba3c4a6bff9f74  vp90-2-08-tile-4x4-1920x1080-0005.i420
diff --git a/tests/tests/media/res/raw/vp90_2_09_aq2.vp9 b/tests/tests/media/res/raw/vp90_2_09_aq2.vp9
deleted file mode 100644
index 26c09a5..0000000
--- a/tests/tests/media/res/raw/vp90_2_09_aq2.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_09_aq2_vp9_md5 b/tests/tests/media/res/raw/vp90_2_09_aq2_vp9_md5
deleted file mode 100644
index 57ce2c8..0000000
--- a/tests/tests/media/res/raw/vp90_2_09_aq2_vp9_md5
+++ /dev/null
@@ -1,100 +0,0 @@
-7fd2573f979a4c0fcc74c6ed37599738  vp90-2-09-aq2-352x240-0001.i420
-c2fba96de0561d78d96425813bdf0da0  vp90-2-09-aq2-352x240-0002.i420
-108b4bfeae261da9758675bce8b4645f  vp90-2-09-aq2-352x240-0003.i420
-43b6e3bb1c3f6d15033f16fbd4355265  vp90-2-09-aq2-352x240-0004.i420
-e5a63b53ba5c19370c6f5fdb812014b5  vp90-2-09-aq2-352x240-0005.i420
-de4aa11cfd57d3fa11c8e29faec64bea  vp90-2-09-aq2-352x240-0006.i420
-b70e555bc41eafa68db19d81780fe7b9  vp90-2-09-aq2-352x240-0007.i420
-8a49e3307faef41ecfecfdaa29f48d1f  vp90-2-09-aq2-352x240-0008.i420
-ed01509dcb01ba6644137e7f0f588f13  vp90-2-09-aq2-352x240-0009.i420
-15630dcfe0ec0f27abace3e2ac80d47a  vp90-2-09-aq2-352x240-0010.i420
-2f023d334f0d0d7ea7724ddd075b41a3  vp90-2-09-aq2-352x240-0011.i420
-3fd72535813e4943d1e4b19f7e554b00  vp90-2-09-aq2-352x240-0012.i420
-360db62794959e018a04c3650e832d60  vp90-2-09-aq2-352x240-0013.i420
-33638c46202958cabd78356f18101b88  vp90-2-09-aq2-352x240-0014.i420
-d8a3d7541654307f3b500cb6399fccd1  vp90-2-09-aq2-352x240-0015.i420
-cd2a41d7d0f21c02919ffb87b9510b55  vp90-2-09-aq2-352x240-0016.i420
-54b8f6b3d7e2edb67db7c3aa7f5a973b  vp90-2-09-aq2-352x240-0017.i420
-ddabc76c8b2af158e5feed0f48106429  vp90-2-09-aq2-352x240-0018.i420
-b22c40581501676d588a77b502cb5e48  vp90-2-09-aq2-352x240-0019.i420
-e25c4976462fe37b0119e719e7a9a65b  vp90-2-09-aq2-352x240-0020.i420
-1fcf289ba81a469926b63e9fa70fc184  vp90-2-09-aq2-352x240-0021.i420
-6a7392c22ffac7c6a4bfe7012e8dfa29  vp90-2-09-aq2-352x240-0022.i420
-9b74dc670c67073a582b3c8d390caaf5  vp90-2-09-aq2-352x240-0023.i420
-23b18dc9b7eb27b55e0068c1d75de8ad  vp90-2-09-aq2-352x240-0024.i420
-0a94a263b90e08e88909deafd5c42b7c  vp90-2-09-aq2-352x240-0025.i420
-9b940506b41816d2030f7a2089d83ea3  vp90-2-09-aq2-352x240-0026.i420
-da88cae2ec9324ad19365871ec893d45  vp90-2-09-aq2-352x240-0027.i420
-323cf97cddde5a9cea5f338b7ab17860  vp90-2-09-aq2-352x240-0028.i420
-455506b023df603e494bcc36ffcce179  vp90-2-09-aq2-352x240-0029.i420
-7dc8cf924ca17b6f19c7ed5e7d584835  vp90-2-09-aq2-352x240-0030.i420
-88e4c47e343182051fef005676fc3112  vp90-2-09-aq2-352x240-0031.i420
-e4891dfcc239d80f3240b85fe48f3957  vp90-2-09-aq2-352x240-0032.i420
-e559abcb6717ca8b211159010beebef8  vp90-2-09-aq2-352x240-0033.i420
-3b96d340f65e415d40d60bf6a3bedefc  vp90-2-09-aq2-352x240-0034.i420
-51131241975195394fb3eaa13ca1b43f  vp90-2-09-aq2-352x240-0035.i420
-ceefc4774251000943f2d58c68f2b3d3  vp90-2-09-aq2-352x240-0036.i420
-76524ef8a7f1ab5199124e8bff7bc559  vp90-2-09-aq2-352x240-0037.i420
-906cf4fc07aacb1f0a3ceaf7eeda2e74  vp90-2-09-aq2-352x240-0038.i420
-c7ad9d7bc30af316285b962b9eda4c9a  vp90-2-09-aq2-352x240-0039.i420
-424a7133c0bb45a2601733a39f8d70fa  vp90-2-09-aq2-352x240-0040.i420
-e76eac1e8e9529609ad1bf3e4c44e4d0  vp90-2-09-aq2-352x240-0041.i420
-e238dcef853fed9f7322cb1d73dceef5  vp90-2-09-aq2-352x240-0042.i420
-a0f2d7cd7f628fca6992ccb2ca418133  vp90-2-09-aq2-352x240-0043.i420
-4d07e59c0935554b624409bd904264ef  vp90-2-09-aq2-352x240-0044.i420
-d0944fdf52b02c4ff8fd7fcb944ae00c  vp90-2-09-aq2-352x240-0045.i420
-f719c346201b393262d4764bc989c4fd  vp90-2-09-aq2-352x240-0046.i420
-951d18cb2791c55ebed8321dba537eb9  vp90-2-09-aq2-352x240-0047.i420
-f764f5aaac4f19b131377e16d034de9a  vp90-2-09-aq2-352x240-0048.i420
-871f7a2201dd951ba541625219a8f000  vp90-2-09-aq2-352x240-0049.i420
-05e9bf3f38aacd65a796400247c8d149  vp90-2-09-aq2-352x240-0050.i420
-7bdc6fc1fe6a1e24cb952e10ed19ab68  vp90-2-09-aq2-352x240-0051.i420
-a92e8a9e7ba4d24adcf63ab897057e68  vp90-2-09-aq2-352x240-0052.i420
-7ec84b978b27052954fac85142582c2c  vp90-2-09-aq2-352x240-0053.i420
-10153d3889093a27aa2aa7a4380d6372  vp90-2-09-aq2-352x240-0054.i420
-1313e1ab4c7c6c01b3b25ff7fc84da9f  vp90-2-09-aq2-352x240-0055.i420
-810d9122895dcb90fae58be03af9980b  vp90-2-09-aq2-352x240-0056.i420
-f77fb637d12d958099d534f4a1689eb7  vp90-2-09-aq2-352x240-0057.i420
-3570f0094d3f06efa648ff4d9db2a25d  vp90-2-09-aq2-352x240-0058.i420
-8f22721b7e56e04d41d2af7cbf2ca349  vp90-2-09-aq2-352x240-0059.i420
-fee5d638fa94a6d1a2fa1dfc86a3f131  vp90-2-09-aq2-352x240-0060.i420
-c9e2f58d5f3f8c3ad527e9bd53e12372  vp90-2-09-aq2-352x240-0061.i420
-6507534d0c9fbd22c76f1f7753f000ce  vp90-2-09-aq2-352x240-0062.i420
-cd944cf2a7dbd30ab4fc4b99f4041379  vp90-2-09-aq2-352x240-0063.i420
-15bbc0674190eeb1112a27746dce3726  vp90-2-09-aq2-352x240-0064.i420
-7270c42f643a9f27095dade9f1b6b62e  vp90-2-09-aq2-352x240-0065.i420
-7f47919091ccd7072a2068904f582679  vp90-2-09-aq2-352x240-0066.i420
-1e3c77d769a978bf9dc9188c0f1ed105  vp90-2-09-aq2-352x240-0067.i420
-4a4613749f272b7a04e6ead37844f73c  vp90-2-09-aq2-352x240-0068.i420
-8967e0f52af43110004dce3f78c8fc75  vp90-2-09-aq2-352x240-0069.i420
-e3b979ec8ed4e389abaeea149b86b407  vp90-2-09-aq2-352x240-0070.i420
-fd3c72c5249c214a85e0957279090781  vp90-2-09-aq2-352x240-0071.i420
-7fe861180df75e21f4b8937ae506d601  vp90-2-09-aq2-352x240-0072.i420
-8804a39483b5a8d7ae03003ee8b3152a  vp90-2-09-aq2-352x240-0073.i420
-30a1b0bd147277f8fc50de11c2c8dc93  vp90-2-09-aq2-352x240-0074.i420
-7cb788efedd325f45bd4785f89432115  vp90-2-09-aq2-352x240-0075.i420
-a162c8ab7fa0dafdc3313a69bc7f1e38  vp90-2-09-aq2-352x240-0076.i420
-83905de481bd1cafa16cd96698337c25  vp90-2-09-aq2-352x240-0077.i420
-3d75f99043ea4bf2364844474e180079  vp90-2-09-aq2-352x240-0078.i420
-89975274a8a72af7d2cdee9fbe907852  vp90-2-09-aq2-352x240-0079.i420
-e05c9a7af0ea61d4ef4476de4d7c97cd  vp90-2-09-aq2-352x240-0080.i420
-dfc99210a942a7427033cce9b596e0fa  vp90-2-09-aq2-352x240-0081.i420
-544361eecb8c3b45feb1dbef5c0a39a2  vp90-2-09-aq2-352x240-0082.i420
-7aaae6bbf8af4f7f6556f2285a9d9476  vp90-2-09-aq2-352x240-0083.i420
-485716ddd13576464d1ca47b4859cc22  vp90-2-09-aq2-352x240-0084.i420
-00194b66bafdb6a252852bd087200c6b  vp90-2-09-aq2-352x240-0085.i420
-d21b316ba1006c2381d78e5b7652b12a  vp90-2-09-aq2-352x240-0086.i420
-56506d53dc2333ccddcedb449977ce57  vp90-2-09-aq2-352x240-0087.i420
-0c6787858208959270dde59e38c544ca  vp90-2-09-aq2-352x240-0088.i420
-913b906f645964f57913db70e21aa6d8  vp90-2-09-aq2-352x240-0089.i420
-f9c5d447dd4c060d3610d22b6ff8f1d7  vp90-2-09-aq2-352x240-0090.i420
-ece0a0110c14dccde0ea4d0484b60d38  vp90-2-09-aq2-352x240-0091.i420
-fbcb7e878673c8287a1ed57a6feef818  vp90-2-09-aq2-352x240-0092.i420
-be5aed5dd5538c3ad8c9d88fb4a4207f  vp90-2-09-aq2-352x240-0093.i420
-4c668204dd2c45d039bf7c5f44203803  vp90-2-09-aq2-352x240-0094.i420
-06f9b1207289ed7fbf03c4be3f0349f5  vp90-2-09-aq2-352x240-0095.i420
-26275672bc752789d0a175ca48344643  vp90-2-09-aq2-352x240-0096.i420
-1b56fde58558ec9ae00f24815c13f672  vp90-2-09-aq2-352x240-0097.i420
-ff65dec4cab5d10ea34321f34d369b5e  vp90-2-09-aq2-352x240-0098.i420
-3d419dded34673cf487b39106af08da6  vp90-2-09-aq2-352x240-0099.i420
-ab8a99b2a88bab0238e5d3d3204098e0  vp90-2-09-aq2-352x240-0100.i420
diff --git a/tests/tests/media/res/raw/vp90_2_09_lf_deltas.vp9 b/tests/tests/media/res/raw/vp90_2_09_lf_deltas.vp9
deleted file mode 100644
index 72c747b..0000000
--- a/tests/tests/media/res/raw/vp90_2_09_lf_deltas.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_09_lf_deltas_vp9_md5 b/tests/tests/media/res/raw/vp90_2_09_lf_deltas_vp9_md5
deleted file mode 100644
index b212aaa..0000000
--- a/tests/tests/media/res/raw/vp90_2_09_lf_deltas_vp9_md5
+++ /dev/null
@@ -1,30 +0,0 @@
-a83c7f4602f595fd09e97f8c8a7277ec  vp90-2-09-lf_deltas-352x240-0001.i420
-53e1a3fd44932883a8dd112bbb0e359f  vp90-2-09-lf_deltas-352x240-0002.i420
-4bb16d168f9f0a7702c31a68bb8ff36c  vp90-2-09-lf_deltas-352x240-0003.i420
-1b2df157913aba96553aaf8d51491bf3  vp90-2-09-lf_deltas-352x240-0004.i420
-9d041532e42fca7a4062cd3e9b75413b  vp90-2-09-lf_deltas-352x240-0005.i420
-0dbac5ca06e13714d10e99042aefe375  vp90-2-09-lf_deltas-352x240-0006.i420
-bb83a507a65d2a640b08f42a77bb37f6  vp90-2-09-lf_deltas-352x240-0007.i420
-176f992d37c7daa36135cddb49398de3  vp90-2-09-lf_deltas-352x240-0008.i420
-c41834f72b3281cf6aaa66fd7416e6c3  vp90-2-09-lf_deltas-352x240-0009.i420
-790d4e6b1609dec782ff978e2003d318  vp90-2-09-lf_deltas-352x240-0010.i420
-449622f741f7577c1d721f2e9eb25091  vp90-2-09-lf_deltas-352x240-0011.i420
-8ef8543f7895c87ab04491b0150628e5  vp90-2-09-lf_deltas-352x240-0012.i420
-88ef626aca4b2bcb8c58a69db20a7b02  vp90-2-09-lf_deltas-352x240-0013.i420
-4b2f7adc2e1872ecdd9ffa7d1f1df4a6  vp90-2-09-lf_deltas-352x240-0014.i420
-7b162660225022ef31e39c34fee3418e  vp90-2-09-lf_deltas-352x240-0015.i420
-2b439a4b846edcc69cdf6075de5ac8fb  vp90-2-09-lf_deltas-352x240-0016.i420
-ba2eb1ba0ed9abf701a53a94c9c626fc  vp90-2-09-lf_deltas-352x240-0017.i420
-9fbec5d5334fd5e917feee756b652d93  vp90-2-09-lf_deltas-352x240-0018.i420
-93b5eb99ea54abc5fa90c5674499e27e  vp90-2-09-lf_deltas-352x240-0019.i420
-04a98408e9b0aed28932ef1dfdcfdb6c  vp90-2-09-lf_deltas-352x240-0020.i420
-9856ba976bed30bc790a3f28e926b092  vp90-2-09-lf_deltas-352x240-0021.i420
-2b0f450e9724cfc57b846148ff876e51  vp90-2-09-lf_deltas-352x240-0022.i420
-163757f3529369b9789ea606387b831d  vp90-2-09-lf_deltas-352x240-0023.i420
-de5ed2aff936c54f3378d0dcc2575d13  vp90-2-09-lf_deltas-352x240-0024.i420
-1f642826b8a6fb111c7c6130481dab89  vp90-2-09-lf_deltas-352x240-0025.i420
-b8e3a77c7d3c5c56f67aa7409fb5404c  vp90-2-09-lf_deltas-352x240-0026.i420
-eb06cb4f471e42d7fc06929a442cca8b  vp90-2-09-lf_deltas-352x240-0027.i420
-53471649a5080b306d2c04a4f7673bdf  vp90-2-09-lf_deltas-352x240-0028.i420
-70996be0cc5d2bd97025015dd50caa99  vp90-2-09-lf_deltas-352x240-0029.i420
-ff3280a8562fdf6697c4a7cb9c1bf0a0  vp90-2-09-lf_deltas-352x240-0030.i420
diff --git a/tests/tests/media/res/raw/vp90_2_09_subpixel_00_vp9_md5 b/tests/tests/media/res/raw/vp90_2_09_subpixel_00_vp9_md5
deleted file mode 100644
index 1144632..0000000
--- a/tests/tests/media/res/raw/vp90_2_09_subpixel_00_vp9_md5
+++ /dev/null
@@ -1,20 +0,0 @@
-50233551e96b74ebfdaabbc8a154303c  vp90-hantro-stream-001-320x180-0001.i420
-047109ae2e488be8ee953dca4f09a0e2  vp90-hantro-stream-001-320x180-0002.i420
-5e2ba01240e39566a607f10f0d7eaed3  vp90-hantro-stream-001-320x180-0003.i420
-01f1c635ce56efcc13def2ac3bcccc3f  vp90-hantro-stream-001-320x180-0004.i420
-6e800d75da797409eb2f5b458027b05d  vp90-hantro-stream-001-320x180-0005.i420
-a88b9c2cfad5367d934fd067c2c6452d  vp90-hantro-stream-001-320x180-0006.i420
-a898a33e443dba4c2d61c27caa0fb068  vp90-hantro-stream-001-320x180-0007.i420
-321f16df155169f1fbd117a258b065ed  vp90-hantro-stream-001-320x180-0008.i420
-a71b4df17c37e423a2a6129be8058c66  vp90-hantro-stream-001-320x180-0009.i420
-b168dad8dd0be2e945ada495320e1ec3  vp90-hantro-stream-001-320x180-0010.i420
-4b4e227f6558b9a0e80bbeaebdc50b63  vp90-hantro-stream-001-320x180-0011.i420
-929ad97d05c62b56d908378beeedb68e  vp90-hantro-stream-001-320x180-0012.i420
-f952dc4b2a6e6cdcb0740e67eec87c96  vp90-hantro-stream-001-320x180-0013.i420
-f42500b60e2bbfee44b7e5b4068d9061  vp90-hantro-stream-001-320x180-0014.i420
-802f7975005cc8d77a3801b72ee08ca1  vp90-hantro-stream-001-320x180-0015.i420
-e685e147c9400dd6742c749dc1e18fd6  vp90-hantro-stream-001-320x180-0016.i420
-4080f9db1e9a98478af9c0575a7f31fc  vp90-hantro-stream-001-320x180-0017.i420
-70fcce378d2bade12d2dab44b3fbd4b6  vp90-hantro-stream-001-320x180-0018.i420
-81e539130d2dbb2eb69fe63eb1bb9cbb  vp90-hantro-stream-001-320x180-0019.i420
-2952c0eae93f3dadd1aa84c50d3fd6d2  vp90-hantro-stream-001-320x180-0020.i420
diff --git a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame.vp9 b/tests/tests/media/res/raw/vp90_2_10_show_existing_frame.vp9
deleted file mode 100644
index bd5531e..0000000
--- a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2.vp9 b/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2.vp9
deleted file mode 100644
index 665a236..0000000
--- a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2_vp9_md5 b/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2_vp9_md5
deleted file mode 100644
index 51940b6..0000000
--- a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame2_vp9_md5
+++ /dev/null
@@ -1,16 +0,0 @@
-382b12c33cd86b38758706b8ebca8a85  -352x288-0001.i420
-799544370b35c91711a5b49a28cf86a8  -352x288-0002.i420
-7218eb4b6d1c7aea4f96ee47ad675e8e  -352x288-0003.i420
-627466200370e6ad60ea570d31be66e3  -352x288-0004.i420
-7dc65a2af108379f2b9265a9a1ea7cf8  -352x288-0005.i420
-c979e2f084760775a567f60f79f28198  -352x288-0006.i420
-fe668a6417aa0543e4ed4d1c67c5cbcb  -352x288-0007.i420
-bf9901e39815fa93cce0ed5b02b2ef2d  -352x288-0008.i420
-627466200370e6ad60ea570d31be66e3  -352x288-0009.i420
-7dc65a2af108379f2b9265a9a1ea7cf8  -352x288-0010.i420
-c979e2f084760775a567f60f79f28198  -352x288-0011.i420
-fe668a6417aa0543e4ed4d1c67c5cbcb  -352x288-0012.i420
-bf9901e39815fa93cce0ed5b02b2ef2d  -352x288-0013.i420
-627466200370e6ad60ea570d31be66e3  -352x288-0014.i420
-7dc65a2af108379f2b9265a9a1ea7cf8  -352x288-0015.i420
-c979e2f084760775a567f60f79f28198  -352x288-0016.i420
diff --git a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame_vp9_md5 b/tests/tests/media/res/raw/vp90_2_10_show_existing_frame_vp9_md5
deleted file mode 100644
index 85d421d..0000000
--- a/tests/tests/media/res/raw/vp90_2_10_show_existing_frame_vp9_md5
+++ /dev/null
@@ -1,13 +0,0 @@
-18981342ec178e082519451062c3a67f  vp90-2-10-show-existing-frame-352x288-0001.i420
-04ab9dbeac49ec31be58f6e671698e05  vp90-2-10-show-existing-frame-352x288-0002.i420
-4ed58a0ba93a5d97a232a50c5876cda2  vp90-2-10-show-existing-frame-352x288-0003.i420
-a41f00034923e56ba51a0b598acc2e3a  vp90-2-10-show-existing-frame-352x288-0004.i420
-63fa55ae9535ccdf06d44cce8065dda6  vp90-2-10-show-existing-frame-352x288-0005.i420
-a41f00034923e56ba51a0b598acc2e3a  vp90-2-10-show-existing-frame-352x288-0006.i420
-0e4b08e14d919edee2bbff2ecd47de57  vp90-2-10-show-existing-frame-352x288-0007.i420
-0e4b08e14d919edee2bbff2ecd47de57  vp90-2-10-show-existing-frame-352x288-0008.i420
-5d4af03fc3d410413ef2b5a6275528b7  vp90-2-10-show-existing-frame-352x288-0009.i420
-9e932915c67a789f6877e6d3f76d3649  vp90-2-10-show-existing-frame-352x288-0010.i420
-12f2e975c217e7ffcf334524e8acec35  vp90-2-10-show-existing-frame-352x288-0011.i420
-9e932915c67a789f6877e6d3f76d3649  vp90-2-10-show-existing-frame-352x288-0012.i420
-12f2e975c217e7ffcf334524e8acec35  vp90-2-10-show-existing-frame-352x288-0013.i420
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_1.vp9 b/tests/tests/media/res/raw/vp90_2_12_droppable_1.vp9
deleted file mode 100644
index 666d187..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_1.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_1_vp9_md5 b/tests/tests/media/res/raw/vp90_2_12_droppable_1_vp9_md5
deleted file mode 100644
index 7b1abf8..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_1_vp9_md5
+++ /dev/null
@@ -1,99 +0,0 @@
-1839e5db94dc99681d690d544cbe28a4  vp90-2-12-droppable_1.ivf-352x288-0001.i420
-dae2db51b91745edddb33ddbeb4e0988  vp90-2-12-droppable_1.ivf-352x288-0002.i420
-046639dbef310bf9016a54498a3ef0a3  vp90-2-12-droppable_1.ivf-352x288-0003.i420
-947044a5dbc918e8be468c2bc9eaeeaa  vp90-2-12-droppable_1.ivf-352x288-0004.i420
-f96322ba3bf86065829d15c4394a1ab2  vp90-2-12-droppable_1.ivf-352x288-0005.i420
-4dfcf05608b399d56b0b29e3447ac24a  vp90-2-12-droppable_1.ivf-352x288-0006.i420
-b772fd5f5e3221d9c1daf690aeca89e8  vp90-2-12-droppable_1.ivf-352x288-0007.i420
-d8838cf1a4316c6c9ba7f42f8cba205c  vp90-2-12-droppable_1.ivf-352x288-0008.i420
-368f762830ed3d29d642798ff88107bd  vp90-2-12-droppable_1.ivf-352x288-0009.i420
-f3e614a8f67681f814242c75e6ac66f7  vp90-2-12-droppable_1.ivf-352x288-0010.i420
-f49458a915dd853e53c15e52e280085b  vp90-2-12-droppable_1.ivf-352x288-0011.i420
-65cbd3f3f8447d3caf935cddfcb6cb15  vp90-2-12-droppable_1.ivf-352x288-0012.i420
-8f4764c45093050a78b4b6055648cda0  vp90-2-12-droppable_1.ivf-352x288-0013.i420
-16d399bff977cdac0543daffba3a14bd  vp90-2-12-droppable_1.ivf-352x288-0014.i420
-59f16bc632697d20514a55814cf0a9ae  vp90-2-12-droppable_1.ivf-352x288-0015.i420
-058ba53139a3f48883ae4e668177d564  vp90-2-12-droppable_1.ivf-352x288-0016.i420
-85796d9edf6a5fe5d0c804e8b80f4469  vp90-2-12-droppable_1.ivf-352x288-0017.i420
-94b7bf54b3dd8d007cb932c330e4e7cf  vp90-2-12-droppable_1.ivf-352x288-0018.i420
-964732ac0abf132fe8c65a845eeaea39  vp90-2-12-droppable_1.ivf-352x288-0019.i420
-dda8408b95868ea683f921e88ca0f8f4  vp90-2-12-droppable_1.ivf-352x288-0020.i420
-33b008d0b3932abd28d1c0d484a89cb0  vp90-2-12-droppable_1.ivf-352x288-0021.i420
-bbf8f8edda10ab20cde304b362f6fc7c  vp90-2-12-droppable_1.ivf-352x288-0022.i420
-6a08c9c1d4444f6b706a9193823e4866  vp90-2-12-droppable_1.ivf-352x288-0023.i420
-f3cfb225730f103c76083220b55aaf7e  vp90-2-12-droppable_1.ivf-352x288-0024.i420
-aa43de9fd852ffca405f9e1be0c517b9  vp90-2-12-droppable_1.ivf-352x288-0025.i420
-e5bcd2084c06d7e391af0710a3f56f86  vp90-2-12-droppable_1.ivf-352x288-0026.i420
-e16276389746853039a5c1353e3f830e  vp90-2-12-droppable_1.ivf-352x288-0027.i420
-8ecf32a7649dd9df718b5a31512aa17b  vp90-2-12-droppable_1.ivf-352x288-0028.i420
-db63be2b267a77061f40a48a5ad94129  vp90-2-12-droppable_1.ivf-352x288-0029.i420
-94c6a699e9b5382e1e4a30d462d1b05d  vp90-2-12-droppable_1.ivf-352x288-0030.i420
-340102d21a9c8d9119aed97d7bd408ba  vp90-2-12-droppable_1.ivf-352x288-0031.i420
-a369b32d71a6daf9a589614cba76d06c  vp90-2-12-droppable_1.ivf-352x288-0032.i420
-7c6f24525d07f08cfaaf8b57c1b1e0c7  vp90-2-12-droppable_1.ivf-352x288-0033.i420
-f99b35baf3e4f3967ad08b5475041959  vp90-2-12-droppable_1.ivf-352x288-0034.i420
-b1dede9bbe4a9542d10e7e2dcc225208  vp90-2-12-droppable_1.ivf-352x288-0035.i420
-d627915070dd5e6e11d1dff7b1dc4243  vp90-2-12-droppable_1.ivf-352x288-0036.i420
-2f176951d8716e1ac316f30388be269d  vp90-2-12-droppable_1.ivf-352x288-0037.i420
-215828b89c294b2568a575438c75d4e0  vp90-2-12-droppable_1.ivf-352x288-0038.i420
-3a29b4bf698713cbd575e6b14257fc87  vp90-2-12-droppable_1.ivf-352x288-0039.i420
-b930a1eef6838edc9abb769909b87cd9  vp90-2-12-droppable_1.ivf-352x288-0040.i420
-532c260abbd6d1181be3ff7a77f2d350  vp90-2-12-droppable_1.ivf-352x288-0041.i420
-b9ee7c0ab6c7cf8881fe5ed165454638  vp90-2-12-droppable_1.ivf-352x288-0042.i420
-d516f6949c3704ab9f154e3720f5f9ec  vp90-2-12-droppable_1.ivf-352x288-0043.i420
-bf05478086e97057856c3c987b220958  vp90-2-12-droppable_1.ivf-352x288-0044.i420
-92202af7ea355a8d4678e618c0344134  vp90-2-12-droppable_1.ivf-352x288-0045.i420
-ca870c59afab60c5da07e688a89be1a9  vp90-2-12-droppable_1.ivf-352x288-0046.i420
-92429a1763b07d2a0bf843a2953fcc1c  vp90-2-12-droppable_1.ivf-352x288-0047.i420
-1614a4655799cd08875b1271767ce85e  vp90-2-12-droppable_1.ivf-352x288-0048.i420
-2b30362c459109cafcff5f1bb8217e34  vp90-2-12-droppable_1.ivf-352x288-0049.i420
-6568f3dd687762489b7fd2c4a59dd38c  vp90-2-12-droppable_1.ivf-352x288-0050.i420
-6121d029cf4e402f9999a6719b3d6d97  vp90-2-12-droppable_1.ivf-352x288-0051.i420
-085cc85c56e35b4a19b48b502d606ffb  vp90-2-12-droppable_1.ivf-352x288-0052.i420
-63a7dc5d70bd142cb167c20f645a90bb  vp90-2-12-droppable_1.ivf-352x288-0053.i420
-b3ae931ee6f2724304f6a67070a386c0  vp90-2-12-droppable_1.ivf-352x288-0054.i420
-07fcd2b18c1c8a6c46151acff26ce2c0  vp90-2-12-droppable_1.ivf-352x288-0055.i420
-658758a58b92693bafeff41a2424e2a9  vp90-2-12-droppable_1.ivf-352x288-0056.i420
-3619120dfca7b24434ebe8e87936996c  vp90-2-12-droppable_1.ivf-352x288-0057.i420
-17152bbf314be8c30837cbece6fb53cd  vp90-2-12-droppable_1.ivf-352x288-0058.i420
-bc3352c6948fac5a681bf37abcc9b8b4  vp90-2-12-droppable_1.ivf-352x288-0059.i420
-5a4e0a19a7653a5ad120b1f46f9905b4  vp90-2-12-droppable_1.ivf-352x288-0060.i420
-2632db035652049f5340d1e59d577d42  vp90-2-12-droppable_1.ivf-352x288-0061.i420
-95a28f288602ae1f859a02055103aa39  vp90-2-12-droppable_1.ivf-352x288-0062.i420
-3d01e40359a3cfca996908d331492848  vp90-2-12-droppable_1.ivf-352x288-0063.i420
-4b6243114b09dbf590c1250419327b01  vp90-2-12-droppable_1.ivf-352x288-0064.i420
-f9aae29d9168366933f2bcc57a5afcb8  vp90-2-12-droppable_1.ivf-352x288-0065.i420
-6bca12015a807fdf48cda90cbe042ab4  vp90-2-12-droppable_1.ivf-352x288-0066.i420
-7769b6fa16f8c09973d1a2c08cf18dbb  vp90-2-12-droppable_1.ivf-352x288-0067.i420
-3457395b67960b1566007e764b0c0e81  vp90-2-12-droppable_1.ivf-352x288-0068.i420
-0d0ea9bdd5c4b164bbefc31000a28e49  vp90-2-12-droppable_1.ivf-352x288-0069.i420
-9fb6b2afb53b73a658b579beb3008bcd  vp90-2-12-droppable_1.ivf-352x288-0070.i420
-c9a941b87dcdd09afaab68cca0ed668a  vp90-2-12-droppable_1.ivf-352x288-0071.i420
-9a2baa4c442f3ebdf251e9bbef0dbf83  vp90-2-12-droppable_1.ivf-352x288-0072.i420
-ef90237bc4ed3d795ba78c8a4ef9f1d6  vp90-2-12-droppable_1.ivf-352x288-0073.i420
-68cabdcf5d934e279f1c45207e983d43  vp90-2-12-droppable_1.ivf-352x288-0074.i420
-ac5d93877691c05bb581a10bfcd058e5  vp90-2-12-droppable_1.ivf-352x288-0075.i420
-c4e09feb0a88d765c7681c7d427eda87  vp90-2-12-droppable_1.ivf-352x288-0076.i420
-690734960471ab41d5cdf052be87bd30  vp90-2-12-droppable_1.ivf-352x288-0077.i420
-4abaaa7e31a3a6e30b242e42587363d5  vp90-2-12-droppable_1.ivf-352x288-0078.i420
-b9c46f294e7a23b608004ff8aa2b9ea3  vp90-2-12-droppable_1.ivf-352x288-0079.i420
-b6a6a0e45c30de0f03880f753b6e75de  vp90-2-12-droppable_1.ivf-352x288-0080.i420
-c8725906463cb71ed8a64ba8af6a79be  vp90-2-12-droppable_1.ivf-352x288-0081.i420
-d0e28c090e859834a33bc0867a0f7ed7  vp90-2-12-droppable_1.ivf-352x288-0082.i420
-1ad8bf201d9898d562631226a2ef85fa  vp90-2-12-droppable_1.ivf-352x288-0083.i420
-962fe544b1a76bafe8a1b77cd64679ba  vp90-2-12-droppable_1.ivf-352x288-0084.i420
-89f9a77223961cc5ad49a11913ff9774  vp90-2-12-droppable_1.ivf-352x288-0085.i420
-483782bf6d14bbb19c749d58b8535e3e  vp90-2-12-droppable_1.ivf-352x288-0086.i420
-dfbe1b7ecc880ce5da758728f7375d63  vp90-2-12-droppable_1.ivf-352x288-0087.i420
-11a51b22418cc8dad57a20b37dd10630  vp90-2-12-droppable_1.ivf-352x288-0088.i420
-50b90506f9666ccb7dd94b6d59096489  vp90-2-12-droppable_1.ivf-352x288-0089.i420
-101294ecaff7edf5155ddc6cf3595021  vp90-2-12-droppable_1.ivf-352x288-0090.i420
-177e8f9d8aaf40b17d0b677133fc7955  vp90-2-12-droppable_1.ivf-352x288-0091.i420
-c029f78e758a27b8fc4214abf5ddad07  vp90-2-12-droppable_1.ivf-352x288-0092.i420
-45b6df0756e3f98218f4e9f0f33b1f13  vp90-2-12-droppable_1.ivf-352x288-0093.i420
-82d1fd8cc9fa0a072a0fc6177e7f8805  vp90-2-12-droppable_1.ivf-352x288-0094.i420
-bf6c3e8df105fdb82a614f8e8f6d68af  vp90-2-12-droppable_1.ivf-352x288-0095.i420
-2e66eccd31c0e1792f3019c0a7b43af6  vp90-2-12-droppable_1.ivf-352x288-0096.i420
-d7eab4f351bd3c03e873b93afc9b7803  vp90-2-12-droppable_1.ivf-352x288-0097.i420
-f7bc200d54ec154779521311c54a22d1  vp90-2-12-droppable_1.ivf-352x288-0098.i420
-8e2624d762102b6dbe13b7cf20ee1708  vp90-2-12-droppable_1.ivf-352x288-0099.i420
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_2.vp9 b/tests/tests/media/res/raw/vp90_2_12_droppable_2.vp9
deleted file mode 100644
index 672af0b..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_2.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_2_vp9_md5 b/tests/tests/media/res/raw/vp90_2_12_droppable_2_vp9_md5
deleted file mode 100644
index 4ee5724..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_2_vp9_md5
+++ /dev/null
@@ -1,99 +0,0 @@
-1839e5db94dc99681d690d544cbe28a4  vp90-2-12-droppable_2.ivf-352x288-0001.i420
-dae2db51b91745edddb33ddbeb4e0988  vp90-2-12-droppable_2.ivf-352x288-0002.i420
-046639dbef310bf9016a54498a3ef0a3  vp90-2-12-droppable_2.ivf-352x288-0003.i420
-947044a5dbc918e8be468c2bc9eaeeaa  vp90-2-12-droppable_2.ivf-352x288-0004.i420
-f96322ba3bf86065829d15c4394a1ab2  vp90-2-12-droppable_2.ivf-352x288-0005.i420
-4dfcf05608b399d56b0b29e3447ac24a  vp90-2-12-droppable_2.ivf-352x288-0006.i420
-b772fd5f5e3221d9c1daf690aeca89e8  vp90-2-12-droppable_2.ivf-352x288-0007.i420
-d8838cf1a4316c6c9ba7f42f8cba205c  vp90-2-12-droppable_2.ivf-352x288-0008.i420
-368f762830ed3d29d642798ff88107bd  vp90-2-12-droppable_2.ivf-352x288-0009.i420
-f3e614a8f67681f814242c75e6ac66f7  vp90-2-12-droppable_2.ivf-352x288-0010.i420
-f49458a915dd853e53c15e52e280085b  vp90-2-12-droppable_2.ivf-352x288-0011.i420
-65cbd3f3f8447d3caf935cddfcb6cb15  vp90-2-12-droppable_2.ivf-352x288-0012.i420
-8f4764c45093050a78b4b6055648cda0  vp90-2-12-droppable_2.ivf-352x288-0013.i420
-16d399bff977cdac0543daffba3a14bd  vp90-2-12-droppable_2.ivf-352x288-0014.i420
-59f16bc632697d20514a55814cf0a9ae  vp90-2-12-droppable_2.ivf-352x288-0015.i420
-058ba53139a3f48883ae4e668177d564  vp90-2-12-droppable_2.ivf-352x288-0016.i420
-85796d9edf6a5fe5d0c804e8b80f4469  vp90-2-12-droppable_2.ivf-352x288-0017.i420
-94b7bf54b3dd8d007cb932c330e4e7cf  vp90-2-12-droppable_2.ivf-352x288-0018.i420
-964732ac0abf132fe8c65a845eeaea39  vp90-2-12-droppable_2.ivf-352x288-0019.i420
-dda8408b95868ea683f921e88ca0f8f4  vp90-2-12-droppable_2.ivf-352x288-0020.i420
-33b008d0b3932abd28d1c0d484a89cb0  vp90-2-12-droppable_2.ivf-352x288-0021.i420
-bbf8f8edda10ab20cde304b362f6fc7c  vp90-2-12-droppable_2.ivf-352x288-0022.i420
-6a08c9c1d4444f6b706a9193823e4866  vp90-2-12-droppable_2.ivf-352x288-0023.i420
-f3cfb225730f103c76083220b55aaf7e  vp90-2-12-droppable_2.ivf-352x288-0024.i420
-aa43de9fd852ffca405f9e1be0c517b9  vp90-2-12-droppable_2.ivf-352x288-0025.i420
-e5bcd2084c06d7e391af0710a3f56f86  vp90-2-12-droppable_2.ivf-352x288-0026.i420
-e16276389746853039a5c1353e3f830e  vp90-2-12-droppable_2.ivf-352x288-0027.i420
-8ecf32a7649dd9df718b5a31512aa17b  vp90-2-12-droppable_2.ivf-352x288-0028.i420
-db63be2b267a77061f40a48a5ad94129  vp90-2-12-droppable_2.ivf-352x288-0029.i420
-94c6a699e9b5382e1e4a30d462d1b05d  vp90-2-12-droppable_2.ivf-352x288-0030.i420
-340102d21a9c8d9119aed97d7bd408ba  vp90-2-12-droppable_2.ivf-352x288-0031.i420
-a369b32d71a6daf9a589614cba76d06c  vp90-2-12-droppable_2.ivf-352x288-0032.i420
-7c6f24525d07f08cfaaf8b57c1b1e0c7  vp90-2-12-droppable_2.ivf-352x288-0033.i420
-f99b35baf3e4f3967ad08b5475041959  vp90-2-12-droppable_2.ivf-352x288-0034.i420
-b1dede9bbe4a9542d10e7e2dcc225208  vp90-2-12-droppable_2.ivf-352x288-0035.i420
-d627915070dd5e6e11d1dff7b1dc4243  vp90-2-12-droppable_2.ivf-352x288-0036.i420
-2f176951d8716e1ac316f30388be269d  vp90-2-12-droppable_2.ivf-352x288-0037.i420
-215828b89c294b2568a575438c75d4e0  vp90-2-12-droppable_2.ivf-352x288-0038.i420
-3a29b4bf698713cbd575e6b14257fc87  vp90-2-12-droppable_2.ivf-352x288-0039.i420
-b930a1eef6838edc9abb769909b87cd9  vp90-2-12-droppable_2.ivf-352x288-0040.i420
-532c260abbd6d1181be3ff7a77f2d350  vp90-2-12-droppable_2.ivf-352x288-0041.i420
-b9ee7c0ab6c7cf8881fe5ed165454638  vp90-2-12-droppable_2.ivf-352x288-0042.i420
-d516f6949c3704ab9f154e3720f5f9ec  vp90-2-12-droppable_2.ivf-352x288-0043.i420
-bf05478086e97057856c3c987b220958  vp90-2-12-droppable_2.ivf-352x288-0044.i420
-92202af7ea355a8d4678e618c0344134  vp90-2-12-droppable_2.ivf-352x288-0045.i420
-ca870c59afab60c5da07e688a89be1a9  vp90-2-12-droppable_2.ivf-352x288-0046.i420
-92429a1763b07d2a0bf843a2953fcc1c  vp90-2-12-droppable_2.ivf-352x288-0047.i420
-1614a4655799cd08875b1271767ce85e  vp90-2-12-droppable_2.ivf-352x288-0048.i420
-2b30362c459109cafcff5f1bb8217e34  vp90-2-12-droppable_2.ivf-352x288-0049.i420
-6568f3dd687762489b7fd2c4a59dd38c  vp90-2-12-droppable_2.ivf-352x288-0050.i420
-6121d029cf4e402f9999a6719b3d6d97  vp90-2-12-droppable_2.ivf-352x288-0051.i420
-085cc85c56e35b4a19b48b502d606ffb  vp90-2-12-droppable_2.ivf-352x288-0052.i420
-63a7dc5d70bd142cb167c20f645a90bb  vp90-2-12-droppable_2.ivf-352x288-0053.i420
-b3ae931ee6f2724304f6a67070a386c0  vp90-2-12-droppable_2.ivf-352x288-0054.i420
-07fcd2b18c1c8a6c46151acff26ce2c0  vp90-2-12-droppable_2.ivf-352x288-0055.i420
-658758a58b92693bafeff41a2424e2a9  vp90-2-12-droppable_2.ivf-352x288-0056.i420
-3619120dfca7b24434ebe8e87936996c  vp90-2-12-droppable_2.ivf-352x288-0057.i420
-17152bbf314be8c30837cbece6fb53cd  vp90-2-12-droppable_2.ivf-352x288-0058.i420
-bc3352c6948fac5a681bf37abcc9b8b4  vp90-2-12-droppable_2.ivf-352x288-0059.i420
-5a4e0a19a7653a5ad120b1f46f9905b4  vp90-2-12-droppable_2.ivf-352x288-0060.i420
-2632db035652049f5340d1e59d577d42  vp90-2-12-droppable_2.ivf-352x288-0061.i420
-95a28f288602ae1f859a02055103aa39  vp90-2-12-droppable_2.ivf-352x288-0062.i420
-3d01e40359a3cfca996908d331492848  vp90-2-12-droppable_2.ivf-352x288-0063.i420
-4b6243114b09dbf590c1250419327b01  vp90-2-12-droppable_2.ivf-352x288-0064.i420
-f9aae29d9168366933f2bcc57a5afcb8  vp90-2-12-droppable_2.ivf-352x288-0065.i420
-6bca12015a807fdf48cda90cbe042ab4  vp90-2-12-droppable_2.ivf-352x288-0066.i420
-7769b6fa16f8c09973d1a2c08cf18dbb  vp90-2-12-droppable_2.ivf-352x288-0067.i420
-3457395b67960b1566007e764b0c0e81  vp90-2-12-droppable_2.ivf-352x288-0068.i420
-0d0ea9bdd5c4b164bbefc31000a28e49  vp90-2-12-droppable_2.ivf-352x288-0069.i420
-9fb6b2afb53b73a658b579beb3008bcd  vp90-2-12-droppable_2.ivf-352x288-0070.i420
-c9a941b87dcdd09afaab68cca0ed668a  vp90-2-12-droppable_2.ivf-352x288-0071.i420
-9a2baa4c442f3ebdf251e9bbef0dbf83  vp90-2-12-droppable_2.ivf-352x288-0072.i420
-ef90237bc4ed3d795ba78c8a4ef9f1d6  vp90-2-12-droppable_2.ivf-352x288-0073.i420
-68cabdcf5d934e279f1c45207e983d43  vp90-2-12-droppable_2.ivf-352x288-0074.i420
-ac5d93877691c05bb581a10bfcd058e5  vp90-2-12-droppable_2.ivf-352x288-0075.i420
-c4e09feb0a88d765c7681c7d427eda87  vp90-2-12-droppable_2.ivf-352x288-0076.i420
-690734960471ab41d5cdf052be87bd30  vp90-2-12-droppable_2.ivf-352x288-0077.i420
-4abaaa7e31a3a6e30b242e42587363d5  vp90-2-12-droppable_2.ivf-352x288-0078.i420
-b9c46f294e7a23b608004ff8aa2b9ea3  vp90-2-12-droppable_2.ivf-352x288-0079.i420
-b6a6a0e45c30de0f03880f753b6e75de  vp90-2-12-droppable_2.ivf-352x288-0080.i420
-c8725906463cb71ed8a64ba8af6a79be  vp90-2-12-droppable_2.ivf-352x288-0081.i420
-d0e28c090e859834a33bc0867a0f7ed7  vp90-2-12-droppable_2.ivf-352x288-0082.i420
-1ad8bf201d9898d562631226a2ef85fa  vp90-2-12-droppable_2.ivf-352x288-0083.i420
-962fe544b1a76bafe8a1b77cd64679ba  vp90-2-12-droppable_2.ivf-352x288-0084.i420
-89f9a77223961cc5ad49a11913ff9774  vp90-2-12-droppable_2.ivf-352x288-0085.i420
-483782bf6d14bbb19c749d58b8535e3e  vp90-2-12-droppable_2.ivf-352x288-0086.i420
-dfbe1b7ecc880ce5da758728f7375d63  vp90-2-12-droppable_2.ivf-352x288-0087.i420
-11a51b22418cc8dad57a20b37dd10630  vp90-2-12-droppable_2.ivf-352x288-0088.i420
-50b90506f9666ccb7dd94b6d59096489  vp90-2-12-droppable_2.ivf-352x288-0089.i420
-101294ecaff7edf5155ddc6cf3595021  vp90-2-12-droppable_2.ivf-352x288-0090.i420
-177e8f9d8aaf40b17d0b677133fc7955  vp90-2-12-droppable_2.ivf-352x288-0091.i420
-c029f78e758a27b8fc4214abf5ddad07  vp90-2-12-droppable_2.ivf-352x288-0092.i420
-45b6df0756e3f98218f4e9f0f33b1f13  vp90-2-12-droppable_2.ivf-352x288-0093.i420
-82d1fd8cc9fa0a072a0fc6177e7f8805  vp90-2-12-droppable_2.ivf-352x288-0094.i420
-bf6c3e8df105fdb82a614f8e8f6d68af  vp90-2-12-droppable_2.ivf-352x288-0095.i420
-2e66eccd31c0e1792f3019c0a7b43af6  vp90-2-12-droppable_2.ivf-352x288-0096.i420
-d7eab4f351bd3c03e873b93afc9b7803  vp90-2-12-droppable_2.ivf-352x288-0097.i420
-f7bc200d54ec154779521311c54a22d1  vp90-2-12-droppable_2.ivf-352x288-0098.i420
-8e2624d762102b6dbe13b7cf20ee1708  vp90-2-12-droppable_2.ivf-352x288-0099.i420
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_3.vp9 b/tests/tests/media/res/raw/vp90_2_12_droppable_3.vp9
deleted file mode 100644
index 1f26178..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_3.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_12_droppable_3_vp9_md5 b/tests/tests/media/res/raw/vp90_2_12_droppable_3_vp9_md5
deleted file mode 100644
index 9fdb07c..0000000
--- a/tests/tests/media/res/raw/vp90_2_12_droppable_3_vp9_md5
+++ /dev/null
@@ -1,31 +0,0 @@
-7ab6428314a7bce2ebae83b78acf9d1c  vp90-2-12-droppable_3.ivf-640x480-0001.i420
-373cfc7765ea8038e64d95ff90b6d9e8  vp90-2-12-droppable_3.ivf-640x480-0002.i420
-58d782daf8249542df4a4f0e66994b86  vp90-2-12-droppable_3.ivf-640x480-0003.i420
-38b13b37c460f67dbbda8847a37e5a58  vp90-2-12-droppable_3.ivf-640x480-0004.i420
-902d00e196093fcebad74ef608d7c3ff  vp90-2-12-droppable_3.ivf-640x480-0005.i420
-f3549650a4581de21916b189576b6a52  vp90-2-12-droppable_3.ivf-640x480-0006.i420
-a44d4bf06a241f31d1755ff6a118060a  vp90-2-12-droppable_3.ivf-640x480-0007.i420
-8eeef076eec9eec2861f3376ebf87d0a  vp90-2-12-droppable_3.ivf-640x480-0008.i420
-9a81bf95fc7210526b79c47ff80ae968  vp90-2-12-droppable_3.ivf-640x480-0009.i420
-bf215dfd9b764292de4d064389015e55  vp90-2-12-droppable_3.ivf-640x480-0010.i420
-283b1efdedde5633606d8a5d68097768  vp90-2-12-droppable_3.ivf-640x480-0011.i420
-dbb74ee6ec5f32b9ecb58b73d465be26  vp90-2-12-droppable_3.ivf-640x480-0012.i420
-ca1e21e458f674036addf08a79f6164e  vp90-2-12-droppable_3.ivf-640x480-0013.i420
-24c3b279ecb0559ac146abed5976c54a  vp90-2-12-droppable_3.ivf-640x480-0014.i420
-5f6796e3fa0e85d65b46ba66932ee09c  vp90-2-12-droppable_3.ivf-640x480-0015.i420
-7b22b5642e42e79fcc339ca6652f8f39  vp90-2-12-droppable_3.ivf-640x480-0016.i420
-7478595483ce62a5906f979ad296b6c5  vp90-2-12-droppable_3.ivf-640x480-0017.i420
-55d843f54af65305f7e298013e90a839  vp90-2-12-droppable_3.ivf-640x480-0018.i420
-6ab0a82b5f0736d951b58f2245adb793  vp90-2-12-droppable_3.ivf-640x480-0019.i420
-1a9f6adde0d6ecd7bc83301ffeb15e51  vp90-2-12-droppable_3.ivf-640x480-0020.i420
-07552d44c99801657a3301d50c6d3897  vp90-2-12-droppable_3.ivf-640x480-0021.i420
-e9cdeec3accd4d19aa199a64e6cd163d  vp90-2-12-droppable_3.ivf-640x480-0022.i420
-5dedc5eeb214bc4356bfa53e1c00d723  vp90-2-12-droppable_3.ivf-640x480-0023.i420
-dfd4bf2f664b46c36de24edf799c5c2a  vp90-2-12-droppable_3.ivf-640x480-0024.i420
-deb33fefe4f20f09b6e84a037a7c2755  vp90-2-12-droppable_3.ivf-640x480-0025.i420
-e7425d6d380be060a89a2ca85660042f  vp90-2-12-droppable_3.ivf-640x480-0026.i420
-74e3b4f750566b09c2fd0baafa5d69d1  vp90-2-12-droppable_3.ivf-640x480-0027.i420
-dd9f990aa7d858290a970be4681b7a1f  vp90-2-12-droppable_3.ivf-640x480-0028.i420
-f7e8c6e20722b6a69e7f6766f41f2805  vp90-2-12-droppable_3.ivf-640x480-0029.i420
-835fca0a38539ef2632f85a051544326  vp90-2-12-droppable_3.ivf-640x480-0030.i420
-9c10a225363aa167ccef6e53b19ee64f  vp90-2-12-droppable_3.ivf-640x480-0031.i420
diff --git a/tests/tests/media/res/raw/vp90_2_15_segkey.vp9 b/tests/tests/media/res/raw/vp90_2_15_segkey.vp9
deleted file mode 100644
index b67d891..0000000
--- a/tests/tests/media/res/raw/vp90_2_15_segkey.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_15_segkey_adpq_vp9_md5 b/tests/tests/media/res/raw/vp90_2_15_segkey_adpq_vp9_md5
deleted file mode 100644
index e3ee4d7..0000000
--- a/tests/tests/media/res/raw/vp90_2_15_segkey_adpq_vp9_md5
+++ /dev/null
@@ -1,150 +0,0 @@
-d4f0e4b606ddb40b482aecb24cf3bc63  vp90-2-15-segkey_adpq.webm-1280x720-0001.i420
-692ec092bc5928fa6430d056e883759a  vp90-2-15-segkey_adpq.webm-1280x720-0002.i420
-dad790df33430899fed98886a24b37e5  vp90-2-15-segkey_adpq.webm-1280x720-0003.i420
-7e66e793ac9462a40dd5b963fb62e667  vp90-2-15-segkey_adpq.webm-1280x720-0004.i420
-0d795c6e20f42f09aca0ddb9dffaa6e8  vp90-2-15-segkey_adpq.webm-1280x720-0005.i420
-0ef3739c4ab2c51f0ab8e290eadad77e  vp90-2-15-segkey_adpq.webm-1280x720-0006.i420
-04a15f765960263c1b4a5a8822e17322  vp90-2-15-segkey_adpq.webm-1280x720-0007.i420
-116d518830c958bf46759fd79bc74198  vp90-2-15-segkey_adpq.webm-1280x720-0008.i420
-58ea67addab05825cc2e5f2ab99fca4b  vp90-2-15-segkey_adpq.webm-1280x720-0009.i420
-590f6e5deea6dde21dc1098fa2017c2f  vp90-2-15-segkey_adpq.webm-1280x720-0010.i420
-895479957b0882ccce4159782dee8deb  vp90-2-15-segkey_adpq.webm-1280x720-0011.i420
-cc8e05afdfb6f9c7042fd6f9e9d49140  vp90-2-15-segkey_adpq.webm-1280x720-0012.i420
-3e47c556a63af90f1ca4609f97f25d2c  vp90-2-15-segkey_adpq.webm-1280x720-0013.i420
-e5ca5dce8cbd39412db2fe219d6d2594  vp90-2-15-segkey_adpq.webm-1280x720-0014.i420
-c62b456e12230660d26eb7226f257d0c  vp90-2-15-segkey_adpq.webm-1280x720-0015.i420
-e184c961b373de465d3242f32f7cf3ed  vp90-2-15-segkey_adpq.webm-1280x720-0016.i420
-7466b91858f740fc28965a63effe05d6  vp90-2-15-segkey_adpq.webm-1280x720-0017.i420
-c8f06a3b1e471c4e7a9efd71a30dfe3b  vp90-2-15-segkey_adpq.webm-1280x720-0018.i420
-d4fb95148963b2eaff0211ddc5117c13  vp90-2-15-segkey_adpq.webm-1280x720-0019.i420
-c646526b40277289520d47ed8ca3b644  vp90-2-15-segkey_adpq.webm-1280x720-0020.i420
-e441ae686fa444e4e3584543611043ba  vp90-2-15-segkey_adpq.webm-1280x720-0021.i420
-68d707ef6909bfbc02dcbd9e392a04f6  vp90-2-15-segkey_adpq.webm-1280x720-0022.i420
-1ff285d17a26622b61bd2651754602b1  vp90-2-15-segkey_adpq.webm-1280x720-0023.i420
-c272192987e44e54e5335e6416bd15a5  vp90-2-15-segkey_adpq.webm-1280x720-0024.i420
-8f6f02572181eb4855dcd4c957e57d2e  vp90-2-15-segkey_adpq.webm-1280x720-0025.i420
-baf03eb567fd092eeb6f08ff5e098350  vp90-2-15-segkey_adpq.webm-1280x720-0026.i420
-479c78bd3da0892b8d4e32c99ec4739f  vp90-2-15-segkey_adpq.webm-1280x720-0027.i420
-d39a52f6e30ef10462bdef1006809e88  vp90-2-15-segkey_adpq.webm-1280x720-0028.i420
-d58395369806221efe9ba88513319d8a  vp90-2-15-segkey_adpq.webm-1280x720-0029.i420
-459e77e83c510ee1d79bf069752d44e5  vp90-2-15-segkey_adpq.webm-1280x720-0030.i420
-438027c8eacb9c795f8267a151ef5a4e  vp90-2-15-segkey_adpq.webm-1280x720-0031.i420
-ea6b73fb0d4b23ebbdaeb0267135d083  vp90-2-15-segkey_adpq.webm-1280x720-0032.i420
-48160c624d4d5050a4c8abcbe0edf4b2  vp90-2-15-segkey_adpq.webm-1280x720-0033.i420
-6fc6d5b4751cf137fc0204c0026f2503  vp90-2-15-segkey_adpq.webm-1280x720-0034.i420
-5ea20f6483fc5cde854313ed8288c7ca  vp90-2-15-segkey_adpq.webm-1280x720-0035.i420
-dafa41fa3468f684ca5538593cd1a0de  vp90-2-15-segkey_adpq.webm-1280x720-0036.i420
-b73d3336c83a27874e24b691c34c3421  vp90-2-15-segkey_adpq.webm-1280x720-0037.i420
-d0b0488a5871a49442746ac8ea1343bc  vp90-2-15-segkey_adpq.webm-1280x720-0038.i420
-df6fe9cb354624b69908730f24f51b88  vp90-2-15-segkey_adpq.webm-1280x720-0039.i420
-a388b159a024ace9437976206e62473c  vp90-2-15-segkey_adpq.webm-1280x720-0040.i420
-9007423410201a70b6997477ed9040f6  vp90-2-15-segkey_adpq.webm-1280x720-0041.i420
-7f7425cc018ad391e06b867f51d69513  vp90-2-15-segkey_adpq.webm-1280x720-0042.i420
-2ef51a3a15c627f803eee7f351cdfa4e  vp90-2-15-segkey_adpq.webm-1280x720-0043.i420
-260cded2461ab87181d650c58a8a0656  vp90-2-15-segkey_adpq.webm-1280x720-0044.i420
-fdd7a93b5f25ec2b74d93736fa7bb475  vp90-2-15-segkey_adpq.webm-1280x720-0045.i420
-810bb95ef0221b50ef12c7d0a4740fec  vp90-2-15-segkey_adpq.webm-1280x720-0046.i420
-f7eb4d63c16aebfeba4804c4e9c2c134  vp90-2-15-segkey_adpq.webm-1280x720-0047.i420
-a1ae94b85bced552e2c4f15ab5c5096d  vp90-2-15-segkey_adpq.webm-1280x720-0048.i420
-4b7b9e460b4a4ceab5deb5c6876cea05  vp90-2-15-segkey_adpq.webm-1280x720-0049.i420
-514472399dc39fcc4e833e166b81ea8e  vp90-2-15-segkey_adpq.webm-1280x720-0050.i420
-dca73ca76936d0a7eeb71c20955ea3a3  vp90-2-15-segkey_adpq.webm-1280x720-0051.i420
-927b185567b515a6bd102e1199ee1836  vp90-2-15-segkey_adpq.webm-1280x720-0052.i420
-63e1fffd59b77c53811d75a116fbac60  vp90-2-15-segkey_adpq.webm-1280x720-0053.i420
-5ca302497e81d564cfd455e2b606b262  vp90-2-15-segkey_adpq.webm-1280x720-0054.i420
-6e317d469ee664bc511a8286650f0b79  vp90-2-15-segkey_adpq.webm-1280x720-0055.i420
-d93e1909f3bdda983e0b3c73a8c51754  vp90-2-15-segkey_adpq.webm-1280x720-0056.i420
-836072cb1c4dc3dc32c935ba4ac3f716  vp90-2-15-segkey_adpq.webm-1280x720-0057.i420
-014e61666ba819260a25f09ae97768a8  vp90-2-15-segkey_adpq.webm-1280x720-0058.i420
-997fa6283e48ff017ce04041b9022fb9  vp90-2-15-segkey_adpq.webm-1280x720-0059.i420
-b2c35749c6b848601193c2eff7f0bdf1  vp90-2-15-segkey_adpq.webm-1280x720-0060.i420
-813e9f562ef53589afbfe7d73002c136  vp90-2-15-segkey_adpq.webm-1280x720-0061.i420
-be876a05cfc72fe6138e1c24b6e94c3f  vp90-2-15-segkey_adpq.webm-1280x720-0062.i420
-2a33b99f67fe5579ddbd62bac085ae8a  vp90-2-15-segkey_adpq.webm-1280x720-0063.i420
-8d374a1886861cfd9ca6f16a0aff1b6c  vp90-2-15-segkey_adpq.webm-1280x720-0064.i420
-eff4e17b08c67a1663c8f1cc614bd94a  vp90-2-15-segkey_adpq.webm-1280x720-0065.i420
-39e4d97460cf02ecfbc666e0413d7db1  vp90-2-15-segkey_adpq.webm-1280x720-0066.i420
-732f41606146dfb0c6a8cf130df969a8  vp90-2-15-segkey_adpq.webm-1280x720-0067.i420
-9b724b808bc26f21aaa32653185b2cf3  vp90-2-15-segkey_adpq.webm-1280x720-0068.i420
-e18598cb7ac70cdb5dea29b35ae5accb  vp90-2-15-segkey_adpq.webm-1280x720-0069.i420
-afbcad9f7bad0b58a5bccdb8977a60fb  vp90-2-15-segkey_adpq.webm-1280x720-0070.i420
-6ec24c40cd8a0cf2e15339ce4f60c232  vp90-2-15-segkey_adpq.webm-1280x720-0071.i420
-76616dbe8207235f6890360566f9e8df  vp90-2-15-segkey_adpq.webm-1280x720-0072.i420
-49a5c751ed430e9bc41c3a3334295025  vp90-2-15-segkey_adpq.webm-1280x720-0073.i420
-f657e47dbbcc2a04e9e7b71ecd8451ff  vp90-2-15-segkey_adpq.webm-1280x720-0074.i420
-8e85f3d26b26f26ccd804061d2f37bbb  vp90-2-15-segkey_adpq.webm-1280x720-0075.i420
-5a9dd5c0390491cd21163da01dc21f4d  vp90-2-15-segkey_adpq.webm-1280x720-0076.i420
-3cf88ad2d2d7ecf1223afa5d1b849317  vp90-2-15-segkey_adpq.webm-1280x720-0077.i420
-27385b23461b5f1c137c2f29354595ed  vp90-2-15-segkey_adpq.webm-1280x720-0078.i420
-e6eacbe2890389c586f2936a75ab3509  vp90-2-15-segkey_adpq.webm-1280x720-0079.i420
-19a48ffafdcdb6fb1d6b9808daed2f86  vp90-2-15-segkey_adpq.webm-1280x720-0080.i420
-f8c9419d4944fb214e06a2c30a560d93  vp90-2-15-segkey_adpq.webm-1280x720-0081.i420
-3f3d3dd54e5aa6bd59af1be86ec9be3d  vp90-2-15-segkey_adpq.webm-1280x720-0082.i420
-28be5316ed79dc47b6a142cef0c16ab7  vp90-2-15-segkey_adpq.webm-1280x720-0083.i420
-6fbed684bfe8dfd354210293d7eb4d0b  vp90-2-15-segkey_adpq.webm-1280x720-0084.i420
-e60cd76f68c95f8b484d0b6424eea4cc  vp90-2-15-segkey_adpq.webm-1280x720-0085.i420
-e05a0cf382f49039faddaffeff2cec16  vp90-2-15-segkey_adpq.webm-1280x720-0086.i420
-42ea736ebbfe50f1ebd460d71781e5d6  vp90-2-15-segkey_adpq.webm-1280x720-0087.i420
-80f78066700b6752bbc1a41390ddb482  vp90-2-15-segkey_adpq.webm-1280x720-0088.i420
-14671354929fcf10677b2ed2db3c8cb4  vp90-2-15-segkey_adpq.webm-1280x720-0089.i420
-96a7d68407f1a2c96bd3cafe0c696bf5  vp90-2-15-segkey_adpq.webm-1280x720-0090.i420
-2f2adb990cfa42229db987a668b19d38  vp90-2-15-segkey_adpq.webm-1280x720-0091.i420
-a8233951004e1bb0d0937435a517fad2  vp90-2-15-segkey_adpq.webm-1280x720-0092.i420
-6163e872c38adfde7b0c8891cbb2c969  vp90-2-15-segkey_adpq.webm-1280x720-0093.i420
-990165e0905fb80ccc29d2de062d4f9b  vp90-2-15-segkey_adpq.webm-1280x720-0094.i420
-e6f3224c4c60098ee93fca870f8636b2  vp90-2-15-segkey_adpq.webm-1280x720-0095.i420
-8c561667345f932618f8b3aaa43ffde0  vp90-2-15-segkey_adpq.webm-1280x720-0096.i420
-1acb3999bacd483d1153beb43ee09772  vp90-2-15-segkey_adpq.webm-1280x720-0097.i420
-2a075c7bc49190df83b8285ee6e124d3  vp90-2-15-segkey_adpq.webm-1280x720-0098.i420
-890a134a3c77d9b64d83fe6d2def02de  vp90-2-15-segkey_adpq.webm-1280x720-0099.i420
-d0b41422b89f03ffcbde7c85889ad2c2  vp90-2-15-segkey_adpq.webm-1280x720-0100.i420
-fdc4f855d70ef16ec9baeb05c3a73f44  vp90-2-15-segkey_adpq.webm-1280x720-0101.i420
-ed9f847a3b4280cfe306018825c76508  vp90-2-15-segkey_adpq.webm-1280x720-0102.i420
-5deb2536bba158c722bc0d909f45e611  vp90-2-15-segkey_adpq.webm-1280x720-0103.i420
-fc7880ca8680e03fb1978adce8066027  vp90-2-15-segkey_adpq.webm-1280x720-0104.i420
-6e1c351c6b102e9185f688a02190b87f  vp90-2-15-segkey_adpq.webm-1280x720-0105.i420
-1f6169bf490ed1b4c391383f770fec02  vp90-2-15-segkey_adpq.webm-1280x720-0106.i420
-80ac3b673b1504fb1e88d883a91a539c  vp90-2-15-segkey_adpq.webm-1280x720-0107.i420
-d2e7654f961ff3767c1e9e8558c2f20d  vp90-2-15-segkey_adpq.webm-1280x720-0108.i420
-365368d813eb10c5adc53e47afeb414d  vp90-2-15-segkey_adpq.webm-1280x720-0109.i420
-5f74f55478377dd31da91cf195332480  vp90-2-15-segkey_adpq.webm-1280x720-0110.i420
-827b7b3853ea3b1855583b59ed7b09c2  vp90-2-15-segkey_adpq.webm-1280x720-0111.i420
-2017c1a57a271308172bd84d3887d063  vp90-2-15-segkey_adpq.webm-1280x720-0112.i420
-d65b95c71db9972dc051bec7df19f85f  vp90-2-15-segkey_adpq.webm-1280x720-0113.i420
-7243da9072729ffa75209a6699e77ac3  vp90-2-15-segkey_adpq.webm-1280x720-0114.i420
-112da8d27907ab6a66b030e9c8864e46  vp90-2-15-segkey_adpq.webm-1280x720-0115.i420
-e2837b6409de4bc6e71ff9eca8eab391  vp90-2-15-segkey_adpq.webm-1280x720-0116.i420
-567eba2ddb91a02665ac96fa10703f00  vp90-2-15-segkey_adpq.webm-1280x720-0117.i420
-474a99d56fce0e7e96ac3585b905956f  vp90-2-15-segkey_adpq.webm-1280x720-0118.i420
-3087edb09f1ef2e63130b7c03e696028  vp90-2-15-segkey_adpq.webm-1280x720-0119.i420
-574f7328da31760ecf237617aebd7784  vp90-2-15-segkey_adpq.webm-1280x720-0120.i420
-c3a7669bb496bec766a74a800275ff6c  vp90-2-15-segkey_adpq.webm-1280x720-0121.i420
-c0d87245a92e7140e6b729c26fe97a95  vp90-2-15-segkey_adpq.webm-1280x720-0122.i420
-467e33e84435fe64cb14653600ec5163  vp90-2-15-segkey_adpq.webm-1280x720-0123.i420
-1c7a5b2472c00e9dc63f679b51ead6a9  vp90-2-15-segkey_adpq.webm-1280x720-0124.i420
-8fb7197463cdae6c45437a73dcb4a3d8  vp90-2-15-segkey_adpq.webm-1280x720-0125.i420
-f352fee36f51536175b05b5ff5a3187a  vp90-2-15-segkey_adpq.webm-1280x720-0126.i420
-ac1ed4392a38268a2495508245032d74  vp90-2-15-segkey_adpq.webm-1280x720-0127.i420
-b8179a306c4fbc6f207d15acaae92dfb  vp90-2-15-segkey_adpq.webm-1280x720-0128.i420
-7f263b0fd68652d83b75d24cc11c89e8  vp90-2-15-segkey_adpq.webm-1280x720-0129.i420
-39e33d02a01247cefe19d8bf9fbdecae  vp90-2-15-segkey_adpq.webm-1280x720-0130.i420
-49a4e89c9fcc66f7e6e679aee4af0852  vp90-2-15-segkey_adpq.webm-1280x720-0131.i420
-0af52a32e6d74694a0a1f12aa78293fe  vp90-2-15-segkey_adpq.webm-1280x720-0132.i420
-fedde75a5c093ea12f0ed328da7350c9  vp90-2-15-segkey_adpq.webm-1280x720-0133.i420
-2ab788cf689fdbe8fbc74dde165605ad  vp90-2-15-segkey_adpq.webm-1280x720-0134.i420
-682c2316cbd2e8a5e54edd1e9309a6c7  vp90-2-15-segkey_adpq.webm-1280x720-0135.i420
-f155e8fa47625f18dffea813a7070c71  vp90-2-15-segkey_adpq.webm-1280x720-0136.i420
-2611eb2b2da8f6995ac2159012ec540a  vp90-2-15-segkey_adpq.webm-1280x720-0137.i420
-a1130a4ddf7dbd592e23001c4b98b3fc  vp90-2-15-segkey_adpq.webm-1280x720-0138.i420
-84eef6f47bff223c6a0916c0688d2f7c  vp90-2-15-segkey_adpq.webm-1280x720-0139.i420
-ccfab0b84c7fc59d850ac5cb8d36da41  vp90-2-15-segkey_adpq.webm-1280x720-0140.i420
-6866845dfb320ecd9c22444ca7e52c8b  vp90-2-15-segkey_adpq.webm-1280x720-0141.i420
-3068ceb83ee4d047df3880c64754efd7  vp90-2-15-segkey_adpq.webm-1280x720-0142.i420
-7f9a74e20cfe10972961e7f21529f7f4  vp90-2-15-segkey_adpq.webm-1280x720-0143.i420
-29156833963ec7f218d38fca7df132bf  vp90-2-15-segkey_adpq.webm-1280x720-0144.i420
-f8feb4c2ae1ce371fc8b4a83d7dc34e0  vp90-2-15-segkey_adpq.webm-1280x720-0145.i420
-0e5fe8965da239c17b02f0c902feeaec  vp90-2-15-segkey_adpq.webm-1280x720-0146.i420
-e8d37eb1b8c2576658ebc58a7cc6c0d4  vp90-2-15-segkey_adpq.webm-1280x720-0147.i420
-0a89fd2784112bbd54eb559a8272ab1e  vp90-2-15-segkey_adpq.webm-1280x720-0148.i420
-342bc99cdd618272d12d045698b9cb20  vp90-2-15-segkey_adpq.webm-1280x720-0149.i420
-a489a32bb43559b8a1989b13660e3cf6  vp90-2-15-segkey_adpq.webm-1280x720-0150.i420
diff --git a/tests/tests/media/res/raw/vp90_2_15_segkey_vp9_md5 b/tests/tests/media/res/raw/vp90_2_15_segkey_vp9_md5
deleted file mode 100644
index 809e25e..0000000
--- a/tests/tests/media/res/raw/vp90_2_15_segkey_vp9_md5
+++ /dev/null
@@ -1 +0,0 @@
-d3805a0d832b9bdd69ad99d68490be7b  vp90-2-15-segkey.webm-1280x720-0001.i420
diff --git a/tests/tests/media/res/raw/vp90_2_16_intra_only.vp9 b/tests/tests/media/res/raw/vp90_2_16_intra_only.vp9
deleted file mode 100644
index a88750f..0000000
--- a/tests/tests/media/res/raw/vp90_2_16_intra_only.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_16_intra_only_vp9_md5 b/tests/tests/media/res/raw/vp90_2_16_intra_only_vp9_md5
deleted file mode 100644
index 112a52a..0000000
--- a/tests/tests/media/res/raw/vp90_2_16_intra_only_vp9_md5
+++ /dev/null
@@ -1,7 +0,0 @@
-d57529601178948afa4818c3c8938884  vp90-2-16-intra-only-352x288-0001.i420
-d47e00250c45733d64af067a417bcd06  vp90-2-16-intra-only-352x288-0002.i420
-984e41cd8350808ac6129746b2377818  vp90-2-16-intra-only-352x288-0003.i420
-a5fa62996b4bb52e72e335722cf55bef  vp90-2-16-intra-only-352x288-0004.i420
-b71ca5ad650170ac921a71a6440fb508  vp90-2-16-intra-only-352x288-0005.i420
-76ba63001170b8992fc72be5c4ace731  vp90-2-16-intra-only-352x288-0006.i420
-c4e7f96a8fd58d901b1d881926ddae09  vp90-2-16-intra-only-352x288-0007.i420
diff --git a/tests/tests/media/res/raw/vp90_2_17_show_existing_frame.vp9 b/tests/tests/media/res/raw/vp90_2_17_show_existing_frame.vp9
deleted file mode 100644
index 4748eeb..0000000
--- a/tests/tests/media/res/raw/vp90_2_17_show_existing_frame.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_17_show_existing_frame_vp9_md5 b/tests/tests/media/res/raw/vp90_2_17_show_existing_frame_vp9_md5
deleted file mode 100644
index 50394da..0000000
--- a/tests/tests/media/res/raw/vp90_2_17_show_existing_frame_vp9_md5
+++ /dev/null
@@ -1,30 +0,0 @@
-b71ca5ad650170ac921a71a6440fb508  vp90-2-17-show-existing-frame.webm-352x288-0001.i420
-edc30ba14b73198ca827c1b216957dec  vp90-2-17-show-existing-frame.webm-352x288-0002.i420
-1902c5b3a82f6bdeb80a5b053909df04  vp90-2-17-show-existing-frame.webm-352x288-0003.i420
-9a96e33ed546d7961c6e5bc48244a5c7  vp90-2-17-show-existing-frame.webm-352x288-0004.i420
-b02a48630b0f3c08c61dd2518b55ea39  vp90-2-17-show-existing-frame.webm-352x288-0005.i420
-8ac9cec1101a46bf4ba20191b7ba3f07  vp90-2-17-show-existing-frame.webm-352x288-0006.i420
-88ea8c3cb9eca47152b5d22435a06675  vp90-2-17-show-existing-frame.webm-352x288-0007.i420
-bff3406209ec0d592a891dff2b58d6cd  vp90-2-17-show-existing-frame.webm-352x288-0008.i420
-b71ca5ad650170ac921a71a6440fb508  vp90-2-17-show-existing-frame.webm-352x288-0009.i420
-edc30ba14b73198ca827c1b216957dec  vp90-2-17-show-existing-frame.webm-352x288-0010.i420
-1902c5b3a82f6bdeb80a5b053909df04  vp90-2-17-show-existing-frame.webm-352x288-0011.i420
-9a96e33ed546d7961c6e5bc48244a5c7  vp90-2-17-show-existing-frame.webm-352x288-0012.i420
-b02a48630b0f3c08c61dd2518b55ea39  vp90-2-17-show-existing-frame.webm-352x288-0013.i420
-8ac9cec1101a46bf4ba20191b7ba3f07  vp90-2-17-show-existing-frame.webm-352x288-0014.i420
-88ea8c3cb9eca47152b5d22435a06675  vp90-2-17-show-existing-frame.webm-352x288-0015.i420
-bff3406209ec0d592a891dff2b58d6cd  vp90-2-17-show-existing-frame.webm-352x288-0016.i420
-b71ca5ad650170ac921a71a6440fb508  vp90-2-17-show-existing-frame.webm-352x288-0017.i420
-edc30ba14b73198ca827c1b216957dec  vp90-2-17-show-existing-frame.webm-352x288-0018.i420
-1902c5b3a82f6bdeb80a5b053909df04  vp90-2-17-show-existing-frame.webm-352x288-0019.i420
-9a96e33ed546d7961c6e5bc48244a5c7  vp90-2-17-show-existing-frame.webm-352x288-0020.i420
-b02a48630b0f3c08c61dd2518b55ea39  vp90-2-17-show-existing-frame.webm-352x288-0021.i420
-8ac9cec1101a46bf4ba20191b7ba3f07  vp90-2-17-show-existing-frame.webm-352x288-0022.i420
-88ea8c3cb9eca47152b5d22435a06675  vp90-2-17-show-existing-frame.webm-352x288-0023.i420
-bff3406209ec0d592a891dff2b58d6cd  vp90-2-17-show-existing-frame.webm-352x288-0024.i420
-a36428fd889ddf9983638c581c1d9146  vp90-2-17-show-existing-frame.webm-352x288-0025.i420
-689bd5fba1b7dff9abb1332e56f224fa  vp90-2-17-show-existing-frame.webm-352x288-0026.i420
-e883aa425fa13c6d4eda2707d114d61d  vp90-2-17-show-existing-frame.webm-352x288-0027.i420
-94d0bce08beb8a19c4ae12194a646935  vp90-2-17-show-existing-frame.webm-352x288-0028.i420
-cd317e97f5fd4be166308911c874f4e1  vp90-2-17-show-existing-frame.webm-352x288-0029.i420
-2fa245acd72d377cbb79c08faa02b330  vp90-2-17-show-existing-frame.webm-352x288-0030.i420
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip.vp9 b/tests/tests/media/res/raw/vp90_2_19_skip.vp9
deleted file mode 100644
index 51c1173..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip_01.vp9 b/tests/tests/media/res/raw/vp90_2_19_skip_01.vp9
deleted file mode 100644
index b108df8..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip_01.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip_01_vp9_md5 b/tests/tests/media/res/raw/vp90_2_19_skip_01_vp9_md5
deleted file mode 100644
index 98fdce2..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip_01_vp9_md5
+++ /dev/null
@@ -1,60 +0,0 @@
-6e350ec33af4ce08c18e884d7fd795aa  01.yuv
-abfb6e52a5a9d896b65e2c54e1f35f20  02.yuv
-e40e57536810c196f277f2d86fd7ef4d  03.yuv
-0b25dbe7b8218fcc67e700d332ef7ad7  04.yuv
-20f7737828b9a686a02a1b01cebb637f  05.yuv
-06d41fe61fbd8d96750882baac56954f  06.yuv
-9e6661eb3424978e105dfa393407c293  07.yuv
-2d9dd8d9625dc67cb342b9db51a9bf85  08.yuv
-d8d8671e8e921484acd0fd67c7046382  09.yuv
-f6513fee6d2de65d51239a689f45f1d6  10.yuv
-5a8c26cbe9cefc79481a1e24c36d1b07  11.yuv
-918c1080ca4f2d61049caaa963d58069  12.yuv
-9d028868e407a2a596ede1c7ec71997c  13.yuv
-0bf06f2b16acc2c9691953d0ba134e7b  14.yuv
-f340480004fd45b579bfa04487c94136  15.yuv
-a6ab04e5c72ab3612842e891644ef2f2  16.yuv
-cf5da560e869a73ac6dc37ff1812b14e  17.yuv
-4b9e24121a05b7f95e4c2ed5dc25aac9  18.yuv
-5e7c43edbf51d19cae31e348920e5848  19.yuv
-96e421b17ce7fea2428ea1fe8f7b500a  20.yuv
-0e2b1ef0e3d1cf4a2af7dd7cbb160f04  21.yuv
-bdcc399223320df2fab20bf365e4f3df  22.yuv
-26cf7f3d9c3e36c6d2f8af6e1c9f9b15  23.yuv
-d2ef6d0dfd7eca3d77b60f9c82191bf3  24.yuv
-76c07306ce9a627f37a6a5c8d66820a2  25.yuv
-7ee2428a7fbc3c88418167a8e52d438d  26.yuv
-68b267345e01d2fc72576f984f757a3c  27.yuv
-541bfb03ae1db20d693a0a92550e8df6  28.yuv
-e87cf619aefdb81e26a8ec70d6a12c2c  29.yuv
-621f1ed3976088b247d79504bdf03ca3  30.yuv
-2c6023819babc72f8ad936ec0f0ca85e  31.yuv
-9f5eae1311cfdd2c02ee63a978b8d6d2  32.yuv
-902112ada88fbd3fe006b713cf08f5aa  33.yuv
-ab5b451f7174520c57b096268272759c  34.yuv
-b686cba2b4c454de4e8e16f088db8354  35.yuv
-a68e934aa397819bb80bf4bd29134103  36.yuv
-6982347a3aa730c2f8a15c94bfb42b3d  37.yuv
-57c3f83402184dd80beb9f78f0c5cfc8  38.yuv
-adf66470bfdb88a860a17b74d0f5e99b  39.yuv
-e98d09d8d34d3c8d1cb6619794b1ed5b  40.yuv
-f839dce9aabf7db8b007d83766e05fa7  41.yuv
-3bad23fa7f6052582e319b9774e26030  42.yuv
-4220ba420816a3bc7030e1582942e74d  43.yuv
-f404671eaf5310565d0831684ff0f3ba  44.yuv
-8ba48a53a0178bcd596b880c8a96a61f  45.yuv
-7a8fbb7356e494a6cefe52c2b07e6dce  46.yuv
-fb7974be2a11fcfc71cc450727bf71ad  47.yuv
-5c9be4d4acac0b375be851cd3774a918  48.yuv
-83c84c97c9c5efd6dd56668cdbf18428  49.yuv
-626c9ab1e52f7d9c711e142b46e82a42  50.yuv
-8012dbe193dfa5d787445eaeecd9091b  51.yuv
-bc36350c60b92f77473158a9249d5383  52.yuv
-4e81e00620020b4c55f273796f023145  53.yuv
-f6161f425f0476821f8caa46360d87af  54.yuv
-509f724002e54baac7dd37b514c345da  55.yuv
-4ab2368ffa3854f433fd568883db0e55  56.yuv
-9934a8d1ae0bdd65aab070efa91ac778  57.yuv
-2f2c1b110107c1141053513f2596a599  58.yuv
-9da6ca6ef375a095f0c86cb8cb41db74  59.yuv
-125c735dc1fb523c8088e0815cd4cde1  60.yuv
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip_02.vp9 b/tests/tests/media/res/raw/vp90_2_19_skip_02.vp9
deleted file mode 100644
index 770e311..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip_02.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip_02_vp9_md5 b/tests/tests/media/res/raw/vp90_2_19_skip_02_vp9_md5
deleted file mode 100644
index 80b3d65..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip_02_vp9_md5
+++ /dev/null
@@ -1,12 +0,0 @@
-1ee94a4b059cd7380dabf71553aedf32  vp90-2-19-skip-02.webm-208x144-0001.i420
-d86167bfd6bca76c476c79361894a3f0  vp90-2-19-skip-02.webm-208x144-0002.i420
-421c9cd3b3474af8893fa44832b6fca7  vp90-2-19-skip-02.webm-208x144-0003.i420
-db0585dc48220105b8a3326222a66292  vp90-2-19-skip-02.webm-208x144-0004.i420
-15e5a53f39d7e350d356b0c4b2be4c82  vp90-2-19-skip-02.webm-208x144-0005.i420
-4d35f23245c90b5c0f013b4b2a085b2a  vp90-2-19-skip-02.webm-208x144-0006.i420
-1e46a9945accfec93e345f50ebb520a0  vp90-2-19-skip-02.webm-208x144-0007.i420
-ea53419be2de85e9505aaed3a03a10e0  vp90-2-19-skip-02.webm-208x144-0008.i420
-14c17560d0690e929a40b6f2e46a458a  vp90-2-19-skip-02.webm-208x144-0009.i420
-7c5eb58b81b57530391717a076114728  vp90-2-19-skip-02.webm-208x144-0010.i420
-57d4952e50ba519388ce7efca7ee505b  vp90-2-19-skip-02.webm-208x144-0011.i420
-7bb3d99c86e135354ad437e5d80bf089  vp90-2-19-skip-02.webm-208x144-0012.i420
diff --git a/tests/tests/media/res/raw/vp90_2_19_skip_vp9_md5 b/tests/tests/media/res/raw/vp90_2_19_skip_vp9_md5
deleted file mode 100644
index 472b59a..0000000
--- a/tests/tests/media/res/raw/vp90_2_19_skip_vp9_md5
+++ /dev/null
@@ -1,60 +0,0 @@
-6e350ec33af4ce08c18e884d7fd795aa  01.yuv
-3f77603d7a5727db4017202310da1724  02.yuv
-983aae5424ab39af07adcf78d43a23ba  03.yuv
-a0cdeaa0eb6eda3750d268434391a7ab  04.yuv
-64325c99444e566989c6eeaa8ffeee32  05.yuv
-8320f52b7fcd0565465941c50a01b801  06.yuv
-d6bb76bf65b70b86bda891fe807fcd26  07.yuv
-c44b46422d2be0b831d27fab61a0d374  08.yuv
-414ce4220e0aef53cb5966990ae00bb6  09.yuv
-2bf82867941dc68b0d60cede97f2d4d7  10.yuv
-593c676743ffaf1a5be85d74529dbb3f  11.yuv
-ccac5f0992545c35d227a021cb91b6f6  12.yuv
-bbb637aaed37f7cc6068802531152b77  13.yuv
-41e2d71a3ff3ed9d225348eb6be72853  14.yuv
-7ed3f76508059c281f75e2043d7d6677  15.yuv
-ed330eefed85685bed2bc1c5dc409d24  16.yuv
-61c4c435237e06623b6994f43b469833  17.yuv
-1e27f96fe683a654b228360f7a1beee1  18.yuv
-090e025ec148ec53f802cdb8ed0bfd77  19.yuv
-20d0caa6d4ab9db05869fd0532a2265f  20.yuv
-e11d108db8822b07a6fe8216b34fa259  21.yuv
-bdb3421bffee6eeafa00255ffcdcf1fe  22.yuv
-cb090c2f2d28679d1e2eb2c04150d751  23.yuv
-7f8eec67552bbac654f9a374d7a985ca  24.yuv
-5c039c621c9c20947f75b98b7e579ce8  25.yuv
-464be7de183b98138d8e9fb61ef613ec  26.yuv
-b887a102c6399d33307ac434d0ab3fd4  27.yuv
-e8fa163067c77e27b9089b4a48b444c0  28.yuv
-d92e13465475df261f9469171ac962cc  29.yuv
-8e6a8ba99387bc4cf7aee0aab6d132f4  30.yuv
-4625d7b6b23ddc840941a4f4d7739daa  31.yuv
-3b8533887142da49fdb24569dd34c2ac  32.yuv
-9ff94cefac26936cbf284e7482b2433d  33.yuv
-68b2fec46494c24501e48927fe9636e5  34.yuv
-7d76bfa0ebb09f27482288a0d61cd0e8  35.yuv
-27b630a10fc1790884e16bbb0fef37ee  36.yuv
-322de7f87166725fdd48373b28156593  37.yuv
-d73c7bd37eccd47df4a5b27cecbb8cea  38.yuv
-c3679a0317d1efc2b76e3dd97baa4070  39.yuv
-e3f9523bd41a280b922cdcf188911de2  40.yuv
-b57f28d944f4f39ab9c97a5ae8e3beda  41.yuv
-520a2b794f4384cf4c38f8d4c5b9c7bb  42.yuv
-bc215f65a73183da31b4bd896db178b4  43.yuv
-ab3c86d15728db474a45c544c2103745  44.yuv
-1287678d28e400a47a4f21b8854339d7  45.yuv
-be3f1eb3f48706e4e37aff83f0434fab  46.yuv
-dbc71f50dd620e058da88c414041ca57  47.yuv
-3d68bf9ae1e6065bf70eee87fbb9a2ce  48.yuv
-c901fac66677a4be1b624d6995af1ea3  49.yuv
-0756c5dd31c691df91a535910d8756e0  50.yuv
-b9c30e56f000a71148ababdf7c7bbae3  51.yuv
-2dc2917b1c0e498dd8e83abcdc48e3ca  52.yuv
-057ce1fe6eb8800ec8ec47720e70ed74  53.yuv
-1c25a6c9e182fa7fbef473ad9be476ea  54.yuv
-3ae770d42403b5069d0fa97e11cec3b0  55.yuv
-e5c19d46df1c711a650229867073246c  56.yuv
-cfc5f6cbb0a319d8bfb3feffddbb8f48  57.yuv
-86e42a5e03bc537505589f7fa39bff2b  58.yuv
-cdf32bda09d594763068d6fa0ff67b98  59.yuv
-0d6be7f95a7e3941950f14e20be11020  60.yuv
diff --git a/tests/tests/media/res/raw/vp90_2_20_big_superframe_01.vp9 b/tests/tests/media/res/raw/vp90_2_20_big_superframe_01.vp9
deleted file mode 100644
index 6a45085..0000000
--- a/tests/tests/media/res/raw/vp90_2_20_big_superframe_01.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_20_big_superframe_01_vp9_md5 b/tests/tests/media/res/raw/vp90_2_20_big_superframe_01_vp9_md5
deleted file mode 100644
index 4fe4dcc..0000000
--- a/tests/tests/media/res/raw/vp90_2_20_big_superframe_01_vp9_md5
+++ /dev/null
@@ -1,13 +0,0 @@
-b5d461894f957709576d15f6dce3d69e  vp90-2-20-big_superframe-01.webm-352x288-0001.i420
-b14448e30621b5d2d0a18c2e12ef0d95  vp90-2-20-big_superframe-01.webm-352x288-0002.i420
-4584cf6ffe6ca91fa3926cb88b6dab2d  vp90-2-20-big_superframe-01.webm-352x288-0003.i420
-ff83dd3c0dfdd8740523f560a9d7abfe  vp90-2-20-big_superframe-01.webm-352x288-0004.i420
-a2a1dc9b91b0e4fd6ecc8fa53a156ed9  vp90-2-20-big_superframe-01.webm-352x288-0005.i420
-13f953ae1cfa25c5996d77fc88070452  vp90-2-20-big_superframe-01.webm-352x288-0006.i420
-81dd4bdf32f7998fdc221a4612e022ce  vp90-2-20-big_superframe-01.webm-352x288-0007.i420
-518bbee70ad6488ea3d69e0e34a133a4  vp90-2-20-big_superframe-01.webm-352x288-0008.i420
-acae8f0ab72c6daa3a280fa41fbbb22e  vp90-2-20-big_superframe-01.webm-352x288-0009.i420
-fbfb93207c09242ee49637e740f3f870  vp90-2-20-big_superframe-01.webm-352x288-0010.i420
-20b072932f592e67d92cb67b224620b1  vp90-2-20-big_superframe-01.webm-352x288-0011.i420
-ddab6752606406c5b25d4e3b3208e381  vp90-2-20-big_superframe-01.webm-352x288-0012.i420
-6525d6826964e8b54fa982a300088ce3  vp90-2-20-big_superframe-01.webm-352x288-0013.i420
diff --git a/tests/tests/media/res/raw/vp90_2_20_big_superframe_02.vp9 b/tests/tests/media/res/raw/vp90_2_20_big_superframe_02.vp9
deleted file mode 100644
index 73137af..0000000
--- a/tests/tests/media/res/raw/vp90_2_20_big_superframe_02.vp9
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/res/raw/vp90_2_20_big_superframe_02_vp9_md5 b/tests/tests/media/res/raw/vp90_2_20_big_superframe_02_vp9_md5
deleted file mode 100644
index 8ca8576..0000000
--- a/tests/tests/media/res/raw/vp90_2_20_big_superframe_02_vp9_md5
+++ /dev/null
@@ -1,18 +0,0 @@
-b5d461894f957709576d15f6dce3d69e  vp90-2-20-big_superframe-02.webm-352x288-0001.i420
-54e45dfe575d9843c198270f62154c09  vp90-2-20-big_superframe-02.webm-352x288-0002.i420
-87749847c291a46c0ae0ca5d5002cb5f  vp90-2-20-big_superframe-02.webm-352x288-0003.i420
-04d7f341b081b35fd14ddfd777607fb1  vp90-2-20-big_superframe-02.webm-352x288-0004.i420
-81c73e1129b94936d53d33f8c66588e9  vp90-2-20-big_superframe-02.webm-352x288-0005.i420
-678b99102426df6a69184acc142c0c6a  vp90-2-20-big_superframe-02.webm-352x288-0006.i420
-a91f8d509a3e853e71b78b7ebe162428  vp90-2-20-big_superframe-02.webm-352x288-0007.i420
-9981ac3b4b78627c4474222823a9b288  vp90-2-20-big_superframe-02.webm-352x288-0008.i420
-400adf7ab42c47954db9086b5fcb2ef8  vp90-2-20-big_superframe-02.webm-352x288-0009.i420
-fc917ebef7115a04f0bf4e06e1e1a2a9  vp90-2-20-big_superframe-02.webm-352x288-0010.i420
-72271e7946c9dd99a947df787caaadfe  vp90-2-20-big_superframe-02.webm-352x288-0011.i420
-acb81daaaa35d651a87a9f8e87f813b3  vp90-2-20-big_superframe-02.webm-352x288-0012.i420
-e6ffc22ab1a918e3f1af384f0dd22ff9  vp90-2-20-big_superframe-02.webm-352x288-0013.i420
-3ecbc78c737312948d8c172d1c2d2383  vp90-2-20-big_superframe-02.webm-352x288-0014.i420
-320edb7fddfe8c98e616702d11f8f456  vp90-2-20-big_superframe-02.webm-352x288-0015.i420
-cf8363cebf34bdefd2c8e2178de5ef23  vp90-2-20-big_superframe-02.webm-352x288-0016.i420
-d15c8f1bc21ad09ad881a59b5f2b8167  vp90-2-20-big_superframe-02.webm-352x288-0017.i420
-c5c9f8b1826fac50655ed1454ae78279  vp90-2-20-big_superframe-02.webm-352x288-0018.i420
diff --git a/tests/tests/media/res/raw/vp9_test_vectors b/tests/tests/media/res/raw/vp9_test_vectors
deleted file mode 100644
index a9dc4f3..0000000
--- a/tests/tests/media/res/raw/vp9_test_vectors
+++ /dev/null
@@ -1,235 +0,0 @@
-vp90_2_00_quantizer_00
-vp90_2_00_quantizer_01
-vp90_2_00_quantizer_02
-vp90_2_00_quantizer_03
-vp90_2_00_quantizer_04
-vp90_2_00_quantizer_05
-vp90_2_00_quantizer_06
-vp90_2_00_quantizer_07
-vp90_2_00_quantizer_08
-vp90_2_00_quantizer_09
-vp90_2_00_quantizer_10
-vp90_2_00_quantizer_11
-vp90_2_00_quantizer_12
-vp90_2_00_quantizer_13
-vp90_2_00_quantizer_14
-vp90_2_00_quantizer_15
-vp90_2_00_quantizer_16
-vp90_2_00_quantizer_17
-vp90_2_00_quantizer_18
-vp90_2_00_quantizer_19
-vp90_2_00_quantizer_20
-vp90_2_00_quantizer_21
-vp90_2_00_quantizer_22
-vp90_2_00_quantizer_23
-vp90_2_00_quantizer_24
-vp90_2_00_quantizer_25
-vp90_2_00_quantizer_26
-vp90_2_00_quantizer_27
-vp90_2_00_quantizer_28
-vp90_2_00_quantizer_29
-vp90_2_00_quantizer_30
-vp90_2_00_quantizer_31
-vp90_2_00_quantizer_32
-vp90_2_00_quantizer_33
-vp90_2_00_quantizer_34
-vp90_2_00_quantizer_35
-vp90_2_00_quantizer_36
-vp90_2_00_quantizer_37
-vp90_2_00_quantizer_38
-vp90_2_00_quantizer_39
-vp90_2_00_quantizer_40
-vp90_2_00_quantizer_41
-vp90_2_00_quantizer_42
-vp90_2_00_quantizer_43
-vp90_2_00_quantizer_44
-vp90_2_00_quantizer_45
-vp90_2_00_quantizer_46
-vp90_2_00_quantizer_47
-vp90_2_00_quantizer_48
-vp90_2_00_quantizer_49
-vp90_2_00_quantizer_50
-vp90_2_00_quantizer_51
-vp90_2_00_quantizer_52
-vp90_2_00_quantizer_53
-vp90_2_00_quantizer_54
-vp90_2_00_quantizer_55
-vp90_2_00_quantizer_56
-vp90_2_00_quantizer_57
-vp90_2_00_quantizer_58
-vp90_2_00_quantizer_59
-vp90_2_00_quantizer_60
-vp90_2_00_quantizer_61
-vp90_2_00_quantizer_62
-vp90_2_00_quantizer_63
-vp90_2_01_sharpness_1
-vp90_2_01_sharpness_2
-vp90_2_01_sharpness_3
-vp90_2_01_sharpness_4
-vp90_2_01_sharpness_5
-vp90_2_01_sharpness_6
-vp90_2_01_sharpness_7
-vp90_2_02_size_08x08
-vp90_2_02_size_08x10
-vp90_2_02_size_08x16
-vp90_2_02_size_08x18
-vp90_2_02_size_08x32
-vp90_2_02_size_08x34
-vp90_2_02_size_08x64
-vp90_2_02_size_08x66
-vp90_2_02_size_10x08
-vp90_2_02_size_10x10
-vp90_2_02_size_10x16
-vp90_2_02_size_10x18
-vp90_2_02_size_10x32
-vp90_2_02_size_10x34
-vp90_2_02_size_10x64
-vp90_2_02_size_10x66
-vp90_2_02_size_16x08
-vp90_2_02_size_16x10
-vp90_2_02_size_16x16
-vp90_2_02_size_16x18
-vp90_2_02_size_16x32
-vp90_2_02_size_16x34
-vp90_2_02_size_16x64
-vp90_2_02_size_16x66
-vp90_2_02_size_18x08
-vp90_2_02_size_18x10
-vp90_2_02_size_18x16
-vp90_2_02_size_18x18
-vp90_2_02_size_18x32
-vp90_2_02_size_18x34
-vp90_2_02_size_18x64
-vp90_2_02_size_18x66
-vp90_2_02_size_32x08
-vp90_2_02_size_32x10
-vp90_2_02_size_32x16
-vp90_2_02_size_32x18
-vp90_2_02_size_32x32
-vp90_2_02_size_32x34
-vp90_2_02_size_32x64
-vp90_2_02_size_32x66
-vp90_2_02_size_34x08
-vp90_2_02_size_34x10
-vp90_2_02_size_34x16
-vp90_2_02_size_34x18
-vp90_2_02_size_34x32
-vp90_2_02_size_34x34
-vp90_2_02_size_34x64
-vp90_2_02_size_34x66
-vp90_2_02_size_64x08
-vp90_2_02_size_64x10
-vp90_2_02_size_64x16
-vp90_2_02_size_64x18
-vp90_2_02_size_64x32
-vp90_2_02_size_64x34
-vp90_2_02_size_64x64
-vp90_2_02_size_64x66
-vp90_2_02_size_66x08
-vp90_2_02_size_66x10
-vp90_2_02_size_66x16
-vp90_2_02_size_66x18
-vp90_2_02_size_66x32
-vp90_2_02_size_66x34
-vp90_2_02_size_66x64
-vp90_2_02_size_66x66
-vp90_2_02_size_130x132
-vp90_2_02_size_132x130
-vp90_2_02_size_132x132
-vp90_2_02_size_178x180
-vp90_2_02_size_180x178
-vp90_2_02_size_180x180
-vp90_2_03_size_196x196
-vp90_2_03_size_196x198
-vp90_2_03_size_196x200
-vp90_2_03_size_196x202
-vp90_2_03_size_196x208
-vp90_2_03_size_196x210
-vp90_2_03_size_196x224
-vp90_2_03_size_196x226
-vp90_2_03_size_198x196
-vp90_2_03_size_198x198
-vp90_2_03_size_198x200
-vp90_2_03_size_198x202
-vp90_2_03_size_198x208
-vp90_2_03_size_198x210
-vp90_2_03_size_198x224
-vp90_2_03_size_198x226
-vp90_2_03_size_200x196
-vp90_2_03_size_200x198
-vp90_2_03_size_200x200
-vp90_2_03_size_200x202
-vp90_2_03_size_200x208
-vp90_2_03_size_200x210
-vp90_2_03_size_200x224
-vp90_2_03_size_200x226
-vp90_2_03_size_202x196
-vp90_2_03_size_202x198
-vp90_2_03_size_202x200
-vp90_2_03_size_202x202
-vp90_2_03_size_202x208
-vp90_2_03_size_202x210
-vp90_2_03_size_202x224
-vp90_2_03_size_202x226
-vp90_2_03_size_208x196
-vp90_2_03_size_208x198
-vp90_2_03_size_208x200
-vp90_2_03_size_208x202
-vp90_2_03_size_208x208
-vp90_2_03_size_208x210
-vp90_2_03_size_208x224
-vp90_2_03_size_208x226
-vp90_2_03_size_210x196
-vp90_2_03_size_210x198
-vp90_2_03_size_210x200
-vp90_2_03_size_210x202
-vp90_2_03_size_210x208
-vp90_2_03_size_210x210
-vp90_2_03_size_210x224
-vp90_2_03_size_210x226
-vp90_2_03_size_224x196
-vp90_2_03_size_224x198
-vp90_2_03_size_224x200
-vp90_2_03_size_224x202
-vp90_2_03_size_224x208
-vp90_2_03_size_224x210
-vp90_2_03_size_224x224
-vp90_2_03_size_224x226
-vp90_2_03_size_226x196
-vp90_2_03_size_226x198
-vp90_2_03_size_226x200
-vp90_2_03_size_226x202
-vp90_2_03_size_226x208
-vp90_2_03_size_226x210
-vp90_2_03_size_226x224
-vp90_2_03_size_226x226
-vp90_2_02_size_lf_1920x1080
-vp90_2_03_deltaq
-vp90_2_06_bilinear
-vp90_2_07_frame_parallel_1
-vp90_2_07_frame_parallel
-vp90_2_08_tile_1x2_frame_parallel
-vp90_2_08_tile_1x2
-vp90_2_08_tile_1x4_frame_parallel
-vp90_2_08_tile_1x4
-vp90_2_08_tile_1x8_frame_parallel
-vp90_2_08_tile_1x8
-vp90_2_08_tile_4x1
-vp90_2_08_tile_4x4
-vp90_2_09_aq2
-vp90_2_09_lf_deltas
-vp90_2_09_subpixel_00
-vp90_2_10_show_existing_frame2
-vp90_2_10_show_existing_frame
-vp90_2_12_droppable_1
-vp90_2_12_droppable_2
-vp90_2_12_droppable_3
-vp90_2_15_segkey_adpq
-vp90_2_15_segkey
-vp90_2_16_intra_only
-vp90_2_17_show_existing_frame
-vp90_2_19_skip_01
-vp90_2_19_skip_02
-vp90_2_19_skip
-vp90_2_20_big_superframe_01
-vp90_2_20_big_superframe_02
diff --git a/tests/tests/media/src/android/media/cts/AudioAttributesTest.java b/tests/tests/media/src/android/media/cts/AudioAttributesTest.java
index e44dc3a..f4e86eb 100644
--- a/tests/tests/media/src/android/media/cts/AudioAttributesTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioAttributesTest.java
@@ -19,6 +19,7 @@
 import static org.testng.Assert.assertThrows;
 import static org.testng.Assert.expectThrows;
 
+import android.audio.policy.configuration.V7_0.AudioUsage;
 import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.os.Parcel;
@@ -200,6 +201,27 @@
         assertEquals(attr1, attr2);
     }
 
+    // -----------------------------------------------------------------
+    // audio_policy_configuration.xsd converter tests
+    // ----------------------------------
+    public void testXsdStringToUsage_returnsCorrectUsage() {
+        int usage = AudioAttributes.xsdStringToUsage(AudioUsage.AUDIO_USAGE_MEDIA.toString());
+
+        assertEquals(AudioAttributes.USAGE_MEDIA, usage);
+    }
+
+    public void testXsdStringToUsage_withUnsupportedString_returnsUnknownUsage() {
+        int usage = AudioAttributes.xsdStringToUsage("not a usage");
+
+        assertEquals(AudioAttributes.USAGE_UNKNOWN, usage);
+    }
+
+    public void testUsageToXsdString_returnsCorrectString() {
+        String xsdUsage = AudioAttributes.usageToXsdString(AudioAttributes.USAGE_MEDIA);
+
+        assertEquals(AudioUsage.AUDIO_USAGE_MEDIA.toString(), xsdUsage);
+    }
+
     // -------------------------------------------------------------------
     // Reflection helpers for accessing system usage methods and fields
     // -------------------------------------------------------------------
diff --git a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
index 24a598a..7b25b26d 100644
--- a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
@@ -1033,6 +1033,11 @@
     }
 
     public void testGetImageAtIndex() throws Exception {
+        if (!MediaUtils.hasDecoder(MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+            MediaUtils.skipTest("no video decoders for resource");
+            return;
+        }
+
         testGetImage("heifwriter_input.heic", 1920, 1080, 0 /*rotation*/,
                 4 /*imageCount*/, 3 /*primary*/, true /*useGrid*/, true /*checkColor*/);
     }
diff --git a/tests/tests/media/src/android/media/cts/WorkDir.java b/tests/tests/media/src/android/media/cts/WorkDir.java
index 1742ec2..e93bd19 100644
--- a/tests/tests/media/src/android/media/cts/WorkDir.java
+++ b/tests/tests/media/src/android/media/cts/WorkDir.java
@@ -38,7 +38,7 @@
         android.os.Bundle bundle = InstrumentationRegistry.getArguments();
         String mediaDirString = bundle.getString(MEDIA_PATH_INSTR_ARG_KEY);
         if (mediaDirString == null) {
-            return (getTopDirString() + "test/CtsMediaTestCases-1.3/");
+            return (getTopDirString() + "test/CtsMediaTestCases-1.4/");
         } else if (!mediaDirString.endsWith(File.separator)) {
             // user has specified the mediaDirString via instrumentation-arg
             return mediaDirString + File.separator;
diff --git a/tests/tests/nativehardware/OWNERS b/tests/tests/nativehardware/OWNERS
index 8d7a421..094065b 100644
--- a/tests/tests/nativehardware/OWNERS
+++ b/tests/tests/nativehardware/OWNERS
@@ -1,2 +1,6 @@
 # Bug component: 24949
-krzysio@google.com
\ No newline at end of file
+chrisforbes@google.com
+jreck@google.com
+krzysio@google.com
+lpy@google.com
+zzyiwei@google.com
diff --git a/tests/tests/permission2/res/raw/android_manifest.xml b/tests/tests/permission2/res/raw/android_manifest.xml
index a89ba85..cbcaf24 100644
--- a/tests/tests/permission2/res/raw/android_manifest.xml
+++ b/tests/tests/permission2/res/raw/android_manifest.xml
@@ -3011,6 +3011,12 @@
     <permission android:name="android.permission.DUMP"
         android:protectionLevel="signature|privileged|development" />
 
+    <!-- Allows an application to start tracing for InputMethod and WindowManager.
+    <p>Not for use by third-party applications.
+    @hide -->
+    <permission android:name="android.permission.CONTROL_UI_TRACING"
+        android:protectionLevel="signature|privileged|development" />
+
     <!-- Allows an application to read the low-level system log files.
     <p>Not for use by third-party applications, because
     Log entries can contain the user's private information. -->
diff --git a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
index 2a61e12..89bb1da 100644
--- a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
+++ b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/OverlayActivity.kt
@@ -1,6 +1,10 @@
 package android.permission3.cts.usepermission
 
 import android.app.Activity
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
 import android.os.Bundle
 import android.view.WindowManager
 
@@ -14,5 +18,15 @@
                 WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or
                 WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or
                 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+
+        registerReceiver(object : BroadcastReceiver() {
+            override fun onReceive(context: Context?, intent: Intent?) {
+                if (intent?.action != RequestPermissionsActivity.ACTION_HIDE_OVERLAY) {
+                    return
+                }
+
+                finish()
+            }
+        }, IntentFilter(RequestPermissionsActivity.ACTION_HIDE_OVERLAY))
     }
 }
\ No newline at end of file
diff --git a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/RequestPermissionsActivity.kt b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/RequestPermissionsActivity.kt
index 0d29202..54155f6 100644
--- a/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/RequestPermissionsActivity.kt
+++ b/tests/tests/permission3/UsePermissionAppWithOverlay/src/android/permission3/cts/usepermission/RequestPermissionsActivity.kt
@@ -17,15 +17,29 @@
 package android.permission3.cts.usepermission
 
 import android.app.Activity
+import android.content.BroadcastReceiver
+import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
 import android.os.Bundle
 import android.os.Handler
 
 class RequestPermissionsActivity : Activity() {
+
     var paused = false
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        registerReceiver(object : BroadcastReceiver() {
+            override fun onReceive(context: Context?, intent: Intent?) {
+                if (intent?.action != ACTION_SHOW_OVERLAY) {
+                    return
+                }
+
+                startActivity(Intent(context, OverlayActivity::class.java)
+                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
+            }
+        }, IntentFilter(ACTION_SHOW_OVERLAY))
         Handler(mainLooper).post(this::eventuallyRequestPermission)
     }
 
@@ -34,11 +48,7 @@
      * due to rapid install/uninstall tests do
      */
     private fun eventuallyRequestPermission() {
-        if (paused) {
-            // Grant dialog should be in front at this point
-            startActivity(Intent(this, OverlayActivity::class.java)
-                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
-        } else {
+        if (!paused) {
             val permissions = intent.getStringArrayExtra("$packageName.PERMISSIONS")!!
             requestPermissions(permissions, 1)
             Handler(mainLooper).postDelayed(this::eventuallyRequestPermission, 200)
@@ -68,4 +78,9 @@
         paused = false
         super.onResume()
     }
+
+    companion object {
+        const val ACTION_SHOW_OVERLAY = "android.permission3.cts.usepermission.ACTION_SHOW_OVERLAY"
+        const val ACTION_HIDE_OVERLAY = "android.permission3.cts.usepermission.ACTION_HIDE_OVERLAY"
+    }
 }
diff --git a/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt b/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
index 8aedb6d..cb181e3 100644
--- a/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/BaseUsePermissionTest.kt
@@ -88,108 +88,54 @@
     protected val isAutomotive = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
 
     private val platformResources = context.createPackageContext("android", 0).resources
-    private val permissionToLabelResNameMap =
-        if (!packageManager.arePermissionsIndividuallyControlled()) {
-            mapOf(
-                // Contacts
-                android.Manifest.permission.READ_CONTACTS
+    private val permissionToLabelResNameMap = mapOf(
+            // Contacts
+            android.Manifest.permission.READ_CONTACTS
                     to "@android:string/permgrouplab_contacts",
-                android.Manifest.permission.WRITE_CONTACTS
+            android.Manifest.permission.WRITE_CONTACTS
                     to "@android:string/permgrouplab_contacts",
-                // Calendar
-                android.Manifest.permission.READ_CALENDAR
+            // Calendar
+            android.Manifest.permission.READ_CALENDAR
                     to "@android:string/permgrouplab_calendar",
-                android.Manifest.permission.WRITE_CALENDAR
+            android.Manifest.permission.WRITE_CALENDAR
                     to "@android:string/permgrouplab_calendar",
-                // SMS
-                android.Manifest.permission.SEND_SMS to "@android:string/permgrouplab_sms",
-                android.Manifest.permission.RECEIVE_SMS to "@android:string/permgrouplab_sms",
-                android.Manifest.permission.READ_SMS to "@android:string/permgrouplab_sms",
-                android.Manifest.permission.RECEIVE_WAP_PUSH to "@android:string/permgrouplab_sms",
-                android.Manifest.permission.RECEIVE_MMS to "@android:string/permgrouplab_sms",
-                "android.permission.READ_CELL_BROADCASTS" to "@android:string/permgrouplab_sms",
-                // Storage
-                android.Manifest.permission.READ_EXTERNAL_STORAGE
+            // SMS
+            android.Manifest.permission.SEND_SMS to "@android:string/permgrouplab_sms",
+            android.Manifest.permission.RECEIVE_SMS to "@android:string/permgrouplab_sms",
+            android.Manifest.permission.READ_SMS to "@android:string/permgrouplab_sms",
+            android.Manifest.permission.RECEIVE_WAP_PUSH to "@android:string/permgrouplab_sms",
+            android.Manifest.permission.RECEIVE_MMS to "@android:string/permgrouplab_sms",
+            "android.permission.READ_CELL_BROADCASTS" to "@android:string/permgrouplab_sms",
+            // Storage
+            android.Manifest.permission.READ_EXTERNAL_STORAGE
                     to "@android:string/permgrouplab_storage",
-                android.Manifest.permission.WRITE_EXTERNAL_STORAGE
+            android.Manifest.permission.WRITE_EXTERNAL_STORAGE
                     to "@android:string/permgrouplab_storage",
-                // Location
-                android.Manifest.permission.ACCESS_FINE_LOCATION
+            // Location
+            android.Manifest.permission.ACCESS_FINE_LOCATION
                     to "@android:string/permgrouplab_location",
-                android.Manifest.permission.ACCESS_COARSE_LOCATION
+            android.Manifest.permission.ACCESS_COARSE_LOCATION
                     to "@android:string/permgrouplab_location",
-                // Phone
-                android.Manifest.permission.READ_PHONE_STATE
+            // Phone
+            android.Manifest.permission.READ_PHONE_STATE
                     to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.CALL_PHONE to "@android:string/permgrouplab_phone",
-                "android.permission.ACCESS_IMS_CALL_SERVICE"
+            android.Manifest.permission.CALL_PHONE to "@android:string/permgrouplab_phone",
+            "android.permission.ACCESS_IMS_CALL_SERVICE"
                     to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.READ_CALL_LOG to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.WRITE_CALL_LOG to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.ADD_VOICEMAIL to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.USE_SIP to "@android:string/permgrouplab_phone",
-                android.Manifest.permission.PROCESS_OUTGOING_CALLS
+            android.Manifest.permission.READ_CALL_LOG to "@android:string/permgrouplab_phone",
+            android.Manifest.permission.WRITE_CALL_LOG to "@android:string/permgrouplab_phone",
+            android.Manifest.permission.ADD_VOICEMAIL to "@android:string/permgrouplab_phone",
+            android.Manifest.permission.USE_SIP to "@android:string/permgrouplab_phone",
+            android.Manifest.permission.PROCESS_OUTGOING_CALLS
                     to "@android:string/permgrouplab_phone",
-                // Microphone
-                android.Manifest.permission.RECORD_AUDIO
+            // Microphone
+            android.Manifest.permission.RECORD_AUDIO
                     to "@android:string/permgrouplab_microphone",
-                // Camera
-                android.Manifest.permission.CAMERA to "@android:string/permgrouplab_camera",
-                // Body sensors
-                android.Manifest.permission.BODY_SENSORS to "@android:string/permgrouplab_sensors"
-            )
-        } else {
-            mapOf(
-                // Contacts
-                android.Manifest.permission.READ_CONTACTS to "@android:string/permlab_readContacts",
-                android.Manifest.permission.WRITE_CONTACTS
-                    to "@android:string/permlab_writeContacts",
-                // Calendar
-                android.Manifest.permission.READ_CALENDAR
-                    to "@android:string/permgrouplab_calendar",
-                android.Manifest.permission.WRITE_CALENDAR
-                    to "@android:string/permgrouplab_calendar",
-                // SMS
-                android.Manifest.permission.SEND_SMS to "@android:string/permlab_sendSms",
-                android.Manifest.permission.RECEIVE_SMS to "@android:string/permlab_receiveSms",
-                android.Manifest.permission.READ_SMS to "@android:string/permlab_readSms",
-                android.Manifest.permission.RECEIVE_WAP_PUSH
-                    to "@android:string/permlab_receiveWapPush",
-                android.Manifest.permission.RECEIVE_MMS to "@android:string/permlab_receiveMms",
-                "android.permission.READ_CELL_BROADCASTS"
-                    to "@android:string/permlab_readCellBroadcasts",
-                // Storage
-                android.Manifest.permission.READ_EXTERNAL_STORAGE
-                    to "@android:string/permgrouplab_storage",
-                android.Manifest.permission.WRITE_EXTERNAL_STORAGE
-                    to "@android:string/permgrouplab_storage",
-                // Location
-                android.Manifest.permission.ACCESS_FINE_LOCATION
-                    to "@android:string/permgrouplab_location",
-                android.Manifest.permission.ACCESS_COARSE_LOCATION
-                    to "@android:string/permgrouplab_location",
-                // Phone
-                android.Manifest.permission.READ_PHONE_STATE
-                    to "@android:string/permlab_readPhoneState",
-                android.Manifest.permission.CALL_PHONE to "@android:string/permlab_callPhone",
-                "android.permission.ACCESS_IMS_CALL_SERVICE"
-                    to "@android:string/permlab_accessImsCallService",
-                android.Manifest.permission.READ_CALL_LOG to "@android:string/permlab_readCallLog",
-                android.Manifest.permission.WRITE_CALL_LOG
-                    to "@android:string/permlab_writeCallLog",
-                android.Manifest.permission.ADD_VOICEMAIL to "@android:string/permlab_addVoicemail",
-                android.Manifest.permission.USE_SIP to "@android:string/permlab_use_sip",
-                android.Manifest.permission.PROCESS_OUTGOING_CALLS
-                    to "@android:string/permlab_processOutgoingCalls",
-                // Microphone
-                android.Manifest.permission.RECORD_AUDIO
-                    to "@android:string/permgrouplab_microphone",
-                // Camera
-                android.Manifest.permission.CAMERA to "@android:string/permgrouplab_camera",
-                // Body sensors
-                android.Manifest.permission.BODY_SENSORS to "@android:string/permgrouplab_sensors"
-            )
-        }
+            // Camera
+            android.Manifest.permission.CAMERA to "@android:string/permgrouplab_camera",
+            // Body sensors
+            android.Manifest.permission.BODY_SENSORS to "@android:string/permgrouplab_sensors"
+    )
 
     @Before
     @After
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionReviewTest.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionReviewTest.kt
index f0b1f80..6b8678d 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionReviewTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionReviewTest.kt
@@ -28,6 +28,7 @@
 import androidx.test.runner.AndroidJUnit4
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
+import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -36,6 +37,12 @@
 
 @RunWith(AndroidJUnit4::class)
 class PermissionReviewTest : BaseUsePermissionTest() {
+
+    @Before
+    fun assumeNotIndividuallyControlled() {
+        Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled())
+    }
+
     @Before
     fun installApp22CalendarOnly() {
         installPackage(APP_APK_PATH_22_CALENDAR_ONLY)
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
index a5f8939..5360f1d 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionTapjackingTest.kt
@@ -17,6 +17,7 @@
 package android.permission3.cts
 
 import android.Manifest.permission.ACCESS_FINE_LOCATION
+import android.content.Intent
 import android.content.pm.PackageManager
 import android.support.test.uiautomator.By
 import com.android.compatibility.common.util.SystemUtil
@@ -42,26 +43,46 @@
         assertAppHasPermission(ACCESS_FINE_LOCATION, false)
         requestAppPermissionsForNoResult(ACCESS_FINE_LOCATION) {}
 
+        val buttonCenter = waitFindObject(By.text(
+                getPermissionControllerString(ALLOW_FOREGROUND_BUTTON_TEXT))).visibleCenter
+
         // Wait for overlay to hide the dialog
+        context.sendBroadcast(Intent(ACTION_SHOW_OVERLAY))
         waitFindObject(By.res("android.permission3.cts.usepermission:id/overlay_description"))
+
         try {
             // Try to grant the permission, this should fail
             SystemUtil.eventually({
                 if (packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) ==
                         PackageManager.PERMISSION_DENIED) {
-                    clickPermissionRequestAllowForegroundButton(100)
+                    uiDevice.click(buttonCenter.x, buttonCenter.y)
+                    Thread.sleep(100)
                 }
                 assertAppHasPermission(ACCESS_FINE_LOCATION, true)
             }, 10000)
         } catch (e: RuntimeException) {
             // expected
         }
-        // Permission should not be granted and dialog should still be showing
+        // Permission should not be granted
         assertAppHasPermission(ACCESS_FINE_LOCATION, false)
 
         // On Automotive the dialog gets closed by the tapjacking activity popping up
         if (!isAutomotive) {
-            clickPermissionRequestAllowForegroundButton()
+            // Verify that clicking the dialog without the overlay still works
+            context.sendBroadcast(Intent(ACTION_HIDE_OVERLAY))
+            SystemUtil.eventually({
+                if (packageManager.checkPermission(ACCESS_FINE_LOCATION, APP_PACKAGE_NAME) ==
+                        PackageManager.PERMISSION_DENIED) {
+                    uiDevice.click(buttonCenter.x, buttonCenter.y)
+                    Thread.sleep(100)
+                }
+                assertAppHasPermission(ACCESS_FINE_LOCATION, true)
+            }, 10000)
         }
     }
-}
\ No newline at end of file
+
+    companion object {
+        const val ACTION_SHOW_OVERLAY = "android.permission3.cts.usepermission.ACTION_SHOW_OVERLAY"
+        const val ACTION_HIDE_OVERLAY = "android.permission3.cts.usepermission.ACTION_HIDE_OVERLAY"
+    }
+}
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionTest22.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionTest22.kt
old mode 100644
new mode 100755
index 7d06770..8fdddfb
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionTest22.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionTest22.kt
@@ -16,6 +16,7 @@
 
 package android.permission3.cts
 
+import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
 
@@ -23,8 +24,11 @@
  * Runtime permission behavior tests for apps targeting API 22.
  */
 class PermissionTest22 : BaseUsePermissionTest() {
+
     @Before
     fun installApp22AndApprovePermissionReview() {
+        Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled())
+
         installPackage(APP_APK_PATH_22)
         approvePermissionReview()
     }
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionTest23.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionTest23.kt
index 59cb9aa..31e6f3a 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionTest23.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionTest23.kt
@@ -17,6 +17,7 @@
 package android.permission3.cts
 
 import androidx.test.filters.FlakyTest
+import org.junit.Assume
 import org.junit.Before
 import org.junit.Test
 
@@ -232,6 +233,8 @@
     @Test(timeout = 120000)
     @FlakyTest
     fun testNoResidualPermissionsOnUninstall() {
+        Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled())
+
         // Grant all permissions
         grantAppPermissions(
             android.Manifest.permission.WRITE_CALENDAR,
diff --git a/tests/tests/permission3/src/android/permission3/cts/PermissionUpgradeTest.kt b/tests/tests/permission3/src/android/permission3/cts/PermissionUpgradeTest.kt
index fcfc1bb..de58d43 100644
--- a/tests/tests/permission3/src/android/permission3/cts/PermissionUpgradeTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/PermissionUpgradeTest.kt
@@ -16,6 +16,7 @@
 
 package android.permission3.cts
 
+import org.junit.Assume
 import org.junit.Test
 
 /**
@@ -25,6 +26,8 @@
 
     @Test
     fun testUpgradeKeepsPermissions() {
+        Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled())
+
         installPackage(APP_APK_PATH_22)
 
         approvePermissionReview()
@@ -80,6 +83,8 @@
 
     @Test
     fun testRevokePropagatedOnUpgradeOldToNewModel() {
+        Assume.assumeFalse(packageManager.arePermissionsIndividuallyControlled())
+
         installPackage(APP_APK_PATH_22)
 
         approvePermissionReview()
diff --git a/tests/tests/provider/Android.bp b/tests/tests/provider/Android.bp
index 101493a..3d4c84c 100644
--- a/tests/tests/provider/Android.bp
+++ b/tests/tests/provider/Android.bp
@@ -42,3 +42,9 @@
 
     data: [":CtsProviderGalleryTestApp"],
 }
+
+filegroup {
+    name: "CtsProviderTestUtils",
+    srcs: ["src/android/provider/cts/ProviderTestUtils.java",
+           "src/android/provider/cts/media/MediaStoreUtils.java"],
+}
diff --git a/tests/tests/provider/src/android/provider/cts/SettingsPanelTest.java b/tests/tests/provider/src/android/provider/cts/SettingsPanelTest.java
index e18a365..660da6d 100644
--- a/tests/tests/provider/src/android/provider/cts/SettingsPanelTest.java
+++ b/tests/tests/provider/src/android/provider/cts/SettingsPanelTest.java
@@ -56,13 +56,6 @@
     private static final String RESOURCE_DONE = "done";
     private static final String RESOURCE_SEE_MORE = "see_more";
     private static final String RESOURCE_TITLE = "panel_title";
-    private static final String RESOURCE_HEADER = "header_title";
-    private static final String TEST_PACKAGE_NAME = "test_package_name";
-    private static final String MEDIA_OUTPUT_TITLE_NAME = "Media";
-    private static final String ACTION_MEDIA_OUTPUT =
-            "com.android.settings.panel.action.MEDIA_OUTPUT";
-    private static final String EXTRA_PACKAGE_NAME =
-            "com.android.settings.panel.extra.PACKAGE_NAME";
 
     private String mSettingsPackage;
     private String mLauncherPackage;
@@ -131,26 +124,6 @@
     }
 
     @Test
-    public void mediaOutputPanel_withPackageNameExtra_correctPackage() {
-        assumeTrue(mHasTouchScreen);
-        launchMediaOutputPanel(TEST_PACKAGE_NAME);
-
-        String currentPackage = mDevice.getCurrentPackageName();
-
-        assertThat(currentPackage).isEqualTo(mSettingsPackage);
-    }
-
-    @Test
-    public void mediaOutputPanel_noPutPackageNameExtra_correctPackage() {
-        assumeTrue(mHasTouchScreen);
-        launchMediaOutputPanel(null /* packageName */);
-
-        String currentPackage = mDevice.getCurrentPackageName();
-
-        assertThat(currentPackage).isEqualTo(mSettingsPackage);
-    }
-
-    @Test
     public void wifiPanel_correctPackage() {
         launchWifiPanel();
 
@@ -160,15 +133,6 @@
     }
 
     @Test
-    public void mediaOutputPanel_correctTitle() {
-        assumeTrue(mHasTouchScreen);
-        launchMediaOutputPanel(TEST_PACKAGE_NAME);
-
-        final UiObject2 titleView = mDevice.findObject(By.res(mSettingsPackage, RESOURCE_HEADER));
-
-        assertThat(titleView.getText()).isEqualTo(MEDIA_OUTPUT_TITLE_NAME);
-    }
-    @Test
     public void internetPanel_doneClosesPanel() {
         // Launch panel
         launchInternetPanel();
@@ -230,23 +194,6 @@
     }
 
     @Test
-    public void mediaOutputPanel_doneClosesPanel() {
-        assumeTrue(mHasTouchScreen);
-        // Launch panel
-        launchMediaOutputPanel(TEST_PACKAGE_NAME);
-        String currentPackage = mDevice.getCurrentPackageName();
-        assertThat(currentPackage).isEqualTo(mSettingsPackage);
-
-        // Click the done button
-        mDevice.findObject(By.res(currentPackage, RESOURCE_DONE)).click();
-        mDevice.wait(Until.hasObject(By.pkg(mLauncherPackage).depth(0)), TIMEOUT);
-
-        // Assert that we have left the panel
-        currentPackage = mDevice.getCurrentPackageName();
-        assertThat(currentPackage).isNotEqualTo(mSettingsPackage);
-    }
-
-    @Test
     public void internetPanel_seeMoreButton_launchesIntoSettings() {
         // Launch panel
         launchInternetPanel();
@@ -316,20 +263,6 @@
         assertThat(titleView).isNull();
     }
 
-    @Test
-    public void mediaOutputPanel_seeMoreButton_doNothing() {
-        assumeTrue(mHasTouchScreen);
-        // Launch panel
-        launchMediaOutputPanel(TEST_PACKAGE_NAME);
-        String currentPackage = mDevice.getCurrentPackageName();
-        assertThat(currentPackage).isEqualTo(mSettingsPackage);
-
-        // Find the see more button
-        // SeeMoreIntent is null in MediaOutputPanel, so the see more button will not visible.
-        UiObject2 seeMoreView = mDevice.findObject(By.res(mSettingsPackage, RESOURCE_SEE_MORE));
-        assertThat(seeMoreView).isNull();
-    }
-
     private void launchVolumePanel() {
         launchPanel(Settings.Panel.ACTION_VOLUME);
     }
@@ -338,10 +271,6 @@
         launchPanel(Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
     }
 
-    private void launchMediaOutputPanel(String packageName) {
-        launchPanel(ACTION_MEDIA_OUTPUT, packageName);
-    }
-
     private void launchNfcPanel() {
         assumeTrue(mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC));
         launchPanel(Settings.Panel.ACTION_NFC);
@@ -353,10 +282,6 @@
     }
 
     private void launchPanel(String action) {
-        launchPanel(action,  null /* packageName */);
-    }
-
-    private void launchPanel(String action, String packageName) {
         // Start from the home screen
         mDevice.pressHome();
         mDevice.wait(Until.hasObject(By.pkg(mLauncherPackage).depth(0)), TIMEOUT);
@@ -364,7 +289,6 @@
         Intent intent = new Intent(action);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                 | Intent.FLAG_ACTIVITY_CLEAR_TASK);    // Clear out any previous instances
-        intent.putExtra(EXTRA_PACKAGE_NAME, packageName);
         mContext.startActivity(intent);
 
         // Wait for the app to appear
diff --git a/tests/tests/provider/src/android/provider/cts/media/MediaStore_Images_ThumbnailsTest.java b/tests/tests/provider/src/android/provider/cts/media/MediaStore_Images_ThumbnailsTest.java
index 479c3ab..11a0e66 100644
--- a/tests/tests/provider/src/android/provider/cts/media/MediaStore_Images_ThumbnailsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/media/MediaStore_Images_ThumbnailsTest.java
@@ -17,8 +17,6 @@
 package android.provider.cts.media;
 
 import static android.provider.cts.ProviderTestUtils.assertColorMostlyEquals;
-import static android.provider.cts.ProviderTestUtils.assertExists;
-import static android.provider.cts.ProviderTestUtils.assertNotExists;
 import static android.provider.cts.ProviderTestUtils.extractAverageColor;
 import static android.provider.cts.media.MediaStoreTest.TAG;
 
@@ -51,6 +49,9 @@
 import android.provider.cts.R;
 import android.provider.cts.media.MediaStoreUtils.PendingParams;
 import android.provider.cts.media.MediaStoreUtils.PendingSession;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.OsConstants;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.Size;
@@ -69,6 +70,7 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.OutputStream;
 import java.util.ArrayList;
 
@@ -211,7 +213,7 @@
         c.close();
 
         ProviderTestUtils.waitForIdle();
-        assertExists("image file does not exist", imagePath);
+        assertFileExists(imagePath);
         assertNotNull(Thumbnails.getThumbnail(resolver, imageId, Thumbnails.MINI_KIND, null));
         assertNotNull(Thumbnails.getThumbnail(resolver, imageId, Thumbnails.MICRO_KIND, null));
 
@@ -222,7 +224,7 @@
         mRowsAdded.remove(stringUri);
 
         ProviderTestUtils.waitForIdle();
-        assertNotExists("image file should no longer exist", imagePath);
+        assertFileNotExists(imagePath);
         assertNull(Thumbnails.getThumbnail(resolver, imageId, Thumbnails.MINI_KIND, null));
         assertNull(Thumbnails.getThumbnail(resolver, imageId, Thumbnails.MICRO_KIND, null));
 
@@ -234,10 +236,10 @@
         imageId = c.getLong(c.getColumnIndex(Media._ID));
         imagePath = c.getString(c.getColumnIndex(Media.DATA));
         c.close();
-        assertExists("image file does not exist", imagePath);
+        assertFileExists(imagePath);
         Uri fileuri = MediaStore.Files.getContentUri("external", imageId);
         mContentResolver.delete(fileuri, null, null);
-        assertNotExists("image file should no longer exist", imagePath);
+        assertFileNotExists(imagePath);
     }
 
     @Test
@@ -503,4 +505,26 @@
         bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
     }
 
+    private static void assertFileExists(String path) throws Exception {
+        try {
+            Os.access(path, OsConstants.F_OK);
+        } catch (ErrnoException e) {
+            if (e.errno == OsConstants.ENOENT) {
+                fail("File " + path + " doesn't exist.");
+            } else {
+                throw e;
+            }
+        }
+    }
+
+    private static void assertFileNotExists(String path) throws Exception {
+        try {
+            Os.access(path, OsConstants.F_OK);
+            fail("File " + path + " exists.");
+        } catch (ErrnoException e) {
+            if (e.errno != OsConstants.ENOENT) {
+                throw e;
+            }
+        }
+    }
 }
diff --git a/tests/tests/renderscriptlegacy/AndroidTest.xml b/tests/tests/renderscriptlegacy/AndroidTest.xml
index 33dff52..43fa7ee 100644
--- a/tests/tests/renderscriptlegacy/AndroidTest.xml
+++ b/tests/tests/renderscriptlegacy/AndroidTest.xml
@@ -19,6 +19,11 @@
     <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+    <!-- The test can only run on 32 bit abi  -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ArchModuleController">
+        <option name="arch" value="x86" />
+        <option name="arch" value="arm" />
+    </object>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsRenderscriptLegacyTestCases.apk" />
diff --git a/tests/tests/sdkextensions/Android.bp b/tests/tests/sdkextensions/Android.bp
deleted file mode 100644
index 89b241b..0000000
--- a/tests/tests/sdkextensions/Android.bp
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2019 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-android_test {
-    name: "CtsSdkExtensionsTestCases",
-    defaults: ["cts_defaults"],
-    static_libs: [
-        "androidx.test.rules",
-        "ctstestrunner-axt",
-    ],
-    srcs: [ "src/**/*.java" ],
-    test_config: "CtsSdkExtensionsTestCases.xml",
-    test_suites: [
-        "cts",
-        "mts",
-        "general-tests",
-    ],
-    sdk_version: "system_current",
-}
diff --git a/tests/tests/sdkextensions/AndroidManifest.xml b/tests/tests/sdkextensions/AndroidManifest.xml
deleted file mode 100644
index a6391b5..0000000
--- a/tests/tests/sdkextensions/AndroidManifest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.os.ext.cts">
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android.os.ext.cts"
-                     android:label="CTS tests of android.os.ext">
-        <meta-data android:name="listener"
-            android:value="com.android.cts.runner.CtsTestRunListener" />
-    </instrumentation>
-
-</manifest>
diff --git a/tests/tests/sdkextensions/CtsSdkExtensionsTestCases.xml b/tests/tests/sdkextensions/CtsSdkExtensionsTestCases.xml
deleted file mode 100644
index a0b2055..0000000
--- a/tests/tests/sdkextensions/CtsSdkExtensionsTestCases.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Configuration for SdkExtension Tests">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="framework" />
-    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
-    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
-    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsSdkExtensionsTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.os.ext.cts" />
-    </test>
-
-    <!-- Run CtsSdkExtensionsTestCases when "com.google.android.sdkext" is on device.
-      Otherwise skip. The logic only applies to situations when CtsSdkExtensionsTestCasesdoes
-      is triggered via mts-tradefed. It is disabled for all other *TS.
-    -->
-    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MainlineTestModuleController">
-        <option name="mainline-module-package-name" value="com.google.android.sdkext" />
-    </object>
-</configuration>
diff --git a/tests/tests/sdkextensions/OWNERS b/tests/tests/sdkextensions/OWNERS
deleted file mode 100644
index 8e32df8..0000000
--- a/tests/tests/sdkextensions/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-include platform/frameworks/base:/apex/sdkextensions/OWNERS
diff --git a/tests/tests/sdkextensions/TEST_MAPPING b/tests/tests/sdkextensions/TEST_MAPPING
deleted file mode 100644
index 7783bda..0000000
--- a/tests/tests/sdkextensions/TEST_MAPPING
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "presubmit": [
-    {
-      "name": "CtsSdkExtensionsTestCases"
-    }
-  ]
-}
diff --git a/tests/tests/sdkextensions/src/android/os/ext/cts/SdkExtensionsTest.java b/tests/tests/sdkextensions/src/android/os/ext/cts/SdkExtensionsTest.java
deleted file mode 100644
index 884f5ef..0000000
--- a/tests/tests/sdkextensions/src/android/os/ext/cts/SdkExtensionsTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.os.ext.cts;
-
-import android.os.Build;
-import android.os.ext.SdkExtensions;
-import junit.framework.TestCase;
-
-public class SdkExtensionsTest extends TestCase {
-
-    /** Verify that getExtensionVersion only accepts valid extension SDKs */
-    public void testBadArgument() throws Exception {
-        // R is the first SDK version with extensions.
-        for (int sdk = -1_000_000; sdk < Build.VERSION_CODES.R; sdk++) {
-            try {
-                SdkExtensions.getExtensionVersion(sdk);
-                fail("expected IllegalArgumentException");
-            } catch (IllegalArgumentException expected) { }
-        }
-    }
-
-    /** Verifies that getExtensionVersion only return existing versions */
-    public void testValidValues() throws Exception {
-        for (int sdk = Build.VERSION_CODES.R; sdk <= 1_000_000; sdk++) {
-            // No extension SDKs versions yet.
-            assertEquals(0, SdkExtensions.getExtensionVersion(sdk));
-        }
-    }
-}
diff --git a/tests/tests/telecom/AndroidManifest.xml b/tests/tests/telecom/AndroidManifest.xml
index 5e6a6ee..4d746c1 100644
--- a/tests/tests/telecom/AndroidManifest.xml
+++ b/tests/tests/telecom/AndroidManifest.xml
@@ -34,7 +34,7 @@
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.CONTROL_INCALL_EXPERIENCE" />
     <uses-permission android:name="android.permission.ENTER_CAR_MODE_PRIORITIZED" />
-
+    <uses-permission android:name="android.permission.MANAGE_ONGOING_CALLS" />
     <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
 
     <application>
diff --git a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
index a6fe2bf..5b99e3c 100644
--- a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
@@ -70,6 +70,8 @@
     public static final String TEST_EXTRA_KEY = "android.test.extra.TEST";
     public static final String TEST_EXTRA_KEY2 = "android.test.extra.TEST2";
     public static final String TEST_EXTRA_KEY3 = "android.test.extra.TEST3";
+    public static final float TEST_EXTRA_BITRATE = 23.85f ;
+    public static final float TEST_EXTRA_BANDWIDTH = 7.0f ;
     public static final String TEST_INVALID_EXTRA_KEY = "blah";
     public static final int TEST_EXTRA_VALUE = 10;
     public static final String TEST_EVENT = "com.test.event.TEST";
@@ -479,6 +481,8 @@
         exampleExtras.putString(Connection.EXTRA_LAST_FORWARDED_NUMBER, TEST_FORWARDED_NUMBER);
         exampleExtras.putInt(TEST_EXTRA_KEY, TEST_EXTRA_VALUE);
         exampleExtras.putInt(Connection.EXTRA_AUDIO_CODEC, Connection.AUDIO_CODEC_AMR);
+        exampleExtras.putFloat(Connection.EXTRA_AUDIO_CODEC_BITRATE_KBPS, TEST_EXTRA_BITRATE);
+        exampleExtras.putFloat(Connection.EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ, TEST_EXTRA_BANDWIDTH);
         mConnection.setExtras(exampleExtras);
 
         // Make sure we got back a bundle with the call subject key set.
@@ -492,6 +496,10 @@
         assertEquals(TEST_EXTRA_VALUE, callExtras.getInt(TEST_EXTRA_KEY));
         assertEquals(Connection.AUDIO_CODEC_AMR,
                 callExtras.getInt(Connection.EXTRA_AUDIO_CODEC));
+        assertEquals(TEST_EXTRA_BITRATE,
+                callExtras.getFloat(Connection.EXTRA_AUDIO_CODEC_BITRATE_KBPS), 0.01);
+        assertEquals(TEST_EXTRA_BANDWIDTH,
+                callExtras.getFloat(Connection.EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ), 0.01);
     }
 
     /**
diff --git a/tests/tests/telecom/src/android/telecom/cts/TelecomManagerTest.java b/tests/tests/telecom/src/android/telecom/cts/TelecomManagerTest.java
index fcef1b2..fa0deda 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TelecomManagerTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TelecomManagerTest.java
@@ -16,12 +16,16 @@
 
 package android.telecom.cts;
 
+import static com.android.compatibility.common.util.ShellIdentityUtils
+        .invokeMethodWithShellPermissionsNoReturn;
 import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;
 
+import android.app.AppOpsManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.media.AudioDeviceInfo;
 import android.media.AudioManager;
 import android.net.Uri;
@@ -35,6 +39,7 @@
 
     private static final String TEST_EMERGENCY_NUMBER = "5553637";
     private static final Uri TEST_EMERGENCY_URI = Uri.fromParts("tel", TEST_EMERGENCY_NUMBER, null);
+    private static final String CTS_TELECOM_PKG = TelecomManagerTest.class.getPackage().getName();
 
     public void testGetCurrentTtyMode() {
         if (!mShouldTestTelecom) {
@@ -57,6 +62,28 @@
         }
     }
 
+    public void testHasCompanionInCallServiceAccess() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
+        PackageManager packageManager = mContext.getPackageManager();
+        try {
+            final int uid = packageManager.getApplicationInfo(CTS_TELECOM_PKG, 0).uid;
+            invokeMethodWithShellPermissionsNoReturn(appOpsManager,
+                    (appOpsMan) -> appOpsMan.setUidMode(AppOpsManager.OPSTR_MANAGE_ONGOING_CALLS,
+                            uid, AppOpsManager.MODE_ALLOWED));
+            assertTrue(mTelecomManager.hasCompanionInCallServiceAccess());
+            invokeMethodWithShellPermissionsNoReturn(appOpsManager,
+                    (appOpsMan) -> appOpsMan.setUidMode(AppOpsManager.OPSTR_MANAGE_ONGOING_CALLS,
+                            uid, AppOpsManager.opToDefaultMode(
+                                    AppOpsManager.OPSTR_MANAGE_ONGOING_CALLS)));
+            assertFalse(mTelecomManager.hasCompanionInCallServiceAccess());
+        } catch (PackageManager.NameNotFoundException ex) {
+            fail("Couldn't get uid for android.telecom.cts");
+        }
+    }
+
     public void testTtyModeBroadcasts() {
         // We only expect the actual tty mode to change if there's a wired headset plugged in, so
         // don't do the test if there isn't one plugged in.
diff --git a/tests/tests/telephony/current/Android.bp b/tests/tests/telephony/current/Android.bp
index 046587c..8bd31d9 100644
--- a/tests/tests/telephony/current/Android.bp
+++ b/tests/tests/telephony/current/Android.bp
@@ -21,6 +21,8 @@
         "src/android/telephony/ims/cts/TestImsSmsImpl.java",
         "src/android/telephony/ims/cts/TestImsConfig.java",
         "src/android/telephony/ims/cts/TestSipTransport.java",
+        "src/android/telephony/ims/cts/TestSipDelegate.java",
+        "src/android/telephony/ims/cts/TestSipDelegateConnection.java",
         "src/android/telephony/ims/cts/ImsUtils.java",
     ],
     path: "src/",
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java
index 6adf5fc..86b4dde 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java
@@ -57,6 +57,8 @@
 import android.util.Log;
 import android.util.Pair;
 
+import androidx.test.InstrumentationRegistry;
+
 import org.junit.Before;
 import org.junit.Test;
 
@@ -216,6 +218,9 @@
     }
 
     private boolean isCamped() {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity("android.permission.READ_PHONE_STATE");
+
         ServiceState ss = mTm.getServiceState();
         if (ss == null) return false;
         return (ss.getState() == ServiceState.STATE_IN_SERVICE
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/DataCallResponseTest.java b/tests/tests/telephony/current/src/android/telephony/cts/DataCallResponseTest.java
index 96985cd..485575c 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/DataCallResponseTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/DataCallResponseTest.java
@@ -35,7 +35,7 @@
 
 public class DataCallResponseTest {
     private static final int CAUSE = 0;
-    private static final int RETRY = -1;
+    private static final long RETRY = -1L;
     private static final int ID = 1;
     private static final int LINK_STATUS = 2;
     private static final int PROTOCOL_TYPE = ApnSetting.PROTOCOL_IP;
@@ -51,12 +51,13 @@
     private static final int MTU_V4 = 1440;
     private static final int MTU_V6 = 1400;
     private static final int HANDOVER_FAILURE_MODE = HANDOVER_FAILURE_MODE_DO_FALLBACK;
+    private static final int PDU_SESSION_ID = 5;
 
     @Test
     public void testConstructorAndGetters() {
         DataCallResponse response = new DataCallResponse.Builder()
                 .setCause(CAUSE)
-                .setSuggestedRetryTime(RETRY)
+                .setRetryIntervalMillis(RETRY)
                 .setId(ID)
                 .setLinkStatus(LINK_STATUS)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -68,10 +69,11 @@
                 .setMtuV4(MTU_V4)
                 .setMtuV6(MTU_V6)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         assertThat(response.getCause()).isEqualTo(CAUSE);
-        assertThat(response.getSuggestedRetryTime()).isEqualTo(RETRY);
+        assertThat(response.getRetryIntervalMillis()).isEqualTo(RETRY);
         assertThat(response.getId()).isEqualTo(ID);
         assertThat(response.getLinkStatus()).isEqualTo(LINK_STATUS);
         assertThat(response.getProtocolType()).isEqualTo(PROTOCOL_TYPE);
@@ -83,13 +85,14 @@
         assertThat(response.getMtuV4()).isEqualTo(MTU_V4);
         assertThat(response.getMtuV6()).isEqualTo(MTU_V6);
         assertThat(response.getHandoverFailureMode()).isEqualTo(HANDOVER_FAILURE_MODE_DO_FALLBACK);
+        assertThat(response.getPduSessionId()).isEqualTo(PDU_SESSION_ID);
     }
 
     @Test
     public void testEquals() {
         DataCallResponse response = new DataCallResponse.Builder()
                 .setCause(CAUSE)
-                .setSuggestedRetryTime(RETRY)
+                .setRetryIntervalMillis(RETRY)
                 .setId(ID)
                 .setLinkStatus(LINK_STATUS)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -101,11 +104,12 @@
                 .setMtuV4(MTU_V4)
                 .setMtuV6(MTU_V6)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         DataCallResponse equalsResponse = new DataCallResponse.Builder()
                 .setCause(CAUSE)
-                .setSuggestedRetryTime(RETRY)
+                .setRetryIntervalMillis(RETRY)
                 .setId(ID)
                 .setLinkStatus(LINK_STATUS)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -117,6 +121,7 @@
                 .setMtuV4(MTU_V4)
                 .setMtuV6(MTU_V6)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         assertThat(response).isEqualTo(equalsResponse);
@@ -126,7 +131,7 @@
     public void testNotEquals() {
         DataCallResponse response = new DataCallResponse.Builder()
                 .setCause(CAUSE)
-                .setSuggestedRetryTime(RETRY)
+                .setRetryIntervalMillis(RETRY)
                 .setId(ID)
                 .setLinkStatus(LINK_STATUS)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -138,11 +143,12 @@
                 .setMtuV4(MTU_V4)
                 .setMtuV6(MTU_V6)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         DataCallResponse notEqualsResponse = new DataCallResponse.Builder()
                 .setCause(1)
-                .setSuggestedRetryTime(-1)
+                .setRetryIntervalMillis(-1)
                 .setId(1)
                 .setLinkStatus(3)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -154,6 +160,7 @@
                 .setMtuV4(1441)
                 .setMtuV6(1440)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE_LEGACY)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         assertThat(response).isNotEqualTo(notEqualsResponse);
@@ -165,7 +172,7 @@
     public void testParcel() {
         DataCallResponse response = new DataCallResponse.Builder()
                 .setCause(CAUSE)
-                .setSuggestedRetryTime(RETRY)
+                .setRetryIntervalMillis(RETRY)
                 .setId(ID)
                 .setLinkStatus(LINK_STATUS)
                 .setProtocolType(PROTOCOL_TYPE)
@@ -177,6 +184,7 @@
                 .setMtuV4(MTU_V4)
                 .setMtuV6(MTU_V6)
                 .setHandoverFailureMode(HANDOVER_FAILURE_MODE)
+                .setPduSessionId(PDU_SESSION_ID)
                 .build();
 
         Parcel stateParcel = Parcel.obtain();
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java
index 4cbe6ad..785916f 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java
@@ -19,6 +19,7 @@
 
 import static androidx.test.InstrumentationRegistry.getContext;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -73,7 +74,7 @@
     }
 
     @Test
-    public void testSignalStrength() throws Throwable {
+    public void testSignalStrength() {
         if (!mPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
             Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
             return;
@@ -91,7 +92,10 @@
         long curTime = SystemClock.elapsedRealtime();
         assertTrue("Invalid timestamp in SignalStrength: " + ss.getTimestampMillis(),
                 ss.getTimestampMillis() > 0 && ss.getTimestampMillis() <= curTime);
-        Log.d(TAG, "Timestamp of SignalStrength: " + Long.toString(ss.getTimestampMillis()));
+        Log.d(TAG, "Timestamp of SignalStrength: " + ss.getTimestampMillis());
+
+        SignalStrength copy = new SignalStrength(ss);
+        assertEquals(ss, copy);
 
         List<CellSignalStrength> signalStrengths = ss.getCellSignalStrengths();
 
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java
index e6f30a2..8761739 100755
--- a/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java
@@ -289,10 +289,12 @@
         init();
         if (addMessageId) {
             long fakeMessageId = 19812L;
-            sendTextMessageWithMessageId(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent,
-                    fakeMessageId);
+            sendTextMessageWithMessageId(mDestAddr,
+                    String.valueOf(SystemClock.elapsedRealtimeNanos()), mSentIntent,
+                    mDeliveredIntent, fakeMessageId);
         } else {
-            sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
+            sendTextMessage(mDestAddr, String.valueOf(SystemClock.elapsedRealtimeNanos()),
+                    mSentIntent, mDeliveredIntent);
         }
         assertTrue("[RERUN] Could not send SMS. Check signal.",
                 mSendReceiver.waitForCalls(1, TIME_OUT));
@@ -387,7 +389,8 @@
 
         // single-part SMS blocking
         init();
-        sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
+        sendTextMessage(mDestAddr, String.valueOf(SystemClock.elapsedRealtimeNanos()),
+                mSentIntent, mDeliveredIntent);
         assertTrue("[RERUN] Could not send SMS. Check signal.",
                 mSendReceiver.waitForCalls(1, TIME_OUT));
         assertTrue("Expected no messages to be received due to number blocking.",
@@ -921,7 +924,7 @@
             if (mAction.equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
                 sMessageId = intent.getLongExtra("messageId", 0L);
             }
-            Log.i(TAG, "onReceive " + intent.getAction());
+            Log.i(TAG, "onReceive " + intent.getAction() + " mAction " + mAction);
             if (intent.getAction().equals(mAction)) {
                 synchronized (mLock) {
                     mCalls += 1;
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
index 5718535..41d7070 100644
--- a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
@@ -55,16 +55,20 @@
 import android.telephony.CallAttributes;
 import android.telephony.CallForwardingInfo;
 import android.telephony.CallQuality;
+import android.telephony.CarrierBandwidth;
 import android.telephony.CarrierConfigManager;
 import android.telephony.CellLocation;
+import android.telephony.DataThrottlingRequest;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
+import android.telephony.PinResult;
 import android.telephony.PreciseCallState;
 import android.telephony.RadioAccessFamily;
 import android.telephony.ServiceState;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ThermalMitigationRequest;
 import android.telephony.UiccCardInfo;
 import android.telephony.UiccSlotInfo;
 import android.telephony.data.ApnSetting;
@@ -246,6 +250,8 @@
         IntentFilter filter = new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
         // ACTION_CARRIER_CONFIG_CHANGED is sticky, so we will get a callback right away.
         getContext().registerReceiver(mReceiver, filter);
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity("android.permission.READ_PHONE_STATE");
     }
 
     @After
@@ -1070,6 +1076,14 @@
         // succeeds, so just make sure nothing crashes.
         ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
                 tp -> tp.setSystemSelectionChannels(Collections.emptyList()));
+
+        // getSystemSelectionChannels was added in IRadio 1.6, so ensure it returns
+        // the value that was set by setSystemSelectionChannels.
+        if (mRadioVersion >= RADIO_HAL_VERSION_1_6) {
+            assertEquals(Collections.emptyList(),
+                    ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                    TelephonyManager::getSystemSelectionChannels));
+        }
     }
 
     @Test
@@ -1229,6 +1243,11 @@
             return;
         }
 
+        // mc and meid should either be null or supported. empty string is not expected even if
+        // the device does not support mc/meid.
+        assertNotEquals("", mc);
+        assertNotEquals("", meid);
+
         if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
             if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
                 assertEquals(meid.substring(0, 8), mc);
@@ -1398,6 +1417,8 @@
                 mLock.wait(60000);
             }
         }
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity("android.permission.READ_PHONE_STATE");
         assertThat(mTelephonyManager.getServiceState().getState()).isEqualTo(
                 ServiceState.STATE_IN_SERVICE);
     }
@@ -2964,6 +2985,17 @@
         assertTrue(isDataConnectionAvailable);
     }
 
+    @Test
+    public void testGetCdmaEnhancedRoamingIndicatorDisplayNumber() {
+        int index = mTelephonyManager.getCdmaEnhancedRoamingIndicatorDisplayNumber();
+        int phoneType = mTelephonyManager.getPhoneType();
+        if (phoneType == TelephonyManager.PHONE_TYPE_CDMA) {
+            assertTrue(index >= 0 && index <= 255);
+        } else {
+            assertEquals(-1, index);
+        }
+    }
+
     private void disableNrDualConnectivity() {
         ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(
                 mTelephonyManager,
@@ -3008,6 +3040,223 @@
         }
     }
 
+    @Test
+    public void testCdmaRoamingMode() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        // Save state
+        int cdmaRoamingMode = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                TelephonyManager::getCdmaRoamingMode);
+
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaRoamingMode(TelephonyManager.CDMA_ROAMING_MODE_HOME));
+        assertEquals(TelephonyManager.CDMA_ROAMING_MODE_HOME,
+                (int) ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                        TelephonyManager::getCdmaRoamingMode));
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaRoamingMode(TelephonyManager.CDMA_ROAMING_MODE_AFFILIATED));
+        assertEquals(TelephonyManager.CDMA_ROAMING_MODE_AFFILIATED,
+                (int) ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                        TelephonyManager::getCdmaRoamingMode));
+
+        // Reset state
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaRoamingMode(cdmaRoamingMode));
+    }
+
+    @Test
+    public void testCdmaSubscriptionMode() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        // Save state
+        int cdmaSubscriptionMode = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, TelephonyManager::getCdmaSubscriptionMode);
+
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaSubscriptionMode(TelephonyManager.CDMA_SUBSCRIPTION_NV));
+        assertEquals(TelephonyManager.CDMA_SUBSCRIPTION_NV,
+                (int) ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                        TelephonyManager::getCdmaSubscriptionMode));
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaSubscriptionMode(TelephonyManager.CDMA_SUBSCRIPTION_RUIM_SIM));
+        assertEquals(TelephonyManager.CDMA_SUBSCRIPTION_RUIM_SIM,
+                (int) ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                        TelephonyManager::getCdmaSubscriptionMode));
+
+        // Reset state
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                tm -> tm.setCdmaRoamingMode(cdmaSubscriptionMode));
+    }
+
+    @Test
+    public void testPinResult() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        final String pin = "fake_pin";
+        final String puk = "fake_puk";
+        final String newPin = "fake_new_pin";
+
+        boolean isEnabled = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, TelephonyManager::isIccLockEnabled);
+        PinResult result = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.setIccLockEnabled(!isEnabled, pin));
+        assertTrue(result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT
+                || result.getResult() == PinResult.PIN_RESULT_TYPE_FAILURE);
+        assertTrue(result.getAttemptsRemaining() >= 0);
+        assertEquals(isEnabled, ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, TelephonyManager::isIccLockEnabled));
+
+        result = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.changeIccLockPin(pin, newPin));
+        assertTrue(result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT
+                || result.getResult() == PinResult.PIN_RESULT_TYPE_FAILURE);
+        assertTrue(result.getAttemptsRemaining() >= 0);
+
+        result = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.supplyIccLockPin(pin));
+        assertTrue(result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT
+                || result.getResult() == PinResult.PIN_RESULT_TYPE_FAILURE);
+        assertTrue(result.getAttemptsRemaining() >= 0);
+
+        result = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.supplyIccLockPuk(puk, pin));
+        assertTrue(result.getResult() == PinResult.PIN_RESULT_TYPE_INCORRECT
+                || result.getResult() == PinResult.PIN_RESULT_TYPE_FAILURE);
+        assertTrue(result.getAttemptsRemaining() >= 0);
+    }
+
+    @Test
+    public void testGetCarrierBandwidth() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        CarrierBandwidth bandwidth =
+                ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                        (tm) -> tm.getCarrierBandwidth());
+        if (mRadioVersion >= RADIO_HAL_VERSION_1_6) {
+            assertTrue(bandwidth != null);
+            assertTrue(bandwidth.getPrimaryDownlinkCapacityKbps()
+                            != CarrierBandwidth.INVALID);
+            assertTrue(bandwidth.getPrimaryUplinkCapacityKbps()
+                            != CarrierBandwidth.INVALID);
+        }
+    }
+
+    @Test
+    public void testSendThermalMitigationRequest() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        long arbitraryCompletionWindowSecs = 1L;
+
+
+        // Test a proper data throttling thermal mitigation request.
+        int thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                        new ThermalMitigationRequest.Builder()
+                                .setThermalMitigationAction(ThermalMitigationRequest
+                                        .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+                                .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+                                        .setDataThrottlingAction(DataThrottlingRequest
+                                                .DATA_THROTTLING_ACTION_THROTTLE_SECONDARY_CARRIER)
+                                        .setCompletionDurationMillis(arbitraryCompletionWindowSecs)
+                                .build())
+                        .build()));
+        // Only verify the result for supported devices on IRadio 1.6+
+        if (mRadioVersion >= RADIO_HAL_VERSION_1_6) {
+            assertEquals(thermalMitigationResult,
+                    TelephonyManager.THERMAL_MITIGATION_RESULT_SUCCESS);
+        }
+        // Test negative completionDurationSecs is an invalid parameter.
+        try {
+            thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                            new ThermalMitigationRequest.Builder()
+                                    .setThermalMitigationAction(ThermalMitigationRequest
+                                            .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+                                    .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+                                            .setDataThrottlingAction(DataThrottlingRequest
+                                                    .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+                                            )
+                                            .setCompletionDurationMillis(-1)
+                                            .build())
+                                    .build()));
+        } catch (IllegalArgumentException e) {
+        }
+
+        // Test non-zero completionDurationSecs is an invalid parameter for data throttling hold.
+        try {
+            thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                            new ThermalMitigationRequest.Builder()
+                                    .setThermalMitigationAction(ThermalMitigationRequest
+                                            .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+                                    .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+                                            .setDataThrottlingAction(
+                                                    DataThrottlingRequest
+                                                            .DATA_THROTTLING_ACTION_HOLD)
+                                            .setCompletionDurationMillis(
+                                                    arbitraryCompletionWindowSecs)
+                                            .build())
+                                    .build()));
+        } catch (IllegalArgumentException e) {
+        }
+
+        // Test null DataThrottlingParams is an invalid parameter for data throttling request.
+        try {
+            thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                            new ThermalMitigationRequest.Builder()
+                                    .setThermalMitigationAction(ThermalMitigationRequest
+                                            .THERMAL_MITIGATION_ACTION_DATA_THROTTLING)
+                                    .build()));
+        } catch (IllegalArgumentException e) {
+        }
+
+        // Test non-null DataThrottlingParams is an invalid parameter for voice only request.
+        try {
+            thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                            new ThermalMitigationRequest.Builder()
+                                    .setThermalMitigationAction(
+                                            ThermalMitigationRequest
+                                                    .THERMAL_MITIGATION_ACTION_VOICE_ONLY)
+                                    .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+                                            .setDataThrottlingAction(
+                                                    DataThrottlingRequest
+                                                    .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+                                            )
+                                            .setCompletionDurationMillis(-1)
+                                            .build())
+                            .build()));
+        } catch (IllegalArgumentException e) {
+        }
+
+        // Test non-null DataThrottlingParams is an invalid parameter for radio off request.
+        try {
+            thermalMitigationResult = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.sendThermalMitigationRequest(
+                            new ThermalMitigationRequest.Builder()
+                                    .setThermalMitigationAction(
+                                            ThermalMitigationRequest
+                                                    .THERMAL_MITIGATION_ACTION_RADIO_OFF)
+                                    .setDataThrottlingRequest(new DataThrottlingRequest.Builder()
+                                            .setDataThrottlingAction(DataThrottlingRequest
+                                                    .DATA_THROTTLING_ACTION_THROTTLE_PRIMARY_CARRIER
+                                            )
+                                            .setCompletionDurationMillis(-1)
+                                            .build())
+                            .build()));
+        } catch (IllegalArgumentException e) {
+        }
+    }
+
     /**
      * Validate Emergency Number address that only contains the dialable character.
      *
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsCallProfileTest.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsCallProfileTest.java
index d9d1f50..302f293 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsCallProfileTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsCallProfileTest.java
@@ -355,13 +355,8 @@
         ImsCallProfile data = new ImsCallProfile(ImsCallProfile.SERVICE_TYPE_NORMAL,
                 ImsCallProfile.CALL_TYPE_VOICE_N_VIDEO, new Bundle(),
                 new ImsStreamMediaProfile(1, 1, 1, 1, 1));
-        Set<RtpHeaderExtensionType> offered = new ArraySet<>();
-        offered.add(EXTENSION_TYPE_1);
-        offered.add(EXTENSION_TYPE_2);
         Set<RtpHeaderExtensionType> accepted = new ArraySet<>();
-        offered.add(EXTENSION_TYPE_1);
-        data.setOfferedRtpHeaderExtensionTypes(offered);
-        assertEquals(offered, data.getOfferedRtpHeaderExtensionTypes());
+        accepted.add(EXTENSION_TYPE_1);
         data.setAcceptedRtpHeaderExtensionTypes(accepted);
         assertEquals(accepted, data.getAcceptedRtpHeaderExtensionTypes());
 
@@ -372,7 +367,6 @@
                 ImsCallProfile.CREATOR.createFromParcel(dataParceled);
         dataParceled.recycle();
 
-        assertEquals(offered, unparceledData.getOfferedRtpHeaderExtensionTypes());
         assertEquals(accepted, unparceledData.getAcceptedRtpHeaderExtensionTypes());
     }
 }
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsServiceConnector.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsServiceConnector.java
index d5ec9e0..6c207c4 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsServiceConnector.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsServiceConnector.java
@@ -56,6 +56,7 @@
     private static final String COMMAND_BASE = "cmd phone ";
     private static final String COMMAND_SET_IMS_SERVICE = "ims set-ims-service ";
     private static final String COMMAND_GET_IMS_SERVICE = "ims get-ims-service ";
+    private static final String COMMAND_CLEAR_SERVICE_OVERRIDE = "ims clear-ims-service-override";
     private static final String COMMAND_CARRIER_SERVICE_IDENTIFIER = "-c ";
     private static final String COMMAND_DEVICE_SERVICE_IDENTIFIER = "-d ";
     private static final String COMMAND_SLOT_IDENTIFIER = "-s ";
@@ -140,6 +141,7 @@
         }
 
         boolean overrideService(ImsFeatureConfiguration config) throws Exception {
+            mIsServiceOverridden = true;
             switch (mConnectionType) {
                 case CONNECTION_TYPE_IMS_SERVICE_CARRIER: {
                     return bindCarrierImsService(config, PACKAGE_NAME);
@@ -148,8 +150,7 @@
                     return bindDeviceImsService(config, EXTERNAL_PACKAGE_NAME);
                 }
                 case CONNECTION_TYPE_DEFAULT_SMS_APP: {
-                    setDefaultSmsApp(PACKAGE_NAME);
-                    break;
+                    return setDefaultSmsApp(PACKAGE_NAME);
                 }
             }
             return false;
@@ -159,6 +160,7 @@
             if (!mIsServiceOverridden) {
                 return;
             }
+            mIsServiceOverridden = false;
 
             if (mOrigRcsServicePackage == null) {
                 mOrigRcsServicePackage = "";
@@ -170,8 +172,7 @@
 
             switch (mConnectionType) {
                 case CONNECTION_TYPE_IMS_SERVICE_CARRIER: {
-                    setCarrierImsService(mOrigMmTelServicePackage, ImsFeature.FEATURE_MMTEL);
-                    setCarrierImsService(mOrigRcsServicePackage, ImsFeature.FEATURE_RCS);
+                    clearCarrierImsServiceOverride();
                     break;
                 }
                 case CONNECTION_TYPE_IMS_SERVICE_DEVICE: {
@@ -255,7 +256,8 @@
             mFeatureTypeToPackageOverrideMap.put(ImsFeature.FEATURE_RCS, packageName);
             String result = TelephonyUtils.executeShellCommand(mInstrumentation,
                     constructSetImsServiceOverrideCommand(true, packageName, new int[] {
-                            ImsFeature.FEATURE_MMTEL, ImsFeature.FEATURE_RCS}));
+                            ImsFeature.FEATURE_EMERGENCY_MMTEL, ImsFeature.FEATURE_MMTEL,
+                            ImsFeature.FEATURE_RCS}));
             if (ImsUtils.VDBG) {
                 Log.d(TAG, "setCarrierMmTelImsService result: " + result);
             }
@@ -284,7 +286,19 @@
             return "true".equals(result);
         }
 
-        private void setDefaultSmsApp(String packageName) throws Exception {
+        private boolean clearCarrierImsServiceOverride() throws Exception {
+            String result = TelephonyUtils.executeShellCommand(mInstrumentation,
+                    constructClearCarrierImsServiceOverrideCommand());
+            if (ImsUtils.VDBG) {
+                Log.d(TAG, "clearCarrierImsServiceOverride result: " + result);
+            }
+            return "true".equals(result);
+        }
+
+        private boolean setDefaultSmsApp(String packageName) throws Exception {
+            if (packageName == null) {
+                return false;
+            }
             RoleManager roleManager = mInstrumentation.getContext()
                     .getSystemService(RoleManager.class);
             Boolean result;
@@ -298,6 +312,7 @@
             if (ImsUtils.VDBG) {
                 Log.d(TAG, "setDefaultSmsApp result: " + result);
             }
+            return result;
         }
 
         private String getDefaultSmsApp() throws Exception {
@@ -378,6 +393,11 @@
                     + COMMAND_FEATURE_IDENTIFIER + featureType;
         }
 
+        private String constructClearCarrierImsServiceOverrideCommand() {
+            return COMMAND_BASE + COMMAND_CLEAR_SERVICE_OVERRIDE + COMMAND_SLOT_IDENTIFIER
+                    + mSlotId;
+        }
+
         private String getFeatureTypesString(int[] featureTypes) {
             if (featureTypes.length == 0) return "";
             StringBuilder builder = new StringBuilder();
@@ -459,8 +479,12 @@
         return mDeviceServiceConnection.overrideService(config);
     }
 
-    void setDefaultSmsApp() throws Exception {
-        mDefaultSmsAppConnection.overrideService(null);
+    boolean setDefaultSmsApp() throws Exception {
+        return mDefaultSmsAppConnection.overrideService(null);
+    }
+
+    void restoreDefaultSmsApp() throws Exception {
+        mDefaultSmsAppConnection.restoreOriginalPackage();
     }
 
     void disconnectCarrierImsService() throws Exception {
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsUtils.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsUtils.java
index 2c09de8..e691e51 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsUtils.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/ImsUtils.java
@@ -24,6 +24,7 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.SipMessage;
 
 import androidx.test.platform.app.InstrumentationRegistry;
 
@@ -43,6 +44,9 @@
     public static final int ITEM_NON_COMPRESSED = 2000;
     // Id for compressed auto configuration xml.
     public static final int ITEM_COMPRESSED = 2001;
+    // TODO Replace with a real sip message once that logic is in.
+    public static final String TEST_TRANSACTION_ID = "z9hG4bK.TeSt";
+    public static final SipMessage TEST_SIP_MESSAGE = new SipMessage("A", "B", new byte[0]);
 
     public static boolean shouldTestTelephony() {
         final PackageManager pm = InstrumentationRegistry.getInstrumentation().getContext()
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/RcsUceAdapterTest.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/RcsUceAdapterTest.java
index dc4045c..dda4f82 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/RcsUceAdapterTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/RcsUceAdapterTest.java
@@ -258,7 +258,7 @@
                         @Override
                         public void onComplete() {}
                         @Override
-                        public void onError(int errorCode) {}
+                        public void onError(int errorCode, long retryAfterMilliseconds) {}
                     });
             fail("requestCapabilities should require READ_PRIVILEGED_PHONE_STATE.");
         } catch (SecurityException e) {
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/SipDelegateManagerTest.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/SipDelegateManagerTest.java
index cb02a0c..3f786fa 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/SipDelegateManagerTest.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/SipDelegateManagerTest.java
@@ -19,6 +19,7 @@
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertTrue;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.fail;
 
@@ -26,16 +27,23 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.os.Parcel;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.FeatureTagState;
 import android.telephony.ims.ImsException;
 import android.telephony.ims.ImsManager;
 import android.telephony.ims.ImsService;
+import android.telephony.ims.SipDelegateImsConfiguration;
 import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
 import android.telephony.ims.feature.ImsFeature;
 import android.telephony.ims.stub.ImsFeatureConfiguration;
+import android.util.ArraySet;
 
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 import androidx.test.platform.app.InstrumentationRegistry;
@@ -49,20 +57,27 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * CTS tests for {@link SipDelegateManager} API.
  */
 @RunWith(AndroidJUnit4.class)
 public class SipDelegateManagerTest {
-
-    private static int sTestSlot = 0;
-    private static int sTestSub = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-    private static ImsServiceConnector sServiceConnector;
-    private static CarrierConfigReceiver sReceiver;
+    private static final String MMTEL_TAG =
+            "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel\"";
+    private static final String ONE_TO_ONE_CHAT_TAG =
+            "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gppservice.ims.icsi.oma.cpm.msg\"";
+    private static final String GROUP_CHAT_TAG =
+            "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gppservice.ims.icsi.oma.cpm.session\"";
+    private static final String FILE_TRANSFER_HTTP_TAG =
+            "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gppapplication.ims.iari.rcs.fthttp\"";
 
     private static class CarrierConfigReceiver extends BroadcastReceiver {
         private CountDownLatch mLatch = new CountDownLatch(1);
@@ -91,6 +106,11 @@
         }
     }
 
+    private static int sTestSlot = 0;
+    private static int sTestSub = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+    private static ImsServiceConnector sServiceConnector;
+    private static CarrierConfigReceiver sReceiver;
+
     @BeforeClass
     public static void beforeAllTests() throws Exception {
         // First, only populate test slot/sub
@@ -179,6 +199,7 @@
         // is enabled.
         if (sServiceConnector != null) {
             sServiceConnector.disconnectCarrierImsService();
+            sServiceConnector.restoreDefaultSmsApp();
         }
     }
 
@@ -196,6 +217,14 @@
         } catch (SecurityException e) {
             //expected
         }
+        DelegateRequest d = new DelegateRequest(Collections.emptySet());
+        TestSipDelegateConnection c = new TestSipDelegateConnection(d);
+        try {
+            manager.createSipDelegate(d, Runnable::run, c, c);
+            fail("createSipDelegate requires MODIFY_PHONE_STATE");
+        } catch (SecurityException e) {
+            //expected
+        }
     }
 
     @Test
@@ -354,7 +383,7 @@
         overrideCarrierConfig(b);
 
         assertTrue(sServiceConnector.connectCarrierImsServiceLocally());
-        // NoytImplemented/capable
+        // Not Implemented/capable
         ImsFeatureConfiguration c = getConfigForMmTelAndRcs();
         assertTrue(sServiceConnector.triggerFrameworkConnectionToCarrierImsService(c));
         verifyImsServiceState(c);
@@ -368,6 +397,506 @@
                 + "set as capable in ImsService#getImsServiceCapabilities", result);
     }
 
+    @Test
+    public void testCreateDestroyDelegateNotDefaultMessagingApp() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        connectTestImsServiceWithSipTransportAndConfig();
+
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+        DelegateRequest request = getDefaultRequest();
+        TestSipDelegateConnection delegateConn = new TestSipDelegateConnection(request);
+
+        // wait for onCreated and registration state change to be called.
+        createSipDelegateConnectionNoDelegateExpected(manager, delegateConn, transportImpl);
+
+        // TODO deal with this case better when we can filter messages.
+        delegateConn.sendMessageAndVerifyFailure(ImsUtils.TEST_SIP_MESSAGE,
+                SipDelegateManager.MESSAGE_FAILURE_REASON_DELEGATE_DEAD);
+
+        destroySipDelegateConnectionNoDelegate(manager, delegateConn);
+    }
+
+    @Test
+    public void testCreateDelegateBasicUseCases() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        assertTrue(sServiceConnector.setDefaultSmsApp());
+        connectTestImsServiceWithSipTransportAndConfig();
+
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+        DelegateRequest request = getDefaultRequest();
+        TestSipDelegateConnection delegateConn = new TestSipDelegateConnection(request);
+
+        TestSipDelegate delegate = createSipDelegateConnectionAndVerify(manager, delegateConn,
+                transportImpl, Collections.emptySet(), 0);
+        assertNotNull(delegate);
+
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        verifyRegisteredAndSendSipConfig(delegateConn, delegate, request.getFeatureTags(),
+                Collections.emptySet(), c);
+
+        sendMessageAndVerifyAck(delegateConn, delegate);
+        receiveMessageAndVerifyAck(delegateConn, delegate);
+
+        destroySipDelegateAndVerify(manager, transportImpl, delegateConn, delegate,
+                request.getFeatureTags());
+        assertEquals("There should be no more delegates", 0,
+                transportImpl.getDelegates().size());
+    }
+
+    @Test
+    public void testDelegateRegistrationChanges() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        assertTrue(sServiceConnector.setDefaultSmsApp());
+        connectTestImsServiceWithSipTransportAndConfig();
+
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+        DelegateRequest request = getDefaultRequest();
+        TestSipDelegateConnection delegateConn = new TestSipDelegateConnection(request);
+
+        // Construct registered tags and denied tags, vendor denied FT tag.
+        Set<String> registeredTags = new ArraySet<>(request.getFeatureTags());
+        registeredTags.remove(FILE_TRANSFER_HTTP_TAG);
+        Set<FeatureTagState> deniedTags = new ArraySet<>(1);
+        deniedTags.add(new FeatureTagState(FILE_TRANSFER_HTTP_TAG,
+                SipDelegateManager.DENIED_REASON_IN_USE_BY_ANOTHER_DELEGATE));
+        TestSipDelegate delegate = createSipDelegateConnectionAndVerify(manager, delegateConn,
+                transportImpl, deniedTags, 0);
+        assertNotNull(delegate);
+
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        verifyRegisteredAndSendSipConfig(delegateConn, delegate, registeredTags, deniedTags, c);
+
+        // TODO verify messages can be sent on registered tags, but generate error for denied tags.
+
+        // move reg state to deregistering and then deregistered
+        delegateConn.setOperationCountDownLatch(1);
+        DelegateRegistrationState s = getDeregisteringState(registeredTags,
+                DelegateRegistrationState.DEREGISTERING_REASON_PDN_CHANGE);
+        delegate.notifyImsRegistrationUpdate(s);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyRegistrationStateEquals(s);
+
+        delegateConn.setOperationCountDownLatch(1);
+        s = getRegisteredRegistrationState(registeredTags);
+        delegate.notifyImsRegistrationUpdate(s);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyRegistrationStateEquals(s);
+
+        destroySipDelegateAndVerify(manager, transportImpl, delegateConn, delegate,
+                registeredTags);
+        assertEquals("There should be no more delegates", 0,
+                transportImpl.getDelegates().size());
+    }
+
+    @Test
+    public void testCreateMultipleDelegates() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        assertTrue(sServiceConnector.setDefaultSmsApp());
+        connectTestImsServiceWithSipTransportAndConfig();
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+
+        DelegateRequest request1 = getChatOnlyRequest();
+        TestSipDelegateConnection delegateConn1 = new TestSipDelegateConnection(request1);
+        Set<String> registeredTags1 = new ArraySet<>(request1.getFeatureTags());
+        TestSipDelegate delegate1 = createSipDelegateConnectionAndVerify(manager, delegateConn1,
+                transportImpl, Collections.emptySet(), 0);
+        assertNotNull(delegate1);
+
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        verifyRegisteredAndSendSipConfig(delegateConn1, delegate1, registeredTags1,
+                Collections.emptySet(), c);
+
+        // This will only be granted File transfer FT
+        DelegateRequest request2 = getDefaultRequest();
+        TestSipDelegateConnection delegateConn2 = new TestSipDelegateConnection(request2);
+        Set<String> registeredTags2 = new ArraySet<>();
+        registeredTags2.add(FILE_TRANSFER_HTTP_TAG);
+        TestSipDelegate delegate2 = createSipDelegateConnectionAndVerify(manager, delegateConn2,
+                transportImpl, Collections.emptySet(), 1);
+        assertNotNull(delegate2);
+        Set<FeatureTagState> deniedSet = generateDeniedSetFromRequest(request1.getFeatureTags(),
+                request2.getFeatureTags(),
+                SipDelegateManager.DENIED_REASON_IN_USE_BY_ANOTHER_DELEGATE);
+        verifyRegisteredAndSendSipConfig(delegateConn2, delegate2, registeredTags2,
+                deniedSet, c);
+
+        // Destroying delegate 1 will transfer all feature tags over to delegate 2
+        delegateConn2.setOperationCountDownLatch(1);
+        destroySipDelegateAndVerify(manager, transportImpl, delegateConn1, delegate1,
+                registeredTags1);
+        delegateConn2.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        // This internally triggers the destruction of the internal delegate2 and then recreation
+        // of another delegate with the new feature set that it supports.
+        verifySipDelegateDestroyed(transportImpl, delegateConn2, delegate2, registeredTags2,
+                DelegateRegistrationState.DEREGISTERING_REASON_FEATURE_TAGS_CHANGING);
+        delegate2 = getSipDelegate(transportImpl, Collections.emptySet(), 0);
+        verifyRegisteredAndSendSipConfig(delegateConn2, delegate2, request2.getFeatureTags(),
+                Collections.emptySet(), c);
+
+        destroySipDelegateAndVerify(manager, transportImpl, delegateConn2, delegate2,
+                request2.getFeatureTags());
+        assertEquals("There should be no more delegates", 0,
+                transportImpl.getDelegates().size());
+    }
+
+    @Test
+    public void testCreateDelegateMessagingAppChangesToApp() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        // start with no features granted
+        connectTestImsServiceWithSipTransportAndConfig();
+
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+        DelegateRequest request = getDefaultRequest();
+        TestSipDelegateConnection delegateConn = new TestSipDelegateConnection(request);
+
+        // wait for onCreated and registration state change to be called.
+        createSipDelegateConnectionNoDelegateExpected(manager, delegateConn, transportImpl);
+
+        // Make this app the DMA
+        assertTrue(sServiceConnector.setDefaultSmsApp());
+        TestSipDelegate delegate = getSipDelegate(transportImpl, Collections.emptySet(), 0);
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        verifyRegisteredAndSendSipConfig(delegateConn, delegate, request.getFeatureTags(),
+                Collections.emptySet(), c);
+        destroySipDelegateAndVerify(manager, transportImpl, delegateConn, delegate,
+                request.getFeatureTags());
+        assertEquals("There should be no more delegates", 0,
+                transportImpl.getDelegates().size());
+    }
+
+    @Test
+    public void testCreateDelegateMessagingAppChangesAwayFromApp() throws Exception {
+        if (!ImsUtils.shouldTestImsService()) {
+            return;
+        }
+        // Make this app the DMA
+        assertTrue(sServiceConnector.setDefaultSmsApp());
+        connectTestImsServiceWithSipTransportAndConfig();
+        TestSipTransport transportImpl = sServiceConnector.getCarrierService().getSipTransport();
+        SipDelegateManager manager = getSipDelegateManager();
+
+        DelegateRequest request = getDefaultRequest();
+        TestSipDelegateConnection delegateConn = new TestSipDelegateConnection(request);
+        TestSipDelegate delegate = createSipDelegateConnectionAndVerify(manager, delegateConn,
+                transportImpl, Collections.emptySet(), 0);
+        assertNotNull(delegate);
+
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        verifyRegisteredAndSendSipConfig(delegateConn, delegate, request.getFeatureTags(),
+                Collections.emptySet(), c);
+
+
+        // Move DMA to another app, we should receive a registration update.
+        delegateConn.setOperationCountDownLatch(1);
+        sServiceConnector.restoreDefaultSmsApp();
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        // we should get another reg update with all tags denied.
+        delegateConn.setOperationCountDownLatch(1);
+        verifySipDelegateDestroyed(transportImpl, delegateConn, delegate, request.getFeatureTags(),
+                DelegateRegistrationState.DEREGISTERING_REASON_FEATURE_TAGS_CHANGING);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyRegistrationStateEmpty();
+        // All requested features should have been denied due to the app not being the default sms
+        // app.
+        delegateConn.verifyAllDenied(SipDelegateManager.DENIED_REASON_NOT_ALLOWED);
+        // There should not be any delegates left, as the only delegate should have been cleaned up.
+        assertEquals("SipDelegate should not have any delegates", 0,
+                transportImpl.getDelegates().size());
+
+        destroySipDelegateConnectionNoDelegate(manager, delegateConn);
+    }
+    @Test
+    public void testParcelUnparcelDelegateRequest() {
+        ArraySet<String> testTags = new ArraySet<>();
+        testTags.add(MMTEL_TAG);
+        testTags.add(ONE_TO_ONE_CHAT_TAG);
+        testTags.add(GROUP_CHAT_TAG);
+        testTags.add(FILE_TRANSFER_HTTP_TAG);
+        DelegateRequest r = new DelegateRequest(testTags);
+        Parcel p = Parcel.obtain();
+        r.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        DelegateRequest unparcelled = DelegateRequest.CREATOR.createFromParcel(p);
+        assertEquals(r, unparcelled);
+        assertEquals(r.getFeatureTags(), unparcelled.getFeatureTags());
+    }
+
+    @Test
+    public void testParcelUnparcelFeatureTagState() {
+        FeatureTagState f = new FeatureTagState(MMTEL_TAG,
+                DelegateRegistrationState.DEREGISTERED_REASON_NOT_REGISTERED);
+        Parcel p = Parcel.obtain();
+        f.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        FeatureTagState unparcelled = FeatureTagState.CREATOR.createFromParcel(p);
+        assertEquals(f, unparcelled);
+        assertEquals(f.getFeatureTag(), unparcelled.getFeatureTag());
+        assertEquals(f.getState(), unparcelled.getState());
+    }
+
+    @Test
+    public void testParcelUnparcelRegistrationState() {
+        ArraySet<String> regTags = new ArraySet<>();
+        regTags.add(MMTEL_TAG);
+        DelegateRegistrationState s = new DelegateRegistrationState.Builder()
+                .addRegisteredFeatureTags(regTags)
+                .addRegisteredFeatureTag(ONE_TO_ONE_CHAT_TAG)
+                .addDeregisteringFeatureTag(GROUP_CHAT_TAG,
+                        DelegateRegistrationState.DEREGISTERING_REASON_PDN_CHANGE)
+                .addDeregisteredFeatureTag(FILE_TRANSFER_HTTP_TAG,
+                        DelegateRegistrationState.DEREGISTERED_REASON_NOT_REGISTERED)
+                .build();
+        Parcel p = Parcel.obtain();
+        s.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        DelegateRegistrationState unparcel = DelegateRegistrationState.CREATOR.createFromParcel(p);
+        assertEquals(s, unparcel);
+        assertEquals(s.getRegisteredFeatureTags(), unparcel.getRegisteredFeatureTags());
+        assertEquals(s.getDeregisteringFeatureTags(), unparcel.getDeregisteringFeatureTags());
+        assertEquals(s.getDeregisteredFeatureTags(), unparcel.getDeregisteredFeatureTags());
+    }
+
+    @Test
+    public void testParcelUnparcelImsConfiguration() {
+        SipDelegateImsConfiguration c = new SipDelegateImsConfiguration.Builder(1 /*version*/)
+                .addBoolean(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL, true)
+                .addInt(SipDelegateImsConfiguration.KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT, 1)
+                .addString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING, "123")
+                .build();
+        Parcel p = Parcel.obtain();
+        c.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        SipDelegateImsConfiguration unparcel =
+                SipDelegateImsConfiguration.CREATOR.createFromParcel(p);
+        assertEquals(c.getVersion(), unparcel.getVersion());
+        assertEquals(c.getBoolean(
+                        SipDelegateImsConfiguration.KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL, false),
+                unparcel.getBoolean(
+                        SipDelegateImsConfiguration.KEY_SIP_CONFIG_IS_GRUU_ENABLED_BOOL, false));
+        assertEquals(c.getInt(
+                SipDelegateImsConfiguration.KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT, -1),
+                unparcel.getInt(
+                        SipDelegateImsConfiguration.KEY_SIP_CONFIG_MAX_PAYLOAD_SIZE_ON_UDP_INT,
+                        -1));
+        assertEquals(c.getString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING),
+                unparcel.getString(SipDelegateImsConfiguration.KEY_SIP_CONFIG_IMEI_STRING));
+    }
+
+    @Test
+    public void testParcelUnparcelSipMessage() {
+        byte[] bytes = new byte[1];
+        bytes[0] = 'a';
+        SipMessage m = new SipMessage("A", "B", bytes);
+        Parcel p = Parcel.obtain();
+        m.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        SipMessage unparcel = SipMessage.CREATOR.createFromParcel(p);
+        assertEquals(m, unparcel);
+        assertEquals(m.getStartLine(), unparcel.getStartLine());
+        assertEquals(m.getHeaderSection(), unparcel.getHeaderSection());
+        assertTrue(Arrays.equals(m.getContent(), unparcel.getContent()));
+    }
+
+    private void createSipDelegateConnectionNoDelegateExpected(SipDelegateManager manager,
+            TestSipDelegateConnection conn, TestSipTransport transport) throws Exception {
+        // wait for onCreated and reg state changed
+        conn.setOperationCountDownLatch(2);
+        conn.connect(manager);
+        conn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        conn.verifyDelegateCreated();
+        conn.verifyRegistrationStateEmpty();
+        // All requested features should have been denied due to the app not being the default sms
+        // app.
+        conn.verifyAllDenied(SipDelegateManager.DENIED_REASON_NOT_ALLOWED);
+        // There should not have been a call to create a SipDelegate on the service side, since all
+        // features were denied due to permissions issues.
+        assertEquals("SipDelegate should not have been created", 0,
+                transport.getDelegates().size());
+    }
+
+    private void destroySipDelegateConnectionNoDelegate(SipDelegateManager manager,
+            TestSipDelegateConnection delegateConn) throws Exception {
+        delegateConn.setOperationCountDownLatch(1);
+        delegateConn.disconnect(manager,
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyDestroyed(
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+    }
+
+    private void destroySipDelegateAndVerify(SipDelegateManager manager,
+            TestSipTransport transportImpl, TestSipDelegateConnection delegateConn,
+            TestSipDelegate delegate, Set<String> registeredTags) throws Exception {
+        // wait for registration change upon disconnecting state change
+        delegateConn.setOperationCountDownLatch(1);
+        delegateConn.disconnect(manager,
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        // verify we move to deregistering for registered tags.
+        DelegateRegistrationState s = getDeregisteringState(registeredTags,
+                DelegateRegistrationState.DEREGISTERING_REASON_DESTROY_PENDING);
+        delegateConn.verifyRegistrationStateEquals(s);
+        // wait for on destroyed
+        delegateConn.setOperationCountDownLatch(1);
+        transportImpl.waitForLatchCountdownAndReset(TestSipTransport.LATCH_DESTROY_DELEGATE);
+        delegate.notifyOnDestroyed(
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyDestroyed(
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+    }
+
+    private void verifySipDelegateDestroyed(TestSipTransport transportImpl,
+            TestSipDelegateConnection delegateConn, TestSipDelegate delegate,
+            Set<String> registeredTags, int deregReason) {
+        // verify we move to deregistering for registered tags.
+        DelegateRegistrationState s = getDeregisteringState(registeredTags, deregReason);
+        delegateConn.verifyRegistrationStateEquals(s);
+        transportImpl.waitForLatchCountdownAndReset(TestSipTransport.LATCH_DESTROY_DELEGATE);
+        delegate.notifyOnDestroyed(
+                SipDelegateManager.SIP_DELEGATE_DESTROY_REASON_REQUESTED_BY_APP);
+    }
+
+    private TestSipDelegate createSipDelegateConnectionAndVerify(SipDelegateManager manager,
+            TestSipDelegateConnection conn, TestSipTransport transport,
+            Set<FeatureTagState>  deniedTags, int delegateIndex) throws Exception {
+        conn.setOperationCountDownLatch(1);
+        conn.connect(manager);
+        TestSipDelegate d = getSipDelegate(transport, deniedTags, delegateIndex);
+        conn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        conn.verifyDelegateCreated();
+        return d;
+    }
+
+    private TestSipDelegate getSipDelegate(TestSipTransport transport,
+            Set<FeatureTagState> deniedTags, int delegateIndex) {
+        transport.waitForLatchCountdownAndReset(TestSipTransport.LATCH_CREATE_DELEGATE);
+        // There must have been a call to create a SipDelegate on the service side.
+        assertEquals("SipDelegate should have been created", delegateIndex + 1,
+                transport.getDelegates().size());
+        TestSipDelegate d = transport.getDelegates().get(delegateIndex);
+        d.notifyOnCreated(deniedTags);
+        return d;
+    }
+
+    private void verifyRegisteredAndSendSipConfig(TestSipDelegateConnection delegateConn,
+            TestSipDelegate delegate, Set<String> registeredTags,
+            Set<FeatureTagState> deniedTags, SipDelegateImsConfiguration sipConfig) {
+        // wait for reg change to be called
+        delegateConn.setOperationCountDownLatch(1);
+        DelegateRegistrationState s = getRegisteredRegistrationState(registeredTags);
+        delegate.notifyImsRegistrationUpdate(s);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyRegistrationStateRegistered(registeredTags);
+        delegateConn.verifyDenied(deniedTags);
+
+        // send config change as well.
+        sendConfigChange(sipConfig, delegateConn, delegate);
+    }
+
+    private Set<FeatureTagState> generateDeniedSetFromRequest(Set<String> grantedTags,
+            Set<String> newTags, int reason) {
+        // Deny features from newTags that are already granted in grantedTags.
+        return grantedTags.stream().filter(newTags::contains)
+                .map(s -> new FeatureTagState(s, reason))
+                .collect(Collectors.toSet());
+    }
+
+    private void sendMessageAndVerifyAck(TestSipDelegateConnection delegateConn,
+            TestSipDelegate delegate) throws Exception {
+        // Send a message and ensure it gets received on the other end as well as acked
+        delegateConn.sendMessageAndVerifyCompletedSuccessfully(ImsUtils.TEST_SIP_MESSAGE);
+        delegate.verifyMessageSend(ImsUtils.TEST_SIP_MESSAGE);
+        // send a message and notify connection that it failed
+        delegate.setSendMessageDenyReason(
+                SipDelegateManager.MESSAGE_FAILURE_REASON_NETWORK_NOT_AVAILABLE);
+        delegateConn.sendMessageAndVerifyFailure(ImsUtils.TEST_SIP_MESSAGE,
+                SipDelegateManager.MESSAGE_FAILURE_REASON_NETWORK_NOT_AVAILABLE);
+        delegate.verifyMessageSend(ImsUtils.TEST_SIP_MESSAGE);
+    }
+
+    private void receiveMessageAndVerifyAck(TestSipDelegateConnection delegateConn,
+            TestSipDelegate delegate) throws Exception {
+        // Receive a message and ensure it gets received on the other end as well as acked
+        delegate.receiveMessageAndVerifyReceivedCalled(ImsUtils.TEST_SIP_MESSAGE);
+        delegateConn.verifyMessageReceived(ImsUtils.TEST_SIP_MESSAGE);
+        // Receive a message and have connection notify that it didn't complete
+        delegateConn.setReceivedMessageErrorResponseReason(
+                SipDelegateManager.MESSAGE_FAILURE_REASON_INVALID_BODY_CONTENT);
+        delegate.receiveMessageAndVerifyReceiveErrorCalled(ImsUtils.TEST_SIP_MESSAGE,
+                SipDelegateManager.MESSAGE_FAILURE_REASON_INVALID_BODY_CONTENT);
+    }
+
+    private void sendConfigChange(SipDelegateImsConfiguration c,
+            TestSipDelegateConnection delegateConn, TestSipDelegate delegate) {
+        delegateConn.setOperationCountDownLatch(1);
+        delegate.notifyImsConfigurationUpdate(c);
+        delegateConn.waitForCountDown(ImsUtils.TEST_TIMEOUT_MS);
+        delegateConn.verifyConfigEquals(c);
+    }
+
+    private DelegateRegistrationState getRegisteredRegistrationState(Set<String> registered) {
+        return new DelegateRegistrationState.Builder().addRegisteredFeatureTags(registered).build();
+    }
+
+    private DelegateRegistrationState getDeregisteringState(Set<String> deregisterTags,
+            int reason) {
+        DelegateRegistrationState.Builder b = new DelegateRegistrationState.Builder();
+        for (String t : deregisterTags) {
+            b.addDeregisteringFeatureTag(t, reason);
+        }
+        return b.build();
+    }
+
+    private DelegateRegistrationState getDeregistedState(Set<String> deregisterTags,
+            int reason) {
+        DelegateRegistrationState.Builder b = new DelegateRegistrationState.Builder();
+        for (String t : deregisterTags) {
+            b.addDeregisteredFeatureTag(t, reason);
+        }
+        return b.build();
+    }
+
+    private void connectTestImsServiceWithSipTransportAndConfig() throws Exception {
+        PersistableBundle b = new PersistableBundle();
+        b.putBoolean(CarrierConfigManager.Ims.KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL, true);
+        overrideCarrierConfig(b);
+
+        assertTrue(sServiceConnector.connectCarrierImsServiceLocally());
+        sServiceConnector.getCarrierService().addCapabilities(
+                ImsService.CAPABILITY_SIP_DELEGATE_CREATION);
+        sServiceConnector.getCarrierService().setSipTransportImplemented();
+        ImsFeatureConfiguration c = getConfigForMmTelAndRcs();
+        assertTrue(sServiceConnector.triggerFrameworkConnectionToCarrierImsService(c));
+        verifyImsServiceState(c);
+    }
+
+
     private void connectTestImsServiceWithSipTransport() throws Exception {
         assertTrue(sServiceConnector.connectCarrierImsServiceLocally());
         sServiceConnector.getCarrierService().addCapabilities(
@@ -422,6 +951,21 @@
         return null;
     }
 
+    private DelegateRequest getDefaultRequest() {
+        ArraySet<String> features = new ArraySet<>(3);
+        features.add(TestSipTransport.ONE_TO_ONE_CHAT_TAG);
+        features.add(TestSipTransport.GROUP_CHAT_TAG);
+        features.add(TestSipTransport.FILE_TRANSFER_HTTP_TAG);
+        return new DelegateRequest(features);
+    }
+
+    private DelegateRequest getChatOnlyRequest() {
+        ArraySet<String> features = new ArraySet<>(3);
+        features.add(TestSipTransport.ONE_TO_ONE_CHAT_TAG);
+        features.add(TestSipTransport.GROUP_CHAT_TAG);
+        return new DelegateRequest(features);
+    }
+
     private ImsFeatureConfiguration getConfigForMmTelAndRcs() {
         return new ImsFeatureConfiguration.Builder()
                 .addFeature(sTestSlot, ImsFeature.FEATURE_EMERGENCY_MMTEL)
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestImsService.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestImsService.java
index 89019b7..029b8c3 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestImsService.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestImsService.java
@@ -342,6 +342,12 @@
         }
     }
 
+    public TestSipTransport getSipTransport() {
+        synchronized (mLock) {
+            return mTestSipTransport;
+        }
+    }
+
     public ImsRegistrationImplBase getImsRegistration() {
         synchronized (mLock) {
             return sImsRegistrationImplBase;
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegate.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegate.java
new file mode 100644
index 0000000..3d06dce
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegate.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import android.telephony.ims.DelegateMessageCallback;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.DelegateStateCallback;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipMessage;
+import android.telephony.ims.stub.SipDelegate;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+
+import java.util.Set;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class TestSipDelegate implements SipDelegate {
+    private static final String LOG_TAG = "CtsImsSipDelegate";
+
+    public final int subId;
+    public final DelegateRequest delegateRequest;
+    private final DelegateStateCallback mStateCallback;
+    private final DelegateMessageCallback mMessageCallback;
+
+    private final LinkedBlockingQueue<SipMessage> mIncomingMessages = new LinkedBlockingQueue<>();
+    // Pair is <transactionId, error reason>
+    private final LinkedBlockingQueue<Pair<String, Integer>> mReceivedMessageAcks =
+            new LinkedBlockingQueue<>();
+    private int mSendMessageDenyReason = -1;
+
+    public TestSipDelegate(int sub, DelegateRequest request, DelegateStateCallback cb,
+            DelegateMessageCallback mc) {
+        subId = sub;
+        delegateRequest = request;
+        mStateCallback = cb;
+        mMessageCallback = mc;
+    }
+
+    @Override
+    public void sendMessage(@NonNull SipMessage message, long configVersion) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "sendMessage");
+        mIncomingMessages.offer(message);
+        if (mSendMessageDenyReason > -1) {
+            mMessageCallback.onMessageSendFailure(ImsUtils.TEST_TRANSACTION_ID,
+                    mSendMessageDenyReason);
+        } else {
+            mMessageCallback.onMessageSent(ImsUtils.TEST_TRANSACTION_ID);
+        }
+    }
+
+    @Override
+    public void closeDialog(@NonNull String callId) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "closeDialog");
+        // TODO: Test once dialogs are tracked in AOSP.
+    }
+
+    @Override
+    public void notifyMessageReceived(@NonNull String viaTransactionId) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "notifyMessageReceived");
+        mReceivedMessageAcks.offer(new Pair<>(viaTransactionId, -1));
+    }
+
+    @Override
+    public void notifyMessageReceiveError(@NonNull String viaTransactionId, int reason) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "notifyMessageReceiveError");
+        mReceivedMessageAcks.offer(new Pair<>(viaTransactionId, reason));
+    }
+
+    public void verifyMessageSend(SipMessage messageToVerify) throws Exception {
+        SipMessage m = mIncomingMessages.poll(ImsUtils.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(messageToVerify, m);
+    }
+
+    public void setSendMessageDenyReason(int reason) {
+        mSendMessageDenyReason = reason;
+    }
+
+    public void receiveMessageAndVerifyReceivedCalled(SipMessage m) throws Exception {
+        mMessageCallback.onMessageReceived(m);
+        Pair<String, Integer> transactionAndIdPair = mReceivedMessageAcks.poll(
+                ImsUtils.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(ImsUtils.TEST_TRANSACTION_ID, transactionAndIdPair.first);
+        assertNotNull(transactionAndIdPair.second);
+        assertEquals(-1, transactionAndIdPair.second.intValue());
+    }
+
+    public void receiveMessageAndVerifyReceiveErrorCalled(SipMessage m, int reason)
+            throws Exception {
+        mMessageCallback.onMessageReceived(m);
+        Pair<String, Integer> transactionAndIdPair = mReceivedMessageAcks.poll(
+                ImsUtils.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(ImsUtils.TEST_TRANSACTION_ID, transactionAndIdPair.first);
+        assertNotNull(transactionAndIdPair.second);
+        assertEquals(reason, transactionAndIdPair.second.intValue());
+    }
+
+    public void notifyImsRegistrationUpdate(DelegateRegistrationState state) {
+        mStateCallback.onFeatureTagRegistrationChanged(state);
+    }
+
+    public void notifyImsConfigurationUpdate(SipDelegateImsConfiguration config) {
+        mStateCallback.onImsConfigurationChanged(config);
+    }
+
+    public void notifyOnCreated(Set<FeatureTagState> deniedTags) {
+        mStateCallback.onCreated(this, deniedTags);
+    }
+
+    public void notifyOnDestroyed(int reason) {
+        mStateCallback.onDestroyed(reason);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegateConnection.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegateConnection.java
new file mode 100644
index 0000000..6b3b134
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipDelegateConnection.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.ims.cts;
+
+import static junit.framework.Assert.assertTrue;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import android.os.PersistableBundle;
+import android.telephony.ims.DelegateRegistrationState;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.FeatureTagState;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.SipDelegateConnection;
+import android.telephony.ims.SipDelegateImsConfiguration;
+import android.telephony.ims.SipDelegateManager;
+import android.telephony.ims.SipMessage;
+import android.telephony.ims.stub.DelegateConnectionMessageCallback;
+import android.telephony.ims.stub.DelegateConnectionStateCallback;
+import android.util.ArraySet;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
+
+import com.android.compatibility.common.util.ShellIdentityUtils;
+
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+public class TestSipDelegateConnection implements DelegateConnectionStateCallback,
+        DelegateConnectionMessageCallback {
+
+    private interface ExceptionRunnable {
+        void run() throws Exception;
+    }
+
+    private static final String LOG_TAG = "CtsImsSipDelegateC";
+
+    public int destroyReason = -1;
+    public SipDelegateConnection connection;
+    public Set<FeatureTagState> deniedTags;
+    public DelegateRegistrationState regState;
+    public SipDelegateImsConfiguration sipConfig;
+    public final DelegateRequest delegateRequest;
+
+    private int mReceivedMessageErrorResponseReason = -1;
+    private CountDownLatch mLatch;
+    // Pair is <transactionId, error reason>
+    private final LinkedBlockingQueue<SipMessage> mReceivedMessages = new LinkedBlockingQueue<>();
+    private final LinkedBlockingQueue<Pair<String, Integer>> mSentMessageAcks =
+            new LinkedBlockingQueue<>();
+
+    public TestSipDelegateConnection(DelegateRequest request) {
+        delegateRequest = request;
+    }
+
+    public void connect(SipDelegateManager manager) throws Exception {
+        callUntilImsServiceIsAvailableNoReturn(() ->
+                ShellIdentityUtils.invokeThrowableMethodWithShellPermissionsNoReturn(
+                        manager, (m) -> m.createSipDelegate(delegateRequest, Runnable::run, this,
+                                this), ImsException.class,
+                        "android.permission.MODIFY_PHONE_STATE"));
+    }
+
+    public void disconnect(SipDelegateManager manager, int reason) throws Exception {
+        ShellIdentityUtils.invokeThrowableMethodWithShellPermissionsNoReturn(
+                manager, (m) -> m.destroySipDelegate(connection, reason),
+                ImsException.class, "android.permission.MODIFY_PHONE_STATE");
+    }
+
+    @Override
+    public void onMessageReceived(@NonNull SipMessage message) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onMessageReceived");
+        mReceivedMessages.offer(message);
+        if (mReceivedMessageErrorResponseReason > -1) {
+            connection.notifyMessageReceiveError(ImsUtils.TEST_TRANSACTION_ID,
+                    mReceivedMessageErrorResponseReason);
+        } else {
+            connection.notifyMessageReceived(ImsUtils.TEST_TRANSACTION_ID);
+        }
+    }
+
+    @Override
+    public void onMessageSent(@NonNull String viaTransactionId) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onMessageSent");
+        mSentMessageAcks.offer(new Pair<>(viaTransactionId, -1));
+    }
+
+    @Override
+    public void onMessageSendFailure(@NonNull String viaTransactionId, int reason) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onMessageSendFailure");
+        mSentMessageAcks.offer(new Pair<>(viaTransactionId, reason));
+    }
+
+    @Override
+    public void onCreated(@NonNull SipDelegateConnection c) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onCreated");
+        connection = c;
+        mLatch.countDown();
+    }
+
+    @Override
+    public void onFeatureTagStatusChanged(@NonNull DelegateRegistrationState registrationState,
+            @NonNull Set<FeatureTagState> deniedFeatureTags) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onFeatureTagStatusChanged");
+        regState = registrationState;
+        deniedTags = deniedFeatureTags;
+        mLatch.countDown();
+    }
+
+    @Override
+    public void onImsConfigurationChanged(
+            @NonNull SipDelegateImsConfiguration registeredSipConfig) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onImsConfigurationChanged");
+        sipConfig = registeredSipConfig;
+        mLatch.countDown();
+    }
+
+    @Override
+    public void onDestroyed(int reason) {
+        if (ImsUtils.VDBG) Log.d(LOG_TAG, "onDestroyed");
+        connection = null;
+        destroyReason = reason;
+        mLatch.countDown();
+    }
+
+    public void sendMessageAndVerifyCompletedSuccessfully(SipMessage messageToSend)
+            throws Exception {
+        assertNotNull("SipDelegate was null when sending message", connection);
+        connection.sendMessage(messageToSend, sipConfig.getVersion());
+        Pair<String, Integer> ack = mSentMessageAcks.poll(ImsUtils.TEST_TIMEOUT_MS,
+                TimeUnit.MILLISECONDS);
+        assertNotNull(ack);
+        assertEquals(ImsUtils.TEST_TRANSACTION_ID, ack.first);
+        assertNotNull(ack.second);
+        assertEquals(-1, ack.second.intValue());
+    }
+
+    public void sendMessageAndVerifyFailure(SipMessage messageToSend, int expectedReason)
+            throws Exception {
+        assertNotNull("SipDelegate was null when sending message", connection);
+        // send invalid version if it was not sent.
+        long version = (sipConfig != null) ? sipConfig.getVersion() : -1;
+        connection.sendMessage(messageToSend, version);
+        Pair<String, Integer> ack = mSentMessageAcks.poll(ImsUtils.TEST_TIMEOUT_MS,
+                TimeUnit.MILLISECONDS);
+        assertNotNull(ack);
+        // TODO actually check this, but for now the platform can not inspect SipMessages and send
+        // the real transaction ID. So, just ensure it is null.
+        //assertEquals(ImsUtils.TEST_TRANSACTION_ID, ack.first);
+        assertNotNull(ack.second);
+        assertEquals(expectedReason, ack.second.intValue());
+    }
+
+    public void verifyMessageReceived(SipMessage messageToVerify)
+            throws Exception {
+        SipMessage m = mReceivedMessages.poll(ImsUtils.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(messageToVerify, m);
+    }
+
+    public void setReceivedMessageErrorResponseReason(int reason) {
+        mReceivedMessageErrorResponseReason = reason;
+    }
+
+    public void verifyDelegateCreated() {
+        assertNotNull("SipDelegate is null when it should have been created", connection);
+    }
+
+    public void verifyConfigEquals(SipDelegateImsConfiguration config) {
+        assertNotNull("SIP configuration should not be null", sipConfig);
+        assertEquals("IMS config version is not correct", config.getVersion(),
+                sipConfig.getVersion());
+        PersistableBundle b = config.copyBundle();
+        for (String key : b.keySet()) {
+            assertTrue("tracked sip config does not contain the key [" + key + "}",
+                    sipConfig.containsKey(key));
+            // Not a true equality check, but close enough for the purposes of this test.
+            assertEquals(config.getString(key), sipConfig.getString(key));
+            assertEquals(config.getInt(key, -1), sipConfig.getInt(key, -1));
+            assertEquals(config.getBoolean(key, false),
+                    sipConfig.getBoolean(key, false));
+        }
+    }
+
+    public void verifyRegistrationStateRegistered() {
+        verifyRegistrationStateRegistered(delegateRequest.getFeatureTags());
+    }
+
+    public void verifyRegistrationStateRegistered(Set<String> tags) {
+        assertNotNull(regState);
+        assertFalse("No registered features found",
+                regState.getRegisteredFeatureTags().isEmpty());
+        ArraySet<String> notRegistered = new ArraySet<>(tags);
+        notRegistered.removeAll(regState.getRegisteredFeatureTags());
+        assertTrue("Not all requested features were registered: " + notRegistered,
+                notRegistered.isEmpty());
+        assertTrue(regState.getDeregisteringFeatureTags().isEmpty());
+        assertTrue(regState.getDeregisteredFeatureTags().isEmpty());
+    }
+
+    public void verifyRegistrationStateEmpty() {
+        assertNotNull(regState);
+        assertTrue(regState.getRegisteredFeatureTags().isEmpty());
+        assertTrue(regState.getDeregisteringFeatureTags().isEmpty());
+        assertTrue(regState.getDeregisteredFeatureTags().isEmpty());
+    }
+
+    public void verifyRegistrationStateEquals(DelegateRegistrationState s) {
+        assertEquals("unexpected registered tags", s.getRegisteredFeatureTags(),
+                regState.getRegisteredFeatureTags());
+        assertEquals("unexpected deregistering tags", s.getDeregisteringFeatureTags(),
+                regState.getDeregisteringFeatureTags());
+        assertEquals("unexpected deregistered tags", s.getDeregisteredFeatureTags(),
+                regState.getDeregisteredFeatureTags());
+    }
+
+
+    public void verifyNoneDenied() {
+        assertNotNull(deniedTags);
+        assertTrue(deniedTags.isEmpty());
+    }
+
+    public void verifyDenied(Set<FeatureTagState> denied) {
+        assertNotNull(deniedTags);
+        assertEquals(denied, deniedTags);
+    }
+
+    public void verifyAllDenied(int reason) {
+        assertNotNull(deniedTags);
+        // Ensure that if the request is empty, the denied tags are also empty.
+        if (delegateRequest.getFeatureTags().isEmpty()) {
+            assertTrue(deniedTags.isEmpty());
+        }
+        // All should be denied with the same reason.
+        FeatureTagState incorrectReason = deniedTags.stream().filter((t) -> t.getState() != reason)
+                .findAny().orElse(null);
+        Set<String> deniedFeatures = deniedTags.stream().map(FeatureTagState::getFeatureTag)
+                .collect(Collectors.toSet());
+        assertNull(incorrectReason);
+
+        Set<String> requestedTags = new ArraySet<>(delegateRequest.getFeatureTags());
+        requestedTags.removeAll(deniedFeatures);
+        assertTrue("Not all tags denied: " + requestedTags, requestedTags.isEmpty());
+    }
+
+    public void verifyDestroyed(int reason) {
+        assertEquals(reason, destroyReason);
+    }
+
+    /**
+     * Set the number of operations that are expected to happen. Use {@link #waitForCountDown(long)}
+     * to wait for the operations to occur.
+     */
+    public void setOperationCountDownLatch(int operationCount) {
+        mLatch = new CountDownLatch(operationCount);
+    }
+
+    /**
+     * Wait for the latch set in {@link #setOperationCountDownLatch(int)} to complete.
+     * @param timeoutMs The time to wait before giving up.
+     * @return {@code true} if the latch successfully counted down, {@code false} if time elaptsed
+     * before it counted down.
+     */
+    public boolean waitForCountDown(long timeoutMs) {
+        while (mLatch.getCount() > 0) {
+            try {
+                return mLatch.await(timeoutMs, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException ignore) { }
+        }
+        return true;
+    }
+
+    /**
+     * Wait up to five seconds (retrying a command 1 time per second) until ImsExceptions due to the
+     * ImsService not being available go away.
+     */
+    private void callUntilImsServiceIsAvailableNoReturn(ExceptionRunnable command)
+            throws Exception {
+        int retry = 0;
+        while (retry < 5) {
+            try {
+                command.run();
+                return;
+            } catch (ImsException e) {
+                // we want to absorb only the unavailable error, as telephony may still be
+                // internally setting up. Any other type of ImsException is unexpected.
+                if (e.getCode() != ImsException.CODE_ERROR_SERVICE_UNAVAILABLE) {
+                    throw e;
+                }
+            }
+            Thread.sleep(1000);
+            retry++;
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipTransport.java b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipTransport.java
index b7db4c8..ed5a07b 100644
--- a/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipTransport.java
+++ b/tests/tests/telephony/current/src/android/telephony/ims/cts/TestSipTransport.java
@@ -16,13 +16,103 @@
 
 package android.telephony.ims.cts;
 
+import static org.junit.Assert.fail;
+
+import android.telephony.ims.DelegateMessageCallback;
+import android.telephony.ims.DelegateRequest;
+import android.telephony.ims.DelegateStateCallback;
+import android.telephony.ims.stub.SipDelegate;
 import android.telephony.ims.stub.SipTransportImplBase;
 
+import androidx.annotation.NonNull;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
 
 public class TestSipTransport extends SipTransportImplBase {
 
+    public static final String ONE_TO_ONE_CHAT_TAG =
+            "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gppservice.ims.icsi.oma.cpm.msg\"";
+    public static final String GROUP_CHAT_TAG =
+            "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gppservice.ims.icsi.oma.cpm.session\"";
+    public static final String FILE_TRANSFER_HTTP_TAG =
+            "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gppapplication.ims.iari.rcs.fthttp\"";
+
+    public static final int LATCH_CREATE_DELEGATE = 0;
+    public static final int LATCH_DESTROY_DELEGATE = 1;
+    private static final int LATCH_MAX = 2;
+    protected static final CountDownLatch[] sLatches = new CountDownLatch[LATCH_MAX];
+    static {
+        for (int i = 0; i < LATCH_MAX; i++) {
+            sLatches[i] = new CountDownLatch(1);
+        }
+    }
+
+    private final ArrayList<TestSipDelegate> mDelegates = new ArrayList<>();
+    private final Object mLock = new Object();
+
     public TestSipTransport(Executor executor) {
         super(executor);
     }
+
+    @Override
+    public void createSipDelegate(int subscriptionId, @NonNull DelegateRequest request,
+            @NonNull DelegateStateCallback dc, @NonNull DelegateMessageCallback mc) {
+        TestSipDelegate d = new TestSipDelegate(subscriptionId, request, dc, mc);
+        synchronized (mLock) {
+            mDelegates.add(d);
+        }
+        countDownLatch(LATCH_CREATE_DELEGATE);
+    }
+
+    @Override
+    public void destroySipDelegate(@NonNull SipDelegate delegate, int reason) {
+        if (delegate instanceof TestSipDelegate) {
+            synchronized (mLock) {
+                mDelegates.remove(delegate);
+            }
+            countDownLatch(LATCH_DESTROY_DELEGATE);
+        } else {
+            fail("unknown delegate passed in!");
+        }
+    }
+
+    public List<TestSipDelegate> getDelegates() {
+        synchronized (mLock) {
+            return mDelegates;
+        }
+    }
+
+    public TestSipDelegate getDelegate(DelegateRequest request) {
+        synchronized (mLock) {
+            return mDelegates.stream().filter((d) -> d.delegateRequest.equals(request))
+                    .findFirst().orElse(null);
+        }
+    }
+
+    public boolean waitForLatchCountdownAndReset(int latchIndex) {
+        boolean complete = false;
+        try {
+            CountDownLatch latch;
+            synchronized (mLock) {
+                latch = sLatches[latchIndex];
+            }
+            complete = latch.await(ImsUtils.TEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            // complete == false
+        }
+        synchronized (mLock) {
+            sLatches[latchIndex] = new CountDownLatch(1);
+        }
+        return complete;
+    }
+
+    private void countDownLatch(int latchIndex) {
+        synchronized (mLock) {
+            sLatches[latchIndex].countDown();
+        }
+    }
 }
diff --git a/tests/tests/widget/AndroidManifest.xml b/tests/tests/widget/AndroidManifest.xml
index c30c71c..85d4fc8 100644
--- a/tests/tests/widget/AndroidManifest.xml
+++ b/tests/tests/widget/AndroidManifest.xml
@@ -291,7 +291,7 @@
         </activity>
 
         <activity android:name="android.widget.cts.PopupWindowCtsActivity"
-            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:configChanges="keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
             android:label="PopupWindowCtsActivity"
             android:theme="@style/Theme.PopupWindowCtsActivity">
             <intent-filter>
diff --git a/tests/tests/widget/src/android/widget/cts/SpinnerTest.java b/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
index 3c4192c..c07d6f3 100644
--- a/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
+++ b/tests/tests/widget/src/android/widget/cts/SpinnerTest.java
@@ -67,6 +67,7 @@
     private Activity mActivity;
     private Spinner mSpinnerDialogMode;
     private Spinner mSpinnerDropdownMode;
+    private static final int SPINNER_HAS_FOCUS_DELAY_MS = 500;
 
     @Rule
     public ActivityTestRule<SpinnerCtsActivity> mActivityRule =
@@ -402,7 +403,7 @@
         TestUtils.assertAllPixelsOfColor("Drop down should be blue", dropDownBackground,
                 dropDownBackground.getBounds().width(), dropDownBackground.getBounds().height(),
                 false, Color.BLUE, 1, true);
-
+        waitForHasFocusMS(SPINNER_HAS_FOCUS_DELAY_MS);
         // Dismiss the popup with the emulated back key
         mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
         // Verify that we're not showing the popup
@@ -461,4 +462,13 @@
         // And test that getPopupBackground returns null
         assertNull(mSpinnerDialogMode.getPopupBackground());
     }
+
+    private void waitForHasFocusMS(int milliseconds) {
+        try {
+            Thread.sleep(milliseconds);
+        } catch (InterruptedException e) {
+            fail("unexpected InterruptedException : "+ e);
+        }
+
+    }
 }
diff --git a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
index e8c5c27..115d02e 100644
--- a/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/tests/wifi/src/android/net/wifi/cts/WifiManagerTest.java
@@ -2100,13 +2100,17 @@
         boolean isStaApConcurrencySupported = mWifiManager.isStaApConcurrencySupported();
         // start local only hotspot.
         TestLocalOnlyHotspotCallback callback = startLocalOnlyHotspot();
-        if (isStaApConcurrencySupported) {
-            assertTrue(mWifiManager.isWifiEnabled());
-        } else {
-            // no concurrency, wifi should be disabled.
-            assertFalse(mWifiManager.isWifiEnabled());
+        try {
+            if (isStaApConcurrencySupported) {
+                assertTrue(mWifiManager.isWifiEnabled());
+            } else {
+                // no concurrency, wifi should be disabled.
+                assertFalse(mWifiManager.isWifiEnabled());
+            }
+        } finally {
+            // clean up local only hotspot no matter if assertion passed or failed
+            stopLocalOnlyHotspot(callback, true);
         }
-        stopLocalOnlyHotspot(callback, true);
 
         assertTrue(mWifiManager.isWifiEnabled());
     }
diff --git a/tools/cts-tradefed/OWNERS b/tools/cts-tradefed/OWNERS
new file mode 100644
index 0000000..5f93ef3
--- /dev/null
+++ b/tools/cts-tradefed/OWNERS
@@ -0,0 +1,17 @@
+#  Android EngProd Approvers
+guangzhu@google.com
+fdeng@google.com
+moonk@google.com
+jdesprez@google.com
+
+# Android Partner Eng Approvers
+aaronholden@google.com
+yuji@google.com
+nickrose@google.com
+
+# File Specific Approvers
+per-file Backup* = aabhinav@google.com, jstemmer@google.com, nathch@google.com, niagra@google.com, niamhfw@google.com, philippov@google.com, rthakohov@google.com, tobiast@google.com
+per-file cts-meerkat.xml = alanstokes@google.com, brufino@google.com, lus@google.com, rickywai@google.com
+per-file cts-on-csi*.xml = ycchen@google.com, hsinyichen@google.com, tyanh@google.com
+per-file csi-*.xml = ycchen@google.com, hsinyichen@google.com, tyanh@google.com
+
diff --git a/tools/cts-tradefed/etc/cts-tradefed b/tools/cts-tradefed/etc/cts-tradefed
index ed62d05..117f4cd 100755
--- a/tools/cts-tradefed/etc/cts-tradefed
+++ b/tools/cts-tradefed/etc/cts-tradefed
@@ -93,36 +93,12 @@
 fi;
 
 JAR_DIR=${CTS_ROOT}/android-cts/tools
-JARS="tradefed
-  tradefed-test-framework
-  loganalysis
-  compatibility-host-util
-  compatibility-host-util-tests
-  cts-tradefed
-  cts-tradefed-tests
-  compatibility-common-util-tests
-  compatibility-tradefed-tests"
 
-for JAR in $JARS; do
-    checkFile ${JAR_DIR}/${JAR}.jar
-    JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}.jar
+for JAR in ${JAR_DIR}/*.jar; do
+    JAR_PATH=${JAR_PATH}:${JAR}
 done
 JAR_PATH=${JAR_PATH:1} # Strip off leading ':'
 
-OPTIONAL_JARS="
-  google-tradefed
-  google-tradefed-tests
-  google-tf-prod-tests"
-
-STANDALONE_JAR_DIR=${ANDROID_HOST_OUT}/framework
-for JAR in $OPTIONAL_JARS; do
-    if [ -f "${JAR_DIR}/${JAR}.jar" ]; then
-        JAR_PATH=${JAR_PATH}:${JAR_DIR}/${JAR}.jar
-    elif [ -f "${STANDALONE_JAR_DIR}/${JAR}.jar" ]; then
-        JAR_PATH=${JAR_PATH}:${STANDALONE_JAR_DIR}/${JAR}.jar
-    fi;
-done
-
 # load any shared libraries for host-side executables
 LIB_DIR=${CTS_ROOT}/android-cts/lib
 if [ "$HOST" == "Linux" ]; then
diff --git a/tools/cts-tradefed/res/config/cts-automated.xml b/tools/cts-tradefed/res/config/cts-automated.xml
index 150f8b9..80bcea7 100644
--- a/tools/cts-tradefed/res/config/cts-automated.xml
+++ b/tools/cts-tradefed/res/config/cts-automated.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Runs CTS with common options set for an automated run on userdebug/eng builds">
 
+    <!-- template hook to allow users to attach additional target preparers -->
+    <template-include name="preparers" default="empty" />
+
     <include name="cts" />
 
     <option name="plan" value="cts" />
diff --git a/tools/cts-tradefed/res/config/cts-on-csi-cf.xml b/tools/cts-tradefed/res/config/cts-on-csi-cf.xml
index 787ab93..3d5ecaa 100644
--- a/tools/cts-tradefed/res/config/cts-on-csi-cf.xml
+++ b/tools/cts-tradefed/res/config/cts-on-csi-cf.xml
@@ -20,6 +20,45 @@
 
     <!-- Troublesome tests that often crash the system -->
     <option name="compatibility:exclude-filter" value="CtsPackageInstallTestCases android.packageinstaller.install.cts.IntentTest#packageNotInstalledSecureFrp" />
-    <option name="compatibility:exclude-filter" value="CtsPermission3TestCases android.permission3.cts.PermissionReviewTest#testReviewPermissionWhenServiceIsBound" />
+    <option name="compatibility:exclude-filter" value="CtsPermission3TestCases android.permission3.cts.PermissionReviewTest" />
+
+    <!-- CTS modules that fail to run to complete on Android S CSI/CF -->
+    <option name="compatibility:exclude-filter" value="CtsAppEnumerationTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsAppSecurityHostTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsAppTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsAutoFillServiceTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsCameraTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsContentTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsDeqpTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsDevicePolicyManagerTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsFragmentTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsGraphicsTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsHardwareTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsIcu4cTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsIdentityTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsInputMethodTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsJobSchedulerTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsKeystoreTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsMediaBitstreamsTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsMediaStressTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsMediaTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsMediaV2TestCases" />
+    <option name="compatibility:exclude-filter" value="CtsNativeHardwareTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsOpenGLTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsOsTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsPermissionTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsPreferenceTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsResourcesLoaderTests" />
+    <option name="compatibility:exclude-filter" value="CtsRoleTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsSecurityTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsSkQPTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsStatsdAtomHostTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsSyncManagerTestsCases" />
+    <option name="compatibility:exclude-filter" value="CtsTelephonyTestCasesPermissionReadPhoneState" />
+    <option name="compatibility:exclude-filter" value="CtsUsageStatsTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsVideoTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsViewTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsWidgetTestCases" />
+    <option name="compatibility:exclude-filter" value="CtsWindowManagerDeviceTestCases" />
 
 </configuration>
diff --git a/tools/cts-tradefed/res/config/cts-on-gsi-exclude.xml b/tools/cts-tradefed/res/config/cts-on-gsi-exclude.xml
index e369dfa..0aad033 100644
--- a/tools/cts-tradefed/res/config/cts-on-gsi-exclude.xml
+++ b/tools/cts-tradefed/res/config/cts-on-gsi-exclude.xml
@@ -255,4 +255,7 @@
 
     <!-- b/153032202: CtsSystemUiTestCases (10_r3 waiver) -->
     <option name="compatibility:exclude-filter" value="CtsSystemUiTestCases android.systemui.cts.WindowInsetsBehaviorTests#swipeOutsideLimit_systemUiVisible_allEventsCanceled"/>
+
+    <!-- b/173662175: CtsStatsdHostTestCases due to insufficient processes running -->
+    <option name="compatibility:exclude-filter" value="CtsStatsdHostTestCases android.cts.statsd.validation.ProcStatsValidationTests#testProcessStatePssValue"/>
 </configuration>
diff --git a/tools/cts-tradefed/res/config/cts-unit-tests.xml b/tools/cts-tradefed/res/config/cts-unit-tests.xml
new file mode 100644
index 0000000..9f30011
--- /dev/null
+++ b/tools/cts-tradefed/res/config/cts-unit-tests.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Executes the CTS unit tests">
+    <option name="null-device" value="true" />
+    <build_provider class="com.android.tradefed.build.StubBuildProvider" />
+    <test class="com.android.tradefed.testtype.HostTest" >
+        <option name="class" value="com.android.compatibility.tradefed.CtsUnitTests" />
+        <option name="class" value="com.drawelements.deqp.runner.DeqpTestRunnerTest" />
+    </test>
+    <logger class="com.android.tradefed.log.FileLogger" />
+
+    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter">
+        <option name="suppress-passed-tests" value="true" />
+    </result_reporter>
+    <template-include name="reporters" default="empty" />
+</configuration>
diff --git a/tools/cts-tradefed/tests/.classpath b/tools/cts-tradefed/tests/.classpath
new file mode 100644
index 0000000..2226a16
--- /dev/null
+++ b/tools/cts-tradefed/tests/.classpath
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/tradefederation"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/cts-tradefed"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-9">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="TRADEFED_ROOT/out/soong/.intermediates/external/guava/guava-jre/linux_glibc_common/combined/guava-jre.jar">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools/cts-tradefed/tests/.project b/tools/cts-tradefed/tests/.project
new file mode 100644
index 0000000..2f00b36
--- /dev/null
+++ b/tools/cts-tradefed/tests/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>cts-tradefed-tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ApkPackageNameCheck.java b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ApkPackageNameCheck.java
new file mode 100644
index 0000000..b50c906
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ApkPackageNameCheck.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.common.tradefed.presubmit;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.android.compatibility.common.tradefed.targetprep.FilePusher;
+import com.android.tradefed.config.ConfigurationException;
+import com.android.tradefed.config.ConfigurationFactory;
+import com.android.tradefed.config.IConfiguration;
+import com.android.tradefed.targetprep.ITargetPreparer;
+import com.android.tradefed.targetprep.PushFilePreparer;
+import com.android.tradefed.targetprep.TestAppInstallSetup;
+import com.android.tradefed.testtype.IRemoteTest;
+import com.android.tradefed.testtype.InstrumentationTest;
+import com.android.tradefed.util.AaptParser;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Class to validate tests Apks in testcases/
+ */
+@RunWith(JUnit4.class)
+public class ApkPackageNameCheck {
+
+    private static final Set<String> EXCEPTION_LIST = new HashSet<>();
+    static {
+        // TODO: Remove exception when their package have been fixed.
+        EXCEPTION_LIST.add("android.app.cts");
+        EXCEPTION_LIST.add("android.systemui.cts");
+    }
+
+    /**
+     * We ensure that no apk with same package names may be installed. Otherwise it may results in
+     * conflicts.
+     */
+    @Test
+    public void testApkPackageNames() throws Exception {
+        String ctsRoot = System.getProperty("CTS_ROOT");
+        File testcases = new File(ctsRoot, "/android-cts/testcases/");
+        if (!testcases.exists()) {
+            fail(String.format("%s does not exists", testcases));
+            return;
+        }
+        File[] listConfig = testcases.listFiles(new FilenameFilter() {
+            @Override
+            public boolean accept(File dir, String name) {
+                if (name.endsWith(".config")) {
+                    return true;
+                }
+                return false;
+            }
+        });
+        assertTrue(listConfig.length > 0);
+        // We check all apk installed by all modules
+        Map<String, String> packageNames = new HashMap<>();
+
+        for (File config : listConfig) {
+            IConfiguration c = ConfigurationFactory.getInstance()
+                    .createConfigurationFromArgs(new String[] {config.getAbsolutePath()});
+            // For each config, we check all the apk it's going to install
+            List<File> apkNames = new ArrayList<>();
+            List<String> packageListNames = new ArrayList<>();
+            for (ITargetPreparer prep : c.getTargetPreparers()) {
+                if (prep instanceof TestAppInstallSetup) {
+                    apkNames.addAll(((TestAppInstallSetup) prep).getTestsFileName());
+                }
+                // Ensure the files requested to be pushed exist.
+                if (prep instanceof FilePusher && ((FilePusher) prep).shouldAppendBitness()) {
+                    for (File f : ((PushFilePreparer) prep).getPushSpecs(null).values()) {
+                        String path = f.getPath();
+                        if (!new File(testcases, path + "32").exists()
+                                || !new File(testcases, path + "64").exists()) {
+                            // TODO: Enforce should abort on failure is True in CTS
+                            if (((FilePusher) prep).shouldAbortOnFailure()) {
+                                fail(
+                                        String.format(
+                                                "File %s[32/64] wasn't found in testcases/ while "
+                                                        + "it's expected to be pushed as part of "
+                                                        + "%s",
+                                                path, config.getName()));
+                            }
+                        }
+                    }
+                } else if (prep instanceof PushFilePreparer) {
+                    for (File f : ((PushFilePreparer) prep).getPushSpecs(null).values()) {
+                        String path = f.getPath();
+                        if (!new File(testcases, path).exists()) {
+                            // TODO: Enforce should abort on failure is True in CTS
+                            if (((PushFilePreparer) prep).shouldAbortOnFailure()) {
+                                fail(
+                                        String.format(
+                                                "File %s wasn't found in testcases/ while it's "
+                                                        + "expected to be pushed as part of %s",
+                                                path, config.getName()));
+                            }
+                        }
+                    }
+                }
+            }
+
+            for (File apk : apkNames) {
+                String apkName = apk.getName();
+                File apkFile = new File(testcases, apkName);
+                if (!apkFile.exists()) {
+                    fail(String.format("Module %s is trying to install %s which does not "
+                            + "exists in testcases/", config.getName(), apkFile));
+                }
+                AaptParser res = AaptParser.parse(apkFile);
+                assertNotNull(res);
+                String packageName = res.getPackageName();
+                String put = packageNames.put(packageName, apkName);
+                packageListNames.add(packageName);
+                // The package already exists and it's a different apk
+                if (put != null && !apkName.equals(put) && !EXCEPTION_LIST.contains(packageName)) {
+                    fail(String.format("Module %s: Package name '%s' from apk '%s' was already "
+                            + "added by previous apk '%s'.",
+                            config.getName(), packageName, apkName, put));
+                }
+            }
+
+            // Catch a test trying to run something it doesn't install.
+            List<IRemoteTest> tests = c.getTests();
+            for (IRemoteTest test : tests) {
+                if (test instanceof InstrumentationTest) {
+                    InstrumentationTest instrumentationTest = (InstrumentationTest) test;
+                    if (instrumentationTest.getPackageName() != null) {
+                        if (!packageListNames.contains(instrumentationTest.getPackageName())) {
+                            throw new ConfigurationException(
+                                    String.format("Module %s requests to run '%s' but it's not "
+                                        + "part of any apks.",
+                                        config.getName(), instrumentationTest.getPackageName()));
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/CtsConfigLoadingTest.java b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/CtsConfigLoadingTest.java
new file mode 100644
index 0000000..625da2f
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/CtsConfigLoadingTest.java
@@ -0,0 +1,404 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.common.tradefed.presubmit;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.compatibility.common.tradefed.targetprep.ApkInstaller;
+import com.android.compatibility.common.tradefed.targetprep.PreconditionPreparer;
+import com.android.compatibility.common.tradefed.testtype.JarHostTest;
+import com.android.tradefed.build.FolderBuildInfo;
+import com.android.tradefed.config.ConfigurationDescriptor;
+import com.android.tradefed.config.ConfigurationException;
+import com.android.tradefed.config.ConfigurationFactory;
+import com.android.tradefed.config.IConfiguration;
+import com.android.tradefed.invoker.ExecutionFiles.FilesKey;
+import com.android.tradefed.invoker.TestInformation;
+import com.android.tradefed.invoker.shard.token.TokenProperty;
+import com.android.tradefed.targetprep.ITargetPreparer;
+import com.android.tradefed.testtype.AndroidJUnitTest;
+import com.android.tradefed.testtype.HostTest;
+import com.android.tradefed.testtype.IRemoteTest;
+import com.android.tradefed.testtype.ITestFilterReceiver;
+import com.android.tradefed.testtype.suite.ITestSuite;
+import com.android.tradefed.testtype.suite.params.ModuleParameters;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Test that configuration in CTS can load and have expected properties.
+ */
+@RunWith(JUnit4.class)
+public class CtsConfigLoadingTest {
+
+    private static final String METADATA_COMPONENT = "component";
+    private static final Set<String> KNOWN_COMPONENTS =
+            new HashSet<>(
+                    Arrays.asList(
+                            // modifications to the list below must be reviewed
+                            "abuse",
+                            "art",
+                            "auth",
+                            "auto",
+                            "autofill",
+                            "backup",
+                            "bionic",
+                            "bluetooth",
+                            "camera",
+                            "contentcapture",
+                            "deviceinfo",
+                            "deqp",
+                            "devtools",
+                            "framework",
+                            "graphics",
+                            "hdmi",
+                            "inputmethod",
+                            "libcore",
+                            "location",
+                            "media",
+                            "metrics",
+                            "misc",
+                            "mocking",
+                            "networking",
+                            "neuralnetworks",
+                            "print",
+                            "renderscript",
+                            "security",
+                            "statsd",
+                            "systems",
+                            "sysui",
+                            "telecom",
+                            "tv",
+                            "uitoolkit",
+                            "vr",
+                            "webview",
+                            "wifi"));
+    private static final Set<String> KNOWN_MISC_MODULES =
+            new HashSet<>(
+                    Arrays.asList(
+                            // Modifications to the list below must be approved by someone in
+                            // test/suite_harness/OWNERS.
+                            "CtsSliceTestCases.config",
+                            "CtsSampleDeviceTestCases.config",
+                            "CtsUsbTests.config",
+                            "CtsGpuToolsHostTestCases.config",
+                            "CtsEdiHostTestCases.config",
+                            "CtsClassLoaderFactoryPathClassLoaderTestCases.config",
+                            "CtsSampleHostTestCases.config",
+                            "CtsHardwareTestCases.config",
+                            "CtsMonkeyTestCases.config",
+                            "CtsAndroidAppTestCases.config",
+                            "CtsClassLoaderFactoryInMemoryDexClassLoaderTestCases.config",
+                            "CtsAppComponentFactoryTestCases.config",
+                            "CtsSeccompHostTestCases.config"));
+
+    /**
+     * List of the officially supported runners in CTS, they meet all the interfaces criteria as
+     * well as support sharding very well. Any new addition should go through a review.
+     */
+    private static final Set<String> SUPPORTED_CTS_TEST_TYPE = new HashSet<>(Arrays.asList(
+            // Cts runners
+            "com.android.compatibility.common.tradefed.testtype.JarHostTest",
+            "com.android.compatibility.testtype.DalvikTest",
+            "com.android.compatibility.testtype.LibcoreTest",
+            "com.drawelements.deqp.runner.DeqpTestRunner",
+            // Tradefed runners
+            "com.android.tradefed.testtype.AndroidJUnitTest",
+            "com.android.tradefed.testtype.HostTest",
+            "com.android.tradefed.testtype.GTest"
+    ));
+
+    /**
+     * In Most cases we impose the usage of the AndroidJUnitRunner because it supports all the
+     * features required (filtering, sharding, etc.). We do not typically expect people to need a
+     * different runner.
+     */
+    private static final Set<String> ALLOWED_INSTRUMENTATION_RUNNER_NAME = new HashSet<>();
+    static {
+        ALLOWED_INSTRUMENTATION_RUNNER_NAME.add("android.support.test.runner.AndroidJUnitRunner");
+        ALLOWED_INSTRUMENTATION_RUNNER_NAME.add("androidx.test.runner.AndroidJUnitRunner");
+    }
+    private static final Set<String> RUNNER_EXCEPTION = new HashSet<>();
+    static {
+        // Used for a bunch of system-api cts tests
+        RUNNER_EXCEPTION.add("repackaged.android.test.InstrumentationTestRunner");
+        // Used by a UiRendering scenario where an activity is persisted between tests
+        RUNNER_EXCEPTION.add("android.uirendering.cts.runner.UiRenderingRunner");
+    }
+
+    /**
+     * Families of module parameterization that MUST be specified explicitly in the module
+     * AndroidTest.xml.
+     */
+    private static final Set<String> MANDATORY_PARAMETERS_FAMILY = new HashSet<>();
+
+    static {
+        MANDATORY_PARAMETERS_FAMILY.add(ModuleParameters.INSTANT_APP_FAMILY);
+        MANDATORY_PARAMETERS_FAMILY.add(ModuleParameters.MULTI_ABI_FAMILY);
+        MANDATORY_PARAMETERS_FAMILY.add(ModuleParameters.SECONDARY_USER_FAMILY);
+    }
+
+    /**
+     * AllowList to start enforcing metadata on modules. No additional entry will be allowed! This
+     * is meant to burn down the remaining modules definition.
+     */
+    private static final Set<String> ALLOWLIST_MODULE_PARAMETERS = new HashSet<>();
+
+    static {
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsAccessibilityServiceTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsCarrierApiTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsMediaTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsMediaV2TestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsOpenGlPerfTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsOsTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsPermission2TestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsPermissionTestCases.config");
+        ALLOWLIST_MODULE_PARAMETERS.add("CtsProviderUiTestCases.config");
+    }
+
+    /**
+     * Test that configuration shipped in Tradefed can be parsed.
+     * -> Exclude deprecated ApkInstaller.
+     * -> Check if host-side tests are non empty.
+     */
+    @Test
+    public void testConfigurationLoad() throws Exception {
+        String ctsRoot = System.getProperty("CTS_ROOT");
+        File testcases = new File(ctsRoot, "/android-cts/testcases/");
+        if (!testcases.exists()) {
+            fail(String.format("%s does not exists", testcases));
+            return;
+        }
+        File[] listConfig = testcases.listFiles(new FilenameFilter() {
+            @Override
+            public boolean accept(File dir, String name) {
+                if (name.endsWith(".config")) {
+                    return true;
+                }
+                return false;
+            }
+        });
+        assertTrue(listConfig.length > 0);
+        // Create a FolderBuildInfo to similate the CompatibilityBuildProvider
+        FolderBuildInfo stubFolder = new FolderBuildInfo("-1", "-1");
+        stubFolder.setRootDir(new File(ctsRoot));
+        stubFolder.addBuildAttribute(CompatibilityBuildHelper.SUITE_NAME, "CTS");
+        stubFolder.addBuildAttribute("ROOT_DIR", ctsRoot);
+        TestInformation stubTestInfo = TestInformation.newBuilder().build();
+        stubTestInfo.executionFiles().put(FilesKey.TESTS_DIRECTORY, new File(ctsRoot));
+
+        List<String> missingMandatoryParameters = new ArrayList<>();
+        // We expect to be able to load every single config in testcases/
+        for (File config : listConfig) {
+            IConfiguration c = ConfigurationFactory.getInstance()
+                    .createConfigurationFromArgs(new String[] {config.getAbsolutePath()});
+            // Ensure the deprecated ApkInstaller is not used anymore.
+            for (ITargetPreparer prep : c.getTargetPreparers()) {
+                if (prep.getClass().isAssignableFrom(ApkInstaller.class)) {
+                    throw new ConfigurationException(
+                            String.format("%s: Use com.android.tradefed.targetprep.suite."
+                                    + "SuiteApkInstaller instead of com.android.compatibility."
+                                    + "common.tradefed.targetprep.ApkInstaller, options will be "
+                                    + "the same.", config));
+                }
+                if (prep.getClass().isAssignableFrom(PreconditionPreparer.class)) {
+                    throw new ConfigurationException(
+                            String.format(
+                                    "%s: includes a PreconditionPreparer (%s) which is not allowed"
+                                            + " in modules.",
+                                    config.getName(), prep.getClass()));
+                }
+            }
+            // We can ensure that Host side tests are not empty.
+            for (IRemoteTest test : c.getTests()) {
+                // Check that all the tests runners are well supported.
+                if (!SUPPORTED_CTS_TEST_TYPE.contains(test.getClass().getCanonicalName())) {
+                    throw new ConfigurationException(
+                            String.format(
+                                    "testtype %s is not officially supported by CTS. "
+                                            + "The supported ones are: %s",
+                                    test.getClass().getCanonicalName(), SUPPORTED_CTS_TEST_TYPE));
+                }
+                if (test instanceof HostTest) {
+                    HostTest hostTest = (HostTest) test;
+                    // We inject a made up folder so that it can find the tests.
+                    hostTest.setBuild(stubFolder);
+                    hostTest.setTestInformation(stubTestInfo);
+                    int testCount = hostTest.countTestCases();
+                    if (testCount == 0) {
+                        throw new ConfigurationException(
+                                String.format("%s: %s reports 0 test cases.",
+                                        config.getName(), test));
+                    }
+                }
+                // Tests are expected to implement that interface.
+                if (!(test instanceof ITestFilterReceiver)) {
+                    throw new IllegalArgumentException(String.format(
+                            "Test in module %s must implement ITestFilterReceiver.",
+                            config.getName()));
+                }
+                // Ensure that the device runner is the AJUR one if explicitly specified.
+                if (test instanceof AndroidJUnitTest) {
+                    AndroidJUnitTest instru = (AndroidJUnitTest) test;
+                    if (instru.getRunnerName() != null &&
+                            !ALLOWED_INSTRUMENTATION_RUNNER_NAME.contains(instru.getRunnerName())) {
+                        // Some runner are exempt
+                        if (!RUNNER_EXCEPTION.contains(instru.getRunnerName())) {
+                            throw new ConfigurationException(
+                                    String.format("%s: uses '%s' instead of on of '%s' that are "
+                                            + "expected", config.getName(), instru.getRunnerName(),
+                                            ALLOWED_INSTRUMENTATION_RUNNER_NAME));
+                        }
+                    }
+                }
+            }
+            ConfigurationDescriptor cd = c.getConfigurationDescription();
+            Assert.assertNotNull(config + ": configuration descriptor is null", cd);
+            List<String> component = cd.getMetaData(METADATA_COMPONENT);
+            Assert.assertNotNull(String.format("Missing module metadata field \"component\", "
+                    + "please add the following line to your AndroidTest.xml:\n"
+                    + "<option name=\"config-descriptor:metadata\" key=\"component\" "
+                    + "value=\"...\" />\nwhere \"value\" must be one of: %s\n"
+                    + "config: %s", KNOWN_COMPONENTS, config),
+                    component);
+            Assert.assertEquals(String.format("Module config contains more than one \"component\" "
+                    + "metadata field: %s\nconfig: %s", component, config),
+                    1, component.size());
+            String cmp = component.get(0);
+            Assert.assertTrue(String.format("Module config contains unknown \"component\" metadata "
+                    + "field \"%s\", supported ones are: %s\nconfig: %s",
+                    cmp, KNOWN_COMPONENTS, config), KNOWN_COMPONENTS.contains(cmp));
+
+            if ("misc".equals(cmp)) {
+                String configFileName = config.getName();
+                Assert.assertTrue(
+                        String.format(
+                                "Adding new module %s to \"misc\" component is restricted, "
+                                        + "please pick a component that your module fits in",
+                                configFileName),
+                        KNOWN_MISC_MODULES.contains(configFileName));
+            }
+
+            // Check that specified parameters are expected
+            boolean res =
+                    checkModuleParameters(
+                            config.getName(), cd.getMetaData(ITestSuite.PARAMETER_KEY));
+            if (!res) {
+                missingMandatoryParameters.add(config.getName());
+            }
+            // Check that specified tokens are expected
+            checkTokens(config.getName(), cd.getMetaData(ITestSuite.TOKEN_KEY));
+
+            // Ensure each CTS module is tagged with <option name="test-suite-tag" value="cts" />
+            Assert.assertTrue(String.format(
+                    "Module config %s does not contains "
+                    + "'<option name=\"test-suite-tag\" value=\"cts\" />'", config.getName()),
+                    cd.getSuiteTags().contains("cts"));
+
+            // Check not-shardable: JarHostTest cannot create empty shards so it should never need
+            // to be not-shardable.
+            if (cd.isNotShardable()) {
+                for (IRemoteTest test : c.getTests()) {
+                    if (test.getClass().isAssignableFrom(JarHostTest.class)) {
+                        throw new ConfigurationException(
+                                String.format("config: %s. JarHostTest does not need the "
+                                    + "not-shardable option.", config.getName()));
+                    }
+                }
+            }
+            // Ensure options have been set
+            c.validateOptions();
+        }
+
+        // Exempt the allow list
+        missingMandatoryParameters.removeAll(ALLOWLIST_MODULE_PARAMETERS);
+        // Ensure the mandatory fields are filled
+        if (!missingMandatoryParameters.isEmpty()) {
+            String msg =
+                    String.format(
+                            "The following %s modules are missing some of the mandatory "
+                                    + "parameters [instant_app, not_instant_app, "
+                                    + "multi_abi, not_multi_abi, "
+                                    + "secondary_user, not_secondary_user]: '%s'",
+                            missingMandatoryParameters.size(), missingMandatoryParameters);
+            throw new ConfigurationException(msg);
+        }
+    }
+
+    /** Test that all parameter metadata can be resolved. */
+    private boolean checkModuleParameters(String configName, List<String> parameters)
+            throws ConfigurationException {
+        if (parameters == null) {
+            return false;
+        }
+        Map<String, Boolean> families = createFamilyCheckMap();
+        for (String param : parameters) {
+            try {
+                ModuleParameters p = ModuleParameters.valueOf(param.toUpperCase());
+                if (families.containsKey(p.getFamily())) {
+                    families.put(p.getFamily(), true);
+                }
+            } catch (IllegalArgumentException e) {
+                throw new ConfigurationException(
+                        String.format("Config: %s includes an unknown parameter '%s'.",
+                                configName, param));
+            }
+        }
+        if (families.containsValue(false)) {
+            return false;
+        }
+        return true;
+    }
+
+    /** Test that all tokens can be resolved. */
+    private void checkTokens(String configName, List<String> tokens) throws ConfigurationException {
+        if (tokens == null) {
+            return;
+        }
+        for (String token : tokens) {
+            try {
+                TokenProperty.valueOf(token.toUpperCase());
+            } catch (IllegalArgumentException e) {
+                throw new ConfigurationException(
+                        String.format(
+                                "Config: %s includes an unknown token '%s'.", configName, token));
+            }
+        }
+    }
+
+    private Map<String, Boolean> createFamilyCheckMap() {
+        Map<String, Boolean> families = new HashMap<>();
+        for (String family : MANDATORY_PARAMETERS_FAMILY) {
+            families.put(family, false);
+        }
+        return families;
+    }
+}
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/DupFileTest.java b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/DupFileTest.java
new file mode 100644
index 0000000..c4055ef
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/DupFileTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.common.tradefed.presubmit;
+
+import static org.junit.Assert.fail;
+
+import com.android.tradefed.config.ConfigurationException;
+
+import com.google.common.collect.ImmutableSet;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+/**
+ * Test to check for duplicate files in different jars and prevent the same dependencies of being
+ * included several time (which might result in version conflicts).
+ */
+@RunWith(JUnit4.class)
+public class DupFileTest {
+
+    // We ignore directories part of the common java and google packages.
+    private static final String[] IGNORE_DIRS =
+            new String[] {
+                "android/",
+                "javax/annotation/",
+                "com/google/protobuf/",
+                "kotlin/",
+                "perfetto/protos/"
+            };
+    // Temporarily exclude some Tradefed jar while we work on unbundling them.
+    private static final Set<String> IGNORE_JARS =
+            ImmutableSet.of("tradefed-no-fwk.jar", "tradefed-test-framework.jar",
+                    "compatibility-tradefed.jar");
+
+    /** test if there are duplicate files in different jars. */
+    @Test
+    public void testDupFilesExist() throws Exception {
+        // Get list of jars.
+        List<File> jars = getListOfBuiltJars();
+
+        // Create map of files to jars.
+        Map<String, List<String>> filesToJars = getMapOfFilesAndJars(jars);
+
+        // Check if there are any files with the same name in diff jars.
+        int dupedFiles = 0;
+        StringBuilder dupedFilesSummary = new StringBuilder();
+        for (Map.Entry<String, List<String>> entry : filesToJars.entrySet()) {
+            String file = entry.getKey();
+            List<String> jarFiles = entry.getValue();
+
+            if (jarFiles.size() != 1) {
+                dupedFiles++;
+                dupedFilesSummary.append(file + ": " + jarFiles.toString() + "\n");
+            }
+        }
+
+        if (dupedFiles != 0) {
+            fail(
+                    String.format(
+                            "%d files are duplicated in different jars:\n%s",
+                            dupedFiles, dupedFilesSummary.toString()));
+        }
+    }
+
+    /** Create map of file to jars */
+    private Map<String, List<String>> getMapOfFilesAndJars(List<File> jars) throws IOException {
+        Map<String, List<String>> map = new LinkedHashMap<String, List<String>>();
+        JarFile jarFile;
+        List<String> jarFileList;
+        // Map all the files from all the jars.
+        for (File jar : jars) {
+            if (IGNORE_JARS.contains(jar.getName())) {
+                continue;
+            }
+            jarFile = new JarFile(jar);
+            jarFileList = getListOfFiles(jarFile);
+            jarFile.close();
+
+            // Add in the jar file to the map.
+            for (String file : jarFileList) {
+                if (!map.containsKey(file)) {
+                    map.put(file, new LinkedList<String>());
+                }
+
+                map.get(file).add(jar.getName());
+            }
+        }
+        return map;
+    }
+
+    /** Get the list of jars specified in the path. */
+    private List<File> getListOfBuiltJars() throws ConfigurationException {
+        String classpathStr = System.getProperty("java.class.path");
+        if (classpathStr == null) {
+            throw new ConfigurationException(
+                    "Could not find the classpath property: java.class.path");
+        }
+        List<File> listOfJars = new ArrayList<File>();
+        for (String jar : classpathStr.split(":")) {
+            File jarFile = new File(jar);
+            if (jarFile.exists()) {
+                listOfJars.add(jarFile);
+            }
+        }
+        return listOfJars;
+    }
+
+    /** Return the list of files in the jar. */
+    private List<String> getListOfFiles(JarFile jar) {
+        List<String> files = new ArrayList<String>();
+        Enumeration<JarEntry> e = jar.entries();
+        while (e.hasMoreElements()) {
+            JarEntry entry = e.nextElement();
+            String filename = entry.getName();
+            if (checkThisFile(filename)) {
+                files.add(filename);
+            }
+        }
+        return files;
+    }
+
+    /** Check if we should add this file to list of files. We only want to check for classes. */
+    private Boolean checkThisFile(String filename) {
+        if (!filename.endsWith(".class")) {
+            return false;
+        }
+
+        for (String skipDir : IGNORE_DIRS) {
+            if (filename.startsWith(skipDir)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+}
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/PresubmitSetupValidation.java b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/PresubmitSetupValidation.java
new file mode 100644
index 0000000..4eb48fc
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/PresubmitSetupValidation.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.common.tradefed.presubmit;
+
+import com.android.tradefed.config.ConfigurationException;
+import com.android.tradefed.config.ConfigurationFactory;
+import com.android.tradefed.config.IConfigurationFactory;
+import com.android.tradefed.log.LogUtil.CLog;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests that validate the CTS presubmit setup to ensure no CL will break the presubmit setup
+ * itself.
+ */
+public class PresubmitSetupValidation extends TestCase {
+    private static final String PRESUBMIT_CTS_UNIT_TESTS = "cts-unit-tests";
+
+    /**
+     * Test that the base cts unit tests configuration is still working, and has a reporter
+     * template placeholder.
+     */
+    public void testCtsPresubmit_unit_tests() {
+        IConfigurationFactory factory = ConfigurationFactory.getInstance();
+        String[] presubmitCommand = {PRESUBMIT_CTS_UNIT_TESTS, "--template:map", "reporters=empty"};
+        try {
+            factory.createConfigurationFromArgs(presubmitCommand);
+        } catch (ConfigurationException e) {
+            CLog.e(e);
+            fail(String.format("ConfigException '%s': One of your change is breaking the presubmit "
+                    + "CTS unit tests configuration.", e.getMessage()));
+        }
+    }
+
+    /**
+     * Test to ensure that Zip dependency on the Apache Commons Compress coming from TradeFed is
+     * properly setup. This dependency is required for some utilities of TradeFed to work.
+     */
+    public void testDependencyCommonsCompress() throws Exception {
+        ClassLoader loader = ClassLoader.getSystemClassLoader();
+        // This will throw an exception if dependency isn't met.
+        loader.loadClass("org.apache.commons.compress.archivers.zip.ZipFile");
+    }
+}
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ValidateTestsAbi.java b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ValidateTestsAbi.java
new file mode 100644
index 0000000..9fd38ad
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/common/tradefed/presubmit/ValidateTestsAbi.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.common.tradefed.presubmit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.android.tradefed.testtype.suite.TestSuiteInfo;
+import com.android.tradefed.util.AaptParser;
+import com.android.tradefed.util.AbiUtils;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+/**
+ * Tests to validate that the build is containing usable test artifact.
+ */
+@RunWith(JUnit4.class)
+public class ValidateTestsAbi {
+
+    private static final Set<String> MODULE_EXCEPTIONS = new HashSet<>();
+    static {
+        /**
+         *  This particular module is shipping all its dependencies in all abis with prebuilt stuff.
+         *  Excluding it for now to have the test setup.
+         */
+        MODULE_EXCEPTIONS.add("CtsSplitApp");
+
+        /**
+         *  This module tests for security vulnerabilities when installing attacker-devised APKs.
+         */
+        MODULE_EXCEPTIONS.add("CtsCorruptApkTests");
+
+        /**
+         * This module tests for installations of packages that have only 32-bit native libraries
+         * and extract native libraries.
+         */
+        MODULE_EXCEPTIONS.add("CtsExtractNativeLibsAppTrue32");
+
+        /**
+         * This module tests for installations of packages that have only 64-bit native libraries
+         * and extract native libraries.
+         */
+        MODULE_EXCEPTIONS.add("CtsExtractNativeLibsAppTrue64");
+        /**
+         * This module tests for installations of packages that have only 32-bit native libraries
+         * and embed native libraries.
+         */
+        MODULE_EXCEPTIONS.add("CtsExtractNativeLibsAppFalse32");
+
+        /**
+         * This module tests for installations of packages that have only 64-bit native libraries
+         * and embed native libraries.
+         */
+        MODULE_EXCEPTIONS.add("CtsExtractNativeLibsAppFalse64");
+    }
+
+    private static final Set<String> BINARY_EXCEPTIONS = new HashSet<>();
+    static {
+        /**
+         * This binary is a host side helper, so we do not need to check it.
+         */
+        BINARY_EXCEPTIONS.add("sepolicy-analyze");
+    }
+
+    /**
+     * Test that all apks have the same supported abis.
+     * Sometimes, if a module is missing LOCAL_MULTILIB := both, we will end up with only one of
+     * the two abis required and the second one will fail.
+     */
+    @Test
+    public void testApksAbis() {
+        String ctsRoot = System.getProperty("CTS_ROOT");
+        File testcases = new File(ctsRoot, "/android-cts/testcases/");
+        if (!testcases.exists()) {
+            fail(String.format("%s does not exists", testcases));
+            return;
+        }
+        File[] listApks = testcases.listFiles(new FilenameFilter() {
+            @Override
+            public boolean accept(File dir, String name) {
+                for (String module : MODULE_EXCEPTIONS) {
+                    if (name.startsWith(module)) {
+                        return false;
+                    }
+                }
+
+                return name.endsWith(".apk");
+            }
+        });
+        assertTrue(listApks.length > 0);
+        int maxAbi = 0;
+        Map<String, Integer> apkToAbi = new HashMap<>();
+
+        for (File testApk : listApks) {
+            AaptParser result = AaptParser.parse(testApk);
+            // Retry as we have seen flake with aapt sometimes.
+            if (result == null) {
+                for (int i = 0; i < 2; i++) {
+                    result = AaptParser.parse(testApk);
+                    if (result != null) {
+                        break;
+                    }
+                }
+                // If still couldn't parse the apk
+                if (result == null) {
+                    fail(String.format("Fail to run 'aapt dump badging %s'",
+                            testApk.getAbsolutePath()));
+                }
+            }
+            // We only check the apk that have native code
+            if (!result.getNativeCode().isEmpty()) {
+                List<String> supportedAbiApk = result.getNativeCode();
+                Set<String> buildTarget = AbiUtils.getAbisForArch(
+                        TestSuiteInfo.getInstance().getTargetArchs().get(0));
+                // first check, all the abis are supported
+                for (String abi : supportedAbiApk) {
+                    if (!buildTarget.contains(abi)) {
+                        fail(String.format("apk %s %s does not support our abis [%s]",
+                                testApk.getName(), supportedAbiApk, buildTarget));
+                    }
+                }
+                apkToAbi.put(testApk.getName(), supportedAbiApk.size());
+                maxAbi = Math.max(maxAbi, supportedAbiApk.size());
+            }
+        }
+
+        // We do a second pass to make sure nobody is short on abi
+        for (Entry<String, Integer> apk : apkToAbi.entrySet()) {
+            if (apk.getValue() < maxAbi) {
+                fail(String.format("apk %s only has %s abi when it should have %s", apk.getKey(),
+                        apk.getValue(), maxAbi));
+            }
+        }
+    }
+
+    /**
+     * Test that when CTS has multiple abis, we have binary for each ABI. In this case the abi will
+     * be the same with different bitness (only case supported by build system).
+     * <p/>
+     * If there is only one bitness, then we check that it's the right one.
+     */
+    @Test
+    public void testBinariesAbis() {
+        String ctsRoot = System.getProperty("CTS_ROOT");
+        File testcases = new File(ctsRoot, "/android-cts/testcases/");
+        if (!testcases.exists()) {
+            fail(String.format("%s does not exist", testcases));
+            return;
+        }
+        String[] listBinaries = testcases.list(new FilenameFilter() {
+            @Override
+            public boolean accept(File dir, String name) {
+                if (name.contains(".")) {
+                    return false;
+                }
+                if (BINARY_EXCEPTIONS.contains(name)) {
+                    return false;
+                }
+                File file = new File(dir, name);
+                if (file.isDirectory()) {
+                    return false;
+                }
+                if (!file.canExecute()) {
+                    return false;
+                }
+                return true;
+            }
+        });
+        assertTrue(listBinaries.length > 0);
+        List<String> orderedList = Arrays.asList(listBinaries);
+        // we sort to have binary starting with same name, next to each other. The last two
+        // characters of their name with be the bitness (32 or 64).
+        Collections.sort(orderedList);
+        Set<String> buildTarget = AbiUtils.getAbisForArch(
+                TestSuiteInfo.getInstance().getTargetArchs().get(0));
+        // We expect one binary per abi of CTS, they should be appended with 32 or 64
+        for (int i = 0; i < orderedList.size(); i=i + buildTarget.size()) {
+            List<String> subSet = orderedList.subList(i, i + buildTarget.size());
+            if (subSet.size() > 1) {
+                String base = subSet.get(0).substring(0, subSet.get(0).length() - 2);
+                for (int j = 0; j < subSet.size(); j++) {
+                    assertEquals(base, subSet.get(j).substring(0, subSet.get(j).length() - 2));
+                }
+            } else {
+                String bitness = AbiUtils.getBitness(buildTarget.iterator().next());
+                assertTrue(subSet.get(i).endsWith(bitness));
+            }
+        }
+    }
+}
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsTradefedTest.java b/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsTradefedTest.java
index 5d5df59..8bab842 100644
--- a/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsTradefedTest.java
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsTradefedTest.java
@@ -15,20 +15,27 @@
  */
 package com.android.compatibility.tradefed;
 
+import static org.junit.Assert.assertEquals;
+
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider;
 import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.config.OptionSetter;
 import com.android.tradefed.util.FileUtil;
 
-import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
 import java.io.File;
 
 /**
  * Tests for cts-tradefed.
  */
-public class CtsTradefedTest extends TestCase {
+@RunWith(JUnit4.class)
+public class CtsTradefedTest {
 
     private static final String PROPERTY_NAME = "CTS_ROOT";
     private static final String SUITE_FULL_NAME = "Compatibility Test Suite";
@@ -38,20 +45,19 @@
 
     private String mOriginalProperty = null;
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+    @Before
+    public void setUp() throws Exception {
         mOriginalProperty = System.getProperty(PROPERTY_NAME);
     }
 
-    @Override
-    protected void tearDown() throws Exception {
+    @After
+    public void tearDown() throws Exception {
         if (mOriginalProperty != null) {
             System.setProperty(PROPERTY_NAME, mOriginalProperty);
         }
-        super.tearDown();
     }
 
+    @Test
     public void testSuiteInfoLoad() throws Exception {
         // Test the values in the manifest can be loaded
         File root = FileUtil.createTempDir("root");
diff --git a/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsUnitTests.java b/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsUnitTests.java
new file mode 100644
index 0000000..d989014
--- /dev/null
+++ b/tools/cts-tradefed/tests/src/com/android/compatibility/tradefed/CtsUnitTests.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.compatibility.tradefed;
+
+import com.android.compatibility.common.tradefed.presubmit.ApkPackageNameCheck;
+import com.android.compatibility.common.tradefed.presubmit.CtsConfigLoadingTest;
+import com.android.compatibility.common.tradefed.presubmit.DupFileTest;
+import com.android.compatibility.common.tradefed.presubmit.PresubmitSetupValidation;
+import com.android.compatibility.common.tradefed.presubmit.ValidateTestsAbi;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * A test suite for all compatibility tradefed unit tests.
+ *
+ * <p>All tests listed here should be self-contained, and do not require any external dependencies.
+ */
+@RunWith(Suite.class)
+@SuiteClasses({
+    // base
+    CtsTradefedTest.class,
+
+    // presubmit
+    ApkPackageNameCheck.class,
+    CtsConfigLoadingTest.class,
+    DupFileTest.class,
+    PresubmitSetupValidation.class,
+    ValidateTestsAbi.class,
+})
+public class CtsUnitTests {
+    // Empty on purpose
+}
diff --git a/tools/vm-tests-tf/TEST_MAPPING b/tools/vm-tests-tf/TEST_MAPPING
index a566107..4fbca3b 100644
--- a/tools/vm-tests-tf/TEST_MAPPING
+++ b/tools/vm-tests-tf/TEST_MAPPING
@@ -1,5 +1,5 @@
 {
-  "presubmit": [
+  "presubmit-large": [
     {
       "name": "vm-tests-tf"
     }