From c1322b6ac8677582355e700180ab554225f63952 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 16 Sep 2019 21:38:28 -0700 Subject: Key by both package and user for list of active install sessions. This fixes the bug where items are left on the home screen for the wrong user. Bug: 139281702 Change-Id: I03c31bb308fc496b9fc633c2fde23ae4568f8c44 --- .../android/launcher3/compat/PackageInstallerCompat.java | 14 ++++++++------ .../android/launcher3/compat/PackageInstallerCompatVL.java | 7 ++++--- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'src/com/android/launcher3/compat') diff --git a/src/com/android/launcher3/compat/PackageInstallerCompat.java b/src/com/android/launcher3/compat/PackageInstallerCompat.java index 11cb1f88d..55df98b48 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompat.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompat.java @@ -19,6 +19,7 @@ package com.android.launcher3.compat; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageInstaller; +import android.content.pm.PackageInstaller.SessionInfo; import android.os.Process; import android.os.UserHandle; @@ -29,6 +30,7 @@ import java.util.List; import androidx.annotation.NonNull; import com.android.launcher3.Utilities; +import com.android.launcher3.util.PackageUserKey; public abstract class PackageInstallerCompat { @@ -52,19 +54,19 @@ public abstract class PackageInstallerCompat { } } - public static UserHandle getUserHandle(PackageInstaller.SessionInfo info) { + public static UserHandle getUserHandle(SessionInfo info) { return Utilities.ATLEAST_Q ? info.getUser() : Process.myUserHandle(); } /** * @return a map of active installs to their progress */ - public abstract HashMap updateAndGetActiveSessionCache(); + public abstract HashMap updateAndGetActiveSessionCache(); /** * @return an active SessionInfo for {@param pkg} or null if none exists. */ - public abstract PackageInstaller.SessionInfo getActiveSessionInfo(UserHandle user, String pkg); + public abstract SessionInfo getActiveSessionInfo(UserHandle user, String pkg); public abstract void onStop(); @@ -75,7 +77,7 @@ public abstract class PackageInstallerCompat { public final int progress; public final UserHandle user; - private PackageInstallInfo(@NonNull PackageInstaller.SessionInfo info) { + private PackageInstallInfo(@NonNull SessionInfo info) { this.state = STATUS_INSTALLING; this.packageName = info.getAppPackageName(); this.componentName = new ComponentName(packageName, ""); @@ -91,7 +93,7 @@ public abstract class PackageInstallerCompat { this.user = user; } - public static PackageInstallInfo fromInstallingState(PackageInstaller.SessionInfo info) { + public static PackageInstallInfo fromInstallingState(SessionInfo info) { return new PackageInstallInfo(info); } @@ -101,7 +103,7 @@ public abstract class PackageInstallerCompat { } - public abstract List getAllVerifiedSessions(); + public abstract List getAllVerifiedSessions(); /** * Returns true if a promise icon was already added to the home screen for {@param sessionId}. diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java index ee9da7372..879d963c7 100644 --- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java +++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java @@ -90,12 +90,13 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat { } @Override - public HashMap updateAndGetActiveSessionCache() { - HashMap activePackages = new HashMap<>(); + public HashMap updateAndGetActiveSessionCache() { + HashMap activePackages = new HashMap<>(); for (SessionInfo info : getAllVerifiedSessions()) { addSessionInfoToCache(info, getUserHandle(info)); if (info.getAppPackageName() != null) { - activePackages.put(info.getAppPackageName(), info); + activePackages.put(new PackageUserKey(info.getAppPackageName(), + getUserHandle(info)), info); mActiveSessions.put(info.getSessionId(), new PackageUserKey(info.getAppPackageName(), getUserHandle(info))); } -- cgit v1.2.3