From b20399d91fc15e25544e871e30aacc09873a40e5 Mon Sep 17 00:00:00 2001 From: Geoffrey Boullanger Date: Wed, 18 Dec 2024 13:12:00 +0000 Subject: [PATCH] Replaced exception with more elegant option in Time Settings Currently, some controllers in the Date and Time settings page throw exceptions if a capability is not known. This would cause the Settings app to crash, so we are moving away from exception and replacing it with the deactivation of the controller. Test: manual Flag: EXEMPT refactor Bug: 296835792 Change-Id: I56b01ec6d9eebf721deeb4f67aa177742482dd53 --- .../settings/datetime/AutoTimePreferenceController.java | 6 +++++- .../settings/datetime/AutoTimeZonePreferenceController.java | 6 +++++- .../LocationTimeZoneDetectionPreferenceController.java | 4 +++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/datetime/AutoTimePreferenceController.java b/src/com/android/settings/datetime/AutoTimePreferenceController.java index 5b17e7ecb6c..cc005d778b3 100644 --- a/src/com/android/settings/datetime/AutoTimePreferenceController.java +++ b/src/com/android/settings/datetime/AutoTimePreferenceController.java @@ -26,6 +26,7 @@ import android.app.time.TimeCapabilitiesAndConfig; import android.app.time.TimeConfiguration; import android.app.time.TimeManager; import android.content.Context; +import android.util.Log; import androidx.preference.Preference; @@ -35,6 +36,8 @@ import com.android.settings.core.TogglePreferenceController; public class AutoTimePreferenceController extends TogglePreferenceController { + private static final String TAG = "AutoTimePreferenceController"; + private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; @@ -74,7 +77,8 @@ public class AutoTimePreferenceController extends TogglePreferenceController { // arbitrary. return AVAILABLE; default: - throw new IllegalStateException("Unknown capability=" + capability); + Log.e(TAG, "Unknown capability=" + capability); + return UNSUPPORTED_ON_DEVICE; } } diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java index ecd416d1597..f60a5ccfa06 100644 --- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java +++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java @@ -26,6 +26,7 @@ import android.app.time.TimeZoneCapabilities; import android.app.time.TimeZoneCapabilitiesAndConfig; import android.app.time.TimeZoneConfiguration; import android.content.Context; +import android.util.Log; import androidx.preference.Preference; @@ -35,6 +36,8 @@ import com.android.settings.core.TogglePreferenceController; public class AutoTimeZonePreferenceController extends TogglePreferenceController { + private static final String TAG = "AutoTimeZonePreferenceController"; + private boolean mIsFromSUW; private UpdateTimeAndDateCallback mCallback; private final TimeManager mTimeManager; @@ -92,7 +95,8 @@ public class AutoTimeZonePreferenceController extends TogglePreferenceController // arbitrary. return AVAILABLE; default: - throw new IllegalStateException("Unknown capability=" + capability); + Log.e(TAG, "Unknown capability=" + capability); + return UNSUPPORTED_ON_DEVICE; } } diff --git a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java index d475d9de819..05f5af611be 100644 --- a/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java +++ b/src/com/android/settings/datetime/LocationTimeZoneDetectionPreferenceController.java @@ -25,6 +25,7 @@ import android.app.time.TimeZoneCapabilities; import android.app.time.TimeZoneCapabilitiesAndConfig; import android.app.time.TimeZoneConfiguration; import android.content.Context; +import android.util.Log; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -138,7 +139,8 @@ public class LocationTimeZoneDetectionPreferenceController } else if (capability == CAPABILITY_NOT_APPLICABLE || capability == CAPABILITY_POSSESSED) { return isAutoTimeZoneEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; } else { - throw new IllegalStateException("Unknown capability=" + capability); + Log.e(TAG, "Unknown capability=" + capability); + return UNSUPPORTED_ON_DEVICE; } }