From e82b3fa8df4b5cb31e5eb1a1fbf9d57b7ab8c7f1 Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Wed, 12 Apr 2023 09:14:57 -0700 Subject: [PATCH] Gracefully handle exception when processing widget loads event while device is locked. Bug: 277189566 Test: test starting launcher and editing widgets Change-Id: Id15da3f3471374b02f1e2bf2e0a45dc801957241 --- .../launcher3/widget/WidgetManagerHelper.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/widget/WidgetManagerHelper.java b/src/com/android/launcher3/widget/WidgetManagerHelper.java index 15fa8443f3..737cdbd61f 100644 --- a/src/com/android/launcher3/widget/WidgetManagerHelper.java +++ b/src/com/android/launcher3/widget/WidgetManagerHelper.java @@ -78,8 +78,16 @@ public class WidgetManagerHelper { return allWidgetsSteam(mContext).collect(Collectors.toList()); } - return mAppWidgetManager.getInstalledProvidersForPackage( - packageUser.mPackageName, packageUser.mUser); + try { + return mAppWidgetManager.getInstalledProvidersForPackage( + packageUser.mPackageName, packageUser.mUser); + } catch (IllegalStateException e) { + // b/277189566: Launcher will load the widget when it gets the user-unlock event. + // If exception is thrown because of device is locked, it means a race condition occurs + // that the user got locked again while launcher is processing the event. In this case + // we should return empty list. + return Collections.emptyList(); + } } /**