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

Commit 9e651d98 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Retrieve direct boot aware activities." into rvc-dev am: dc539b65 am: 2efe2260

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11881554

Change-Id: I5d675d5c9e840f8355716ec4f70c8aebb6f81374
parents 26b3368a 2efe2260
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -93,7 +93,6 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings.Global;
import android.telephony.TelephonyManager;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.KeyValueListParser;
import android.util.Slog;
@@ -205,6 +204,10 @@ public class AppStandbyController implements AppStandbyInternal {
     */
    private static final long WAIT_FOR_ADMIN_DATA_TIMEOUT_MS = 10_000;

    private static final int HEADLESS_APP_CHECK_FLAGS =
            PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
                    | PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS;

    // To name the lock for stack traces
    static class Lock {}

@@ -234,7 +237,7 @@ public class AppStandbyController implements AppStandbyInternal {
     * disabled). Presence in this map indicates that the app is a headless system app.
     */
    @GuardedBy("mHeadlessSystemApps")
    private final ArrayMap<String, Boolean> mHeadlessSystemApps = new ArrayMap<>();
    private final ArraySet<String> mHeadlessSystemApps = new ArraySet<>();

    private final CountDownLatch mAdminDataAvailableLatch = new CountDownLatch(1);

@@ -1123,7 +1126,7 @@ public class AppStandbyController implements AppStandbyInternal {

    private boolean isHeadlessSystemApp(String packageName) {
        synchronized (mHeadlessSystemApps) {
            return mHeadlessSystemApps.containsKey(packageName);
            return mHeadlessSystemApps.contains(packageName);
        }
    }

@@ -1695,9 +1698,8 @@ public class AppStandbyController implements AppStandbyInternal {
            return;
        }
        try {
            PackageInfo pi = mPackageManager.getPackageInfoAsUser(packageName,
                    PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
                    userId);
            PackageInfo pi = mPackageManager.getPackageInfoAsUser(
                    packageName, HEADLESS_APP_CHECK_FLAGS, userId);
            evaluateSystemAppException(pi);
        } catch (PackageManager.NameNotFoundException e) {
            synchronized (mHeadlessSystemApps) {
@@ -1709,15 +1711,16 @@ public class AppStandbyController implements AppStandbyInternal {
    /** Returns true if the exception status changed. */
    private boolean evaluateSystemAppException(@Nullable PackageInfo pkgInfo) {
        if (pkgInfo == null || pkgInfo.applicationInfo == null
                || !pkgInfo.applicationInfo.isSystemApp()) {
                || (!pkgInfo.applicationInfo.isSystemApp()
                        && !pkgInfo.applicationInfo.isUpdatedSystemApp())) {
            return false;
        }
        synchronized (mHeadlessSystemApps) {
            if (pkgInfo.activities == null || pkgInfo.activities.length == 0) {
                // Headless system app.
                return mHeadlessSystemApps.put(pkgInfo.packageName, true) == null;
                return mHeadlessSystemApps.add(pkgInfo.packageName);
            } else {
                return mHeadlessSystemApps.remove(pkgInfo.packageName) != null;
                return mHeadlessSystemApps.remove(pkgInfo.packageName);
            }
        }
    }
@@ -1758,8 +1761,7 @@ public class AppStandbyController implements AppStandbyInternal {
    private void loadHeadlessSystemAppCache() {
        Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
        final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
                PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
                UserHandle.USER_SYSTEM);
                HEADLESS_APP_CHECK_FLAGS, UserHandle.USER_SYSTEM);
        final int packageCount = packages.size();
        for (int i = 0; i < packageCount; i++) {
            PackageInfo pkgInfo = packages.get(i);
@@ -1868,7 +1870,7 @@ public class AppStandbyController implements AppStandbyInternal {
        synchronized (mHeadlessSystemApps) {
            for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
                pw.print("  ");
                pw.print(mHeadlessSystemApps.keyAt(i));
                pw.print(mHeadlessSystemApps.valueAt(i));
                pw.println(",");
            }
        }