Remove redundant transcode tests

This was migrated to CTS and partially removed from MediaProvider in:
Ibefdad5e4cd9a645465cf74597023c0adebad37c. Some artifacts were still
left behind however.

Test: atest TranscodeTest
Bug: 169546642
Change-Id: I6cb61c49d9d803a50c1b7cabe2d5be37cb8ef5cc
diff --git a/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java b/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java
deleted file mode 100644
index a77fd55..0000000
--- a/tests/transcode/src/com/android/providers/media/transcode/TranscodeTest.java
+++ /dev/null
@@ -1,898 +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 com.android.providers.media.transcode;
-
-import static androidx.test.InstrumentationRegistry.getContext;
-
-import static com.android.providers.media.transcode.TranscodeTestUtils.assertFileContent;
-import static com.android.providers.media.transcode.TranscodeTestUtils.assertTranscode;
-import static com.android.providers.media.transcode.TranscodeTestUtils.installAppWithStoragePermissions;
-import static com.android.providers.media.transcode.TranscodeTestUtils.open;
-import static com.android.providers.media.transcode.TranscodeTestUtils.openFileAs;
-import static com.android.providers.media.transcode.TranscodeTestUtils.uninstallApp;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.Manifest;
-import android.media.ApplicationMediaCapabilities;
-import android.media.MediaFormat;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.ParcelFileDescriptor;
-import android.os.SystemProperties;
-import android.provider.MediaStore;
-
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.cts.install.lib.TestApp;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-
-import org.junit.After;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class TranscodeTest {
-    private static final File EXTERNAL_STORAGE_DIRECTORY
-            = Environment.getExternalStorageDirectory();
-    private static final File DIR_CAMERA
-            = new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DCIM + "/Camera");
-    // TODO(b/169546642): Test other directories like /sdcard and /sdcard/foo
-    // These are the only transcode unsupported directories we can stage files in given our
-    // test app permissions
-    private static final File[] DIRS_NO_TRANSCODE = {
-        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_PICTURES),
-        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_MOVIES),
-        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DOWNLOADS),
-        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DCIM),
-        new File(EXTERNAL_STORAGE_DIRECTORY, Environment.DIRECTORY_DOCUMENTS),
-    };
-
-    static final String NONCE = String.valueOf(System.nanoTime());
-    private static final String HEVC_FILE_NAME = "TranscodeTestHEVC_" + NONCE + ".mp4";
-    private static final String SMALL_HEVC_FILE_NAME = "TranscodeTestHevcSmall_" + NONCE + ".mp4";
-    private static final String LEGACY_FILE_NAME = "TranscodeTestLegacy_" + NONCE + ".mp4";
-
-    private static final TestApp TEST_APP_HEVC = new TestApp("TestAppHevc",
-            "com.android.providers.media.transcode.testapp", 1, false,
-            "TranscodeTestAppSupportsHevc.apk");
-
-    private static final TestApp TEST_APP_SLOW_MOTION = new TestApp("TestAppSlowMotion",
-            "com.android.providers.media.transcode.testapp", 1, false,
-            "TranscodeTestAppSupportsSlowMotion.apk");
-
-    @Before
-    public void setUp() throws Exception {
-        Assume.assumeTrue(SystemProperties.getBoolean("sys.fuse.transcode_enabled", false));
-
-        TranscodeTestUtils.pollForExternalStorageState();
-        TranscodeTestUtils.grantPermission(getContext().getPackageName(),
-                Manifest.permission.READ_EXTERNAL_STORAGE);
-        TranscodeTestUtils.pollForPermission(Manifest.permission.READ_EXTERNAL_STORAGE, true);
-        TranscodeTestUtils.enableSeamlessTranscoding();
-        TranscodeTestUtils.disableTranscodingForAllPackages();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        TranscodeTestUtils.disableSeamlessTranscoding();
-    }
-
-    /**
-     * Tests that we return FD of transcoded file for legacy apps
-     * @throws Exception
-     */
-    @Test
-    public void testTranscoded_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            ParcelFileDescriptor pfdTranscoded = open(modernFile, false);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we don't transcode files outside DCIM/Camera
-     * @throws Exception
-     */
-    @Test
-    public void testNoTranscodeOutsideCamera_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        List<File> noTranscodeFiles = new ArrayList<>();
-        for (File file : DIRS_NO_TRANSCODE) {
-            noTranscodeFiles.add(new File(file, HEVC_FILE_NAME));
-        }
-        noTranscodeFiles.add(new File(getContext().getExternalFilesDir(null), HEVC_FILE_NAME));
-
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            for (File file : noTranscodeFiles) {
-                TranscodeTestUtils.stageHEVCVideoFile(file);
-            }
-            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            for (File file : noTranscodeFiles) {
-                pfdOriginal1.seekTo(0);
-                ParcelFileDescriptor pfdOriginal2 = open(file, false);
-                assertFileContent(modernFile, file, pfdOriginal1, pfdOriginal2, true);
-            }
-        } finally {
-            modernFile.delete();
-            for (File file : noTranscodeFiles) {
-                file.delete();
-            }
-        }
-    }
-
-    /**
-     * Tests that same transcoded file is used for multiple open() from same app
-     * @throws Exception
-     */
-    @Test
-    public void testSameTranscoded_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            ParcelFileDescriptor pfdTranscoded1 = open(modernFile, false);
-            ParcelFileDescriptor pfdTranscoded2 = open(modernFile, false);
-
-            assertFileContent(modernFile, modernFile, pfdTranscoded1, pfdTranscoded2, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we return FD of transcoded file for legacy apps
-     * @throws Exception
-     */
-    @Test
-    public void testTranscoded_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            ParcelFileDescriptor pfdTranscoded = open(uri, false, null /* bundle */);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we don't transcode files outside DCIM/Camera
-     * @throws Exception
-     */
-    @Test
-    public void testNoTranscodeOutsideCamera_ConentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        List<File> noTranscodeFiles = new ArrayList<>();
-        for (File file : DIRS_NO_TRANSCODE) {
-            noTranscodeFiles.add(new File(file, HEVC_FILE_NAME));
-        }
-
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            ArrayList<Uri> noTranscodeUris = new ArrayList<>();
-            for (File file : noTranscodeFiles) {
-                noTranscodeUris.add(TranscodeTestUtils.stageHEVCVideoFile(file));
-            }
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            for (int i = 0; i < noTranscodeUris.size(); i++) {
-                pfdOriginal1.seekTo(0);
-                ParcelFileDescriptor pfdOriginal2 =
-                        open(noTranscodeUris.get(i), false, null /* bundle */);
-                assertFileContent(modernFile, noTranscodeFiles.get(1), pfdOriginal1, pfdOriginal2,
-                        true);
-            }
-        } finally {
-            modernFile.delete();
-            for (File file : noTranscodeFiles) {
-                file.delete();
-            }
-        }
-    }
-
-    /**
-     * Tests that same transcoded file is used for multiple open() from same app
-     * @throws Exception
-     */
-    @Test
-    public void testSameTranscodedFile_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            ParcelFileDescriptor pfdTranscoded1 = open(uri, false, null /* bundle */);
-            ParcelFileDescriptor pfdTranscoded2 = open(uri, false, null /* bundle */);
-
-            assertFileContent(modernFile, modernFile, pfdTranscoded1, pfdTranscoded2, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that deletes are visible across legacy and modern apps
-     * @throws Exception
-     */
-    @Test
-    public void testDeleteTranscodedFile_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTrue(modernFile.delete());
-            assertFalse(modernFile.exists());
-
-            TranscodeTestUtils.disableTranscodingForAllPackages();
-
-            assertFalse(modernFile.exists());
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that renames are visible across legacy and modern apps
-     * @throws Exception
-     */
-    @Test
-    public void testRenameTranscodedFile_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        File destFile = new File(DIR_CAMERA, "renamed_" + HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTrue(modernFile.renameTo(destFile));
-            assertTrue(destFile.exists());
-            assertFalse(modernFile.exists());
-
-            TranscodeTestUtils.disableTranscodingForAllPackages();
-
-            assertTrue(destFile.exists());
-            assertFalse(modernFile.exists());
-        } finally {
-            modernFile.delete();
-            destFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode doesn't start until read(2)
-     * @throws Exception
-     */
-    @Test
-    public void testLazyTranscodedFile_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            assertTranscode(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(modernFile, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode cache is reused after file path transcode
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedCacheReuse_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(modernFile, true);
-            assertTranscode(modernFile, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode cache is reused after ContentResolver transcode
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedCacheReuse_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(uri, true);
-            assertTranscode(uri, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode cache is reused after ContentResolver transcode
-     * and file path opens
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedCacheReuse_ContentResolverFilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(uri, true);
-            assertTranscode(modernFile, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode cache is reused after file path transcode
-     * and ContentResolver opens
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedCacheReuse_FilePathContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(modernFile, true);
-            assertTranscode(uri, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that transcode cache is reused after rename
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedCacheReuseAfterRename_FilePath() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        File destFile = new File(DIR_CAMERA, "renamed_" + HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(modernFile, true);
-
-            assertTrue(modernFile.renameTo(destFile));
-
-            assertTranscode(destFile, false);
-        } finally {
-            modernFile.delete();
-            destFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraAcceptOriginalFormatTrue_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, true);
-            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraAcceptOriginalFormatFalse_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, false);
-            ParcelFileDescriptor pfdTranscoded = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraMediaCapabilitiesHevcSupportedTrue_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            ApplicationMediaCapabilities capabilities =
-                    new ApplicationMediaCapabilities.Builder()
-                    .addSupportedVideoMimeType(MediaFormat.MIMETYPE_VIDEO_HEVC).build();
-            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
-            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraMediaCapabilitiesHevcUnsupportedFalse_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            ApplicationMediaCapabilities capabilities =
-                    new ApplicationMediaCapabilities.Builder()
-                            .addUnsupportedVideoMimeType(MediaFormat.MIMETYPE_VIDEO_HEVC).build();
-            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
-            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraMediaCapabilitiesHevcUnspecifiedFalse_ContentResolver() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            ApplicationMediaCapabilities capabilities =
-                    new ApplicationMediaCapabilities.Builder().build();
-            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
-            ParcelFileDescriptor pfdTranscoded = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdTranscoded, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testExtraAcceptOriginalTrueAndMediaCapabilitiesHevcFalse_ContentResolver()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(uri, false, null /* bundle */);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            Bundle bundle = new Bundle();
-            ApplicationMediaCapabilities capabilities =
-                    new ApplicationMediaCapabilities.Builder().build();
-            bundle.putParcelable(MediaStore.EXTRA_MEDIA_CAPABILITIES, capabilities);
-            bundle.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, true);
-            ParcelFileDescriptor pfdOriginal2 = open(uri, false, bundle);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    @Test
-    public void testMediaCapabilitiesManifestHevc()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        ParcelFileDescriptor pfdOriginal2 = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_HEVC);
-
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(TEST_APP_HEVC.getPackageName());
-
-            pfdOriginal2 = openFileAs(TEST_APP_HEVC, modernFile);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
-        } finally {
-            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
-            if (pfdOriginal2 != null) {
-                pfdOriginal2.close();
-            }
-            modernFile.delete();
-            uninstallApp(TEST_APP_HEVC);
-        }
-    }
-
-    @Test
-    public void testMediaCapabilitiesManifestSlowMotion()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        ParcelFileDescriptor pfdOriginal2 = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
-
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(TEST_APP_SLOW_MOTION.getPackageName());
-
-            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, false);
-        } finally {
-            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
-            if (pfdOriginal2 != null) {
-                pfdOriginal2.close();
-            }
-            modernFile.delete();
-            uninstallApp(TEST_APP_HEVC);
-        }
-    }
-
-    @Test
-    public void testAppCompatNoTranscodeHevc() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        String packageName = TEST_APP_SLOW_MOTION.getPackageName();
-        ParcelFileDescriptor pfdOriginal2 = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
-
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(packageName);
-            // App compat takes precedence
-            TranscodeTestUtils.forceEnableAppCompatHevc(packageName);
-
-            Thread.sleep(2000);
-
-            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, true);
-        } finally {
-            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
-            if (pfdOriginal2 != null) {
-                pfdOriginal2.close();
-            }
-            modernFile.delete();
-            TranscodeTestUtils.resetAppCompat(packageName);
-            uninstallApp(TEST_APP_HEVC);
-        }
-    }
-
-    @Test
-    public void testAppCompatTranscodeHevc() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        String packageName = TEST_APP_SLOW_MOTION.getPackageName();
-        ParcelFileDescriptor pfdOriginal2 = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
-
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal1 = open(modernFile, false);
-
-            // Transcoding is disabled but app compat enables it (disables hevc support)
-            TranscodeTestUtils.forceDisableAppCompatHevc(packageName);
-
-            pfdOriginal2 = openFileAs(TEST_APP_SLOW_MOTION, modernFile);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal1, pfdOriginal2, false);
-        } finally {
-            // Explicitly close PFD otherwise instrumention might crash when test_app is uninstalled
-            if (pfdOriginal2 != null) {
-                pfdOriginal2.close();
-            }
-            modernFile.delete();
-            TranscodeTestUtils.resetAppCompat(packageName);
-            uninstallApp(TEST_APP_HEVC);
-        }
-    }
-
-    /**
-     * Tests that we never initiate tanscoding for legacy formats.
-     * This test compares the bytes read before and after enabling transcoding for the test app.
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedNotInitiatedForLegacy_UsingBytesRead() throws Exception {
-        File legacyFile = new File(DIR_CAMERA, LEGACY_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageLegacyVideoFile(legacyFile);
-
-            ParcelFileDescriptor pfdOriginal = open(legacyFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            ParcelFileDescriptor pfdTranscoded = open(legacyFile, false);
-
-            assertFileContent(legacyFile, legacyFile, pfdOriginal, pfdTranscoded, true);
-        } finally {
-            legacyFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we never initiate tanscoding for legacy formats.
-     * This test asserts using the time it took to read after enabling transcoding for the test app.
-     * The reason for keeping this check separately (than
-     * {@link TranscodeTest#testTranscodedNotInitiatedForLegacy_UsingTiming()}) is that this
-     * provides a higher level of suret that the timing wasn't favorable because of any caching
-     * after open().
-     * @throws Exception
-     */
-    @Test
-    public void testTranscodedNotInitiatedForLegacy_UsingTiming() throws Exception {
-        File legacyFile = new File(DIR_CAMERA, LEGACY_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageLegacyVideoFile(legacyFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-
-            assertTranscode(legacyFile, false);
-        } finally {
-            legacyFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we don't timeout while transcoding small HEVC videos.
-     * For instance, due to some calculation errors we might incorrectly make timeout to be 0.
-     * We test this by making sure that a small HEVC video (< 1 sec long and < 1Mb size) gets
-     * transcoded.
-     * @throws Exception
-     */
-    @Test
-    public void testNoTranscodeTimeoutForSmallHevcVideos() throws Exception {
-        File modernFile = new File(DIR_CAMERA, SMALL_HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageSmallHevcVideoFile(modernFile);
-            ParcelFileDescriptor pfdOriginal = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            ParcelFileDescriptor pfdTranscoded = open(modernFile, false);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal, pfdTranscoded, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we transcode an HEVC file when a modern app passes the mediaCapabilitiesUid of a
-     * legacy app that cannot handle an HEVC file.
-     */
-    @Test
-    public void testOriginalCallingUid_modernAppPassLegacyAppUid()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        ParcelFileDescriptor pfdModernApp = null;
-        ParcelFileDescriptor pfdModernAppPassingLegacyUid = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_SLOW_MOTION);
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            // pfdModernApp is for original content (without transcoding) since this is a modern
-            // app.
-            pfdModernApp = open(modernFile, false);
-
-            // pfdModernAppPassingLegacyUid is for transcoded content since this modern app is
-            // passing the UID of a legacy app capable of handling HEVC files.
-            Bundle bundle = new Bundle();
-            bundle.putInt(MediaStore.EXTRA_MEDIA_CAPABILITIES_UID,
-                    getContext().getPackageManager().getPackageUid(
-                            TEST_APP_SLOW_MOTION.getPackageName(), 0));
-            pfdModernAppPassingLegacyUid = open(uri, false, bundle);
-
-            assertTranscode(pfdModernApp, false);
-            assertTranscode(pfdModernAppPassingLegacyUid, true);
-
-            // pfdModernApp and pfdModernAppPassingLegacyUid should be different.
-            assertFileContent(modernFile, modernFile, pfdModernApp, pfdModernAppPassingLegacyUid,
-                    false);
-        } finally {
-            if (pfdModernApp != null) {
-                pfdModernApp.close();
-            }
-
-            if (pfdModernAppPassingLegacyUid != null) {
-                pfdModernAppPassingLegacyUid.close();
-            }
-            modernFile.delete();
-            uninstallApp(TEST_APP_SLOW_MOTION);
-        }
-    }
-
-    /**
-     * Tests that we don't transcode an HEVC file when a legacy app passes the mediaCapabilitiesUid
-     * of a modern app that can handle an HEVC file.
-     */
-    @Test
-    public void testOriginalCallingUid_legacyAppPassModernAppUid()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        ParcelFileDescriptor pfdLegacyApp = null;
-        ParcelFileDescriptor pfdLegacyAppPassingModernUid = null;
-        try {
-            installAppWithStoragePermissions(TEST_APP_HEVC);
-            Uri uri = TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            // pfdLegacyApp is for transcoded content since this is a legacy app.
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            pfdLegacyApp = open(modernFile, false);
-
-            // pfdLegacyAppPassingModernUid is for original content (without transcoding) since this
-            // legacy app is passing the UID of a modern app capable of handling HEVC files.
-            Bundle bundle = new Bundle();
-            bundle.putInt(MediaStore.EXTRA_MEDIA_CAPABILITIES_UID,
-                    getContext().getPackageManager().getPackageUid(TEST_APP_HEVC.getPackageName(),
-                            0));
-            pfdLegacyAppPassingModernUid = open(uri, false, bundle);
-
-            assertTranscode(pfdLegacyApp, true);
-            assertTranscode(pfdLegacyAppPassingModernUid, false);
-
-            // pfdLegacyApp and pfdLegacyAppPassingModernUid should be different.
-            assertFileContent(modernFile, modernFile, pfdLegacyApp, pfdLegacyAppPassingModernUid,
-                    false);
-        } finally {
-            if (pfdLegacyApp != null) {
-                pfdLegacyApp.close();
-            }
-
-            if (pfdLegacyAppPassingModernUid != null) {
-                pfdLegacyAppPassingModernUid.close();
-            }
-            modernFile.delete();
-            uninstallApp(TEST_APP_HEVC);
-        }
-    }
-
-    /**
-     * Tests that we return FD of original file from
-     * MediaStore#getOriginalMediaFormatFileDescriptor.
-     * @throws Exception
-     */
-    @Test
-    public void testGetOriginalMediaFormatFileDescriptor_returnsOriginalFileDescriptor()
-            throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-
-            ParcelFileDescriptor pfdOriginal = open(modernFile, false);
-
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            ParcelFileDescriptor pfdTranscoded = open(modernFile, false);
-
-            ParcelFileDescriptor pfdOriginalMediaFormat =
-                    MediaStore.getOriginalMediaFormatFileDescriptor(getContext(), pfdTranscoded);
-
-            assertFileContent(modernFile, modernFile, pfdOriginal, pfdOriginalMediaFormat, true);
-            assertFileContent(modernFile, modernFile, pfdTranscoded, pfdOriginalMediaFormat, false);
-        } finally {
-            modernFile.delete();
-        }
-    }
-
-    /**
-     * Tests that we can successfully write to a transcoded file.
-     * We check this by writing something to tanscoded content and then read it back.
-     */
-    @Test
-    public void testWriteSuccessfulToTranscodedContent() throws Exception {
-        File modernFile = new File(DIR_CAMERA, HEVC_FILE_NAME);
-        ParcelFileDescriptor pfdTranscodedContent = null;
-        try {
-            TranscodeTestUtils.stageHEVCVideoFile(modernFile);
-            TranscodeTestUtils.enableTranscodingForPackage(getContext().getPackageName());
-            pfdTranscodedContent = open(modernFile, false);
-
-            // read some bytes from some random offset
-            Random random = new Random(System.currentTimeMillis());
-            int byteCount = 512;
-            int fileOffset = random.nextInt((int) pfdTranscodedContent.getStatSize() - byteCount);
-            byte[] readBytes = TranscodeTestUtils.read(pfdTranscodedContent, byteCount, fileOffset);
-
-            // write the bytes at the same offset after some modification
-            pfdTranscodedContent = open(modernFile, true);
-            byte[] writeBytes = new byte[byteCount];
-            for (int i = 0; i < byteCount; ++i) {
-                writeBytes[i] = (byte) ~readBytes[i];
-            }
-            TranscodeTestUtils.write(pfdTranscodedContent, writeBytes, byteCount, fileOffset);
-
-            // read back the same number of bytes from the same offset
-            readBytes = TranscodeTestUtils.read(pfdTranscodedContent, byteCount, fileOffset);
-
-            // assert that read is same as written
-            assertTrue(Arrays.equals(readBytes, writeBytes));
-        } finally {
-            if (pfdTranscodedContent != null) {
-                pfdTranscodedContent.close();
-            }
-            modernFile.delete();
-        }
-    }
-}