From 5fb94cca99cc62b7c60a416733d091002c6461a0 Mon Sep 17 00:00:00 2001 From: Beverly Date: Wed, 29 Apr 2020 15:30:28 -0400 Subject: [PATCH] Remove HUN when user launches intent from its guts Test: manual Fixes: 155308033 Change-Id: I903345b46e74f06428516105a358fafc6137ead4 --- .../StatusBarNotificationActivityStarter.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java index d40b5f9728ddd..9345b7580e2e3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java @@ -285,18 +285,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit mLogger.logHandleClickAfterKeyguardDismissed(sbn.getKey()); // TODO: Some of this code may be able to move to NotificationEntryManager. - if (mHeadsUpManager != null && mHeadsUpManager.isAlerting(sbn.getKey())) { - // Release the HUN notification to the shade. - - if (mPresenter.isPresenterFullyCollapsed()) { - HeadsUpUtil.setIsClickedHeadsUpNotification(row, true); - } - // - // In most cases, when FLAG_AUTO_CANCEL is set, the notification will - // become canceled shortly by NoMan, but we can't assume that. - mHeadsUpManager.removeNotification(sbn.getKey(), - true /* releaseImmediately */); - } + removeHUN(row); NotificationEntry parentToCancel = null; if (shouldAutoCancel(sbn) && mGroupManager.isOnlyChildInGroup(sbn)) { NotificationEntry summarySbn = mGroupManager.getLogicalGroupSummary(sbn); @@ -461,8 +450,12 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit row, mStatusBar.isOccluded())), new UserHandle(UserHandle.getUserId(appUid))); mActivityLaunchAnimator.setLaunchResult(launchResult, true /* isActivityIntent */); + + // Putting it back on the main thread, since we're touching views + mMainThreadHandler.post(() -> { + removeHUN(row); + }); if (shouldCollapse()) { - // Putting it back on the main thread, since we're touching views mMainThreadHandler.post(() -> mCommandQueue.animateCollapsePanels( CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */)); } @@ -494,6 +487,20 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit }, null, false /* afterKeyguardGone */); } + private void removeHUN(ExpandableNotificationRow row) { + String key = row.getEntry().getSbn().getKey(); + if (mHeadsUpManager != null && mHeadsUpManager.isAlerting(key)) { + // Release the HUN notification to the shade. + if (mPresenter.isPresenterFullyCollapsed()) { + HeadsUpUtil.setIsClickedHeadsUpNotification(row, true); + } + + // In most cases, when FLAG_AUTO_CANCEL is set, the notification will + // become canceled shortly by NoMan, but we can't assume that. + mHeadsUpManager.removeNotification(key, true /* releaseImmediately */); + } + } + private void handleFullScreenIntent(NotificationEntry entry) { if (mNotificationInterruptStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) { if (shouldSuppressFullScreenIntent(entry)) {