// Copyright (C) 2019 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
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "external_perfetto_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["external_perfetto_license"],
}

android_test_helper_app {
    name: "CtsPerfettoDebuggableApp",
    // tag this module as a cts test artifact
    test_suites: [
        "cts",
        "vts10",
        "general-tests",
    ],

    manifest: "AndroidManifest_debuggable.xml",

    compile_multilib: "both",
    srcs: ["src/**/*.java"],
    // This test is also run via Mainline Testing against the ART Mainline
    // Module, which is updatable since Android 12 (API level 31).
    sdk_version: "31",
    min_sdk_version: "31",
    jni_libs: [
        "libperfettocts_native",
    ],
    jni_uses_platform_apis: true,
}

android_test_helper_app {
    name: "CtsPerfettoReleaseApp",
    // tag this module as a cts test artifact
    test_suites: [
        "cts",
        "vts10",
        "general-tests",
    ],

    manifest: "AndroidManifest_release.xml",

    compile_multilib: "both",
    srcs: ["src/**/*.java"],
    // This test is also run via Mainline Testing against the ART Mainline
    // Module, which is updatable since Android 12 (API level 31).
    sdk_version: "31",
    min_sdk_version: "31",
    jni_libs: [
        "libperfettocts_native",
    ],
    jni_uses_platform_apis: true,
}

android_test_helper_app {
    name: "CtsPerfettoProfileableApp",
    // tag this module as a cts test artifact
    test_suites: [
        "cts",
        "vts10",
        "general-tests",
    ],

    manifest: "AndroidManifest_profileable.xml",

    compile_multilib: "both",
    srcs: ["src/**/*.java"],
    // This test is also run via Mainline Testing against the ART Mainline
    // Module, which is updatable since Android 12 (API level 31).
    sdk_version: "31",
    min_sdk_version: "31",
    jni_libs: [
        "libperfettocts_native",
    ],
    jni_uses_platform_apis: true,
}

android_test_helper_app {
    name: "CtsPerfettoNonProfileableApp",
    // tag this module as a cts test artifact
    test_suites: [
        "cts",
        "vts10",
        "general-tests",
    ],

    manifest: "AndroidManifest_nonprofileable.xml",

    compile_multilib: "both",
    srcs: ["src/**/*.java"],
    // This test is also run via Mainline Testing against the ART Mainline
    // Module, which is updatable since Android 12 (API level 31).
    sdk_version: "31",
    min_sdk_version: "31",
    jni_libs: [
        "libperfettocts_native",
    ],
    jni_uses_platform_apis: true,
}
