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

Commit fabffe2e authored by Nate Myren's avatar Nate Myren
Browse files

Do not parallelize user sensitive flag updates

Do not parallelize the updating of user sensitive flag updates, check flags
before updating, and add temporary logs to loading of large LiveDatas.
Test: manual
Bug: 154796729
Bug: 153603849

Change-Id: I3d82240abcaa6ed185e4ee378bbad18ebd4b8567
parent 1e234767
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.permissioncontroller.permission.data

import android.app.Application
import android.content.pm.PermissionInfo
import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.utils.Utils

@@ -32,6 +33,9 @@ object CustomPermGroupNamesLiveData : SmartUpdateMediatorLiveData<List<String>>(
    private val packagesLiveData = AllPackageInfosLiveData

    init {
        // TODO ntmyren: remove once b/154796729 is fixed
        Log.i("CustomPermGroupNames", "observing UserPackageInfoLiveData for all " +
            "users in CustomPermGroupNamesLiveData")
        addSource(packagesLiveData) {
            updateIfActive()
        }
+3 −0
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ object FullStoragePermissionAppsLiveData :
        addSource(standardPermGroupsPackagesLiveData) {
            updateAsync()
        }
        addSource(AllPackageInfosLiveData) {
            updateAsync()
        }
    }

    override suspend fun loadDataAndPostValue(job: Job) {
+3 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.permissioncontroller.permission.data
import android.content.Intent
import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE
import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE
import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import kotlinx.coroutines.Job

@@ -32,6 +33,8 @@ object LauncherPackagesLiveData : SmartAsyncMediatorLiveData<Set<String>>(),
        .addCategory(Intent.CATEGORY_LAUNCHER)

    override suspend fun loadDataAndPostValue(job: Job) {
        // TODO ntmyren: remove once b/154796729 is fixed
        Log.i("LancherPackagesLiveData", "updating LauncherPackageLiveData")
        val launcherPkgs = mutableSetOf<String>()
        for (info in PermissionControllerApplication.get().packageManager.queryIntentActivities(
            LAUNCHER_INTENT, MATCH_DIRECT_BOOT_AWARE or MATCH_DIRECT_BOOT_UNAWARE)) {
+4 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.content.pm.PackageManager.GET_PERMISSIONS
import android.content.pm.PackageManager.MATCH_FACTORY_ONLY
import android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES
import android.os.UserHandle
import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import kotlinx.coroutines.Job
@@ -44,6 +45,9 @@ class PreinstalledUserPackageInfosLiveData private constructor(
        if (job.isCancelled) {
            return
        }
        // TODO ntmyren: remove once b/154796729 is fixed
        Log.i("PreinstalledUserPackageInfos", "updating PreinstalledUserPackageInfosLiveData for " +
            "user ${user.identifier}")
        val packageInfos = app.applicationContext.packageManager
                .getInstalledPackagesAsUser(GET_PERMISSIONS or MATCH_UNINSTALLED_PACKAGES
                        or MATCH_FACTORY_ONLY, user.identifier)
+4 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.Application
import android.content.pm.PackageManager.GET_PERMISSIONS
import android.content.pm.PackageManager.MATCH_ALL
import android.os.UserHandle
import android.util.Log
import com.android.permissioncontroller.PermissionControllerApplication
import com.android.permissioncontroller.permission.model.livedatatypes.LightPackageInfo
import kotlinx.coroutines.Job
@@ -58,6 +59,9 @@ class UserPackageInfosLiveData private constructor(
        if (job.isCancelled) {
            return
        }
        // TODO ntmyren: remove once b/154796729 is fixed
        Log.i("UserPackageInfos", "updating UserPackageInfosLiveData for user " +
            "${user.identifier}")
        val packageInfos = app.applicationContext.packageManager
            .getInstalledPackagesAsUser(GET_PERMISSIONS or MATCH_ALL, user.identifier)
        postValue(packageInfos.map { packageInfo -> LightPackageInfo(packageInfo) })
Loading