Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71fd373f authored by Victor Truong's avatar Victor Truong Committed by Android (Google) Code Review
Browse files

Merge "Replace SystemUser checks with MainUser."

parents 376bb8d6 f3c9a09c
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1277,4 +1277,16 @@ public final class Utils extends com.android.settingslib.Utils {
        }
        return -1;
    }

    /**
     * Returns if the current user is able to use Dreams.
     */
    public static boolean canCurrentUserDream(Context context) {
        final UserHandle mainUser = context.getSystemService(UserManager.class).getMainUser();
        if (mainUser == null) {
            return false;
        }
        return context.createContextAsUser(mainUser, 0).getSystemService(UserManager.class)
               .isUserForeground();
    }
}
+2 −8
Original line number Diff line number Diff line
@@ -17,9 +17,9 @@
package com.android.settings.communal;

import android.content.Context;
import android.os.UserManager;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;

/**
@@ -32,14 +32,8 @@ public class CommunalPreferenceController extends BasePreferenceController {

    @Override
    public int getAvailabilityStatus() {
        // TODO(b/257333623): Allow the communal user to be non-SystemUser user in HSUM.
        return (mContext.getResources().getBoolean(R.bool.config_show_communal_settings)
                && isSystemUser())
                && Utils.canCurrentUserDream(mContext))
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    private boolean isSystemUser() {
        final UserManager userManager = mContext.getSystemService(UserManager.class);
        return userManager != null && userManager.isSystemUser();
    }
}
+3 −4
Original line number Diff line number Diff line
@@ -14,9 +14,9 @@
package com.android.settings.display;

import android.content.Context;
import android.os.UserManager;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dream.DreamSettings;
@@ -39,9 +39,8 @@ public class ScreenSaverPreferenceController extends BasePreferenceController im
                com.android.internal.R.bool.config_dreamsSupported);
        final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser);
        final UserManager userManager = mContext.getSystemService(UserManager.class);
        // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
        return (dreamsSupported && (!dreamsOnlyEnabledForDockUser || userManager.isMainUser()))
        return (dreamsSupported && (!dreamsOnlyEnabledForDockUser
                || Utils.canCurrentUserDream(mContext)))
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

+2 −3
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.provider.Settings;

import androidx.preference.PreferenceScreen;

import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;

import java.util.Arrays;
@@ -67,9 +68,7 @@ public class TimeoutToDockUserPreferenceController extends BasePreferenceControl
            return CONDITIONALLY_UNAVAILABLE;
        }

        // Is currently user zero. Only non user zero can have this setting.
        // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
        if (UserHandle.myUserId() == UserHandle.USER_SYSTEM) {
        if (Utils.canCurrentUserDream(mContext)) {
            return DISABLED_FOR_USER;
        }

+40 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.net.LinkProperties;
import android.net.Network;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.storage.DiskInfo;
import android.os.storage.StorageManager;
@@ -299,4 +300,43 @@ public class UtilsTest {

        assertThat(Utils.isSettingsIntelligence(mContext)).isFalse();
    }

    @Test
    public void canCurrentUserDream_isMainUser_returnTrue() {
        Context mockContext = mock(Context.class);
        UserManager mockUserManager = mock(UserManager.class);

        when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);

        // mock MainUser
        UserHandle mainUser = new UserHandle(10);
        when(mockUserManager.getMainUser()).thenReturn(mainUser);
        when(mockUserManager.isUserForeground()).thenReturn(true);

        when(mockContext.createContextAsUser(mainUser, 0)).thenReturn(mockContext);

        assertThat(Utils.canCurrentUserDream(mockContext)).isTrue();
    }

    @Test
    public void canCurrentUserDream_nullMainUser_returnFalse() {
        Context mockContext = mock(Context.class);
        UserManager mockUserManager = mock(UserManager.class);

        when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);
        when(mockUserManager.getMainUser()).thenReturn(null);

        assertThat(Utils.canCurrentUserDream(mockContext)).isFalse();
    }

    @Test
    public void canCurrentUserDream_notMainUser_returnFalse() {
        Context mockContext = mock(Context.class);
        UserManager mockUserManager = mock(UserManager.class);

        when(mockContext.getSystemService(UserManager.class)).thenReturn(mockUserManager);
        when(mockUserManager.isUserForeground()).thenReturn(false);

        assertThat(Utils.canCurrentUserDream(mockContext)).isFalse();
    }
}
Loading