SettingsGoogle: Add ContextualScreenTimeout

Store contextual screen timeout preference when the
corresponding switch is toggled.

Bug: 295232527

Test: atest ExternalSettingsProviderTest
Test: atest ContextualTimeoutPreferenceControllerTest
Change-Id: I093d180f4b11ebb806c4b1949ff5428520c8f40f
This commit is contained in:
chengfeitao
2023-12-12 21:30:28 +00:00
parent 1e6e14c2c5
commit ffb6e7e21b
8 changed files with 125 additions and 0 deletions

View File

@@ -34,9 +34,11 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -106,6 +108,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
@VisibleForTesting
AdaptiveSleepBatterySaverPreferenceController mAdaptiveSleepBatterySaverPreferenceController;
@Nullable
TogglePreferenceController mAdditionalTogglePreferenceController;
public ScreenTimeoutSettings() {
super();
mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
@@ -133,6 +138,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
com.android.settingslib.widget.preference.footer.R.layout.preference_footer);
mPrivacyManager = SensorPrivacyManager.getInstance(context);
mPrivacyChangedListener = (sensor, enabled) -> mAdaptiveSleepController.updatePreference();
mAdditionalTogglePreferenceController = FeatureFactory.getFeatureFactory()
.getDisplayFeatureProvider().createAdditionalPreference(context);
}
@Override
@@ -164,6 +171,8 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
mReceiver, new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
mPrivacyManager.addSensorPrivacyListener(CAMERA, mPrivacyChangedListener);
mIsUserAuthenticated = false;
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider().updatePreference(
mAdditionalTogglePreferenceController);
}
@Override
@@ -210,6 +219,9 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment
mPrivacyPreference.setLayoutResource(
com.android.settingslib.widget.preference.footer.R.layout.preference_footer);
FeatureFactory.getFeatureFactory().getDisplayFeatureProvider()
.addToScreen(mAdditionalTogglePreferenceController, screen);
if (isScreenAttentionAvailable(getContext())) {
mAdaptiveSleepPermissionController.addToScreen(screen);
mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen);