// 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: [
        "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",
}
