From 542644e83f72d036c1bd7173e9dc6d12e15b3eaa Mon Sep 17 00:00:00 2001 From: Darrell Shi Date: Wed, 14 Dec 2022 18:47:57 +0000 Subject: [PATCH] Change screensaver ctrlr to base pref ctrlr. This change makes it that the ScreenSaverPreferenceController extends BasePreferenceController so that it can be readily used and pointed to from an xml file. Bug: 261627295 Test: atest ScreenSaverPreferenceControllerTest Change-Id: I95487f2f49a23422fff46f30b0cfa287582a547b --- res/xml/display_settings.xml | 3 +- src/com/android/settings/DisplaySettings.java | 2 -- .../ScreenSaverPreferenceController.java | 28 ++++++++----------- .../ScreenSaverPreferenceControllerTest.java | 4 ++- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 1b5e6c01cc4..ad5236ecbd3 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -146,7 +146,8 @@ android:key="screensaver" android:title="@string/screensaver_settings_title" android:fragment="com.android.settings.dream.DreamSettings" - settings:keywords="@string/keywords_screensaver"/> + settings:keywords="@string/keywords_screensaver" + settings:controller="com.android.settings.display.ScreenSaverPreferenceController"/> controllers = new ArrayList<>(); controllers.add(new CameraGesturePreferenceController(context)); controllers.add(new LiftToWakePreferenceController(context)); - controllers.add(new ScreenSaverPreferenceController(context)); controllers.add(new TapToWakePreferenceController(context)); controllers.add(new VrDisplayPreferenceController(context)); controllers.add(new ShowOperatorNamePreferenceController(context)); diff --git a/src/com/android/settings/display/ScreenSaverPreferenceController.java b/src/com/android/settings/display/ScreenSaverPreferenceController.java index d6fef11b220..db4bc37054a 100644 --- a/src/com/android/settings/display/ScreenSaverPreferenceController.java +++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java @@ -16,47 +16,41 @@ package com.android.settings.display; import android.content.Context; import android.os.UserManager; -import androidx.preference.Preference; - import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dream.DreamSettings; -import com.android.settingslib.core.AbstractPreferenceController; -public class ScreenSaverPreferenceController extends AbstractPreferenceController implements +public class ScreenSaverPreferenceController extends BasePreferenceController implements PreferenceControllerMixin { - private static final String KEY_SCREEN_SAVER = "screensaver"; private final boolean mDreamsDisabledByAmbientModeSuppression; - public ScreenSaverPreferenceController(Context context) { - super(context); + public ScreenSaverPreferenceController(Context context, String preferenceKey) { + super(context, preferenceKey); + mDreamsDisabledByAmbientModeSuppression = context.getResources().getBoolean( com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig); } @Override - public boolean isAvailable() { + public int getAvailabilityStatus() { final boolean dreamsSupported = mContext.getResources().getBoolean( com.android.internal.R.bool.config_dreamsSupported); final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean( com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser); // TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM. - return dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser()); + return (dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser())) + ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override - public String getPreferenceKey() { - return KEY_SCREEN_SAVER; - } - - @Override - public void updateState(Preference preference) { + public CharSequence getSummary() { if (mDreamsDisabledByAmbientModeSuppression && AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) { - preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime); + return mContext.getString(R.string.screensaver_settings_when_to_dream_bedtime); } else { - preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext)); + return DreamSettings.getSummaryTextWithDreamName(mContext); } } diff --git a/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java index 484138e78bf..180ea90925f 100644 --- a/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/display/ScreenSaverPreferenceControllerTest.java @@ -45,11 +45,13 @@ public class ScreenSaverPreferenceControllerTest { private ScreenSaverPreferenceController mController; + private final String mPrefKey = "test_screensaver"; + @Before public void setup() { MockitoAnnotations.initMocks(this); - mController = new ScreenSaverPreferenceController(mContext); + mController = new ScreenSaverPreferenceController(mContext, mPrefKey); when(mContext.getResources()).thenReturn(mResources); when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);