From a8aa52eaf951663b8f7c4b8ad361aea024ab4df4 Mon Sep 17 00:00:00 2001 From: Hawkwood Glazier Date: Fri, 24 Jun 2022 17:13:27 +0000 Subject: [PATCH] Add exception handling to ClockRegistry to prevent crashes Test: Manual Bug: 229771520 Change-Id: I9db17a3d945b75846ac238b59634fb595a8c8706 (cherry picked from commit 901c0a5dcb2681d1bd619bb6ab5e7063b82291e6) Merged-In: I9db17a3d945b75846ac238b59634fb595a8c8706 --- .../systemui/shared/clocks/ClockRegistry.kt | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt index 4b8b46d548480..c370e68592f84 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt @@ -72,18 +72,27 @@ open class ClockRegistry( open var currentClockId: ClockId get() { - val json = Settings.Secure.getString( - context.contentResolver, - Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE - ) - return gson.fromJson(json, ClockSetting::class.java)?.clockId ?: DEFAULT_CLOCK_ID + return try { + val json = Settings.Secure.getString( + context.contentResolver, + Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE + ) + gson.fromJson(json, ClockSetting::class.java)?.clockId ?: DEFAULT_CLOCK_ID + } catch (ex: Exception) { + Log.e(TAG, "Failed to parse clock setting", ex) + DEFAULT_CLOCK_ID + } } set(value) { - val json = gson.toJson(ClockSetting(value, System.currentTimeMillis())) - Settings.Secure.putString( - context.contentResolver, - Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE, json - ) + try { + val json = gson.toJson(ClockSetting(value, System.currentTimeMillis())) + Settings.Secure.putString( + context.contentResolver, + Settings.Secure.LOCK_SCREEN_CUSTOM_CLOCK_FACE, json + ) + } catch (ex: Exception) { + Log.e(TAG, "Failed to set clock setting", ex) + } } init { @@ -170,6 +179,6 @@ open class ClockRegistry( private data class ClockSetting( val clockId: ClockId, - val _applied_timestamp: Long + val _applied_timestamp: Long? ) }