// 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 {
    // See: http://go/android-license-faq
    default_applicable_licenses: [
        "Android-Apache-2.0",
        "cts_tests_tests_media_license", // CC-BY
    ],
}

cc_test_library {
    name: "libctsmediamisc_jni",
    srcs: [
        "jni/AImageReaderCts.cpp",
        "jni/native-media-jni.cpp",
    ],
    shared_libs: [
        "libandroid",
        "libcamera2ndk",
        "libnativehelper_compat_libc++",
        "liblog",
        "libmediandk",
        "libEGL",
    ],
    header_libs: ["liblog_headers"],
    stl: "libc++_static",
    cflags: [
        "-Werror",
        "-Wall",
        "-DEGL_EGLEXT_PROTOTYPES",
    ],
    gtest: false,
    // this test suite will run on sdk 29 as part of MTS, make sure it's compatible
    // (revisit if/when we add features to this library that require newer sdk.
    sdk_version: "29",
}

android_test {
    name: "CtsMediaMiscTestCases",
    defaults: ["cts_defaults"],
    // include both the 32 and 64 bit versions
    compile_multilib: "both",
    static_libs: [
        "androidx.test.core",
        "androidx.test.ext.junit",
        "compatibility-device-util-axt",
        "ctsdeviceutillegacy-axt",
        "ctsmediautil",
        "ctstestrunner-axt",
        "hamcrest-library",
        "ctstestserver",
        "cts-media-common",
        "junit",
        "junit-params",
        "testng",
        "truth-prebuilt",
        "mockito-target-minus-junit4",
        "androidx.heifwriter_heifwriter",
        "CtsCameraUtils",
    ],
    jni_libs: [
        "libctscodecutils_jni",
        "libctsmediamisc_jni",
        "libctsmediacommon_jni",
        "libnativehelper_compat_libc++",
    ],
    asset_dirs: ["assets"],
    resource_dirs: ["res"],
    aaptflags: [
        "--auto-add-overlay",

        // Do not compress these files:
        "-0 .vp9",
        "-0 .ts",
        "-0 .heic",
        "-0 .trp",
        "-0 .ota",
        "-0 .mxmf",
    ],
    srcs: [
        "src/**/*.java",
        "aidl/**/*.aidl",
    ],
    // This test uses private APIs
    platform_apis: true,
    jni_uses_sdk_apis: true,
    libs: [
        "org.apache.http.legacy",
        "android.test.base",
        "android.test.runner",
    ],
    // Tag this module as a cts test artifact
    test_suites: [
        "cts",
        "general-tests",
        "mts-media",
        "sts",
    ],
    host_required: ["cts-dynamic-config"],
    min_sdk_version: "29",
    target_sdk_version: "31",
}
