Merge "Hides Screen Attention setting when AttentionService isn't installed." into sc-dev
This commit is contained in:
@@ -139,13 +139,17 @@ public class AdaptiveSleepPreferenceController {
|
||||
}
|
||||
|
||||
public static int isControllerAvailable(Context context) {
|
||||
return context.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_adaptive_sleep_available)
|
||||
&& isAttentionServiceAvailable(context)
|
||||
return isAdaptiveSleepSupported(context)
|
||||
? AVAILABLE_UNSEARCHABLE
|
||||
: 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) {
|
||||
final PackageManager packageManager = context.getPackageManager();
|
||||
final String resolvePackage = packageManager.getAttentionServicePackageName();
|
||||
|
@@ -314,8 +314,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
||||
}
|
||||
|
||||
private static boolean isScreenAttentionAvailable(Context context) {
|
||||
return context.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_adaptive_sleep_available);
|
||||
return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context);
|
||||
}
|
||||
|
||||
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 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.doNothing;
|
||||
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 static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ContentResolver;
|
||||
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.provider.SearchIndexableResource;
|
||||
import android.provider.Settings;
|
||||
@@ -80,6 +88,9 @@ public class ScreenTimeoutSettingsTest {
|
||||
@Mock
|
||||
Preference mDisableOptionsPreference;
|
||||
|
||||
@Mock
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
@@ -90,6 +101,15 @@ public class ScreenTimeoutSettingsTest {
|
||||
mContentResolver = mContext.getContentResolver();
|
||||
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_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries);
|
||||
doReturn(true).when(mResources).getBoolean(
|
||||
@@ -147,6 +167,13 @@ public class ScreenTimeoutSettingsTest {
|
||||
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
|
||||
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
|
||||
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
|
||||
|
Reference in New Issue
Block a user