summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/AppErrors.java24
-rw-r--r--services/core/java/com/android/server/pm/UserManagerInternal.java11
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java11
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java21
4 files changed, 25 insertions, 42 deletions
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index ee7033e4a437..7527ddbfb394 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -65,7 +65,6 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.server.LocalServices;
import com.android.server.PackageWatchdog;
import com.android.server.pm.UserManagerInternal;
-import com.android.server.pm.UserManagerService;
import com.android.server.usage.AppStandbyInternal;
import com.android.server.wm.WindowProcessController;
@@ -1027,7 +1026,8 @@ class AppErrors {
isBackground &= (userId != profileId);
}
int visibleUserId = getVisibleUserId(userId);
- boolean isVisibleUser = isVisibleBackgroundUser(visibleUserId);
+ boolean isVisibleUser = LocalServices.getService(UserManagerInternal.class)
+ .isVisibleBackgroundFullUser(visibleUserId);
boolean showBackground = Settings.Secure.getIntForUser(mContext.getContentResolver(),
Settings.Secure.ANR_SHOW_BACKGROUND, 0, visibleUserId) != 0;
if (isBackground && !showBackground && !isVisibleUser) {
@@ -1183,26 +1183,6 @@ class AppErrors {
}
/**
- * Checks if the given user is a visible background user, which is a full, background user
- * assigned to secondary displays on the devices that have
- * {@link UserManager#isVisibleBackgroundUsersEnabled()
- * config_multiuserVisibleBackgroundUsers enabled} (for example, passenger users on
- * automotive builds, using the display associated with their seats).
- *
- * @see UserManager#isUserVisible()
- */
- private boolean isVisibleBackgroundUser(int userId) {
- if (!UserManager.isVisibleBackgroundUsersEnabled()) {
- return false;
- }
- boolean isForeground = mService.mUserController.getCurrentUserId() == userId;
- boolean isProfile = UserManagerService.getInstance().isProfile(userId);
- boolean isVisible = LocalServices.getService(UserManagerInternal.class)
- .isUserVisible(userId);
- return isVisible && !isForeground && !isProfile;
- }
-
- /**
* Information about a process that is currently marked as bad.
*/
static final class BadProcessInfo {
diff --git a/services/core/java/com/android/server/pm/UserManagerInternal.java b/services/core/java/com/android/server/pm/UserManagerInternal.java
index 0e7ce2efc8b8..14b0fc81fdd2 100644
--- a/services/core/java/com/android/server/pm/UserManagerInternal.java
+++ b/services/core/java/com/android/server/pm/UserManagerInternal.java
@@ -497,6 +497,17 @@ public abstract class UserManagerInternal {
public abstract boolean isUserVisible(@UserIdInt int userId, int displayId);
/**
+ * Checks if the given user is a visible background full user, which is a full background user
+ * assigned to secondary displays on the devices that have
+ * {@link UserManager#isVisibleBackgroundUsersEnabled()
+ * config_multiuserVisibleBackgroundUsers enabled} (for example, passenger users on
+ * automotive builds, using the display associated with their seats).
+ *
+ * @see UserManager#isUserVisible()
+ */
+ public abstract boolean isVisibleBackgroundFullUser(@UserIdInt int userId);
+
+ /**
* Returns the main display id assigned to the user, or {@code Display.INVALID_DISPLAY} if the
* user is not assigned to any main display.
*
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index dde9943ccd7b..c902fb26495a 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -7927,6 +7927,17 @@ public class UserManagerService extends IUserManager.Stub {
}
@Override
+ public boolean isVisibleBackgroundFullUser(@UserIdInt int userId) {
+ if (!UserManager.isVisibleBackgroundUsersEnabled()) {
+ return false;
+ }
+ boolean isForeground = userId == getCurrentUserId();
+ boolean isProfile = isProfileUnchecked(userId);
+ boolean isVisible = isUserVisible(userId);
+ return isVisible && !isForeground && !isProfile;
+ }
+
+ @Override
public int getMainDisplayAssignedToUser(@UserIdInt int userId) {
return mUserVisibilityMediator.getMainDisplayAssignedToUser(userId);
}
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 1c14c5dbc43a..9f3bbd17bd40 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -7175,25 +7175,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
/**
- * Checks if the given user is a visible background user, which is a full, background user
- * assigned to secondary displays on the devices that have
- * {@link UserManager#isVisibleBackgroundUsersEnabled()
- * config_multiuserVisibleBackgroundUsers enabled} (for example, passenger users on
- * automotive builds, using the display associated with their seats).
- *
- * @see UserManager#isUserVisible()
- */
- private boolean isVisibleBackgroundUser(int userId) {
- if (!UserManager.isVisibleBackgroundUsersEnabled()) {
- return false;
- }
- boolean isForeground = getCurrentUserId() == userId;
- boolean isProfile = getUserManager().isProfile(userId);
- boolean isVisible = mWindowManager.mUmInternal.isUserVisible(userId);
- return isVisible && !isForeground && !isProfile;
- }
-
- /**
* In a car environment, {@link ActivityTaskManagerService#mShowDialogs} is always set to
* {@code false} from {@link ActivityTaskManagerService#updateShouldShowDialogsLocked}
* because its UI mode is {@link Configuration#UI_MODE_TYPE_CAR}. Thus, error dialogs are
@@ -7208,7 +7189,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
* @see ActivityTaskManagerService#updateShouldShowDialogsLocked
*/
private boolean shouldShowDialogsForVisibleBackgroundUserLocked(int userId) {
- if (!isVisibleBackgroundUser(userId)) {
+ if (!mWindowManager.mUmInternal.isVisibleBackgroundFullUser(userId)) {
return false;
}
final int displayId = mWindowManager.mUmInternal.getMainDisplayAssignedToUser(userId);