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

Commit 40d7529f authored by Ale Nijamkin's avatar Ale Nijamkin Committed by Android (Google) Code Review
Browse files

Merge "Fixes SecurityException when switching out of Guest user" into main

parents 6950c7cc 500edc9e
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -67,8 +67,10 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
    private static final String LOG_TAG = "QSDream";
    private final IDreamManager mDreamManager;
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final UserSettingObserver mEnabledSettingObserver;
    private final UserSettingObserver mDreamSettingObserver;
    @VisibleForTesting
    final UserSettingObserver mEnabledSettingObserver;
    @VisibleForTesting
    final UserSettingObserver mDreamSettingObserver;
    private final UserTracker mUserTracker;
    private final boolean mDreamSupported;
    private final boolean mDreamOnlyEnabledForDockUser;
@@ -180,6 +182,13 @@ public class DreamTile extends QSTileImpl<QSTile.BooleanState> {
        state.expandedAccessibilityClassName = Switch.class.getName();
    }

    @Override
    protected void handleUserSwitch(int newUserId) {
        super.handleUserSwitch(newUserId);
        mDreamSettingObserver.setUserId(newUserId);
        mEnabledSettingObserver.setUserId(newUserId);
    }

    @Nullable
    @Override
    public Intent getLongClickIntent() {
+22 −4
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import static android.platform.test.flag.junit.FlagsParameterization.allCombinat

import static com.android.systemui.Flags.FLAG_QS_CUSTOM_TILE_CLICK_GUARANTEED_BUG_FIX;

import static com.google.common.truth.Truth.assertThat;

import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;
@@ -59,7 +61,6 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.FakeSettings;
import com.android.systemui.util.settings.SecureSettings;

import org.junit.After;
import org.junit.Before;
@@ -69,11 +70,11 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.List;

import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;

import java.util.List;

@RunWith(ParameterizedAndroidJunit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
@SmallTest
@@ -107,7 +108,7 @@ public class DreamTileTest extends SysuiTestCase {

    private DreamTile mTile;

    private SecureSettings mSecureSettings;
    private FakeSettings mSecureSettings;

    private static final ComponentName COLORS_DREAM_COMPONENT_NAME = new ComponentName(
            "com.android.dreams", ".Colors");
@@ -279,6 +280,23 @@ public class DreamTileTest extends SysuiTestCase {
        destroyTile(dockedTile);
    }

    @Test
    public void testHandleUserSwitch() {
        final DreamTile dockedTile = constructTileForTest(true, false);
        dockedTile.handleSetListening(true);

        final int oldUserId = mUserTracker.getUserId();
        assertThat(dockedTile.mDreamSettingObserver.getCurrentUser()).isEqualTo(oldUserId);
        assertThat(dockedTile.mEnabledSettingObserver.getCurrentUser()).isEqualTo(oldUserId);

        final int newUserId = 1337;
        dockedTile.handleUserSwitch(newUserId);
        assertThat(dockedTile.mDreamSettingObserver.getCurrentUser()).isEqualTo(newUserId);
        assertThat(dockedTile.mEnabledSettingObserver.getCurrentUser()).isEqualTo(newUserId);

        destroyTile(dockedTile);
    }

    private void setScreensaverEnabled(boolean enabled) {
        mSecureSettings.putIntForUser(Settings.Secure.SCREENSAVER_ENABLED, enabled ? 1 : 0,
                DEFAULT_USER);