From 638db506c86e2655061730ad6cd3423498cc0c87 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Fri, 18 Jun 2021 04:06:00 +0800 Subject: [PATCH] Fix shortcut rotate trigger swipe notification onActivatedActionChanged() was invoke When setting ONE_HANDED_MODE_ACTIVATED update, the root cause is onRotateDisplay() in OHMDisplayAreaOrganizer and go to finishOffset() and callback onStopFinished(), then OHMController#onStopFinished() invoke reset settings through notifyShortcutState(STATE_NONE) which reset settings key ONE_HANDED_MODE_ACTIVATED to 0. At the meanwhile reset key cause observer invoke onActivatedActionChanged() to expand notification again. The simple solution is directly return if current setting is "Swipe notification" in OHMDisplayAreaOrganzier onRotateDisplay() to avoid finishOffset() called. Test: manual tap OHM shortcut to expand notification, rotate to check if notification expanded Test: atest WMShellUnitTests Bug: 191337996 Change-Id: I697dbabce070249f0a5e513abd514f9e02b8aa16 --- .../wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java index d749c320bf948..03a90c6d46774 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedDisplayAreaOrganizer.java @@ -191,8 +191,15 @@ public class OneHandedDisplayAreaOrganizer extends DisplayAreaOrganizer { myUserId())) { return; } + mDisplayLayout.rotateTo(context.getResources(), toRotation); updateDisplayBounds(); + + if (mOneHandedSettingsUtil.getSettingsSwipeToNotificationEnabled( + context.getContentResolver(), myUserId())) { + // If current settings is swipe notification, skip finishOffset. + return; + } finishOffset(0, TRANSITION_DIRECTION_EXIT); }