From 213d705feda03c87f3e0495b6e73217500156cef Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 15 May 2018 16:43:38 -0700 Subject: [PATCH] Fix issue where panel wouldn't collapse Notification panel would not collapse after clicking on a notification when the keyguard is occluded. Collapsing is necessary because otherwise the afterKeyguardGoneRunnable would not be reached. Test: manual Change-Id: I15f997e0181e9af0c322834ad3357d26f9c38c1b Fixes: 78907161 --- .../statusbar/notification/ActivityLaunchAnimator.java | 5 ++--- .../src/com/android/systemui/statusbar/phone/StatusBar.java | 6 ++++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java index 20ab64cfdb170..cfbb4d93c590a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java @@ -20,7 +20,6 @@ import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; -import android.app.ActivityOptions; import android.graphics.Matrix; import android.graphics.Rect; import android.os.RemoteException; @@ -76,8 +75,8 @@ public class ActivityLaunchAnimator { } public RemoteAnimationAdapter getLaunchAnimation( - ExpandableNotificationRow sourceNotification) { - if (mStatusBar.getBarState() != StatusBarState.SHADE) { + ExpandableNotificationRow sourceNotification, boolean occluded) { + if (mStatusBar.getBarState() != StatusBarState.SHADE || occluded) { return null; } AnimationRunner animationRunner = new AnimationRunner(sourceNotification); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 65cb56c7cc138..9eeb4d250d995 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -5058,6 +5058,7 @@ public class StatusBar extends SystemUI implements DemoMode, final boolean afterKeyguardGone = intent.isActivity() && PreviewInflater.wouldLaunchResolverActivity(mContext, intent.getIntent(), mLockscreenUserManager.getCurrentUserId()); + final boolean wasOccluded = mIsOccluded; dismissKeyguardThenExecute(() -> { // TODO: Some of this code may be able to move to NotificationEntryManager. if (mHeadsUpManager != null && mHeadsUpManager.isHeadsUp(notificationKey)) { @@ -5121,7 +5122,7 @@ public class StatusBar extends SystemUI implements DemoMode, remoteInputText.toString()); } RemoteAnimationAdapter adapter = mActivityLaunchAnimator.getLaunchAnimation( - row); + row, wasOccluded); try { if (adapter != null) { ActivityManager.getService() @@ -5168,6 +5169,7 @@ public class StatusBar extends SystemUI implements DemoMode, if (mStatusBarKeyguardViewManager.isShowing() && mStatusBarKeyguardViewManager.isOccluded()) { mStatusBarKeyguardViewManager.addAfterKeyguardGoneRunnable(runnable); + collapsePanel(true /* animate */); } else { new Thread(runnable).start(); } @@ -5252,7 +5254,7 @@ public class StatusBar extends SystemUI implements DemoMode, int launchResult = TaskStackBuilder.create(mContext) .addNextIntentWithParentStack(intent) .startActivities(getActivityOptions( - mActivityLaunchAnimator.getLaunchAnimation(row)), + mActivityLaunchAnimator.getLaunchAnimation(row, mIsOccluded)), new UserHandle(UserHandle.getUserId(appUid))); mActivityLaunchAnimator.setLaunchResult(launchResult); if (shouldCollapse()) {