From 69e4302d401e545884095105adbfe4dc16d4a399 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 15 Jan 2019 18:52:25 +0000 Subject: [PATCH] New approach to override timeout max value - Revert "Allow OEM customizing max screen timeout value." - Use separate timeout list for screen timeout and lock timeout. This reverts commit f57f490aa6eb62700078bef5d16d55e6176c9448. Fixes: 113346164 Test: manual Change-Id: Ifbb054c232c47455ae82e3ed817f9c1e96f694cf --- res/values/config.xml | 3 - res/values/strings.xml | 3 + res/xml/date_time_prefs.xml | 2 +- .../display/TimeoutListPreference.java | 58 +++++-------------- .../display/TimeoutPreferenceController.java | 9 +-- tests/robotests/res/values-mcc999/config.xml | 3 - .../display/TimeoutListPreferenceTest.java | 21 +------ 7 files changed, 25 insertions(+), 74 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 1a504ddff3b..a6e5e1ce332 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -172,9 +172,6 @@ - - 1800000 - diff --git a/res/values/strings.xml b/res/values/strings.xml index 313521af130..1ae7340fd3f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5841,6 +5841,9 @@ Used in SetupWizard for XLarge screen [CHAR LIMIT=20] --> Network details + + Select Time Zone + Sync enabled diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml index e8af64c374c..edda1ba66d9 100644 --- a/res/xml/date_time_prefs.xml +++ b/res/xml/date_time_prefs.xml @@ -58,7 +58,7 @@ diff --git a/src/com/android/settings/display/TimeoutListPreference.java b/src/com/android/settings/display/TimeoutListPreference.java index 5ed427fb252..f9a731d32eb 100644 --- a/src/com/android/settings/display/TimeoutListPreference.java +++ b/src/com/android/settings/display/TimeoutListPreference.java @@ -26,7 +26,6 @@ import android.util.AttributeSet; import android.util.Log; import android.view.View; -import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog.Builder; import com.android.settings.R; @@ -34,18 +33,18 @@ import com.android.settings.RestrictedListPreference; import com.android.settingslib.RestrictedLockUtils; import java.util.ArrayList; -import java.util.List; public class TimeoutListPreference extends RestrictedListPreference { private static final String TAG = "TimeoutListPreference"; private EnforcedAdmin mAdmin; - private CharSequence[] mInitialEntries; - private CharSequence[] mInitialValues; + private final CharSequence[] mInitialEntries; + private final CharSequence[] mInitialValues; public TimeoutListPreference(Context context, AttributeSet attrs) { super(context, attrs); - updateInitialValues(); + mInitialEntries = getEntries(); + mInitialValues = getEntryValues(); } @Override @@ -66,8 +65,13 @@ public class TimeoutListPreference extends RestrictedListPreference { if (mAdmin != null) { View footerView = dialog.findViewById(R.id.admin_disabled_other_options); footerView.findViewById(R.id.admin_more_details_link).setOnClickListener( - view -> RestrictedLockUtils.sendShowAdminSupportDetailsIntent( - getContext(), mAdmin)); + new View.OnClickListener() { + @Override + public void onClick(View view) { + RestrictedLockUtils.sendShowAdminSupportDetailsIntent( + getContext(), mAdmin); + } + }); } } @@ -85,8 +89,8 @@ public class TimeoutListPreference extends RestrictedListPreference { maxTimeout = Long.MAX_VALUE; } - final ArrayList revisedEntries = new ArrayList<>(); - final ArrayList revisedValues = new ArrayList<>(); + ArrayList revisedEntries = new ArrayList(); + ArrayList revisedValues = new ArrayList(); for (int i = 0; i < mInitialValues.length; ++i) { long timeout = Long.parseLong(mInitialValues[i].toString()); if (timeout <= maxTimeout) { @@ -97,7 +101,7 @@ public class TimeoutListPreference extends RestrictedListPreference { // If there are no possible options for the user, then set this preference as disabled // by admin, otherwise remove the padlock in case it was set earlier. - if (revisedValues.isEmpty()) { + if (revisedValues.size() == 0) { setDisabledByAdmin(admin); return; } else { @@ -113,7 +117,7 @@ public class TimeoutListPreference extends RestrictedListPreference { setValue(String.valueOf(userPreference)); } else if (revisedValues.size() > 0 && Long.parseLong(revisedValues.get(revisedValues.size() - 1).toString()) - == maxTimeout) { + == maxTimeout) { // If the last one happens to be the same as the max timeout, select that setValue(String.valueOf(maxTimeout)); } else { @@ -124,36 +128,4 @@ public class TimeoutListPreference extends RestrictedListPreference { } } } - - @VisibleForTesting - void updateInitialValues() { - // Read default list of candidate values. - final CharSequence[] entries = getEntries(); - final CharSequence[] values = getEntryValues(); - // Filter out values based on config - final List revisedEntries = new ArrayList<>(); - final List revisedValues = new ArrayList<>(); - final long maxTimeout = getContext().getResources().getInteger( - R.integer.max_lock_after_timeout_ms); - if (entries == null || values == null) { - return; - } - Log.d(TAG, "max timeout: " + maxTimeout); - for (int i = 0; i < values.length; ++i) { - long timeout = Long.parseLong(values[i].toString()); - if (timeout <= maxTimeout) { - Log.d(TAG, "keeping timeout: " + values[i]); - revisedEntries.add(entries[i]); - revisedValues.add(values[i]); - } else { - Log.d(TAG, "Dropping timeout: " + values[i]); - } - } - - // Store final candidates in initial value lists. - mInitialEntries = revisedEntries.toArray(new CharSequence[0]); - setEntries(mInitialEntries); - mInitialValues = revisedValues.toArray(new CharSequence[0]); - setEntryValues(mInitialValues); - } } diff --git a/src/com/android/settings/display/TimeoutPreferenceController.java b/src/com/android/settings/display/TimeoutPreferenceController.java index c1c50690a0c..60b7e24b85b 100644 --- a/src/com/android/settings/display/TimeoutPreferenceController.java +++ b/src/com/android/settings/display/TimeoutPreferenceController.java @@ -13,6 +13,8 @@ */ package com.android.settings.display; +import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; + import android.app.admin.DevicePolicyManager; import android.content.Context; import android.os.UserHandle; @@ -58,7 +60,7 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im public void updateState(Preference preference) { final TimeoutListPreference timeoutListPreference = (TimeoutListPreference) preference; final long currentTimeout = Settings.System.getLong(mContext.getContentResolver(), - Settings.System.SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE); + SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE); timeoutListPreference.setValue(String.valueOf(currentTimeout)); final DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE); @@ -84,8 +86,7 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im public boolean onPreferenceChange(Preference preference, Object newValue) { try { int value = Integer.parseInt((String) newValue); - Settings.System.putInt(mContext.getContentResolver(), - Settings.System.SCREEN_OFF_TIMEOUT, value); + Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value); updateTimeoutPreferenceDescription((TimeoutListPreference) preference, value); } catch (NumberFormatException e) { Log.e(TAG, "could not persist screen timeout setting", e); @@ -93,7 +94,7 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im return true; } - private static CharSequence getTimeoutDescription( + public static CharSequence getTimeoutDescription( long currentTimeout, CharSequence[] entries, CharSequence[] values) { if (currentTimeout < 0 || entries == null || values == null || values.length != entries.length) { diff --git a/tests/robotests/res/values-mcc999/config.xml b/tests/robotests/res/values-mcc999/config.xml index 59028d3daf8..101a6b813f4 100644 --- a/tests/robotests/res/values-mcc999/config.xml +++ b/tests/robotests/res/values-mcc999/config.xml @@ -88,7 +88,4 @@ test@test.test - - - 1700000 diff --git a/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java b/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java index 7b67f0f54b1..55fcdacea51 100644 --- a/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/display/TimeoutListPreferenceTest.java @@ -17,11 +17,11 @@ package com.android.settings.display; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.mock; import static org.robolectric.RuntimeEnvironment.application; import android.util.AttributeSet; -import com.android.settings.R; import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settingslib.RestrictedLockUtils; @@ -69,23 +69,4 @@ public class TimeoutListPreferenceTest { // should set to largest allowed value, which is 5 minute assertThat(mPreference.getValue()).isEqualTo("300000"); } - - @Test - @Config(qualifiers = "mcc999") - public void newInstance_hasLowTimeoutConfig_shouldRemoveLongTimeouts() { - final AttributeSet attributeSet = Robolectric.buildAttributeSet().build(); - final TimeoutListPreference pref = new TimeoutListPreference(application, attributeSet); - final long maxTimeout = application.getResources().getInteger( - R.integer.max_lock_after_timeout_ms); - pref.setEntries(R.array.screen_timeout_entries); - pref.setEntryValues(R.array.screen_timeout_values); - - pref.updateInitialValues(); - - final CharSequence[] values = pref.getEntryValues(); - for (CharSequence value : values) { - long timeout = Long.parseLong(value.toString()); - assertThat(timeout).isAtMost(maxTimeout); - } - } }