Merge "Hides Screen Attention setting when AttentionService isn't installed." into sc-dev
diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
index 35f9c72..b21c6ac 100644
--- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
+++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java
@@ -139,13 +139,17 @@
}
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();
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index 66f5ed3..18d1049 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -314,8 +314,7 @@
}
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 {
diff --git a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
index abb616a..41e4429 100644
--- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
@@ -22,16 +22,24 @@
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 @@
@Mock
Preference mDisableOptionsPreference;
+ @Mock
+ private PackageManager mPackageManager;
+
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
@@ -90,6 +101,15 @@
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(
@@ -148,6 +168,13 @@
}
@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();
mSettings.mDisableOptionsPreference = mDisableOptionsPreference;