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

// Build rules to build shim apks.

//##########################################################
// Variant: Privileged app upgrade

package {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_base_license"],
}

android_app {
    name: "CtsShimPrivUpgrade",
    // this needs to be a privileged application
    privileged: true,

    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },

    manifest: "shim_priv_upgrade/AndroidManifest.xml",

    compile_multilib: "both",
    jni_libs: ["libshim_jni"],
    // Explicitly uncompress native libs rather than letting the build system doing it and destroy the
    // v2/v3 signature.
    use_embedded_native_libs: true,

    uses_libs: ["android.test.runner"],

    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v2_apk_in_apex_upgrades",
    ],
}

genrule {
    name: "generate_priv_manifest",
    srcs: [
        "shim_priv/AndroidManifest.xml",
        ":CtsShimPrivUpgrade",
    ],
    out: ["AndroidManifest.xml"],
    cmd: "sed -e s/__HASH__/`sha512sum -b $(location :CtsShimPrivUpgrade) | cut -d' ' -f1`/ $(location shim_priv/AndroidManifest.xml) > $(out)",
}

//##########################################################
// Variant: Privileged app

android_app {
    name: "CtsShimPriv",
    // this needs to be a privileged application
    privileged: true,

    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },

    manifest: ":generate_priv_manifest",

    compile_multilib: "both",
    jni_libs: ["libshim_jni"],
    // Explicitly uncompress native libs rather than letting the build system doing it and destroy the
    // v2/v3 signature.
    use_embedded_native_libs: true,
    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v1",
        "com.android.apex.cts.shim.v2",
        "com.android.apex.cts.shim.v2_apk_in_apex_upgrades",
        "com.android.apex.cts.shim.v2_legacy",
        "com.android.apex.cts.shim.v2_sdk_target_p",
        "com.android.apex.cts.shim.v2_unsigned_payload",
        "com.android.apex.cts.shim.v3",
    ],
    min_sdk_version: "24",
}

//##########################################################
// Variant: Privileged app upgrade w/ the wrong SHA

android_app {
    name: "CtsShimPrivUpgradeWrongSHA",
    // this needs to be a privileged application
    privileged: true,

    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },
    // anything to make this package's SHA different from CtsShimPrivUpgrade
    aaptflags: [
        "--version-name",
        "WrongSHA",
    ],

    manifest: "shim_priv_upgrade/AndroidManifest.xml",

    compile_multilib: "both",
    jni_libs: ["libshim_jni"],
    // Explicitly uncompress native libs rather than letting the build system doing it and destroy the
    // v2/v3 signature.
    use_embedded_native_libs: true,

    uses_libs: ["android.test.runner"],
}

//##########################################################
// Variant: Non Privileged app upgrade which is malformed
android_app {
    name: "CtsShimTargetPSdk",
    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },
    manifest: "shim/AndroidManifestTargetPSdk.xml",
    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v2_apk_in_apex_sdk_target_p",
    ],
}

//##########################################################
// Variant: System app upgrade

android_app {
    name: "CtsShimUpgrade",

    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },

    manifest: "shim/AndroidManifestUpgrade.xml",
    min_sdk_version: "24",
}

genrule {
    name: "generate_shim_manifest",
    srcs: [
        "shim/AndroidManifest.xml",
        ":CtsShimUpgrade",
    ],
    out: ["AndroidManifest.xml"],
    cmd: "sed -e s/__HASH__/`sha512sum -b $(location :CtsShimUpgrade) | cut -d' ' -f1`/ $(location shim/AndroidManifest.xml) > $(out)",
}

//##########################################################
// Variant: System app

android_app {
    name: "CtsShim",

    sdk_version: "current",
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },

    manifest: ":generate_shim_manifest",
    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v1",
        "com.android.apex.cts.shim.v2",
        "com.android.apex.cts.shim.v2_apk_in_apex_upgrades",
        "com.android.apex.cts.shim.v2_legacy",
        "com.android.apex.cts.shim.v2_sdk_target_p",
        "com.android.apex.cts.shim.v2_unsigned_payload",
        "com.android.apex.cts.shim.v3",
    ],
    min_sdk_version: "24",
}

//##########################################################
// Variant: Add apk to an apex
android_app {
    name: "CtsShimAddApkToApex",
    sdk_version: "current",
    srcs: ["shim_add_apk_to_apex/src/android/addapktoapex/app/AddApkToApexDeviceActivity.java"],
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },
    manifest: "shim_add_apk_to_apex/AndroidManifestAddApkToApex.xml",
    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v2_add_apk_to_apex",
    ],
}
