From 2ec16b08accd254b6c64f7b632575d07981380f1 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Mon, 1 Aug 2016 17:20:59 +0000 Subject: [PATCH] Revert "LauncherApps should also throw when user is locked" This reverts commit bc4ad85d29cd4490ba71baaad58e2f4d68b7d325. Will retry when the updated launcher is in. Change-Id: I428dc93132615480df70aeca7977089af008c041 --- .../java/android/content/pm/LauncherApps.java | 34 ++++++++++------ .../android/server/pm/ShortcutService.java | 40 +++++++++++-------- 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index 6b23da93bb862..b9b609b5cad41 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -492,7 +492,7 @@ public class LauncherApps { * If the calling launcher application contains pinned shortcuts, they will still work, * even though the caller no longer has the shortcut host permission. * - * @throws IllegalStateException when the user is locked. + *

Returns {@code false} when the user is locked. * * @see ShortcutManager */ @@ -510,12 +510,13 @@ public class LauncherApps { *

Callers must be allowed to access the shortcut information, as defined in {@link * #hasShortcutHostPermission()}. * + *

Returns am empty list when the user is locked, or when the {@code user} user + * is locked or not running. + * * @param query result includes shortcuts matching this query. * @param user The UserHandle of the profile. * * @return the IDs of {@link ShortcutInfo}s that match the query. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @see ShortcutManager */ @@ -555,11 +556,12 @@ public class LauncherApps { *

The calling launcher application must be allowed to access the shortcut information, * as defined in {@link #hasShortcutHostPermission()}. * + *

Call will be ignored when the user is locked, or when the {@code user} user + * is locked or not running. + * * @param packageName The target package name. * @param shortcutIds The IDs of the shortcut to be pinned. * @param user The UserHandle of the profile. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @see ShortcutManager */ @@ -628,12 +630,13 @@ public class LauncherApps { *

The calling launcher application must be allowed to access the shortcut information, * as defined in {@link #hasShortcutHostPermission()}. * + *

Returns {@code null} when the user is locked, or when the user owning the shortcut + * is locked or not running. + * * @param density The preferred density of the icon, zero for default density. Use * density DPI values from {@link DisplayMetrics}. * * @return The drawable associated with the shortcut. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @see ShortcutManager * @see #getShortcutBadgedIconDrawable(ShortcutInfo, int) @@ -678,10 +681,11 @@ public class LauncherApps { *

The calling launcher application must be allowed to access the shortcut information, * as defined in {@link #hasShortcutHostPermission()}. * + *

Returns {@code 0} when the user is locked, or when the user owning the shortcut + * is locked or not running. + * * @param density Optional density for the icon, or 0 to use the default density. Use * @return A badged icon for the shortcut. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @see ShortcutManager * @see #getShortcutIconDrawable(ShortcutInfo, int) @@ -700,13 +704,15 @@ public class LauncherApps { *

The calling launcher application must be allowed to access the shortcut information, * as defined in {@link #hasShortcutHostPermission()}. * + *

Throws {@link android.content.ActivityNotFoundException} + * when the user is locked, or when the {@code user} user + * is locked or not running. + * * @param packageName The target shortcut package name. * @param shortcutId The target shortcut ID. * @param sourceBounds The Rect containing the source bounds of the clicked icon. * @param startActivityOptions Options to pass to startActivity. * @param user The UserHandle of the profile. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g. * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc) @@ -724,11 +730,13 @@ public class LauncherApps { *

The calling launcher application must be allowed to access the shortcut information, * as defined in {@link #hasShortcutHostPermission()}. * + *

Throws {@link android.content.ActivityNotFoundException} + * when the user is locked, or when the user owning the shortcut + * is locked or not running. + * * @param shortcut The target shortcut. * @param sourceBounds The Rect containing the source bounds of the clicked icon. * @param startActivityOptions Options to pass to startActivity. - * @throws IllegalStateException when the user is locked, or when the {@code user} user - * is locked or not running. * * @throws android.content.ActivityNotFoundException failed to start shortcut. (e.g. * the shortcut no longer exists, is disabled, the intent receiver activity doesn't exist, etc) diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java index 02ad7c650e110..d875f1e97cac4 100644 --- a/services/core/java/com/android/server/pm/ShortcutService.java +++ b/services/core/java/com/android/server/pm/ShortcutService.java @@ -2170,9 +2170,9 @@ public class ShortcutService extends IShortcutService.Stub { @Nullable ComponentName componentName, int queryFlags, int userId) { final ArrayList ret = new ArrayList<>(); - - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return ret; + } final boolean cloneKeyFieldOnly = ((queryFlags & ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY) != 0); @@ -2251,8 +2251,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkStringNotEmpty(packageName, "packageName"); Preconditions.checkStringNotEmpty(shortcutId, "shortcutId"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return false; + } synchronized (mLock) { getLauncherShortcutsLocked(callingPackage, userId, launcherUserId) @@ -2270,8 +2271,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkStringNotEmpty(packageName, "packageName"); Preconditions.checkStringNotEmpty(shortcutId, "shortcutId"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return null; + } final ShortcutPackage p = getUserShortcutsLocked(userId) .getPackageShortcutsIfExists(packageName); @@ -2294,8 +2296,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkStringNotEmpty(packageName, "packageName"); Preconditions.checkNotNull(shortcutIds, "shortcutIds"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return; + } synchronized (mLock) { final ShortcutLauncher launcher = @@ -2317,8 +2320,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkStringNotEmpty(packageName, "packageName can't be empty"); Preconditions.checkStringNotEmpty(shortcutId, "shortcutId can't be empty"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return null; + } synchronized (mLock) { getLauncherShortcutsLocked(callingPackage, userId, launcherUserId) @@ -2350,8 +2354,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkNotNull(packageName, "packageName"); Preconditions.checkNotNull(shortcutId, "shortcutId"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return 0; + } synchronized (mLock) { getLauncherShortcutsLocked(callingPackage, userId, launcherUserId) @@ -2377,8 +2382,9 @@ public class ShortcutService extends IShortcutService.Stub { Preconditions.checkNotNull(packageName, "packageName"); Preconditions.checkNotNull(shortcutId, "shortcutId"); - throwIfUserLocked(userId); - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(userId) || !isUserUnlocked(launcherUserId)) { + return null; + } synchronized (mLock) { getLauncherShortcutsLocked(callingPackage, userId, launcherUserId) @@ -2412,7 +2418,9 @@ public class ShortcutService extends IShortcutService.Stub { @Override public boolean hasShortcutHostPermission(int launcherUserId, @NonNull String callingPackage) { - throwIfUserLocked(launcherUserId); + if (!isUserUnlocked(launcherUserId)) { + return false; + } return ShortcutService.this.hasShortcutHostPermission(callingPackage, launcherUserId); } }