Loading quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java +8 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ import com.android.quickstep.inputconsumers.OverviewInputConsumer; import com.android.quickstep.inputconsumers.OverviewWithoutFocusInputConsumer; import com.android.quickstep.inputconsumers.ResetGestureInputConsumer; import com.android.quickstep.inputconsumers.ScreenPinnedInputConsumer; import com.android.quickstep.inputconsumers.SysUiOverlayInputConsumer; import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.AssistantUtilities; import com.android.quickstep.util.ProtoTracer; Loading Loading @@ -588,6 +589,13 @@ public class TouchInteractionService extends Service implements PluginListener<O } } // If Bubbles is expanded, use the overlay input consumer, which will close Bubbles // instead of going all the way home when a swipe up is detected. if (mDeviceState.isBubblesExpanded()) { base = new SysUiOverlayInputConsumer( getBaseContext(), mDeviceState, mInputMonitorCompat); } if (mDeviceState.isScreenPinningActive()) { // Note: we only allow accessibility to wrap this, and it replaces the previous // base input consumer (which should be NO_OP anyway since topTaskLocked == true). Loading quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java 0 → 100644 +86 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep.inputconsumers; import android.content.Context; import android.content.Intent; import android.graphics.PointF; import android.view.MotionEvent; import com.android.launcher3.testing.TestLogging; import com.android.launcher3.testing.TestProtocol; import com.android.quickstep.InputConsumer; import com.android.quickstep.RecentsAnimationDeviceState; import com.android.quickstep.util.TriggerSwipeUpTouchTracker; import com.android.systemui.shared.system.InputMonitorCompat; /** * Input consumer used when a fullscreen System UI overlay is showing (such as the expanded Bubbles * UI). * * This responds to swipes up by sending a closeSystemDialogs broadcast (causing overlays to close) * rather than closing the app behind the overlay and sending the user all the way home. */ public class SysUiOverlayInputConsumer implements InputConsumer, TriggerSwipeUpTouchTracker.OnSwipeUpListener { private final Context mContext; private final InputMonitorCompat mInputMonitor; private final TriggerSwipeUpTouchTracker mTriggerSwipeUpTracker; public SysUiOverlayInputConsumer( Context context, RecentsAnimationDeviceState deviceState, InputMonitorCompat inputMonitor) { mContext = context; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, true, deviceState.getNavBarPosition(), this::onInterceptTouch, this); } @Override public int getType() { return TYPE_SYSUI_OVERLAY; } @Override public boolean allowInterceptByParent() { return !mTriggerSwipeUpTracker.interceptedTouch(); } @Override public void onMotionEvent(MotionEvent ev) { mTriggerSwipeUpTracker.onMotionEvent(ev); } private void onInterceptTouch() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); } } @Override public void onSwipeUp(boolean wasFling, PointF finalVelocity) { // Close system dialogs when a swipe up is detected. mContext.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); } @Override public void onSwipeUpCancelled() { } } quickstep/src/com/android/quickstep/InputConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ public interface InputConsumer { int TYPE_OVERVIEW_WITHOUT_FOCUS = 1 << 7; int TYPE_RESET_GESTURE = 1 << 8; int TYPE_OVERSCROLL = 1 << 9; int TYPE_SYSUI_OVERLAY = 1 << 10; String[] NAMES = new String[] { "TYPE_NO_OP", // 0 Loading @@ -46,6 +47,7 @@ public interface InputConsumer { "TYPE_OVERVIEW_WITHOUT_FOCUS", // 7 "TYPE_RESET_GESTURE", // 8 "TYPE_OVERSCROLL", // 9 "TYPE_SYSUI_OVERLAY" // 10 }; InputConsumer NO_OP = () -> TYPE_NO_OP; Loading quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java +7 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,6 @@ public class RecentsAnimationDeviceState implements return (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0 && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0 && (mSystemUiStateFlags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) == 0 && (mSystemUiStateFlags & SYSUI_STATE_BUBBLES_EXPANDED) == 0 && ((mSystemUiStateFlags & SYSUI_STATE_HOME_DISABLED) == 0 || (mSystemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0); } Loading @@ -406,6 +405,13 @@ public class RecentsAnimationDeviceState implements return (mSystemUiStateFlags & SYSUI_STATE_SCREEN_PINNING) != 0; } /** * @return whether the bubble stack is expanded */ public boolean isBubblesExpanded() { return (mSystemUiStateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; } /** * @return whether lock-task mode is active */ Loading Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java +8 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,7 @@ import com.android.quickstep.inputconsumers.OverviewInputConsumer; import com.android.quickstep.inputconsumers.OverviewWithoutFocusInputConsumer; import com.android.quickstep.inputconsumers.ResetGestureInputConsumer; import com.android.quickstep.inputconsumers.ScreenPinnedInputConsumer; import com.android.quickstep.inputconsumers.SysUiOverlayInputConsumer; import com.android.quickstep.util.ActiveGestureLog; import com.android.quickstep.util.AssistantUtilities; import com.android.quickstep.util.ProtoTracer; Loading Loading @@ -588,6 +589,13 @@ public class TouchInteractionService extends Service implements PluginListener<O } } // If Bubbles is expanded, use the overlay input consumer, which will close Bubbles // instead of going all the way home when a swipe up is detected. if (mDeviceState.isBubblesExpanded()) { base = new SysUiOverlayInputConsumer( getBaseContext(), mDeviceState, mInputMonitorCompat); } if (mDeviceState.isScreenPinningActive()) { // Note: we only allow accessibility to wrap this, and it replaces the previous // base input consumer (which should be NO_OP anyway since topTaskLocked == true). Loading
quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java 0 → 100644 +86 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.quickstep.inputconsumers; import android.content.Context; import android.content.Intent; import android.graphics.PointF; import android.view.MotionEvent; import com.android.launcher3.testing.TestLogging; import com.android.launcher3.testing.TestProtocol; import com.android.quickstep.InputConsumer; import com.android.quickstep.RecentsAnimationDeviceState; import com.android.quickstep.util.TriggerSwipeUpTouchTracker; import com.android.systemui.shared.system.InputMonitorCompat; /** * Input consumer used when a fullscreen System UI overlay is showing (such as the expanded Bubbles * UI). * * This responds to swipes up by sending a closeSystemDialogs broadcast (causing overlays to close) * rather than closing the app behind the overlay and sending the user all the way home. */ public class SysUiOverlayInputConsumer implements InputConsumer, TriggerSwipeUpTouchTracker.OnSwipeUpListener { private final Context mContext; private final InputMonitorCompat mInputMonitor; private final TriggerSwipeUpTouchTracker mTriggerSwipeUpTracker; public SysUiOverlayInputConsumer( Context context, RecentsAnimationDeviceState deviceState, InputMonitorCompat inputMonitor) { mContext = context; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, true, deviceState.getNavBarPosition(), this::onInterceptTouch, this); } @Override public int getType() { return TYPE_SYSUI_OVERLAY; } @Override public boolean allowInterceptByParent() { return !mTriggerSwipeUpTracker.interceptedTouch(); } @Override public void onMotionEvent(MotionEvent ev) { mTriggerSwipeUpTracker.onMotionEvent(ev); } private void onInterceptTouch() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); } } @Override public void onSwipeUp(boolean wasFling, PointF finalVelocity) { // Close system dialogs when a swipe up is detected. mContext.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); } @Override public void onSwipeUpCancelled() { } }
quickstep/src/com/android/quickstep/InputConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ public interface InputConsumer { int TYPE_OVERVIEW_WITHOUT_FOCUS = 1 << 7; int TYPE_RESET_GESTURE = 1 << 8; int TYPE_OVERSCROLL = 1 << 9; int TYPE_SYSUI_OVERLAY = 1 << 10; String[] NAMES = new String[] { "TYPE_NO_OP", // 0 Loading @@ -46,6 +47,7 @@ public interface InputConsumer { "TYPE_OVERVIEW_WITHOUT_FOCUS", // 7 "TYPE_RESET_GESTURE", // 8 "TYPE_OVERSCROLL", // 9 "TYPE_SYSUI_OVERLAY" // 10 }; InputConsumer NO_OP = () -> TYPE_NO_OP; Loading
quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java +7 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,6 @@ public class RecentsAnimationDeviceState implements return (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0 && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0 && (mSystemUiStateFlags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) == 0 && (mSystemUiStateFlags & SYSUI_STATE_BUBBLES_EXPANDED) == 0 && ((mSystemUiStateFlags & SYSUI_STATE_HOME_DISABLED) == 0 || (mSystemUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0); } Loading @@ -406,6 +405,13 @@ public class RecentsAnimationDeviceState implements return (mSystemUiStateFlags & SYSUI_STATE_SCREEN_PINNING) != 0; } /** * @return whether the bubble stack is expanded */ public boolean isBubblesExpanded() { return (mSystemUiStateFlags & SYSUI_STATE_BUBBLES_EXPANDED) != 0; } /** * @return whether lock-task mode is active */ Loading