Merge "Temporary fix on isUserVisibleOnDisplay(userId, displayId)."

This commit is contained in:
Felipe Leme
2022-09-03 00:12:47 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 0 deletions

View File

@@ -329,6 +329,12 @@ public abstract class UserManagerInternal {
*/
public abstract void unassignUserFromDisplay(@UserIdInt int userId);
/**
* Returns {@code true} if the user is visible (as defined by
* {@link UserManager#isUserVisible()}.
*/
public abstract boolean isUserVisible(@UserIdInt int userId);
/**
* Returns {@code true} if the user is visible (as defined by
* {@link UserManager#isUserVisible()} in the given display.

View File

@@ -1770,6 +1770,13 @@ public class UserManagerService extends IUserManager.Stub {
// TODO(b/239982558): try to merge with isUserVisibleUnchecked() (once both are unit tested)
boolean isUserVisibleOnDisplay(@UserIdInt int userId, int displayId) {
// TODO(b/244644281): temporary workaround to let WM use this API without breaking current
// behavior (otherwise current user / profiles wouldn't be able to launch activities on
// other non-passenger displays, like cluster, display, or virtual displays)
if (isCurrentUserOrRunningProfileOfCurrentUser(userId)) {
return true;
}
if (displayId == Display.DEFAULT_DISPLAY) {
return isCurrentUserOrRunningProfileOfCurrentUser(userId);
}
@@ -6727,6 +6734,11 @@ public class UserManagerService extends IUserManager.Stub {
}
}
@Override
public boolean isUserVisible(int userId) {
return isUserVisibleUnchecked(userId);
}
@Override
public boolean isUserVisible(int userId, int displayId) {
return isUserVisibleOnDisplay(userId, displayId);