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

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

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_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"],

    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

android_app {
    name: "CtsShim",

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

    manifest: "shim/AndroidManifest.xml",
    apex_available: [
        "//apex_available:platform",
        "com.android.apex.cts.shim.v1",
        "com.android.apex.cts.shim.v2",
        "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",
}
