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

Commit dd96e11e authored by Justin Koh's avatar Justin Koh
Browse files

Update user manager check

UserManager.isSystem was always returning true. Now using user tracker.

Bug: 231588826
Test: updated unit tests.

Change-Id: I8f0e9b0fabc0eeabd638746ec7f541ef58bf351b
parent bc501c5e
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.os.UserManager;
import android.provider.Settings;
import android.service.dreams.IDreamManager;
import android.service.quicksettings.Tile;
@@ -52,6 +51,7 @@ import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SettingObserver;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.SecureSettings;

import javax.inject.Inject;
@@ -66,7 +66,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final SettingObserver mEnabledSettingObserver;
    private final SettingObserver mDreamSettingObserver;
    private final UserManager mUserManager;
    private final UserTracker mUserTracker;
    private final boolean mDreamSupported;
    private final boolean mDreamOnlyEnabledForSystemUser;

@@ -90,7 +90,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
            IDreamManager dreamManager,
            SecureSettings secureSettings,
            BroadcastDispatcher broadcastDispatcher,
            UserManager userManager,
            UserTracker userTracker,
            @Named(DreamModule.DREAM_SUPPORTED) boolean dreamSupported,
            @Named(DreamModule.DREAM_ONLY_ENABLED_FOR_SYSTEM_USER)
                    boolean dreamOnlyEnabledForSystemUser
@@ -113,7 +113,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
                refreshState();
            }
        };
        mUserManager = userManager;
        mUserTracker = userTracker;
        mDreamSupported = dreamSupported;
        mDreamOnlyEnabledForSystemUser = dreamOnlyEnabledForSystemUser;
    }
@@ -194,7 +194,7 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
        // For now, restrict to debug users.
        return Build.isDebuggable()
                && mDreamSupported
                && (!mDreamOnlyEnabledForSystemUser || mUserManager.isSystemUser());
                && (!mDreamOnlyEnabledForSystemUser || mUserTracker.getUserHandle().isSystem());
    }

    @VisibleForTesting
+15 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -27,7 +28,7 @@ import static org.mockito.Mockito.when;
import android.content.ComponentName;
import android.os.Handler;
import android.os.RemoteException;
import android.os.UserManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.IDreamManager;
import android.service.quicksettings.Tile;
@@ -45,6 +46,7 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.FakeSettings;
import com.android.systemui.util.settings.SecureSettings;

@@ -74,7 +76,7 @@ public class DreamTileTest extends SysuiTestCase {
    @Mock
    private BroadcastDispatcher mBroadcastDispatcher;
    @Mock
    private UserManager mUserManager;
    private UserTracker mUserTracker;

    private TestableLooper mTestableLooper;

@@ -196,15 +198,21 @@ public class DreamTileTest extends SysuiTestCase {

        DreamTile supportedTileAllUsers = constructTileForTest(true, false);

        when(mUserManager.isSystemUser()).thenReturn(true);
        UserHandle systemUserHandle = mock(UserHandle.class);
        when(systemUserHandle.isSystem()).thenReturn(true);

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

        when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
        assertTrue(supportedTileAllUsers.isAvailable());
        when(mUserManager.isSystemUser()).thenReturn(false);
        when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
        assertTrue(supportedTileAllUsers.isAvailable());

        DreamTile supportedTileOnlySystemUser = constructTileForTest(true, true);
        when(mUserManager.isSystemUser()).thenReturn(true);
        when(mUserTracker.getUserHandle()).thenReturn(systemUserHandle);
        assertTrue(supportedTileOnlySystemUser.isAvailable());
        when(mUserManager.isSystemUser()).thenReturn(false);
        when(mUserTracker.getUserHandle()).thenReturn(nonSystemUserHandle);
        assertFalse(supportedTileOnlySystemUser.isAvailable());
    }

@@ -227,7 +235,7 @@ public class DreamTileTest extends SysuiTestCase {
                mDreamManager,
                mSecureSettings,
                mBroadcastDispatcher,
                mUserManager,
                mUserTracker,
                dreamSupported, dreamOnlyEnabledForSystemUser);
    }
}