diff --git a/aconfig/settings_datetime_flag_declarations.aconfig b/aconfig/settings_datetime_flag_declarations.aconfig index 93d41d6d5cb..995124339db 100644 --- a/aconfig/settings_datetime_flag_declarations.aconfig +++ b/aconfig/settings_datetime_flag_declarations.aconfig @@ -8,12 +8,3 @@ flag { description: "Enable the time feedback feature, a button to launch feedback in Date & Time Settings" bug: "283239837" } - -flag { - name: "revamp_toggles" - # "location" is used by the Android System Time team for feature flags. - namespace: "location" - description: "Makes the use location toggle dependent on automatic time zone detection" - bug: "296835792" -} - diff --git a/res/xml/date_time_prefs.xml b/res/xml/date_time_prefs.xml index d8643be35f9..fe0fd7e2c52 100644 --- a/res/xml/date_time_prefs.xml +++ b/res/xml/date_time_prefs.xml @@ -1,5 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/com/android/settings/datetime/AutoTimeFormatPreferenceController.java b/src/com/android/settings/datetime/AutoTimeFormatPreferenceController.java deleted file mode 100644 index 44e7cc63b5d..00000000000 --- a/src/com/android/settings/datetime/AutoTimeFormatPreferenceController.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.datetime; - -import android.content.Context; -import android.provider.Settings; -import android.provider.Settings.System; -import android.text.format.DateFormat; - -import com.android.settings.R; -import com.android.settings.core.TogglePreferenceController; - -import java.util.Locale; - -public class AutoTimeFormatPreferenceController extends TogglePreferenceController { - - public AutoTimeFormatPreferenceController(Context context, String preferenceKey) { - super(context, preferenceKey); - } - - @Override - public int getAvailabilityStatus() { - return AVAILABLE; - } - - @Override - public boolean isChecked() { - return isAutoTimeFormatSelection(mContext); - } - - @Override - public boolean setChecked(boolean isChecked) { - Boolean is24Hour; - if (isChecked) { - is24Hour = null; - } else { - is24Hour = is24HourLocale(mContext.getResources().getConfiguration().locale); - } - TimeFormatPreferenceController.update24HourFormat(mContext, is24Hour); - return true; - } - - @Override - public int getSliceHighlightMenuRes() { - return R.string.menu_key_system; - } - - boolean is24HourLocale(Locale locale) { - return DateFormat.is24HourLocale(locale); - } - - /** - * Returns if the system is currently configured to pick the time format automatically based on - * the locale. - */ - static boolean isAutoTimeFormatSelection(Context context) { - return Settings.System.getString(context.getContentResolver(), System.TIME_12_24) == null; - } -} diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java index 3d8f8011dda..ecd416d1597 100644 --- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java +++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java @@ -32,7 +32,6 @@ import androidx.preference.Preference; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; -import com.android.settings.flags.Flags; public class AutoTimeZonePreferenceController extends TogglePreferenceController { @@ -107,19 +106,17 @@ public class AutoTimeZonePreferenceController extends TogglePreferenceController TimeZoneConfiguration.Builder configuration = new TimeZoneConfiguration.Builder() .setAutoDetectionEnabled(isChecked); - if (Flags.revampToggles()) { - // "Use location for time zone" is only used if "Automatic time zone" is enabled. If - // the user toggles off automatic time zone, set the toggle off and disable the toggle. - int geoDetectionCapability = mTimeManager - .getTimeZoneCapabilitiesAndConfig() - .getCapabilities() - .getConfigureGeoDetectionEnabledCapability(); + // "Use location for time zone" is only used if "Automatic time zone" is enabled. If + // the user toggles off automatic time zone, set the toggle off and disable the toggle. + int geoDetectionCapability = mTimeManager + .getTimeZoneCapabilitiesAndConfig() + .getCapabilities() + .getConfigureGeoDetectionEnabledCapability(); - if (!isChecked - && (geoDetectionCapability == CAPABILITY_NOT_APPLICABLE - || geoDetectionCapability == CAPABILITY_POSSESSED)) { - configuration.setGeoDetectionEnabled(false); - } + if (!isChecked + && (geoDetectionCapability == CAPABILITY_NOT_APPLICABLE + || geoDetectionCapability == CAPABILITY_POSSESSED)) { + configuration.setGeoDetectionEnabled(false); } boolean result = mTimeManager.updateTimeZoneConfiguration(configuration.build()); diff --git a/src/com/android/settings/datetime/DateTimeSettings.java b/src/com/android/settings/datetime/DateTimeSettings.java index e5c13bfec18..f3c11d43ac3 100644 --- a/src/com/android/settings/datetime/DateTimeSettings.java +++ b/src/com/android/settings/datetime/DateTimeSettings.java @@ -23,7 +23,6 @@ import android.content.Context; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.flags.Flags; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; @@ -50,9 +49,6 @@ public class DateTimeSettings extends DashboardFragment implements @Override protected int getPreferenceScreenResId() { - if (Flags.revampToggles()) { - return R.xml.date_time_prefs_revamped; - } return R.xml.date_time_prefs; } @@ -123,6 +119,5 @@ public class DateTimeSettings extends DashboardFragment implements } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider( - Flags.revampToggles() ? R.xml.date_time_prefs_revamped : R.xml.date_time_prefs); + new BaseSearchIndexProvider(R.xml.date_time_prefs); } diff --git a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java index 52d49ac8b78..d475d9de819 100644 --- a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java +++ b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java @@ -32,7 +32,6 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.TogglePreferenceController; -import com.android.settings.flags.Flags; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; @@ -68,7 +67,7 @@ public class LocationTimeZoneDetectionPreferenceController // forceRefresh set to true as the location toggle may have been turned off by switching off // automatic time zone TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = - getTimeZoneCapabilitiesAndConfig(/*forceRefresh=*/ Flags.revampToggles()); + getTimeZoneCapabilitiesAndConfig(/*forceRefresh=*/ true); TimeZoneConfiguration configuration = capabilitiesAndConfig.getConfiguration(); return configuration.isGeoDetectionEnabled(); } @@ -137,11 +136,7 @@ public class LocationTimeZoneDetectionPreferenceController if (capability == CAPABILITY_NOT_SUPPORTED || capability == CAPABILITY_NOT_ALLOWED) { return UNSUPPORTED_ON_DEVICE; } else if (capability == CAPABILITY_NOT_APPLICABLE || capability == CAPABILITY_POSSESSED) { - if (Flags.revampToggles()) { - return isAutoTimeZoneEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; - } else { - return AVAILABLE; - } + return isAutoTimeZoneEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; } else { throw new IllegalStateException("Unknown capability=" + capability); } @@ -151,10 +146,8 @@ public class LocationTimeZoneDetectionPreferenceController public void updateState(Preference preference) { super.updateState(preference); - if (Flags.revampToggles()) { - // enable / disable the toggle based on automatic time zone being enabled or not - preference.setEnabled(isAutoTimeZoneEnabled()); - } + // enable / disable the toggle based on automatic time zone being enabled or not + preference.setEnabled(isAutoTimeZoneEnabled()); } @Override diff --git a/src/com/android/settings/datetime/TimeFormatPreferenceController.java b/src/com/android/settings/datetime/TimeFormatPreferenceController.java index 2dee76e9fbd..c400f4e9d1e 100644 --- a/src/com/android/settings/datetime/TimeFormatPreferenceController.java +++ b/src/com/android/settings/datetime/TimeFormatPreferenceController.java @@ -25,7 +25,6 @@ import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.core.TogglePreferenceController; -import com.android.settings.flags.Flags; import java.util.Calendar; import java.util.Date; @@ -73,11 +72,6 @@ public class TimeFormatPreferenceController extends TogglePreferenceController { if (mIsFromSUW) { return DISABLED_DEPENDENT_SETTING; } - if (!Flags.revampToggles()) { - if (AutoTimeFormatPreferenceController.isAutoTimeFormatSelection(mContext)) { - return DISABLED_DEPENDENT_SETTING; - } - } return AVAILABLE; } @@ -120,12 +114,12 @@ public class TimeFormatPreferenceController extends TogglePreferenceController { return DateFormat.is24HourFormat(mContext); } - static void update24HourFormat(Context context, Boolean is24Hour) { + private static void update24HourFormat(Context context, Boolean is24Hour) { set24Hour(context, is24Hour); timeUpdated(context, is24Hour); } - static void timeUpdated(Context context, Boolean is24Hour) { + private static void timeUpdated(Context context, Boolean is24Hour) { Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED); timeChanged.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); int timeFormatPreference; @@ -139,9 +133,8 @@ public class TimeFormatPreferenceController extends TogglePreferenceController { context.sendBroadcast(timeChanged); } - static void set24Hour(Context context, Boolean is24Hour) { - String value = is24Hour == null ? null : - is24Hour ? HOURS_24 : HOURS_12; + private static void set24Hour(Context context, boolean is24Hour) { + String value = is24Hour ? HOURS_24 : HOURS_12; Settings.System.putString(context.getContentResolver(), Settings.System.TIME_12_24, value); } diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeFormatPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeFormatPreferenceControllerTest.java deleted file mode 100644 index f9b566e74d8..00000000000 --- a/tests/robotests/src/com/android/settings/datetime/AutoTimeFormatPreferenceControllerTest.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.datetime; - -import static com.google.common.truth.Truth.assertThat; - -import android.content.Context; -import android.content.Intent; -import android.provider.Settings; -import android.text.format.DateFormat; - -import androidx.preference.SwitchPreference; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.shadows.ShadowApplication; - -import java.util.List; -import java.util.Locale; - -@RunWith(RobolectricTestRunner.class) -public class AutoTimeFormatPreferenceControllerTest { - - @Mock - private UpdateTimeAndDateCallback mCallback; - - private ShadowApplication mApplication; - private Context mContext; - private SwitchPreference mPreference; - private TestAutoTimeFormatPreferenceController mController; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - mApplication = ShadowApplication.getInstance(); - mContext = RuntimeEnvironment.application; - mController = new TestAutoTimeFormatPreferenceController(mContext, "test_key"); - mPreference = new SwitchPreference(mContext); - mPreference.setKey("test_key"); - } - - @Test - public void updateState_24HourSet_shouldCheckPreference() { - Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24, - TimeFormatPreferenceController.HOURS_24); - - mController.updateState(mPreference); - - assertThat(mPreference.isChecked()).isFalse(); - } - - @Test - public void updateState_12HourSet_shouldCheckPreference() { - Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24, - TimeFormatPreferenceController.HOURS_12); - - mController.updateState(mPreference); - - assertThat(mPreference.isChecked()).isFalse(); - } - - @Test - public void updateState_autoSet_shouldNotCheckPreference() { - Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24, null); - - mController.updateState(mPreference); - - assertThat(mPreference.isChecked()).isTrue(); - } - - @Test - public void updatePreference_autoSet_shouldSendIntent_12HourLocale() { - mController.setChecked(false); - - List intentsFired = mApplication.getBroadcastIntents(); - assertThat(intentsFired.size()).isEqualTo(1); - Intent intentFired = intentsFired.get(0); - assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED); - assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1)) - .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_12_HOUR); - } - - @Test - public void updatePreference_autoSet_shouldSendIntent_24HourLocale() { - mController.setIs24HourLocale(true); - - mController.setChecked(false); - - List intentsFired = mApplication.getBroadcastIntents(); - assertThat(intentsFired.size()).isEqualTo(1); - Intent intentFired = intentsFired.get(0); - assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED); - assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1)) - .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_24_HOUR); - } - - @Test - public void updatePreference_24HourSet_shouldSendIntent() { - mController.setIs24HourLocale(false); - - mController.setChecked(true); - - List intentsFired = mApplication.getBroadcastIntents(); - assertThat(intentsFired.size()).isEqualTo(1); - Intent intentFired = intentsFired.get(0); - assertThat(intentFired.getAction()).isEqualTo(Intent.ACTION_TIME_CHANGED); - assertThat(intentFired.getIntExtra(Intent.EXTRA_TIME_PREF_24_HOUR_FORMAT, -1)) - .isEqualTo(Intent.EXTRA_TIME_PREF_VALUE_USE_LOCALE_DEFAULT); - } - - /** - * Extend class under test to change {@link #is24HourLocale} to not call - * {@link DateFormat#is24HourLocale(Locale)} because that's not available in roboelectric. - */ - private static class TestAutoTimeFormatPreferenceController - extends AutoTimeFormatPreferenceController { - - private boolean is24HourLocale = false; - - TestAutoTimeFormatPreferenceController(Context context, String preferenceKey) { - super(context, preferenceKey); - } - - void setIs24HourLocale(boolean value) { - is24HourLocale = value; - } - - @Override - boolean is24HourLocale(Locale locale) { - return is24HourLocale; - } - } -} diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java index 7bf8d52543e..2961935d4b1 100644 --- a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java @@ -40,17 +40,12 @@ import android.app.time.TimeZoneConfiguration; import android.app.time.TimeZoneDetectorStatus; import android.content.Context; import android.os.UserHandle; -import android.platform.test.annotations.DisableFlags; -import android.platform.test.annotations.EnableFlags; -import android.platform.test.flag.junit.SetFlagsRule; import androidx.preference.Preference; import com.android.settings.R; -import com.android.settings.flags.Flags; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -62,9 +57,6 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class AutoTimeZonePreferenceControllerTest { - @Rule - public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); - @Mock private UpdateTimeAndDateCallback mCallback; private Context mContext; @@ -247,7 +239,6 @@ public class AutoTimeZonePreferenceControllerTest { } @Test - @EnableFlags({Flags.FLAG_REVAMP_TOGGLES}) public void toggleOff_revampFlagOn_shouldToggleOffUseLocation() { TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig( /* autoSupported= */ true, @@ -266,25 +257,6 @@ public class AutoTimeZonePreferenceControllerTest { verify(mTimeManager).updateTimeZoneConfiguration(configuration); } - @Test - @DisableFlags({Flags.FLAG_REVAMP_TOGGLES}) - public void toggleOff_revampFlagOff_shouldToggleOffUseLocation() { - TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createCapabilitiesAndConfig( - /* autoSupported= */ true, - /* autoEnabled= */ true, - /* telephonySupported= */ true, - /* locationSupported= */ true); - when(mTimeManager.getTimeZoneCapabilitiesAndConfig()).thenReturn(capabilitiesAndConfig); - - mController.setChecked(false); - - TimeZoneConfiguration configuration = new TimeZoneConfiguration.Builder() - .setAutoDetectionEnabled(false) - .build(); - - verify(mTimeManager).updateTimeZoneConfiguration(configuration); - } - private static TimeZoneCapabilitiesAndConfig createCapabilitiesAndConfig( boolean autoSupported, boolean autoEnabled, boolean telephonySupported) { return createCapabilitiesAndConfig(autoSupported, autoEnabled, telephonySupported, false); diff --git a/tests/robotests/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceControllerTest.java index 40794d217ee..2f232574760 100644 --- a/tests/robotests/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceControllerTest.java @@ -45,17 +45,13 @@ import android.app.time.TimeZoneConfiguration; import android.app.time.TimeZoneDetectorStatus; import android.content.Context; import android.os.UserHandle; -import android.platform.test.annotations.EnableFlags; -import android.platform.test.flag.junit.SetFlagsRule; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.core.InstrumentedPreferenceFragment; -import com.android.settings.flags.Flags; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; @@ -71,9 +67,6 @@ import org.robolectric.annotation.Config; }) public class LocationTimeZoneDetectionPreferenceControllerTest { - @Rule - public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); - @Mock private TimeManager mTimeManager; private Context mContext; @@ -131,8 +124,7 @@ public class LocationTimeZoneDetectionPreferenceControllerTest { } @Test - @EnableFlags({Flags.FLAG_REVAMP_TOGGLES}) - public void flagRevampTogglesOn_toggleOff_automaticTimeZone_disablesLocationToggle() { + public void toggleOff_automaticTimeZone_disablesLocationToggle() { TimeZoneCapabilitiesAndConfig capabilitiesAndConfig = createTimeZoneCapabilitiesAndConfig(/* useLocationEnabled= */ true, CAPABILITY_POSSESSED, /* setAutoDetectionEnabled= */ false); diff --git a/tests/robotests/src/com/android/settings/datetime/TimeFormatPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/TimeFormatPreferenceControllerTest.java index c5aac843018..a34192255a2 100644 --- a/tests/robotests/src/com/android/settings/datetime/TimeFormatPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datetime/TimeFormatPreferenceControllerTest.java @@ -23,16 +23,11 @@ import static com.google.common.truth.Truth.assertThat; import android.content.Context; import android.content.Intent; -import android.platform.test.annotations.DisableFlags; -import android.platform.test.flag.junit.SetFlagsRule; import android.provider.Settings; import androidx.preference.SwitchPreference; -import com.android.settings.flags.Flags; - import org.junit.Before; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -46,9 +41,6 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class TimeFormatPreferenceControllerTest { - @Rule - public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); - @Mock private UpdateTimeAndDateCallback mCallback; @@ -104,16 +96,6 @@ public class TimeFormatPreferenceControllerTest { assertThat(mPreference.isChecked()).isFalse(); } - @Test - @DisableFlags({Flags.FLAG_REVAMP_TOGGLES}) - public void updateState_autoSet_shouldNotEnablePreference() { - Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24, null); - - mController.updateState(mPreference); - - assertThat(mPreference.isEnabled()).isFalse(); - } - @Test public void updatePreference_12HourSet_shouldSendIntent() { mController.setChecked(false);