Loading src/com/android/settings/display/ScreenTimeoutSettings.java +29 −13 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.widget.CandidateInfo; import com.android.settingslib.widget.FooterPreference; import com.google.common.annotations.VisibleForTesting; import java.util.ArrayList; import java.util.List; Loading @@ -60,8 +62,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements private CharSequence[] mInitialEntries; private CharSequence[] mInitialValues; private FooterPreference mPrivacyPreference; private AdaptiveSleepPreferenceController mAdaptiveSleepController; private AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController; @VisibleForTesting AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController; @VisibleForTesting AdaptiveSleepPreferenceController mAdaptiveSleepController; @Override public void onCreate(Bundle icicle) { Loading @@ -87,15 +92,17 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements @Override protected List<? extends CandidateInfo> getCandidates() { final Context context = getContext(); final List<CandidateInfo> candidates = new ArrayList<>(); final long maxTimeout = getMaxScreenTimeout(context); final long maxTimeout = getMaxScreenTimeout(getContext()); if (mInitialValues != null) { for (int i = 0; i < mInitialValues.length; ++i) { if (Long.parseLong(mInitialValues[i].toString()) <= maxTimeout) { candidates.add( new TimeoutCandidateInfo(mInitialEntries[i], mInitialValues[i].toString(), true)); candidates.add(new TimeoutCandidateInfo(mInitialEntries[i], mInitialValues[i].toString(), true)); } } } else { Log.e(TAG, "Screen timeout options do not exist."); } return candidates; } Loading Loading @@ -125,10 +132,12 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements screen.addPreference(pref); } if (isScreenAttentionAvailable()) { mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepController.addToScreen(screen); screen.addPreference(mPrivacyPreference); } } @Override protected String getDefaultKey() { Loading Loading @@ -156,12 +165,19 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements return R.string.help_url_adaptive_sleep; } private boolean isScreenAttentionAvailable() { return getResources().getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); } private Long getMaxScreenTimeout(Context context) { if (context == null) { return Long.MAX_VALUE; } final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class); if (dpm == null) { return Long.MAX_VALUE; } final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(context); if (admin != null) { Loading tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -23,14 +23,19 @@ import static androidx.test.core.app.ApplicationProvider.getApplicationContext; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.provider.SearchIndexableResource; import android.provider.Settings; import androidx.preference.PreferenceScreen; import com.android.settings.R; import org.junit.Before; Loading @@ -54,6 +59,15 @@ public class ScreenTimeoutSettingsTest { @Mock private Resources mResources; @Mock private PreferenceScreen mPreferenceScreen; @Mock AdaptiveSleepPermissionPreferenceController mPermissionPreferenceController; @Mock AdaptiveSleepPreferenceController mAdaptiveSleepPreferenceController; @Before public void setup() { MockitoAnnotations.initMocks(this); Loading @@ -63,8 +77,17 @@ public class ScreenTimeoutSettingsTest { doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(true).when(mResources).getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); doReturn(null).when(mContext).getSystemService(DevicePolicyManager.class); doReturn(mResources).when(mSettings).getResources(); doReturn(mContext).when(mSettings).getContext(); doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen(); mSettings.mAdaptiveSleepController = mAdaptiveSleepPreferenceController; mSettings.mAdaptiveSleepPermissionController = mPermissionPreferenceController; } @Test Loading @@ -87,6 +110,23 @@ public class ScreenTimeoutSettingsTest { assertThat(key).isEqualTo(TIMEOUT_VALUES[1]); } @Test public void updateCandidates_screenAttentionAvailable_showAdaptiveSleepPreference() { mSettings.updateCandidates(); verify(mSettings.mAdaptiveSleepController).addToScreen(mPreferenceScreen); } @Test public void updateCandidates_screenAttentionNotAvailable_doNotShowAdaptiveSleepPreference() { doReturn(false).when(mResources).getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); mSettings.updateCandidates(); verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen); } @Test public void setDefaultKey_controlCurrentScreenTimeout() { mSettings.setDefaultKey(TIMEOUT_VALUES[0]); Loading Loading
src/com/android/settings/display/ScreenTimeoutSettings.java +29 −13 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ import com.android.settingslib.search.SearchIndexableRaw; import com.android.settingslib.widget.CandidateInfo; import com.android.settingslib.widget.FooterPreference; import com.google.common.annotations.VisibleForTesting; import java.util.ArrayList; import java.util.List; Loading @@ -60,8 +62,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements private CharSequence[] mInitialEntries; private CharSequence[] mInitialValues; private FooterPreference mPrivacyPreference; private AdaptiveSleepPreferenceController mAdaptiveSleepController; private AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController; @VisibleForTesting AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController; @VisibleForTesting AdaptiveSleepPreferenceController mAdaptiveSleepController; @Override public void onCreate(Bundle icicle) { Loading @@ -87,15 +92,17 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements @Override protected List<? extends CandidateInfo> getCandidates() { final Context context = getContext(); final List<CandidateInfo> candidates = new ArrayList<>(); final long maxTimeout = getMaxScreenTimeout(context); final long maxTimeout = getMaxScreenTimeout(getContext()); if (mInitialValues != null) { for (int i = 0; i < mInitialValues.length; ++i) { if (Long.parseLong(mInitialValues[i].toString()) <= maxTimeout) { candidates.add( new TimeoutCandidateInfo(mInitialEntries[i], mInitialValues[i].toString(), true)); candidates.add(new TimeoutCandidateInfo(mInitialEntries[i], mInitialValues[i].toString(), true)); } } } else { Log.e(TAG, "Screen timeout options do not exist."); } return candidates; } Loading Loading @@ -125,10 +132,12 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements screen.addPreference(pref); } if (isScreenAttentionAvailable()) { mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepController.addToScreen(screen); screen.addPreference(mPrivacyPreference); } } @Override protected String getDefaultKey() { Loading Loading @@ -156,12 +165,19 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements return R.string.help_url_adaptive_sleep; } private boolean isScreenAttentionAvailable() { return getResources().getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); } private Long getMaxScreenTimeout(Context context) { if (context == null) { return Long.MAX_VALUE; } final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class); if (dpm == null) { return Long.MAX_VALUE; } final RestrictedLockUtils.EnforcedAdmin admin = RestrictedLockUtilsInternal.checkIfMaximumTimeToLockIsSet(context); if (admin != null) { Loading
tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -23,14 +23,19 @@ import static androidx.test.core.app.ApplicationProvider.getApplicationContext; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.provider.SearchIndexableResource; import android.provider.Settings; import androidx.preference.PreferenceScreen; import com.android.settings.R; import org.junit.Before; Loading @@ -54,6 +59,15 @@ public class ScreenTimeoutSettingsTest { @Mock private Resources mResources; @Mock private PreferenceScreen mPreferenceScreen; @Mock AdaptiveSleepPermissionPreferenceController mPermissionPreferenceController; @Mock AdaptiveSleepPreferenceController mAdaptiveSleepPreferenceController; @Before public void setup() { MockitoAnnotations.initMocks(this); Loading @@ -63,8 +77,17 @@ public class ScreenTimeoutSettingsTest { doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(true).when(mResources).getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); doReturn(null).when(mContext).getSystemService(DevicePolicyManager.class); doReturn(mResources).when(mSettings).getResources(); doReturn(mContext).when(mSettings).getContext(); doReturn(mPreferenceScreen).when(mSettings).getPreferenceScreen(); mSettings.mAdaptiveSleepController = mAdaptiveSleepPreferenceController; mSettings.mAdaptiveSleepPermissionController = mPermissionPreferenceController; } @Test Loading @@ -87,6 +110,23 @@ public class ScreenTimeoutSettingsTest { assertThat(key).isEqualTo(TIMEOUT_VALUES[1]); } @Test public void updateCandidates_screenAttentionAvailable_showAdaptiveSleepPreference() { mSettings.updateCandidates(); verify(mSettings.mAdaptiveSleepController).addToScreen(mPreferenceScreen); } @Test public void updateCandidates_screenAttentionNotAvailable_doNotShowAdaptiveSleepPreference() { doReturn(false).when(mResources).getBoolean( com.android.internal.R.bool.config_adaptive_sleep_available); mSettings.updateCandidates(); verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen); } @Test public void setDefaultKey_controlCurrentScreenTimeout() { mSettings.setDefaultKey(TIMEOUT_VALUES[0]); Loading