Change screensaver ctrlr to base pref ctrlr. am: 542644e83f

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20736682

Change-Id: Ic6f282087660ede4a0b1fd38378c0c5adc58bc3f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 1b5e6c0..ad5236e 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"/>
 
         <SwitchPreference
             android:key="camera_gesture"
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 9a62412..97b9aae 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -24,7 +24,6 @@
 import com.android.settings.display.BrightnessLevelPreferenceController;
 import com.android.settings.display.CameraGesturePreferenceController;
 import com.android.settings.display.LiftToWakePreferenceController;
-import com.android.settings.display.ScreenSaverPreferenceController;
 import com.android.settings.display.ShowOperatorNamePreferenceController;
 import com.android.settings.display.TapToWakePreferenceController;
 import com.android.settings.display.ThemePreferenceController;
@@ -76,7 +75,6 @@
         final List<AbstractPreferenceController> 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 d6fef11..db4bc37 100644
--- a/src/com/android/settings/display/ScreenSaverPreferenceController.java
+++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java
@@ -16,47 +16,41 @@
 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 484138e..180ea90 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 @@
 
     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);