// 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 {
    default_visibility: [":__subpackages__"],
    default_applicable_licenses: ["external_robolectric-shadows_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "external_robolectric-shadows_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-MIT",
    ],
    license_text: [
        "LICENSE",
    ],
}

// Empty library. Should be removed
java_library {
    name: "robolectric_android-all-stub",
    visibility: ["//visibility:public"],
}

// build.prop file created by module type defined in soong/robolectric.go
robolectric_build_props {
    name: "robolectric_build_props",
}

// package the framework raw/uncompiled resources and assets into a jar
// This logic can be removed once the transition to binary resources is complete
java_library {
    name: "robolectric_framework_raw_res_orig",
    java_resources: [":robolectric_framework_raw_res_files"],
}

// Move the raw/uncompiled resources and assets into raw-res/
// This logic can be removed once the transition to binary resources is complete
java_genrule_host {
    name: "robolectric_framework_raw_res",
    out: ["robolectric_framework_raw_res.jar"],
    srcs: [":robolectric_framework_raw_res_orig"],
    tools: ["zip2zip"],
    cmd: "$(location zip2zip) " +
        "-i $(location :robolectric_framework_raw_res_orig) " +
        "-o $(location robolectric_framework_raw_res.jar) " +
        "-x META-INF/**/* " +
        "**/*:raw-res/",
}

java_genrule_host {
    name: "robolectric_framework_res",
    tools: ["zip2zip"],
    srcs: [":framework-res"],
    out: ["robolectric_framework_res.jar"],
    cmd: "$(location zip2zip) " +
        "-i $(location :framework-res) " +
        "-o $(location robolectric_framework_res.jar) " +
        "-x classes.dex " +
        "-x META-INF/**/* " +
        "-0 resources.arsc",
}

java_device_for_host {
    name: "robolectric_android-all-device-deps",
    libs: [
        "conscrypt-for-host",
        "core-icu4j-for-host",
        "core-libart-for-host",
        "ext",
        "framework-all",
        "icu4j-icudata-jarjar",
        "icu4j-icutzdata-jarjar",
        "ims-common",
        "libphonenumber-platform",
        "okhttp-for-host",
        "services",
        "services.accessibility",
        "telephony-common",
        "android.car",
        "android.car.builtin",
    ],
}

java_library_host {
    name: "robolectric-host-android_all",
    static_libs: [
        "robolectric_android-all-device-deps",
        "robolectric_tzdata",
        "robolectric_framework_res",
        "robolectric_framework_raw_res",
    ],
    dist: {
        targets: [
            "sdk",
            "win_sdk",
        ],
        dest: "android-all-robolectric.jar",
    },

    java_resources: [
        // Copy the build.prop
        ":robolectric_build_props",
    ],
    visibility: [
        ":__subpackages__",
        "//prebuilts/misc/common/robolectric",
    ],
}

//#############################################
// Assemble Robolectric_all
//#############################################

java_library_host {
    name: "Robolectric_all",

    static_libs: [
        "Robolectric_shadows_androidx_fragment",
        "Robolectric_shadows_httpclient",
        "Robolectric_shadows_framework",
        "Robolectric_shadows_supportv4",
        "Robolectric_shadows_multidex",
        "Robolectric_robolectric",
        "Robolectric_annotations",
        "Robolectric_resources",
        "Robolectric_shadowapi",
        "Robolectric_sandbox",
        "Robolectric_junit",
        "Robolectric_utils",
        "asm-9.2",
        "junit",
        "asm-tree-9.2",
        "guava",
        "asm-commons-9.2",
        "bouncycastle-unbundled",
        "robolectric-sqlite4java-0.282",
        "hamcrest",
        "hamcrest-library",
        "robolectric-host-androidx-test-runner",
        "robolectric-host-org_apache_http_legacy",
    ],

    java_resource_dirs: [
        "shadows/framework/src/main/resources",
        "src/main/resources",
    ],
}

// Make Robolectric_all available as a target jar
java_host_for_device {
    name: "Robolectric_all-target",
    libs: ["Robolectric_all"],
    visibility: ["//visibility:public"],
}

// Make dependencies available as host jars
java_device_for_host {
    name: "robolectric-host-androidx-test-core",
    libs: ["androidx.test.core"],
}

java_device_for_host {
    name: "robolectric-host-androidx-test-ext-junit",
    libs: ["androidx.test.ext.junit"],
}

java_device_for_host {
    name: "robolectric-host-androidx-test-monitor",
    libs: ["androidx.test.monitor"],
}

java_device_for_host {
    name: "robolectric-host-androidx-test-runner",
    libs: ["androidx.test.runner"],
}

java_device_for_host {
    name: "robolectric-host-androidx",
    libs: ["androidx.fragment_fragment"],
}

java_device_for_host {
    name: "robolectric-host-android-support-v4",
    libs: ["android-support-v4"],
}

java_device_for_host {
    name: "robolectric-host-android-support-multidex",
    libs: ["android-support-multidex"],
}

java_device_for_host {
    name: "robolectric-host-org_apache_http_legacy",
    libs: ["org.apache.http.legacy.stubs"],
}
