Abandon in-flight app-search session when user stops
This is an attempt to fix an issue observed in automation test where when user is stopeed immediately after it started, ShortcutManager is still processing the unlock event which eventually leads to error in creating folder for a stopped user in icing. Bug: 183618378 Test: To be verified in TreeHugger Change-Id: I7ae541edc0b9724b8dc7885b70f4f754c2e6da2c
This commit is contained in:
@@ -2408,6 +2408,8 @@ class ShortcutPackage extends ShortcutPackageItem {
|
||||
mAppSearchSession = session;
|
||||
return cb.apply(mAppSearchSession);
|
||||
} catch (Exception e) {
|
||||
Slog.e(TAG, "Failed to initiate app search for shortcut package "
|
||||
+ getPackageName() + " user " + mShortcutUser.getUserId(), e);
|
||||
return AndroidFuture.completedFuture(null);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(callingIdentity);
|
||||
|
||||
@@ -342,7 +342,7 @@ public class ShortcutService extends IShortcutService.Stub {
|
||||
|
||||
private final IPackageManager mIPackageManager;
|
||||
private final PackageManagerInternal mPackageManagerInternal;
|
||||
private final UserManagerInternal mUserManagerInternal;
|
||||
final UserManagerInternal mUserManagerInternal;
|
||||
private final UsageStatsManagerInternal mUsageStatsManagerInternal;
|
||||
private final ActivityManagerInternal mActivityManagerInternal;
|
||||
private final IUriGrantsManager mUriGrantsManager;
|
||||
|
||||
@@ -722,6 +722,12 @@ class ShortcutUser {
|
||||
future.completeExceptionally(new RuntimeException("app search manager is null"));
|
||||
return future;
|
||||
}
|
||||
if (!mService.mUserManagerInternal.isUserUnlockingOrUnlocked(getUserId())) {
|
||||
// In rare cases the user might be stopped immediate after it started, in these cases
|
||||
// any on-going session will need to be abandoned.
|
||||
future.completeExceptionally(new RuntimeException("User " + getUserId() + " is "));
|
||||
return future;
|
||||
}
|
||||
final long callingIdentity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
mAppSearchManager.createSearchSession(searchContext, mExecutor, result -> {
|
||||
|
||||
Reference in New Issue
Block a user