Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10bcc603 authored by Arpan's avatar Arpan
Browse files

Add Instant App Capability Behind Flag

This sets up the instant app capability behind our new instant app
flag. This means when the flag is false, credman will not work with
instant apps, as it will utilize our older flow.

Bug: 302190269
Test: Build test
Change-Id: I254140d3de6268009190326a362658bb6a9cb4b3
parent b0c9ccf0
Loading
Loading
Loading
Loading
+25 −5
Original line number Original line Diff line number Diff line
@@ -61,14 +61,20 @@ import androidx.credentials.provider.PasswordCredentialEntry
import androidx.credentials.provider.PublicKeyCredentialEntry
import androidx.credentials.provider.PublicKeyCredentialEntry
import androidx.credentials.provider.RemoteEntry
import androidx.credentials.provider.RemoteEntry
import org.json.JSONObject
import org.json.JSONObject
import android.credentials.flags.Flags
import java.time.Instant
import java.time.Instant



fun getAppLabel(
fun getAppLabel(
    pm: PackageManager,
    pm: PackageManager,
    appPackageName: String
    appPackageName: String
): String? {
): String? {
    return try {
    return try {
        val pkgInfo = getPackageInfo(pm, appPackageName)
        val pkgInfo = if (Flags.instantAppsEnabled()) {
            getPackageInfo(pm, appPackageName)
        } else {
            pm.getPackageInfo(appPackageName, PackageManager.PackageInfoFlags.of(0))
        }
        val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
        val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
        applicationInfo.loadSafeLabel(
        applicationInfo.loadSafeLabel(
            pm, 0f,
            pm, 0f,
@@ -91,7 +97,14 @@ private fun getServiceLabelAndIcon(
        // Test data has only package name not component name.
        // Test data has only package name not component name.
        // For test data usage only.
        // For test data usage only.
        try {
        try {
            val pkgInfo = getPackageInfo(pm, providerFlattenedComponentName)
            val pkgInfo = if (Flags.instantAppsEnabled()) {
                getPackageInfo(pm, providerFlattenedComponentName)
            } else {
                pm.getPackageInfo(
                        providerFlattenedComponentName,
                        PackageManager.PackageInfoFlags.of(0)
                )
            }
            val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
            val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
            providerLabel =
            providerLabel =
                applicationInfo.loadSafeLabel(
                applicationInfo.loadSafeLabel(
@@ -115,7 +128,14 @@ private fun getServiceLabelAndIcon(
            // Added for mdoc use case where the provider may not need to register a service and
            // Added for mdoc use case where the provider may not need to register a service and
            // instead only relies on the registration api.
            // instead only relies on the registration api.
            try {
            try {
                val pkgInfo = getPackageInfo(pm, providerFlattenedComponentName)
                val pkgInfo = if (Flags.instantAppsEnabled()) {
                    getPackageInfo(pm, providerFlattenedComponentName)
                } else {
                    pm.getPackageInfo(
                            component.packageName,
                            PackageManager.PackageInfoFlags.of(0)
                    )
                }
                val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
                val applicationInfo = checkNotNull(pkgInfo.applicationInfo)
                providerLabel =
                providerLabel =
                    applicationInfo.loadSafeLabel(
                    applicationInfo.loadSafeLabel(
@@ -143,12 +163,12 @@ private fun getPackageInfo(
    pm: PackageManager,
    pm: PackageManager,
    packageName: String
    packageName: String
): PackageInfo {
): PackageInfo {
    val flags = PackageManager.MATCH_INSTANT
    val packageManagerFlags = PackageManager.MATCH_INSTANT


    return pm.getPackageInfo(
    return pm.getPackageInfo(
       packageName,
       packageName,
       PackageManager.PackageInfoFlags.of(
       PackageManager.PackageInfoFlags.of(
               (flags).toLong())
               (packageManagerFlags).toLong())
    )
    )
}
}