Merge "Fixes 'no ripple effect' issue for screen attention setting" into sc-dev
This commit is contained in:
@@ -37,26 +37,18 @@ public class AdaptiveSleepPermissionPreferenceController {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
BannerMessagePreference mPreference;
|
BannerMessagePreference mPreference;
|
||||||
private final PackageManager mPackageManager;
|
private final PackageManager mPackageManager;
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
public AdaptiveSleepPermissionPreferenceController(Context context) {
|
public AdaptiveSleepPermissionPreferenceController(Context context) {
|
||||||
final String packageName = context.getPackageManager().getAttentionServicePackageName();
|
|
||||||
mPackageManager = context.getPackageManager();
|
mPackageManager = context.getPackageManager();
|
||||||
final Intent intent = new Intent(
|
mContext = context;
|
||||||
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.
|
* Adds the controlled preference to the provided preference screen.
|
||||||
*/
|
*/
|
||||||
public void addToScreen(PreferenceScreen screen) {
|
public void addToScreen(PreferenceScreen screen) {
|
||||||
|
initializePreference();
|
||||||
if (!hasSufficientPermission(mPackageManager)) {
|
if (!hasSufficientPermission(mPackageManager)) {
|
||||||
screen.addPreference(mPreference);
|
screen.addPreference(mPreference);
|
||||||
}
|
}
|
||||||
@@ -68,4 +60,19 @@ public class AdaptiveSleepPermissionPreferenceController {
|
|||||||
public void updateVisibility() {
|
public void updateVisibility() {
|
||||||
mPreference.setVisible(!hasSufficientPermission(mPackageManager));
|
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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -49,10 +49,10 @@ public class AdaptiveSleepPreferenceController {
|
|||||||
public static final String PREFERENCE_KEY = "adaptive_sleep";
|
public static final String PREFERENCE_KEY = "adaptive_sleep";
|
||||||
private static final int DEFAULT_VALUE = 0;
|
private static final int DEFAULT_VALUE = 0;
|
||||||
private final SensorPrivacyManager mPrivacyManager;
|
private final SensorPrivacyManager mPrivacyManager;
|
||||||
private RestrictionUtils mRestrictionUtils;
|
private final RestrictionUtils mRestrictionUtils;
|
||||||
private PackageManager mPackageManager;
|
private final PackageManager mPackageManager;
|
||||||
private Context mContext;
|
private final Context mContext;
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
RestrictedSwitchPreference mPreference;
|
RestrictedSwitchPreference mPreference;
|
||||||
@@ -62,19 +62,6 @@ public class AdaptiveSleepPreferenceController {
|
|||||||
mRestrictionUtils = restrictionUtils;
|
mRestrictionUtils = restrictionUtils;
|
||||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||||
mPrivacyManager = SensorPrivacyManager.getInstance(context);
|
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();
|
mPackageManager = context.getPackageManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +73,7 @@ public class AdaptiveSleepPreferenceController {
|
|||||||
* Adds the controlled preference to the provided preference screen.
|
* Adds the controlled preference to the provided preference screen.
|
||||||
*/
|
*/
|
||||||
public void addToScreen(PreferenceScreen screen) {
|
public void addToScreen(PreferenceScreen screen) {
|
||||||
|
initializePreference();
|
||||||
updatePreference();
|
updatePreference();
|
||||||
screen.addPreference(mPreference);
|
screen.addPreference(mPreference);
|
||||||
}
|
}
|
||||||
@@ -103,6 +91,23 @@ 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
|
@VisibleForTesting
|
||||||
boolean isChecked() {
|
boolean isChecked() {
|
||||||
return hasSufficientPermission(mContext.getPackageManager()) && !isCameraLocked()
|
return hasSufficientPermission(mContext.getPackageManager()) && !isCameraLocked()
|
||||||
|
@@ -71,11 +71,15 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
|||||||
private CharSequence[] mInitialEntries;
|
private CharSequence[] mInitialEntries;
|
||||||
private CharSequence[] mInitialValues;
|
private CharSequence[] mInitialValues;
|
||||||
private FooterPreference mPrivacyPreference;
|
private FooterPreference mPrivacyPreference;
|
||||||
private MetricsFeatureProvider mMetricsFeatureProvider;
|
private final MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
private SensorPrivacyManager mPrivacyManager;
|
private SensorPrivacyManager mPrivacyManager;
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
Context mContext;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
RestrictedLockUtils.EnforcedAdmin mAdmin;
|
RestrictedLockUtils.EnforcedAdmin mAdmin;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Preference mDisableOptionsPreference;
|
Preference mDisableOptionsPreference;
|
||||||
|
|
||||||
@@ -97,6 +101,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
|||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
mContext = context;
|
||||||
mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries);
|
mInitialEntries = getResources().getStringArray(R.array.screen_timeout_entries);
|
||||||
mInitialValues = getResources().getStringArray(R.array.screen_timeout_values);
|
mInitialValues = getResources().getStringArray(R.array.screen_timeout_values);
|
||||||
mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context);
|
mAdaptiveSleepController = new AdaptiveSleepPreferenceController(context);
|
||||||
@@ -104,11 +109,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
|||||||
context);
|
context);
|
||||||
mAdaptiveSleepCameraStatePreferenceController =
|
mAdaptiveSleepCameraStatePreferenceController =
|
||||||
new AdaptiveSleepCameraStatePreferenceController(context);
|
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 = SensorPrivacyManager.getInstance(context);
|
||||||
mPrivacyManager.addSensorPrivacyListener(CAMERA,
|
mPrivacyManager.addSensorPrivacyListener(CAMERA,
|
||||||
(sensor, enabled) -> mAdaptiveSleepController.updatePreference());
|
(sensor, enabled) -> mAdaptiveSleepController.updatePreference());
|
||||||
@@ -167,6 +167,12 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
|
|||||||
preferenceWithLargestTimeout.setChecked(true);
|
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())) {
|
if (isScreenAttentionAvailable(getContext())) {
|
||||||
mAdaptiveSleepPermissionController.addToScreen(screen);
|
mAdaptiveSleepPermissionController.addToScreen(screen);
|
||||||
mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen);
|
mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen);
|
||||||
|
@@ -84,6 +84,7 @@ public class AdaptiveSleepPreferenceControllerTest {
|
|||||||
eq(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT))).thenReturn(null);
|
eq(UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT))).thenReturn(null);
|
||||||
|
|
||||||
mController = new AdaptiveSleepPreferenceController(mContext, mRestrictionUtils);
|
mController = new AdaptiveSleepPreferenceController(mContext, mRestrictionUtils);
|
||||||
|
mController.initializePreference();
|
||||||
when(mController.isCameraLocked()).thenReturn(false);
|
when(mController.isCameraLocked()).thenReturn(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -60,8 +60,6 @@ public class ScreenTimeoutSettingsTest {
|
|||||||
private ScreenTimeoutSettings mSettings;
|
private ScreenTimeoutSettings mSettings;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private ContentResolver mContentResolver;
|
private ContentResolver mContentResolver;
|
||||||
|
|
||||||
@Mock
|
|
||||||
private Resources mResources;
|
private Resources mResources;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
@@ -85,7 +83,9 @@ public class ScreenTimeoutSettingsTest {
|
|||||||
FakeFeatureFactory.setupForTest();
|
FakeFeatureFactory.setupForTest();
|
||||||
mContext = spy(getApplicationContext());
|
mContext = spy(getApplicationContext());
|
||||||
mSettings = spy(new ScreenTimeoutSettings());
|
mSettings = spy(new ScreenTimeoutSettings());
|
||||||
|
mSettings.mContext = mContext;
|
||||||
mContentResolver = mContext.getContentResolver();
|
mContentResolver = mContext.getContentResolver();
|
||||||
|
mResources = spy(mContext.getResources());
|
||||||
|
|
||||||
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);
|
||||||
|
Reference in New Issue
Block a user