// 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.

java_library {
    name: "robolectric_android-all-stub",

    static_libs: [
        "conscrypt",
        "core-libart",
        "ext",
        "framework",
        "icu4j-icudata-jarjar",
        "icu4j-icutzdata-jarjar",
        "ims-common",
        "android.test.base_static",
        "libphonenumber-platform",
        "okhttp",
        "services",
        "services.accessibility",
        "telephony-common",

        "robolectric_tzdata",
        "robolectric_framework_res",
        "robolectric_framework_raw_res",
    ],

    java_resources: [
        // Copy the build.prop
        ":robolectric_build_props",
    ],
    dist: {
        targets: [
            "sdk",
            "win_sdk",
        ],
        dest: "android-all-robolectric.jar",
    }
}

// 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 {
    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 {
    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",
}

// Make robolectric_android-all-stub available as a host jar
java_device_for_host {
    name: "robolectric-host-android_all",
    libs: ["robolectric_android-all-stub"],
}

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

java_library_host {
    name: "Robolectric_all",

    static_libs: [
        "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-6.0",
        "junit",
        "asm-tree-6.0",
        "asm-commons-6.0",
        "bouncycastle-unbundled",
        "robolectric-sqlite4java-0.282",
        "hamcrest",
        "hamcrest-library",
        "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"],
}

// Make dependencies available as host jars
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"],
}

java_device_for_host {
    name: "robolectric-host-monitor-1.0.2-alpha1",
    libs: ["robolectric-monitor-1.0.2-alpha1"],
}
