Fix autogroupsummary bug

Summary cannot be updated with key after notification is removed from NotificationsByKey.
So OngoingFlag of Autogrounpsummary remains.
Modify the GroupHelper interface to deliver summary updateable information.

Test: Make autogroupsummary.
Test: update one of notification with ongoing flag.
Test: cancel the notification and check flag of autogroupsummary.
Change-Id: I0d14daaa69a94c1a3fe81b12d16b44e3a78281fe
Merged-In: I0d14daaa69a94c1a3fe81b12d16b44e3a78281fe
This commit is contained in:
woongki min
2022-01-15 13:15:07 +09:00
committed by Julia Reynolds
parent c4227ee28f
commit 0ab7642f30
3 changed files with 11 additions and 19 deletions

View File

@@ -82,7 +82,7 @@ public class GroupHelper {
}
String combinedKey = generatePackageGroupKey(userId, sbn.getPackageName(), group);
boolean needsOngoingFlag = notifications.size() > 0;
mCallback.updateAutogroupSummary(sbn.getKey(), needsOngoingFlag);
mCallback.updateAutogroupSummary(userId, sbn.getPackageName(), needsOngoingFlag);
}
public void onNotificationUpdated(StatusBarNotification childSbn,
@@ -211,6 +211,6 @@ public class GroupHelper {
void removeAutoGroup(String key);
void addAutoGroupSummary(int userId, String pkg, String triggeringKey);
void removeAutoGroupSummary(int user, String pkg);
void updateAutogroupSummary(String key, boolean needsOngoingFlag);
void updateAutogroupSummary(int userId, String pkg, boolean needsOngoingFlag);
}
}

View File

@@ -2498,19 +2498,11 @@ public class NotificationManagerService extends SystemService {
}
@Override
public void updateAutogroupSummary(String key, boolean needsOngoingFlag) {
String pkg;
synchronized (mNotificationLock) {
NotificationRecord r = mNotificationsByKey.get(key);
pkg = r != null && r.getSbn() != null ? r.getSbn().getPackageName() : null;
}
public void updateAutogroupSummary(int userId, String pkg, boolean needsOngoingFlag) {
boolean isAppForeground = pkg != null
&& mActivityManager.getPackageImportance(pkg) == IMPORTANCE_FOREGROUND;
synchronized (mNotificationLock) {
NotificationRecord r = mNotificationsByKey.get(key);
if (r == null) return;
updateAutobundledSummaryFlags(r.getUser().getIdentifier(),
r.getSbn().getPackageName(), needsOngoingFlag, isAppForeground);
updateAutobundledSummaryFlags(userId, pkg, needsOngoingFlag, isAppForeground);
}
}
});

View File

@@ -174,7 +174,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
verify(mCallback, times(AUTOGROUP_AT_COUNT + 1))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -203,7 +203,7 @@ public class GroupHelperTest extends UiServiceTestCase {
mGroupHelper.onNotificationUpdated(notifications.get(0), true);
verify(mCallback, times(AUTOGROUP_AT_COUNT + 2))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -236,7 +236,7 @@ public class GroupHelperTest extends UiServiceTestCase {
mGroupHelper.onNotificationUpdated(notifications.get(0), true);
verify(mCallback, times(AUTOGROUP_AT_COUNT + 3))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -263,7 +263,7 @@ public class GroupHelperTest extends UiServiceTestCase {
mGroupHelper.onNotificationRemoved(notifications.get(0));
verify(mCallback, times(AUTOGROUP_AT_COUNT + 2))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -291,7 +291,7 @@ public class GroupHelperTest extends UiServiceTestCase {
mGroupHelper.onNotificationUpdated(notifications.get(0), true);
verify(mCallback, times(1))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -315,7 +315,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
verify(mCallback, times(1))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(
@@ -339,7 +339,7 @@ public class GroupHelperTest extends UiServiceTestCase {
}
verify(mCallback, times(0))
.updateAutogroupSummary(anyString(), eq(true));
.updateAutogroupSummary(anyInt(), anyString(), eq(true));
int userId = UserHandle.SYSTEM.getIdentifier();
assertEquals(mGroupHelper.getOngoingGroupCount(userId, pkg, AUTOGROUP_KEY), 0);