From 5363de2f63e158eaa853b29b1d1c009b99b01514 Mon Sep 17 00:00:00 2001 From: Sihua Ma Date: Thu, 7 Jul 2022 22:17:33 +0000 Subject: [PATCH] Add error log for when widget provider is null When the service try to update the visibility of the widgets, it would iterate over the available widgets and check the ids of their providers. However, due to unknown reasons there is a possibility of their providers being null even after they are bound to the screen. Adding more logs to help determine the exact issue. Bug: 212651639 Test: N/A Change-Id: I74a095dd2a44d0235fba27a57190aa89032fa63e --- .../server/appwidget/AppWidgetServiceImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 4892718d62031..38237fa8eabdc 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -1109,10 +1109,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku registerForBroadcastsLocked(provider, getWidgetIds(provider.widgets)); saveGroupStateAsync(userId); - - if (DEBUG) { - Slog.i(TAG, "Bound widget " + appWidgetId + " to provider " + provider.id); - } + Slog.i(TAG, "Bound widget " + appWidgetId + " to provider " + provider.id); } return true; @@ -4196,6 +4193,10 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku IAppWidgetHost callbacks; boolean zombie; // if we're in safe mode, don't prune this just because nobody references it + private static final boolean DEBUG = true; + + private static final String TAG = "AppWidgetServiceHost"; + int tag = TAG_UNDEFINED; // for use while saving state (the index) // Sequence no for the last update successfully sent. This is updated whenever a // widget update is successfully sent to the host callbacks. As all new/undelivered updates @@ -4266,6 +4267,11 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku final SparseArray uids = new SparseArray<>(); for (int i = widgets.size() - 1; i >= 0; i--) { final Widget widget = widgets.get(i); + if (widget.provider == null) { + if (DEBUG) { + Slog.e(TAG, "Widget with no provider " + widget.toString()); + } + } final ProviderId providerId = widget.provider.id; uids.put(providerId.uid, providerId.componentName.getPackageName()); }