Fixed a crash with the headsUpManager
Since the headsUpManager is calling out in various places to its listeners, the callbacks may query the headsupmanager in an internally inconsistent state, such that the pinned mode is true but there is no topEntry. Let's add a null-check for safety here. Bug: 137804505 Test: atest SystemUITests Change-Id: Ibae76b555ca51ccf676228b034a614d59a8b4e8e
This commit is contained in:
@@ -301,12 +301,15 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable,
|
||||
}
|
||||
|
||||
public Region calculateTouchableRegion() {
|
||||
if (!hasPinnedHeadsUp()) {
|
||||
NotificationEntry topEntry = getTopEntry();
|
||||
// This call could be made in an inconsistent state while the pinnedMode hasn't been
|
||||
// updated yet, but callbacks leading out of the headsUp manager, querying it. Let's
|
||||
// therefore also check if the topEntry is null.
|
||||
if (!hasPinnedHeadsUp() || topEntry == null) {
|
||||
mTouchableRegion.set(0, 0, mStatusBarWindowView.getWidth(), mStatusBarHeight);
|
||||
updateRegionForNotch(mTouchableRegion);
|
||||
|
||||
} else {
|
||||
NotificationEntry topEntry = getTopEntry();
|
||||
if (topEntry.isChildInGroup()) {
|
||||
final NotificationEntry groupSummary =
|
||||
mGroupManager.getGroupSummary(topEntry.notification);
|
||||
|
||||
Reference in New Issue
Block a user