Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30998115 authored by Winson Chung's avatar Winson Chung Committed by android-build-merger
Browse files

Check sysui state before swiping up

am: f0625fd9

Change-Id: Ia277bf4ca41939d001100dfa9a7ff481fc1362de
parents 5e95b62f f0625fd9
Loading
Loading
Loading
Loading
+15 −2
Original line number Original line Diff line number Diff line
@@ -20,6 +20,9 @@ import static android.view.MotionEvent.ACTION_DOWN;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_INPUT_MONITOR;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_INPUT_MONITOR;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYSUI_PROXY;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NAV_BAR_HIDDEN;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;


import android.annotation.TargetApi;
import android.annotation.TargetApi;
import android.app.ActivityManager.RunningTaskInfo;
import android.app.ActivityManager.RunningTaskInfo;
@@ -65,6 +68,8 @@ import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver;
import com.android.systemui.shared.system.InputConsumerController;
import com.android.systemui.shared.system.InputConsumerController;
import com.android.systemui.shared.system.InputMonitorCompat;
import com.android.systemui.shared.system.InputMonitorCompat;


import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags;
import java.io.FileDescriptor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -160,7 +165,7 @@ public class TouchInteractionService extends Service implements
        }
        }


        public void onSystemUiStateChanged(int stateFlags) {
        public void onSystemUiStateChanged(int stateFlags) {
            // To be implemented
            mSystemUiStateFlags = stateFlags;
        }
        }


        /** Deprecated methods **/
        /** Deprecated methods **/
@@ -200,6 +205,7 @@ public class TouchInteractionService extends Service implements
    private SwipeSharedState mSwipeSharedState;
    private SwipeSharedState mSwipeSharedState;
    private boolean mAssistantAvailable;
    private boolean mAssistantAvailable;
    private float mPendingAssistantVisibility = 0;
    private float mPendingAssistantVisibility = 0;
    private @SystemUiStateFlags int mSystemUiStateFlags;


    private boolean mIsUserUnlocked;
    private boolean mIsUserUnlocked;
    private List<Runnable> mOnUserUnlockedCallbacks;
    private List<Runnable> mOnUserUnlockedCallbacks;
@@ -414,7 +420,8 @@ public class TouchInteractionService extends Service implements
        MotionEvent event = (MotionEvent) ev;
        MotionEvent event = (MotionEvent) ev;
        TOUCH_INTERACTION_LOG.addLog("onMotionEvent", event.getActionMasked());
        TOUCH_INTERACTION_LOG.addLog("onMotionEvent", event.getActionMasked());
        if (event.getAction() == ACTION_DOWN) {
        if (event.getAction() == ACTION_DOWN) {
            if (mSwipeTouchRegion.contains(event.getX(), event.getY())) {
            if (isInValidSystemUiState()
                    && mSwipeTouchRegion.contains(event.getX(), event.getY())) {
                boolean useSharedState = mConsumer.isActive();
                boolean useSharedState = mConsumer.isActive();
                mConsumer.onConsumerAboutToBeSwitched();
                mConsumer.onConsumerAboutToBeSwitched();
                mConsumer = newConsumer(useSharedState, event);
                mConsumer = newConsumer(useSharedState, event);
@@ -427,6 +434,12 @@ public class TouchInteractionService extends Service implements
        mUncheckedConsumer.onMotionEvent(event);
        mUncheckedConsumer.onMotionEvent(event);
    }
    }


    private boolean isInValidSystemUiState() {
        return (mSystemUiStateFlags & SYSUI_STATE_SCREEN_PINNING) == 0
                && (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0
                && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0;
    }

    private InputConsumer newConsumer(boolean useSharedState, MotionEvent event) {
    private InputConsumer newConsumer(boolean useSharedState, MotionEvent event) {
        // TODO: this makes a binder call every touch down. we should move to a listener pattern.
        // TODO: this makes a binder call every touch down. we should move to a listener pattern.
        if (!mIsUserUnlocked || mKM.isDeviceLocked()) {
        if (!mIsUserUnlocked || mKM.isDeviceLocked()) {