Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +32 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import static android.view.View.VISIBLE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_CONTROLLER; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_GESTURE; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.wm.shell.bubbles.BubblePositioner.TASKBAR_POSITION_BOTTOM; Loading Loading @@ -859,6 +860,19 @@ public class BubbleController { } } private void onNotificationPanelExpandedChanged(boolean expanded) { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "onNotificationPanelExpandedChanged: expanded=" + expanded); } if (mStackView != null && mStackView.isExpanded()) { if (expanded) { mStackView.stopMonitoringSwipeUpGesture(); } else { mStackView.startMonitoringSwipeUpGesture(); } } } private void setSysuiProxy(Bubbles.SysuiProxy proxy) { mSysuiProxy = proxy; } Loading Loading @@ -1441,6 +1455,18 @@ public class BubbleController { return mStackView; } /** * Check if notification panel is in an expanded state. * Makes a call to System UI process and delivers the result via {@code callback} on the * WM Shell main thread. * * @param callback callback that has the result of notification panel expanded state */ public void isNotificationPanelExpanded(Consumer<Boolean> callback) { mSysuiProxy.isNotificationPanelExpand(expanded -> mMainExecutor.execute(() -> callback.accept(expanded))); } /** * Description of current bubble state. */ Loading Loading @@ -1809,6 +1835,12 @@ public class BubbleController { }); } @Override public void onNotificationPanelExpandedChanged(boolean expanded) { mMainExecutor.execute( () -> BubbleController.this.onNotificationPanelExpandedChanged(expanded)); } @Override public void dump(PrintWriter pw, String[] args) { try { Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +28 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static com.android.wm.shell.animation.Interpolators.ALPHA_IN; import static com.android.wm.shell.animation.Interpolators.ALPHA_OUT; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_GESTURE; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME; Loading Loading @@ -1930,11 +1931,13 @@ public class BubbleStackView extends FrameLayout return; } boolean wasExpanded = mIsExpanded; hideCurrentInputMethod(); mBubbleController.getSysuiProxy().onStackExpandChanged(shouldExpand); if (mIsExpanded) { if (wasExpanded) { stopMonitoringSwipeUpGesture(); if (HOME_GESTURE_ENABLED) { animateCollapse(); Loading @@ -1949,14 +1952,24 @@ public class BubbleStackView extends FrameLayout logBubbleEvent(mExpandedBubble, FrameworkStatsLog.BUBBLE_UICHANGED__ACTION__STACK_EXPANDED); if (HOME_GESTURE_ENABLED) { mBubbleController.isNotificationPanelExpanded(notifPanelExpanded -> { if (!notifPanelExpanded && mIsExpanded) { startMonitoringSwipeUpGesture(); } }); } } notifyExpansionChanged(mExpandedBubble, mIsExpanded); } private void startMonitoringSwipeUpGesture() { stopMonitoringSwipeUpGesture(); /** * Monitor for swipe up gesture that is used to collapse expanded view */ void startMonitoringSwipeUpGesture() { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "startMonitoringSwipeUpGesture"); } stopMonitoringSwipeUpGestureInternal(); if (isGestureNavEnabled()) { mBubblesNavBarGestureTracker = new BubblesNavBarGestureTracker(mContext, mPositioner); Loading @@ -1971,7 +1984,17 @@ public class BubbleStackView extends FrameLayout == WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; } private void stopMonitoringSwipeUpGesture() { /** * Stop monitoring for swipe up gesture */ void stopMonitoringSwipeUpGesture() { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "stopMonitoringSwipeUpGesture"); } stopMonitoringSwipeUpGestureInternal(); } private void stopMonitoringSwipeUpGestureInternal() { if (mBubblesNavBarGestureTracker != null) { mBubblesNavBarGestureTracker.stop(); mBubblesNavBarGestureTracker = null; Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +6 −1 Original line number Diff line number Diff line Loading @@ -212,6 +212,11 @@ public interface Bubbles { NotificationChannel channel, int modificationType); /** * Called when notification panel is expanded or collapsed */ void onNotificationPanelExpandedChanged(boolean expanded); /** * Called when the status bar has become visible or invisible (either permanently or * temporarily). Loading Loading @@ -277,7 +282,7 @@ public interface Bubbles { /** Callback to tell SysUi components execute some methods. */ interface SysuiProxy { void isNotificationShadeExpand(Consumer<Boolean> callback); void isNotificationPanelExpand(Consumer<Boolean> callback); void getPendingOrActiveEntry(String key, Consumer<BubbleEntry> callback); Loading packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java +3 −2 Original line number Diff line number Diff line Loading @@ -199,7 +199,8 @@ public class SystemActions extends CoreStartable { mNotificationShadeController = notificationShadeController; // Saving in instance variable since to prevent GC since // NotificationShadeWindowController.registerCallback() only keeps weak references. mNotificationShadeCallback = (keyguardShowing, keyguardOccluded, bouncerShowing, mDozing) -> mNotificationShadeCallback = (keyguardShowing, keyguardOccluded, bouncerShowing, mDozing, panelExpanded) -> registerOrUnregisterDismissNotificationShadeAction(); mCentralSurfacesOptionalLazy = centralSurfacesOptionalLazy; } Loading packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +1 −1 Original line number Diff line number Diff line Loading @@ -736,7 +736,7 @@ public class OverviewProxyService extends CurrentUserTracker implements } private void onStatusBarStateChanged(boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing, boolean isDozing) { boolean bouncerShowing, boolean isDozing, boolean panelExpanded) { mSysUiState.setFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING, keyguardShowing && !keyguardOccluded) .setFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED, Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +32 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import static android.view.View.VISIBLE; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_CONTROLLER; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_GESTURE; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.wm.shell.bubbles.BubblePositioner.TASKBAR_POSITION_BOTTOM; Loading Loading @@ -859,6 +860,19 @@ public class BubbleController { } } private void onNotificationPanelExpandedChanged(boolean expanded) { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "onNotificationPanelExpandedChanged: expanded=" + expanded); } if (mStackView != null && mStackView.isExpanded()) { if (expanded) { mStackView.stopMonitoringSwipeUpGesture(); } else { mStackView.startMonitoringSwipeUpGesture(); } } } private void setSysuiProxy(Bubbles.SysuiProxy proxy) { mSysuiProxy = proxy; } Loading Loading @@ -1441,6 +1455,18 @@ public class BubbleController { return mStackView; } /** * Check if notification panel is in an expanded state. * Makes a call to System UI process and delivers the result via {@code callback} on the * WM Shell main thread. * * @param callback callback that has the result of notification panel expanded state */ public void isNotificationPanelExpanded(Consumer<Boolean> callback) { mSysuiProxy.isNotificationPanelExpand(expanded -> mMainExecutor.execute(() -> callback.accept(expanded))); } /** * Description of current bubble state. */ Loading Loading @@ -1809,6 +1835,12 @@ public class BubbleController { }); } @Override public void onNotificationPanelExpandedChanged(boolean expanded) { mMainExecutor.execute( () -> BubbleController.this.onNotificationPanelExpandedChanged(expanded)); } @Override public void dump(PrintWriter pw, String[] args) { try { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +28 −5 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static com.android.wm.shell.animation.Interpolators.ALPHA_IN; import static com.android.wm.shell.animation.Interpolators.ALPHA_OUT; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_GESTURE; import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME; Loading Loading @@ -1930,11 +1931,13 @@ public class BubbleStackView extends FrameLayout return; } boolean wasExpanded = mIsExpanded; hideCurrentInputMethod(); mBubbleController.getSysuiProxy().onStackExpandChanged(shouldExpand); if (mIsExpanded) { if (wasExpanded) { stopMonitoringSwipeUpGesture(); if (HOME_GESTURE_ENABLED) { animateCollapse(); Loading @@ -1949,14 +1952,24 @@ public class BubbleStackView extends FrameLayout logBubbleEvent(mExpandedBubble, FrameworkStatsLog.BUBBLE_UICHANGED__ACTION__STACK_EXPANDED); if (HOME_GESTURE_ENABLED) { mBubbleController.isNotificationPanelExpanded(notifPanelExpanded -> { if (!notifPanelExpanded && mIsExpanded) { startMonitoringSwipeUpGesture(); } }); } } notifyExpansionChanged(mExpandedBubble, mIsExpanded); } private void startMonitoringSwipeUpGesture() { stopMonitoringSwipeUpGesture(); /** * Monitor for swipe up gesture that is used to collapse expanded view */ void startMonitoringSwipeUpGesture() { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "startMonitoringSwipeUpGesture"); } stopMonitoringSwipeUpGestureInternal(); if (isGestureNavEnabled()) { mBubblesNavBarGestureTracker = new BubblesNavBarGestureTracker(mContext, mPositioner); Loading @@ -1971,7 +1984,17 @@ public class BubbleStackView extends FrameLayout == WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; } private void stopMonitoringSwipeUpGesture() { /** * Stop monitoring for swipe up gesture */ void stopMonitoringSwipeUpGesture() { if (DEBUG_BUBBLE_GESTURE) { Log.d(TAG, "stopMonitoringSwipeUpGesture"); } stopMonitoringSwipeUpGestureInternal(); } private void stopMonitoringSwipeUpGestureInternal() { if (mBubblesNavBarGestureTracker != null) { mBubblesNavBarGestureTracker.stop(); mBubblesNavBarGestureTracker = null; Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +6 −1 Original line number Diff line number Diff line Loading @@ -212,6 +212,11 @@ public interface Bubbles { NotificationChannel channel, int modificationType); /** * Called when notification panel is expanded or collapsed */ void onNotificationPanelExpandedChanged(boolean expanded); /** * Called when the status bar has become visible or invisible (either permanently or * temporarily). Loading Loading @@ -277,7 +282,7 @@ public interface Bubbles { /** Callback to tell SysUi components execute some methods. */ interface SysuiProxy { void isNotificationShadeExpand(Consumer<Boolean> callback); void isNotificationPanelExpand(Consumer<Boolean> callback); void getPendingOrActiveEntry(String key, Consumer<BubbleEntry> callback); Loading
packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java +3 −2 Original line number Diff line number Diff line Loading @@ -199,7 +199,8 @@ public class SystemActions extends CoreStartable { mNotificationShadeController = notificationShadeController; // Saving in instance variable since to prevent GC since // NotificationShadeWindowController.registerCallback() only keeps weak references. mNotificationShadeCallback = (keyguardShowing, keyguardOccluded, bouncerShowing, mDozing) -> mNotificationShadeCallback = (keyguardShowing, keyguardOccluded, bouncerShowing, mDozing, panelExpanded) -> registerOrUnregisterDismissNotificationShadeAction(); mCentralSurfacesOptionalLazy = centralSurfacesOptionalLazy; } Loading
packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +1 −1 Original line number Diff line number Diff line Loading @@ -736,7 +736,7 @@ public class OverviewProxyService extends CurrentUserTracker implements } private void onStatusBarStateChanged(boolean keyguardShowing, boolean keyguardOccluded, boolean bouncerShowing, boolean isDozing) { boolean bouncerShowing, boolean isDozing, boolean panelExpanded) { mSysUiState.setFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING, keyguardShowing && !keyguardOccluded) .setFlag(SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED, Loading