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