Hides Screen Attention setting when AttentionService isn't installed.
Bug: 191696609 Test: make RunSettingsRoboTests Change-Id: I5a38b023db91202801a8a3e975f562ddcfe6696e
This commit is contained in:
@@ -138,13 +138,17 @@ public class AdaptiveSleepPreferenceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int isControllerAvailable(Context context) {
|
public static int isControllerAvailable(Context context) {
|
||||||
return context.getResources().getBoolean(
|
return isAdaptiveSleepSupported(context)
|
||||||
com.android.internal.R.bool.config_adaptive_sleep_available)
|
|
||||||
&& isAttentionServiceAvailable(context)
|
|
||||||
? AVAILABLE_UNSEARCHABLE
|
? AVAILABLE_UNSEARCHABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boolean isAdaptiveSleepSupported(Context context) {
|
||||||
|
return context.getResources().getBoolean(
|
||||||
|
com.android.internal.R.bool.config_adaptive_sleep_available)
|
||||||
|
&& isAttentionServiceAvailable(context);
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isAttentionServiceAvailable(Context context) {
|
private static boolean isAttentionServiceAvailable(Context context) {
|
||||||
final PackageManager packageManager = context.getPackageManager();
|
final PackageManager packageManager = context.getPackageManager();
|
||||||
final String resolvePackage = packageManager.getAttentionServicePackageName();
|
final String resolvePackage = packageManager.getAttentionServicePackageName();
|
||||||
|
@@ -313,8 +313,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isScreenAttentionAvailable(Context context) {
|
private static boolean isScreenAttentionAvailable(Context context) {
|
||||||
return context.getResources().getBoolean(
|
return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context);
|
||||||
com.android.internal.R.bool.config_adaptive_sleep_available);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class TimeoutCandidateInfo extends CandidateInfo {
|
private static class TimeoutCandidateInfo extends CandidateInfo {
|
||||||
|
@@ -22,16 +22,24 @@ import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.isA;
|
||||||
import static org.mockito.Mockito.atLeast;
|
import static org.mockito.Mockito.atLeast;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.content.pm.ServiceInfo;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.provider.SearchIndexableResource;
|
import android.provider.SearchIndexableResource;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -80,6 +88,9 @@ public class ScreenTimeoutSettingsTest {
|
|||||||
@Mock
|
@Mock
|
||||||
Preference mDisableOptionsPreference;
|
Preference mDisableOptionsPreference;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -90,6 +101,15 @@ public class ScreenTimeoutSettingsTest {
|
|||||||
mContentResolver = mContext.getContentResolver();
|
mContentResolver = mContext.getContentResolver();
|
||||||
mResources = spy(mContext.getResources());
|
mResources = spy(mContext.getResources());
|
||||||
|
|
||||||
|
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||||
|
when(mPackageManager.getAttentionServicePackageName()).thenReturn("some.package");
|
||||||
|
when(mPackageManager.checkPermission(any(), any())).thenReturn(
|
||||||
|
PackageManager.PERMISSION_GRANTED);
|
||||||
|
final ResolveInfo attentionServiceResolveInfo = new ResolveInfo();
|
||||||
|
attentionServiceResolveInfo.serviceInfo = new ServiceInfo();
|
||||||
|
when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(
|
||||||
|
attentionServiceResolveInfo);
|
||||||
|
|
||||||
doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries);
|
doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries);
|
||||||
doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries);
|
doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries);
|
||||||
doReturn(true).when(mResources).getBoolean(
|
doReturn(true).when(mResources).getBoolean(
|
||||||
@@ -147,6 +167,13 @@ public class ScreenTimeoutSettingsTest {
|
|||||||
verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
|
verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateCandidates_AttentionServiceNotInstalled_doNoShowAdaptiveSleepPreference() {
|
||||||
|
when(mPackageManager.resolveService(isA(Intent.class), anyInt())).thenReturn(null);
|
||||||
|
|
||||||
|
verify(mSettings.mAdaptiveSleepController, never()).addToScreen(mPreferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
|
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
|
||||||
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
|
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
|
||||||
|
Reference in New Issue
Block a user