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

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

Merge "Add is MainUser check for HSUM."

parents a1ea042d 8f4c0294
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -203,8 +203,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
        // For now, restrict to debug users.
        return Build.isDebuggable()
                && mDreamSupported
                // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
                && (!mDreamOnlyEnabledForDockUser || mUserTracker.getUserHandle().isSystem());
                && (!mDreamOnlyEnabledForDockUser || mUserTracker.getUserInfo().isMain());
    }

    @VisibleForTesting
@@ -224,7 +223,8 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {

    private ComponentName getActiveDream() {
        try {
            final ComponentName[] dreams = mDreamManager.getDreamComponents();
            final ComponentName[] dreams = mDreamManager.getDreamComponentsForUser(
                                                mUserTracker.getUserId());
            return dreams != null && dreams.length > 0 ? dreams[0] : null;
        } catch (RemoteException e) {
            Log.w(TAG, "Failed to get active dream", e);
+16 −19
Original line number Diff line number Diff line
@@ -29,9 +29,9 @@ import static org.mockito.Mockito.when;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.UserInfo;
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.IDreamManager;
import android.service.quicksettings.Tile;
@@ -123,7 +123,7 @@ public class DreamTileTest extends SysuiTestCase {

        // Should not be available if component is not set
        mSecureSettings.putInt(Settings.Secure.SCREENSAVER_ENABLED, 1);
        when(mDreamManager.getDreamComponents()).thenReturn(null);
        when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId())).thenReturn(null);

        mTestableLooper.processAllMessages();
        assertEquals(Tile.STATE_UNAVAILABLE, mTile.getState().state);
@@ -134,9 +134,8 @@ public class DreamTileTest extends SysuiTestCase {
    public void testInactiveWhenDreaming() throws RemoteException {
        setScreensaverEnabled(true);

        when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
                COLORS_DREAM_COMPONENT_NAME
        });
        when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
             .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
        when(mDreamManager.isDreaming()).thenReturn(false);

        mTile.refreshState();
@@ -148,9 +147,8 @@ public class DreamTileTest extends SysuiTestCase {
    public void testActive() throws RemoteException {
        setScreensaverEnabled(true);

        when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
                COLORS_DREAM_COMPONENT_NAME
        });
        when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
             .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
        when(mDreamManager.isDreaming()).thenReturn(true);

        mTile.refreshState();
@@ -162,9 +160,8 @@ public class DreamTileTest extends SysuiTestCase {
    public void testClick() throws RemoteException {
        // Set the AOSP dream enabled as the base setup.
        setScreensaverEnabled(true);
        when(mDreamManager.getDreamComponents()).thenReturn(new ComponentName[]{
                COLORS_DREAM_COMPONENT_NAME
        });
        when(mDreamManager.getDreamComponentsForUser(mUserTracker.getUserId()))
             .thenReturn(new ComponentName[]{COLORS_DREAM_COMPONENT_NAME});
        when(mDreamManager.isDreaming()).thenReturn(false);

        mTile.refreshState();
@@ -203,21 +200,21 @@ public class DreamTileTest extends SysuiTestCase {

        DreamTile supportedTileAllUsers = constructTileForTest(true, false);

        UserHandle systemUserHandle = mock(UserHandle.class);
        when(systemUserHandle.isSystem()).thenReturn(true);
        UserInfo mainUserInfo = mock(UserInfo.class);
        when(mainUserInfo.isMain()).thenReturn(true);

        UserHandle nonSystemUserHandle = mock(UserHandle.class);
        when(nonSystemUserHandle.isSystem()).thenReturn(false);
        UserInfo nonMainUserInfo = mock(UserInfo.class);
        when(nonMainUserInfo.isMain()).thenReturn(false);

        when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
        when(mUserTracker.getUserInfo()).thenReturn(mainUserInfo);
        assertTrue(supportedTileAllUsers.isAvailable());
        when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
        when(mUserTracker.getUserInfo()).thenReturn(nonMainUserInfo);
        assertTrue(supportedTileAllUsers.isAvailable());

        DreamTile supportedTileOnlySystemUser = constructTileForTest(true, true);
        when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
        when(mUserTracker.getUserInfo()).thenReturn(mainUserInfo);
        assertTrue(supportedTileOnlySystemUser.isAvailable());
        when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
        when(mUserTracker.getUserInfo()).thenReturn(nonMainUserInfo);
        assertFalse(supportedTileOnlySystemUser.isAvailable());
    }

+5 −2
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import com.android.server.FgThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.input.InputManagerInternal;
import com.android.server.pm.UserManagerInternal;
import com.android.server.wm.ActivityInterceptorCallback;
import com.android.server.wm.ActivityTaskManagerInternal;

@@ -639,8 +640,10 @@ public final class DreamManagerService extends SystemService {
    }

    private boolean dreamsEnabledForUser(int userId) {
        // TODO(b/257333623): Support non-system Dock Users in HSUM.
        return !mDreamsOnlyEnabledForDockUser || (userId == UserHandle.USER_SYSTEM);
        if (!mDreamsOnlyEnabledForDockUser) return true;
        if (userId < 0) return false;
        final int mainUserId = LocalServices.getService(UserManagerInternal.class).getMainUserId();
        return userId == mainUserId;
    }

    private ServiceInfo getServiceInfo(ComponentName name) {