From 8267e8241f5639780fce629fa0c126195f1fac36 Mon Sep 17 00:00:00 2001 From: Kenny Guy Date: Mon, 29 Feb 2016 21:07:32 +0000 Subject: [PATCH] Don't clear widget providers from stopped profiles. Stopped profiles may have a parent still running hosting widgets so providers should remain. Bug: 26842832 Change-Id: I3ef97222fcfa5b183744033ece133115b3c146c1 --- .../server/appwidget/AppWidgetServiceImpl.java | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index f537d182035e2..9a9c2bc200843 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -3014,7 +3014,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku private void onUserStopped(int userId) { synchronized (mLock) { - boolean providersChanged = false; boolean crossProfileWidgetsChanged = false; // Remove widgets that have both host and provider in the user. @@ -3050,16 +3049,8 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } - // Remove the providers and notify hosts in other profiles. - final int providerCount = mProviders.size(); - for (int i = providerCount - 1; i >= 0; i--) { - Provider provider = mProviders.get(i); - if (provider.getUserId() == userId) { - crossProfileWidgetsChanged |= !provider.widgets.isEmpty(); - providersChanged = true; - deleteProviderLocked(provider); - } - } + // Leave the providers present as hosts will show the widgets + // masked while the user is stopped. // Remove grants for this user. final int grantCount = mPackagesWithBindWidgetPermission.size(); @@ -3082,11 +3073,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku mNextAppWidgetIds.removeAt(nextIdIndex); } - // Announce removed provider changes to all hosts in the group. - if (providersChanged) { - scheduleNotifyGroupHostsForProvidersChangedLocked(userId); - } - // Save state if removing a profile changed the group state. // Nothing will be saved if the group parent was removed. if (crossProfileWidgetsChanged) {