Loading src/com/android/settings/display/AdaptiveSleepPermissionPreferenceController.java +11 −18 Original line number Diff line number Diff line Loading @@ -37,18 +37,26 @@ public class AdaptiveSleepPermissionPreferenceController { @VisibleForTesting BannerMessagePreference mPreference; private final PackageManager mPackageManager; private final Context mContext; public AdaptiveSleepPermissionPreferenceController(Context context) { final String packageName = context.getPackageManager().getAttentionServicePackageName(); mPackageManager = context.getPackageManager(); mContext = context; final Intent intent = new Intent( android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); mPreference = new BannerMessagePreference(context); mPreference.setTitle(R.string.adaptive_sleep_title_no_permission); mPreference.setSummary(R.string.adaptive_sleep_summary_no_permission); mPreference.setPositiveButtonText(R.string.adaptive_sleep_manage_permission_button); mPreference.setPositiveButtonOnClickListener(p -> { context.startActivity(intent); }); } /** * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { initializePreference(); if (!hasSufficientPermission(mPackageManager)) { screen.addPreference(mPreference); } Loading @@ -60,19 +68,4 @@ public class AdaptiveSleepPermissionPreferenceController { public void updateVisibility() { mPreference.setVisible(!hasSufficientPermission(mPackageManager)); } private void initializePreference() { final String packageName = mContext.getPackageManager().getAttentionServicePackageName(); final Intent intent = new Intent( android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); mPreference = new BannerMessagePreference(mContext); mPreference.setTitle(R.string.adaptive_sleep_title_no_permission); mPreference.setSummary(R.string.adaptive_sleep_summary_no_permission); mPreference.setPositiveButtonText(R.string.adaptive_sleep_manage_permission_button); mPreference.setPositiveButtonOnClickListener(p -> { mContext.startActivity(intent); }); } } src/com/android/settings/display/AdaptiveSleepPreferenceController.java +17 −22 Original line number Diff line number Diff line Loading @@ -49,10 +49,10 @@ public class AdaptiveSleepPreferenceController { public static final String PREFERENCE_KEY = "adaptive_sleep"; private static final int DEFAULT_VALUE = 0; private final SensorPrivacyManager mPrivacyManager; private final RestrictionUtils mRestrictionUtils; private final PackageManager mPackageManager; private final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; private RestrictionUtils mRestrictionUtils; private PackageManager mPackageManager; private Context mContext; private MetricsFeatureProvider mMetricsFeatureProvider; @VisibleForTesting RestrictedSwitchPreference mPreference; Loading @@ -62,6 +62,19 @@ public class AdaptiveSleepPreferenceController { mRestrictionUtils = restrictionUtils; mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPreference = new RestrictedSwitchPreference(context); mPreference.setTitle(R.string.adaptive_sleep_title); mPreference.setSummary(R.string.adaptive_sleep_description); mPreference.setChecked(isChecked()); mPreference.setKey(PREFERENCE_KEY); mPreference.setOnPreferenceClickListener(preference -> { final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked(); mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, isChecked); Settings.Secure.putInt(context.getContentResolver(), Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); return true; }); mPackageManager = context.getPackageManager(); } Loading @@ -73,7 +86,6 @@ public class AdaptiveSleepPreferenceController { * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { initializePreference(); updatePreference(); screen.addPreference(mPreference); } Loading @@ -91,23 +103,6 @@ public class AdaptiveSleepPreferenceController { } } @VisibleForTesting void initializePreference() { mPreference = new RestrictedSwitchPreference(mContext); mPreference.setTitle(R.string.adaptive_sleep_title); mPreference.setSummary(R.string.adaptive_sleep_description); mPreference.setChecked(isChecked()); mPreference.setKey(PREFERENCE_KEY); mPreference.setOnPreferenceChangeListener((preference, value) -> { final boolean isChecked = (Boolean) value; mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, isChecked); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); return true; }); } @VisibleForTesting boolean isChecked() { return hasSufficientPermission(mContext.getPackageManager()) && !isCameraLocked() Loading src/com/android/settings/display/ScreenTimeoutSettings.java +6 −12 Original line number Diff line number Diff line Loading @@ -71,15 +71,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements private CharSequence[] mInitialEntries; private CharSequence[] mInitialValues; private FooterPreference mPrivacyPreference; private final MetricsFeatureProvider mMetricsFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider; private SensorPrivacyManager mPrivacyManager; @VisibleForTesting Context mContext; @VisibleForTesting RestrictedLockUtils.EnforcedAdmin mAdmin; @VisibleForTesting Preference mDisableOptionsPreference; Loading @@ -101,7 +97,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements @Override public void onAttach(Context context) { super.onAttach(context); mContext = context; mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries); mInitialValues = getResources().getStringArray(R.array.screen_timeout_values); mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context); Loading @@ -109,6 +104,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements context); mAdaptiveSleepCameraStatePreferenceController = new AdaptiveSleepCameraStatePreferenceController(context); mPrivacyPreference = new FooterPreference(context); mPrivacyPreference.setIcon(R.drawable.ic_privacy_shield_24dp); mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy); mPrivacyPreference.setSelectable(false); mPrivacyPreference.setLayoutResource(R.layout.preference_footer); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPrivacyManager.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> mAdaptiveSleepController.updatePreference()); Loading Loading @@ -167,12 +167,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements preferenceWithLargestTimeout.setChecked(true); } mPrivacyPreference = new FooterPreference(mContext); mPrivacyPreference.setIcon(R.drawable.ic_privacy_shield_24dp); mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy); mPrivacyPreference.setSelectable(false); mPrivacyPreference.setLayoutResource(R.layout.preference_footer); if (isScreenAttentionAvailable(getContext())) { mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen); Loading tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,6 @@ public class AdaptiveSleepPreferenceControllerTest { eq(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT))).thenReturn(null); mController = new AdaptiveSleepPreferenceController(mContext, mRestrictionUtils); mController.initializePreference(); when(mController.isCameraLocked()).thenReturn(false); } Loading tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class ScreenTimeoutSettingsTest { private ScreenTimeoutSettings mSettings; private Context mContext; private ContentResolver mContentResolver; @Mock private Resources mResources; @Mock Loading @@ -83,9 +85,7 @@ public class ScreenTimeoutSettingsTest { FakeFeatureFactory.setupForTest(); mContext = spy(getApplicationContext()); mSettings = spy(new ScreenTimeoutSettings()); mSettings.mContext = mContext; mContentResolver = mContext.getContentResolver(); mResources = spy(mContext.getResources()); doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries); Loading Loading
src/com/android/settings/display/AdaptiveSleepPermissionPreferenceController.java +11 −18 Original line number Diff line number Diff line Loading @@ -37,18 +37,26 @@ public class AdaptiveSleepPermissionPreferenceController { @VisibleForTesting BannerMessagePreference mPreference; private final PackageManager mPackageManager; private final Context mContext; public AdaptiveSleepPermissionPreferenceController(Context context) { final String packageName = context.getPackageManager().getAttentionServicePackageName(); mPackageManager = context.getPackageManager(); mContext = context; final Intent intent = new Intent( android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); mPreference = new BannerMessagePreference(context); mPreference.setTitle(R.string.adaptive_sleep_title_no_permission); mPreference.setSummary(R.string.adaptive_sleep_summary_no_permission); mPreference.setPositiveButtonText(R.string.adaptive_sleep_manage_permission_button); mPreference.setPositiveButtonOnClickListener(p -> { context.startActivity(intent); }); } /** * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { initializePreference(); if (!hasSufficientPermission(mPackageManager)) { screen.addPreference(mPreference); } Loading @@ -60,19 +68,4 @@ public class AdaptiveSleepPermissionPreferenceController { public void updateVisibility() { mPreference.setVisible(!hasSufficientPermission(mPackageManager)); } private void initializePreference() { final String packageName = mContext.getPackageManager().getAttentionServicePackageName(); final Intent intent = new Intent( android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); mPreference = new BannerMessagePreference(mContext); mPreference.setTitle(R.string.adaptive_sleep_title_no_permission); mPreference.setSummary(R.string.adaptive_sleep_summary_no_permission); mPreference.setPositiveButtonText(R.string.adaptive_sleep_manage_permission_button); mPreference.setPositiveButtonOnClickListener(p -> { mContext.startActivity(intent); }); } }
src/com/android/settings/display/AdaptiveSleepPreferenceController.java +17 −22 Original line number Diff line number Diff line Loading @@ -49,10 +49,10 @@ public class AdaptiveSleepPreferenceController { public static final String PREFERENCE_KEY = "adaptive_sleep"; private static final int DEFAULT_VALUE = 0; private final SensorPrivacyManager mPrivacyManager; private final RestrictionUtils mRestrictionUtils; private final PackageManager mPackageManager; private final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; private RestrictionUtils mRestrictionUtils; private PackageManager mPackageManager; private Context mContext; private MetricsFeatureProvider mMetricsFeatureProvider; @VisibleForTesting RestrictedSwitchPreference mPreference; Loading @@ -62,6 +62,19 @@ public class AdaptiveSleepPreferenceController { mRestrictionUtils = restrictionUtils; mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPreference = new RestrictedSwitchPreference(context); mPreference.setTitle(R.string.adaptive_sleep_title); mPreference.setSummary(R.string.adaptive_sleep_description); mPreference.setChecked(isChecked()); mPreference.setKey(PREFERENCE_KEY); mPreference.setOnPreferenceClickListener(preference -> { final boolean isChecked = ((RestrictedSwitchPreference) preference).isChecked(); mMetricsFeatureProvider.action(context, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, isChecked); Settings.Secure.putInt(context.getContentResolver(), Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); return true; }); mPackageManager = context.getPackageManager(); } Loading @@ -73,7 +86,6 @@ public class AdaptiveSleepPreferenceController { * Adds the controlled preference to the provided preference screen. */ public void addToScreen(PreferenceScreen screen) { initializePreference(); updatePreference(); screen.addPreference(mPreference); } Loading @@ -91,23 +103,6 @@ public class AdaptiveSleepPreferenceController { } } @VisibleForTesting void initializePreference() { mPreference = new RestrictedSwitchPreference(mContext); mPreference.setTitle(R.string.adaptive_sleep_title); mPreference.setSummary(R.string.adaptive_sleep_description); mPreference.setChecked(isChecked()); mPreference.setKey(PREFERENCE_KEY); mPreference.setOnPreferenceChangeListener((preference, value) -> { final boolean isChecked = (Boolean) value; mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_SCREEN_ATTENTION_CHANGED, isChecked); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ADAPTIVE_SLEEP, isChecked ? 1 : DEFAULT_VALUE); return true; }); } @VisibleForTesting boolean isChecked() { return hasSufficientPermission(mContext.getPackageManager()) && !isCameraLocked() Loading
src/com/android/settings/display/ScreenTimeoutSettings.java +6 −12 Original line number Diff line number Diff line Loading @@ -71,15 +71,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements private CharSequence[] mInitialEntries; private CharSequence[] mInitialValues; private FooterPreference mPrivacyPreference; private final MetricsFeatureProvider mMetricsFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider; private SensorPrivacyManager mPrivacyManager; @VisibleForTesting Context mContext; @VisibleForTesting RestrictedLockUtils.EnforcedAdmin mAdmin; @VisibleForTesting Preference mDisableOptionsPreference; Loading @@ -101,7 +97,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements @Override public void onAttach(Context context) { super.onAttach(context); mContext = context; mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries); mInitialValues = getResources().getStringArray(R.array.screen_timeout_values); mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context); Loading @@ -109,6 +104,11 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements context); mAdaptiveSleepCameraStatePreferenceController = new AdaptiveSleepCameraStatePreferenceController(context); mPrivacyPreference = new FooterPreference(context); mPrivacyPreference.setIcon(R.drawable.ic_privacy_shield_24dp); mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy); mPrivacyPreference.setSelectable(false); mPrivacyPreference.setLayoutResource(R.layout.preference_footer); mPrivacyManager = SensorPrivacyManager.getInstance(context); mPrivacyManager.addSensorPrivacyListener(CAMERA, (sensor, enabled) -> mAdaptiveSleepController.updatePreference()); Loading Loading @@ -167,12 +167,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements preferenceWithLargestTimeout.setChecked(true); } mPrivacyPreference = new FooterPreference(mContext); mPrivacyPreference.setIcon(R.drawable.ic_privacy_shield_24dp); mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy); mPrivacyPreference.setSelectable(false); mPrivacyPreference.setLayoutResource(R.layout.preference_footer); if (isScreenAttentionAvailable(getContext())) { mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen); Loading
tests/robotests/src/com/android/settings/display/AdaptiveSleepPreferenceControllerTest.java +0 −1 Original line number Diff line number Diff line Loading @@ -84,7 +84,6 @@ public class AdaptiveSleepPreferenceControllerTest { eq(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT))).thenReturn(null); mController = new AdaptiveSleepPreferenceController(mContext, mRestrictionUtils); mController.initializePreference(); when(mController.isCameraLocked()).thenReturn(false); } Loading
tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class ScreenTimeoutSettingsTest { private ScreenTimeoutSettings mSettings; private Context mContext; private ContentResolver mContentResolver; @Mock private Resources mResources; @Mock Loading @@ -83,9 +85,7 @@ public class ScreenTimeoutSettingsTest { FakeFeatureFactory.setupForTest(); mContext = spy(getApplicationContext()); mSettings = spy(new ScreenTimeoutSettings()); mSettings.mContext = mContext; mContentResolver = mContext.getContentResolver(); mResources = spy(mContext.getResources()); doReturn(TIMEOUT_ENTRIES).when(mResources).getStringArray(R.array.screen_timeout_entries); doReturn(TIMEOUT_VALUES).when(mResources).getStringArray(R.array.screen_timeout_entries); Loading