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

Commit 01dfbcc2 authored by William Leshner's avatar William Leshner Committed by Android (Google) Code Review
Browse files

Merge "Restrict screen saver settings searches to enabled users." into udc-dev

parents d078d1f0 ca1379f0
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -1293,4 +1293,15 @@ public final class Utils extends com.android.settingslib.Utils {
        return context.createContextAsUser(mainUser, 0).getSystemService(UserManager.class)
               .isUserForeground();
    }

    /**
     * Returns if dreams are available to the current user.
     */
    public static boolean areDreamsAvailableToCurrentUser(Context context) {
        final boolean dreamsSupported = context.getResources().getBoolean(
                com.android.internal.R.bool.config_dreamsSupported);
        final boolean dreamsOnlyEnabledForDockUser = context.getResources().getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser);
        return dreamsSupported && (!dreamsOnlyEnabledForDockUser || canCurrentUserDream(context));
    }
}
+1 −7
Original line number Diff line number Diff line
@@ -35,13 +35,7 @@ public class ScreenSaverPreferenceController extends BasePreferenceController im

    @Override
    public int getAvailabilityStatus() {
        final boolean dreamsSupported = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_dreamsSupported);
        final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser);
        return (dreamsSupported && (!dreamsOnlyEnabledForDockUser
                || Utils.canCurrentUserDream(mContext)))
                ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
        return Utils.areDreamsAvailableToCurrentUser(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
+13 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -213,6 +214,17 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.dream_fragment_overview);
            new SearchIndexProvider(R.xml.dream_fragment_overview);

    static class SearchIndexProvider extends BaseSearchIndexProvider {
        SearchIndexProvider(int xmlRes) {
            super(xmlRes);
        }

        @Override
        protected boolean isPageSearchEnabled(Context context) {
            return Utils.areDreamsAvailableToCurrentUser(context);
        }
    }
}
+18 −13
Original line number Diff line number Diff line
@@ -18,13 +18,15 @@ package com.android.settings.display;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;
import android.os.UserHandle;
import android.os.UserManager;

import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Before;
@@ -32,14 +34,13 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;

@RunWith(AndroidJUnit4.class)
public class ScreenSaverPreferenceControllerTest {
    @Spy
    private final Context mContext = ApplicationProvider.getApplicationContext();
    @Spy
    private final Resources mResources = mContext.getResources();
    @Mock
    private Context mContext;
    @Mock
    private Resources mResources;
    @Mock
    private UserManager mUserManager;

@@ -51,10 +52,14 @@ public class ScreenSaverPreferenceControllerTest {
    public void setup() {
        MockitoAnnotations.initMocks(this);

        mController = new ScreenSaverPreferenceController(mContext, mPrefKey);

        when(mContext.getResources()).thenReturn(mResources);
        when(mContext.getSystemServiceName(UserManager.class))
                .thenReturn(Context.USER_SERVICE);
        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
        when(mUserManager.getMainUser()).thenReturn(UserHandle.of(0));
        when(mContext.createContextAsUser(any(), anyInt())).thenReturn(mContext);

        mController = new ScreenSaverPreferenceController(mContext, mPrefKey);
    }

    @Test
@@ -64,7 +69,7 @@ public class ScreenSaverPreferenceControllerTest {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser))
                .thenReturn(false);
        when(mUserManager.isMainUser()).thenReturn(true);
        when(mUserManager.isUserForeground()).thenReturn(true);
        assertTrue(mController.isAvailable());
    }

@@ -75,7 +80,7 @@ public class ScreenSaverPreferenceControllerTest {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser))
                .thenReturn(false);
        when(mUserManager.isMainUser()).thenReturn(false);
        when(mUserManager.isUserForeground()).thenReturn(false);
        assertTrue(mController.isAvailable());
    }

@@ -86,7 +91,7 @@ public class ScreenSaverPreferenceControllerTest {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser))
                .thenReturn(false);
        when(mUserManager.isMainUser()).thenReturn(true);
        when(mUserManager.isUserForeground()).thenReturn(true);
        assertFalse(mController.isAvailable());
    }

@@ -97,7 +102,7 @@ public class ScreenSaverPreferenceControllerTest {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser))
                .thenReturn(true);
        when(mUserManager.isMainUser()).thenReturn(true);
        when(mUserManager.isUserForeground()).thenReturn(true);
        assertTrue(mController.isAvailable());
    }

@@ -108,7 +113,7 @@ public class ScreenSaverPreferenceControllerTest {
        when(mResources.getBoolean(
                com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser))
                .thenReturn(true);
        when(mUserManager.isMainUser()).thenReturn(false);
        when(mUserManager.isUserForeground()).thenReturn(false);
        assertFalse(mController.isAvailable());
    }
}