// 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 {
    default_team: "trendy_team_android_permissions",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

cc_test_library {
    name: "libCtsAppOpsTestCases_jni",

    stl: "libc++_static",
    gtest: false,
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
    ],

    srcs: ["jni/**/*.cpp"],

    header_libs: ["jni_headers"],
    shared_libs: [
        "libbinder",
        "libpermission",
        "libutils",
        "liblog",
    ],
}

cc_test_library {
    name: "libNDKCtsAppOpsTestCases_jni",

    stl: "libc++_static",
    gtest: false,
    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-unused-parameter",
    ],

    srcs: ["ndk-jni/**/*.cpp"],

    header_libs: ["jni_headers"],
    shared_libs: [
        "libaaudio",
    ],
}

android_test {
    name: "CtsAppOpsTestCases",
    defaults: [
        "mts-target-sdk-version-current",
    ],
    min_sdk_version: "30",
    compile_multilib: "both",

    srcs: ["src/**/*.kt"],

    static_libs: [
        "bluetooth-test-util-lib",
        "appops-test-util-lib",
        "AppOpsUserServiceAidl",
        "AppOpsForegroundControlServiceAidl",
        "androidx.test.rules",
        "compatibility-device-util-axt",
        "androidx.legacy_legacy-support-v4",
        "platform-test-annotations",
        "truth",
        "androidx.test.uiautomator_uiautomator",
    ],

    jni_libs: [
        "ld-android",
        "libbase",
        "libbinder",
        "libbpf_bcc",
        "libc++",
        "libcgrouprc",
        "libcrypto",
        "libcutils",
        "libdl_android",
        "libhidl-gen-utils",
        "libhidlbase",
        "libjsoncpp",
        "liblog",
        "liblzma",
        "libnativehelper",
        "libnetdutils",
        "libnetworkstats",
        "libpackagelistparser",
        "libpermission",
        "libpcre2",
        "libprocessgroup",
        "libselinux",
        "libtinyxml2",
        "libui",
        "libunwindstack",
        "libutils",
        "libutilscallstack",
        "libvndksupport",
        "libziparchive",
        "libz",
        "libCtsAppOpsTestCases_jni",
        "libNDKCtsAppOpsTestCases_jni",
    ],

    test_suites: [
        "cts",
        "general-tests",
        "mts",
    ],
    data: [
        ":AppWithLongAttributionTag",
        ":CtsAppThatUsesAppOps",
        ":AppWithAttributionInheritingFromSameAsOther",
        ":AppThatCanBeForcedIntoForegroundStates",
        ":AppWithDuplicateAttribution",
        ":AppWithTooManyAttributions",
        ":CtsAppWithReceiverAttribution",
        ":AppForDiscreteTest",
        ":CtsAppToBlame1",
        ":CtsAppToBlame2",
        ":CtsAppToCollect",
        ":AppInBackground",
        ":AppWithAttributionInheritingFromSelf",
        ":AppWithAttributionInheritingFromExisting",
    ],
    per_testcase_directory: true,
}
