// Copyright (C) 2021 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 "art_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["art_license"],
}

// This native library contains JNI support code for the ART Service Java
// Language library.
cc_defaults {
    name: "libartservice_defaults",
    defaults: ["art_defaults"],
    host_supported: true,
    srcs: [
        "native/service.cc",
    ],
    shared_libs: [
        "libbase",
    ],
}

cc_library {
    name: "libartservice",
    defaults: ["libartservice_defaults"],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    shared_libs: [
    ],
}

cc_library {
    name: "libartserviced",
    defaults: [
        "libartservice_defaults",
        "art_debug_defaults",
    ],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    shared_libs: [
    ],
}

// Provides the API and implementation of the ART Service class that will be
// loaded by the System Server.
java_sdk_library {
    // This target is named 'service-art' to conform to the naming conventions
    // for JAR files in the System Server.
    name: "service-art",
    defaults: ["framework-system-server-module-defaults"],
    permitted_packages: ["com.android.server.art"],
    visibility: [
        "//art:__subpackages__",
        "//frameworks/base/services/core",
    ],
    apex_available: [
        "com.android.art",
        "com.android.art.debug",
    ],
    sdk_version: "system_server_current",
    min_sdk_version: "31",
    srcs: [
        "java/**/*.java",
    ],
    static_libs: [
    ],
    jarjar_rules: "jarjar-rules.txt",
}

art_cc_defaults {
    name: "art_libartservice_tests_defaults",
    defaults: ["libartservice_defaults"],
    srcs: [
        "native/service_test.cc",
    ],
}

// Version of ART gtest `art_libartservice_tests` bundled with the ART APEX on target.
// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
art_cc_test {
    name: "art_libartservice_tests",
    defaults: [
        "art_gtest_defaults",
        "art_libartservice_tests_defaults",
    ],
}

// Standalone version of ART gtest `art_libartservice_tests`, not bundled with the ART APEX on
// target.
art_cc_test {
    name: "art_standalone_libartservice_tests",
    defaults: [
        "art_standalone_gtest_defaults",
        "art_libartservice_tests_defaults",
    ],
}

android_test {
    name: "ArtServiceTests",

    // Include all test java files.
    srcs: [
        "javatests/**/*.java",
    ],

    static_libs: [
        "androidx.test.ext.junit",
        "androidx.test.ext.truth",
        "androidx.test.runner",
        "mockito-target-minus-junit4",
        "service-art.impl",
    ],

    sdk_version: "system_server_current",
    min_sdk_version: "31",

    test_suites: ["general-tests"],
}
