diff options
author | Tony Wickham <twickham@google.com> | 2017-03-29 15:30:43 -0700 |
---|---|---|
committer | Tony Wickham <twickham@google.com> | 2017-04-04 14:36:52 -0700 |
commit | 86222d23e28a09a7a26e7a0d4b4830ded2efb384 (patch) | |
tree | e746881bea2f4173b6d4db0b63f195e02db7fe5e /src/com/android/launcher3/WidgetPreviewLoader.java | |
parent | 2f54a1625ae031ffbb2a99a00c7b25de3c677828 (diff) | |
download | android_packages_apps_Trebuchet-86222d23e28a09a7a26e7a0d4b4830ded2efb384.tar.gz android_packages_apps_Trebuchet-86222d23e28a09a7a26e7a0d4b4830ded2efb384.tar.bz2 android_packages_apps_Trebuchet-86222d23e28a09a7a26e7a0d4b4830ded2efb384.zip |
Add support for getting widgets/shortucts for a particular package/user
Bug: 34940468
Bug: 33553066
Change-Id: I5d0131df206c6a13d4227ad28c5b094bbf1343df
Diffstat (limited to 'src/com/android/launcher3/WidgetPreviewLoader.java')
-rw-r--r-- | src/com/android/launcher3/WidgetPreviewLoader.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 49e68d75a..fc3b66887 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -25,6 +25,7 @@ import android.os.AsyncTask; import android.os.CancellationSignal; import android.os.Handler; import android.os.UserHandle; +import android.support.annotation.Nullable; import android.support.v4.graphics.ColorUtils; import android.util.Log; import android.util.LongSparseArray; @@ -36,6 +37,7 @@ import com.android.launcher3.graphics.LauncherIcons; import com.android.launcher3.graphics.ShadowGenerator; import com.android.launcher3.model.WidgetItem; import com.android.launcher3.util.ComponentKey; +import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.SQLiteCacheHelper; import com.android.launcher3.util.Thunk; @@ -170,8 +172,12 @@ public class WidgetPreviewLoader { * 1. Any preview generated for an old package version is removed * 2. Any preview for an absent package is removed * This ensures that we remove entries for packages which changed while the launcher was dead. + * + * @param packageUser if provided, specifies that list only contains previews for the + * given package/user, otherwise the list contains all previews */ - public void removeObsoletePreviews(ArrayList<? extends ComponentKey> list) { + public void removeObsoletePreviews(ArrayList<? extends ComponentKey> list, + @Nullable PackageUserKey packageUser) { Preconditions.assertWorkerThread(); LongSparseArray<HashSet<String>> validPackages = new LongSparseArray<>(); @@ -187,6 +193,8 @@ public class WidgetPreviewLoader { } LongSparseArray<HashSet<String>> packagesToDelete = new LongSparseArray<>(); + long passedUserId = packageUser == null ? 0 + : mUserManager.getSerialNumberForUser(packageUser.mUser); Cursor c = null; try { c = mDb.query( @@ -199,6 +207,12 @@ public class WidgetPreviewLoader { long lastUpdated = c.getLong(2); long version = c.getLong(3); + if (packageUser != null && (!pkg.equals(packageUser.mPackageName) + || userId != passedUserId)) { + // This preview is associated with a different package/user, no need to remove. + continue; + } + HashSet<String> packages = validPackages.get(userId); if (packages != null && packages.contains(pkg)) { long[] versions = getPackageVersion(pkg); |