summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-08-02 17:04:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-08-02 17:04:44 +0000
commita42b283028660f5e9feb902555e9e76d3104d1f5 (patch)
tree91e52ac911ec8051355512da34897dfb39513edb /src
parent73a0a726a693f1fad04df012bef0ac5c5f56cdea (diff)
parent49f4f03dc8ed3925e80d379634e43eb24eea25b9 (diff)
downloadandroid_packages_apps_Trebuchet-a42b283028660f5e9feb902555e9e76d3104d1f5.tar.gz
android_packages_apps_Trebuchet-a42b283028660f5e9feb902555e9e76d3104d1f5.tar.bz2
android_packages_apps_Trebuchet-a42b283028660f5e9feb902555e9e76d3104d1f5.zip
Merge "Handling IllegalStateException which can be thrown by the system when the user is locked" into ub-launcher3-calgary
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/LauncherModel.java33
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutManager.java10
2 files changed, 29 insertions, 14 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 89a68369b..9fddd3d8d 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -1729,17 +1729,24 @@ public class LauncherModel extends BroadcastReceiver
quietMode.put(serialNo, mUserManager.isQuietModeEnabled(user));
boolean userUnlocked = mUserManager.isUserUnlocked(user);
- unlockedUsers.put(serialNo, userUnlocked);
// We can only query for shortcuts when the user is unlocked.
if (userUnlocked) {
- List<ShortcutInfoCompat> pinnedShortcuts = mDeepShortcutManager
- .queryForPinnedShortcuts(null, user);
- for (ShortcutInfoCompat shortcut : pinnedShortcuts) {
- shortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
- shortcut);
+ List<ShortcutInfoCompat> pinnedShortcuts =
+ mDeepShortcutManager.queryForPinnedShortcuts(null, user);
+ if (mDeepShortcutManager.wasLastCallSuccess()) {
+ for (ShortcutInfoCompat shortcut : pinnedShortcuts) {
+ shortcutKeyToPinnedShortcuts.put(ShortcutKey.fromInfo(shortcut),
+ shortcut);
+ }
+ } else {
+ // Shortcut manager can fail due to some race condition when the
+ // lock state changes too frequently. For the purpose of the loading
+ // shortcuts, consider the user is still locked.
+ userUnlocked = false;
}
}
+ unlockedUsers.put(serialNo, userUnlocked);
}
ShortcutInfo info;
@@ -3383,9 +3390,17 @@ public class LauncherModel extends BroadcastReceiver
HashMap<ShortcutKey, ShortcutInfoCompat> pinnedShortcuts = new HashMap<>();
if (isUserUnlocked) {
- for (ShortcutInfoCompat shortcut :
- mDeepShortcutManager.queryForPinnedShortcuts(null, mUser)) {
- pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut);
+ List<ShortcutInfoCompat> shortcuts =
+ mDeepShortcutManager.queryForPinnedShortcuts(null, mUser);
+ if (mDeepShortcutManager.wasLastCallSuccess()) {
+ for (ShortcutInfoCompat shortcut : shortcuts) {
+ pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut);
+ }
+ } else {
+ // Shortcut manager can fail due to some race condition when the lock state
+ // changes too frequently. For the purpose of the update,
+ // consider it as still locked.
+ isUserUnlocked = false;
}
}
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
index 36bb2b5df..05ab84361 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
@@ -105,7 +105,7 @@ public class DeepShortcutManager {
try {
mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
mWasLastCallSuccess = true;
- } catch (SecurityException e) {
+ } catch (SecurityException|IllegalStateException e) {
Log.w(TAG, "Failed to unpin shortcut", e);
mWasLastCallSuccess = false;
}
@@ -127,7 +127,7 @@ public class DeepShortcutManager {
try {
mLauncherApps.pinShortcuts(packageName, pinnedIds, user.getUser());
mWasLastCallSuccess = true;
- } catch (SecurityException e) {
+ } catch (SecurityException|IllegalStateException e) {
Log.w(TAG, "Failed to pin shortcut", e);
mWasLastCallSuccess = false;
}
@@ -142,7 +142,7 @@ public class DeepShortcutManager {
mLauncherApps.startShortcut(packageName, id, sourceBounds,
startActivityOptions, user.getUser());
mWasLastCallSuccess = true;
- } catch (SecurityException e) {
+ } catch (SecurityException|IllegalStateException e) {
Log.e(TAG, "Failed to start shortcut", e);
mWasLastCallSuccess = false;
}
@@ -157,7 +157,7 @@ public class DeepShortcutManager {
shortcutInfo.getShortcutInfo(), density);
mWasLastCallSuccess = true;
return icon;
- } catch (SecurityException e) {
+ } catch (SecurityException|IllegalStateException e) {
Log.e(TAG, "Failed to get shortcut icon", e);
mWasLastCallSuccess = false;
}
@@ -208,7 +208,7 @@ public class DeepShortcutManager {
try {
shortcutInfos = mLauncherApps.getShortcuts(q, user.getUser());
mWasLastCallSuccess = true;
- } catch (SecurityException e) {
+ } catch (SecurityException|IllegalStateException e) {
Log.e(TAG, "Failed to query for shortcuts", e);
mWasLastCallSuccess = false;
}