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

android_test {
    name: "PermissionControllerMockingTests",

    sdk_version: "system_current",
    target_sdk_version: "30",
    min_sdk_version: "30",

    resource_dirs: [
        "test_res",
    ],

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

    libs: [
        "android.test.base.stubs.system",
        "android.test.runner.stubs.system",
        "safety-center-annotations",
    ],

    static_libs: [
        "PermissionController-lib",
        "androidx.lifecycle_lifecycle-extensions",
        // The PermissionController build file includes android.car-stubs in its libs dependency
        // and that works since the phone code does not initialize any classes with a android.car
        // dependency at runtime. If it did, the class loading would throw an exception. The "libs"
        // usage in the main module means that the dependency is loaded from the device, instead of
        // being statically included, which helps avoid apk bloat and conflicting dependencies.
        // To use just one test target, without any form-factor-specific configuration, we need to
        // statically include this car dependency. Otherwise running these unit tests against a
        // phone will cause the tests to fail due to an initialization exception for unfound car
        // dependency classes. Here we use the android.car target instead of android.car-stubs so
        // that we can utilize some data classes within the car dependency. If all dependencies were
        // mocked, then the stubs dependency would be suitable. Note that on Auto device the boot
        // class path will always override the static dependency.
        "android.car",
        "android.permission.flags-aconfig-java-export",
        "com.android.permission.flags-aconfig-java-export",
        "platform-test-annotations",
        "flag-junit",
        "androidx.test.rules",
        "androidx.test.ext.truth",
        "androidx.test.ext.junit",
        "kotlinx_coroutines_test",
        "mockito-target-extended-minus-junit4",
        "safety-center-test-util-lib",
    ],

    jni_libs: [
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
    ],
    compile_multilib: "both",

    test_suites: [
        "device-tests",
        "mts-permission",
    ],

    kotlincflags: ["-Xjvm-default=all"],

    // TODO(b/313706381): Remove jarjar once flagging lib is fixed
    jarjar_rules: ":PermissionController-jarjar-rules",
}
