Merge "Abandon in-flight app-search session when user stops" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-03-25 06:10:10 +00:00
committed by Android (Google) Code Review
3 changed files with 9 additions and 1 deletions

View File

@@ -2407,6 +2407,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);

View File

@@ -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;

View File

@@ -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 -> {