// Copyright (C) 2008 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 {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

android_test {
    name: "CtsContentTestCases",
    defaults: ["cts_defaults"],

    // Don't run manifestmerger on dependencies, it is unhappy with the duplicate
    // REQUIRED_MULTI_DENY permissions in AndroidManifest.xml
    dont_merge_manifests: true,
    // Include both the 32 and 64 bit versions
    compile_multilib: "both",
    jni_libs: [
        "libcts_jni",
        "libnativecursorwindow_jni",
        "libnativehelper_compat_libc++",
    ],
    libs: [
        "android.test.runner",
        "android.test.base",
        "android.test.mock",
    ],
    static_libs: [
        "apache-commons-compress",
        "compatibility-device-util-axt",
        "ctstestrunner-axt",
        "services.core",
        "junit",
        "truth-prebuilt",
        "accountaccesslib",
        "ub-uiautomator",
        // TODO: remove once Android migrates to JUnit 4.12, which provides assertThrows:
        "testng",
        "androidx.legacy_legacy-support-v4",
        "androidx.test.core",
        "cts-install-lib",
        "ShortcutManagerTestUtils",
        "libincfs-prebuilt",
        "HelloWorldResHardeningLib",
        "Nene",
        "Harrier",
    ],
    // Use multi-dex as the compatibility-common-util-devicesidelib dependency
    // on compatibility-device-util-axt pushes us beyond 64k methods.
    dxflags: ["--multi-dex"],
    // Resource unit tests use a private locale and some densities
    aapt_include_all_resources: true,
    aaptflags: [
        "-c cs",
        "-c fil,fil-rPH,fil-rSA",
        "-c fr,fr-rFR",
        "-c iw,iw-rIL",
        "-c kok,b+kok+419,b+kok+419+variant,b+kok+IN,b+kok+Knda,b+kok+Knda+419,b+kok+Knda+419+variant",
        "-c b+kok+variant",
        "-c mk,mk-rMK",
        "-c tl,tl-rPH",
        "-c tgl,tgl-rPH",
        "-c tlh",
        "-c xx,xx-rYY",
    ],
    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
        "BinderPermissionTestService/**/I*.aidl",
    ],
    required: [
        "HelloWorld5",
        "HelloWorld5Profileable",
        "HelloWorld7",
        "HelloWorldNoAppStorage",
        "HelloWorldResHardening",
        "HelloWorldSdk1",
        "HelloWorldSdk1DifferentSigner",
        "HelloWorldSdk1MajorVersion2",
        "HelloWorldSdk1Updated",
        "HelloWorldSdk2",
        "HelloWorldSdk2Updated",
        "HelloWorldSdk3UsingSdk1",
        "HelloWorldSdk3UsingSdk1And2",
        "HelloWorldShell",
        "HelloWorldUsingSdk1",
        "HelloWorldUsingSdk1And2",
        "HelloWorldUsingSdk3",
    ],
    per_testcase_directory: true,
    data: [
        ":CtsContentDirectBootUnawareTestApp",
        ":CtsContentMockLauncherTestApp",
        ":CtsContentLongLabelNameTestApp",
        ":CtsContentPartiallyDirectBootAwareTestApp",
        ":CtsIntentResolutionTestApp",
        ":CtsSyncAccountAccessStubs",
        ":CtsContentEmptyTestApp",
        ":CtsContentMaxPackageNameTestApp",
        ":CtsBinderPermissionTestService",
        ":CtsIntentResolutionTestAppApi30",
        ":CtsContentLongSharedUserIdTestApp",
        ":CtsContentMaxSharedUserIdTestApp",
        ":CtsContentLongPackageNameTestApp",
        ":CtsContentNoApplicationTestApp",
        ":CtsApkVerityTestPrebuiltFiles",
        // v1/v2/v3/v4 signed version of android.appsecurity.cts.tinyapp to keep checksums stable
        "data/CtsPkgInstallTinyAppV1.apk",
        "data/CtsPkgInstallTinyAppV2V3V4.apk",
        "data/CtsPkgInstallTinyAppV2V3V4.apk.idsig",
        "data/CtsPkgInstallTinyAppV2V3V4.digests",
        "data/CtsPkgInstallTinyAppV2V3V4.digests.signature",
        "data/CtsPkgInstallTinyAppV2V3V4-Sha512withEC.apk",
        "data/CtsPkgInstallTinyAppV2V3V4-Sha512withEC.apk.idsig",
        "data/CtsPkgInstallTinyAppV2V3V4-Verity.apk",
        "data/CtsPkgInstallTinyAppV2V3V4-Verity.apk.idsig",
        "data/HelloWorld5.digests",
        "data/HelloWorld5.digests.signature",
        "data/HelloWorld5_hdpi-v4.digests",
        "data/HelloWorld5_hdpi-v4.digests.signature",
        "data/HelloWorld5_mdpi-v4.digests",
        "data/HelloWorld5_mdpi-v4.digests.signature",
        "data/malformed.apk.idsig",
        "data/test-cert.x509.pem",
    ],
    java_resources: [
        ":PackagePropertyTestApp1",
        ":PackagePropertyTestApp2",
        ":PackagePropertyTestApp3",
        ":TestInstallerApp",
    ],
    platform_apis: true,
    // Tag this module as a cts test artifact
    test_suites: [
        "cts",
        "general-tests",
        "mts-documentsui",
    ],
    min_sdk_version: "29",
}
