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

Commit 75eb0e0f authored by Winson Chung's avatar Winson Chung
Browse files

2/ Move device state logic to its own class

- Feed the class down to the input consumers and related gesture classes
  instead of specific sysui state flags

Bug: 141886704

Change-Id: I2ade7f48555c9d0ba0d3fac5c1f2dae694624224
parent 92a015f2
Loading
Loading
Loading
Loading
+13 −25
Original line number Original line Diff line number Diff line
@@ -34,6 +34,8 @@ import android.view.MotionEvent;


import com.android.launcher3.Utilities;
import com.android.launcher3.Utilities;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.util.DefaultDisplay;
import com.android.quickstep.RecentsAnimationDeviceState;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;


@@ -44,15 +46,6 @@ import com.android.systemui.shared.recents.ISystemUiProxy;
public class TouchInteractionService extends Service {
public class TouchInteractionService extends Service {


    private static final String TAG = "GoTouchInteractionService";
    private static final String TAG = "GoTouchInteractionService";
    private boolean mIsUserUnlocked;
    private BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) {
                initWhenUserUnlocked();
            }
        }
    };


    private final IBinder mMyBinder = new IOverviewProxy.Stub() {
    private final IBinder mMyBinder = new IOverviewProxy.Stub() {


@@ -68,21 +61,21 @@ public class TouchInteractionService extends Service {


        @Override
        @Override
        public void onOverviewToggle() {
        public void onOverviewToggle() {
            if (mIsUserUnlocked) {
            if (mDeviceState.isUserUnlocked()) {
                mOverviewCommandHelper.onOverviewToggle();
                mOverviewCommandHelper.onOverviewToggle();
            }
            }
        }
        }


        @Override
        @Override
        public void onOverviewShown(boolean triggeredFromAltTab) {
        public void onOverviewShown(boolean triggeredFromAltTab) {
            if (mIsUserUnlocked) {
            if (mDeviceState.isUserUnlocked()) {
                mOverviewCommandHelper.onOverviewShown(triggeredFromAltTab);
                mOverviewCommandHelper.onOverviewShown(triggeredFromAltTab);
            }
            }
        }
        }


        @Override
        @Override
        public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
        public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
            if (mIsUserUnlocked && triggeredFromAltTab && !triggeredFromHomeKey) {
            if (mDeviceState.isUserUnlocked() && triggeredFromAltTab && !triggeredFromHomeKey) {
                // onOverviewShownFromAltTab hides the overview and ends at the target app
                // onOverviewShownFromAltTab hides the overview and ends at the target app
                mOverviewCommandHelper.onOverviewHidden();
                mOverviewCommandHelper.onOverviewHidden();
            }
            }
@@ -90,7 +83,7 @@ public class TouchInteractionService extends Service {


        @Override
        @Override
        public void onTip(int actionType, int viewType) {
        public void onTip(int actionType, int viewType) {
            if (mIsUserUnlocked) {
            if (mDeviceState.isUserUnlocked()) {
                mOverviewCommandHelper.onTip(actionType, viewType);
                mOverviewCommandHelper.onTip(actionType, viewType);
            }
            }
        }
        }
@@ -140,35 +133,30 @@ public class TouchInteractionService extends Service {
    private RecentsModel mRecentsModel;
    private RecentsModel mRecentsModel;
    private OverviewComponentObserver mOverviewComponentObserver;
    private OverviewComponentObserver mOverviewComponentObserver;
    private OverviewCommandHelper mOverviewCommandHelper;
    private OverviewCommandHelper mOverviewCommandHelper;
    private RecentsAnimationDeviceState mDeviceState;


    @Override
    @Override
    public void onCreate() {
    public void onCreate() {
        super.onCreate();
        super.onCreate();
        if (UserManagerCompat.getInstance(this).isUserUnlocked(Process.myUserHandle())) {
        mDeviceState = new RecentsAnimationDeviceState(this);
            initWhenUserUnlocked();
        mDeviceState.runOnUserUnlocked(this::onUserUnlocked);
        } else {
            mIsUserUnlocked = false;
            registerReceiver(mUserUnlockedReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));
        }


        sConnected = true;
        sConnected = true;
    }
    }


    private void initWhenUserUnlocked() {
    public void onUserUnlocked() {
        mRecentsModel = RecentsModel.INSTANCE.get(this);
        mRecentsModel = RecentsModel.INSTANCE.get(this);
        mOverviewComponentObserver = new OverviewComponentObserver(this);
        mOverviewComponentObserver = new OverviewComponentObserver(this, mDeviceState);
        mOverviewCommandHelper = new OverviewCommandHelper(this,
        mOverviewCommandHelper = new OverviewCommandHelper(this,
                mOverviewComponentObserver);
                mOverviewComponentObserver);
        mIsUserUnlocked = true;
        Utilities.unregisterReceiverSafely(this, mUserUnlockedReceiver);
    }
    }


    @Override
    @Override
    public void onDestroy() {
    public void onDestroy() {
        if (mIsUserUnlocked) {
        if (mDeviceState.isUserUnlocked()) {
            mOverviewComponentObserver.onDestroy();
            mOverviewComponentObserver.onDestroy();
        }
        }
        Utilities.unregisterReceiverSafely(this, mUserUnlockedReceiver);
        mDeviceState.destroy();
        sConnected = false;
        sConnected = false;
        super.onDestroy();
        super.onDestroy();
    }
    }
+2 −3
Original line number Original line Diff line number Diff line
@@ -38,7 +38,6 @@ import android.animation.TimeInterpolator;
import android.content.Context;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.RectF;
import android.graphics.Region;
import android.os.UserHandle;
import android.os.UserHandle;
import android.view.MotionEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View;
@@ -441,8 +440,8 @@ public final class LauncherActivityControllerHelper implements ActivityControlHe
    }
    }


    @Override
    @Override
    public boolean deferStartingActivity(Region activeNavBarRegion, MotionEvent ev) {
    public boolean deferStartingActivity(RecentsAnimationDeviceState deviceState, MotionEvent ev) {
        return activeNavBarRegion.contains((int) ev.getX(), (int) ev.getY());
        return deviceState.isInDeferredGestureRegion(ev);
    }
    }


    @Override
    @Override
+4 −1
Original line number Original line Diff line number Diff line
@@ -5,10 +5,12 @@ import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import android.content.Context;
import android.content.Context;
import android.os.Bundle;
import android.os.Bundle;


import com.android.launcher3.compat.UserManagerCompat;
import com.android.launcher3.testing.TestInformationHandler;
import com.android.launcher3.testing.TestInformationHandler;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.uioverrides.states.OverviewState;
import com.android.launcher3.uioverrides.states.OverviewState;
import com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController;
import com.android.launcher3.uioverrides.touchcontrollers.PortraitStatesTouchController;
import com.android.launcher3.util.DefaultDisplay;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.RecentsView;


@@ -78,7 +80,8 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
    }
    }


    private RecentsView getRecentsView() {
    private RecentsView getRecentsView() {
        OverviewComponentObserver observer = new OverviewComponentObserver(mContext);
        OverviewComponentObserver observer = new OverviewComponentObserver(mContext,
                new RecentsAnimationDeviceState(mContext));
        try {
        try {
            return observer.getActivityControlHelper().getCreatedActivity().getOverviewPanel();
            return observer.getActivityControlHelper().getCreatedActivity().getOverviewPanel();
        } finally {
        } finally {
+59 −235

File changed.

Preview size limit exceeded, changes collapsed.

+7 −7
Original line number Original line Diff line number Diff line
@@ -35,7 +35,6 @@ import static com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget
import static com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget.NEW_TASK;
import static com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget.NEW_TASK;
import static com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget.RECENTS;
import static com.android.quickstep.WindowTransformSwipeHandler.GestureEndTarget.RECENTS;
import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;


import android.animation.Animator;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.AnimatorSet;
@@ -198,6 +197,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
     */
     */
    private static final int LOG_NO_OP_PAGE_INDEX = -1;
    private static final int LOG_NO_OP_PAGE_INDEX = -1;


    private RecentsAnimationDeviceState mDeviceState;

    private GestureEndTarget mGestureEndTarget;
    private GestureEndTarget mGestureEndTarget;
    // Either RectFSpringAnim (if animating home) or ObjectAnimator (from mCurrentShift) otherwise
    // Either RectFSpringAnim (if animating home) or ObjectAnimator (from mCurrentShift) otherwise
    private RunningWindowAnim mRunningWindowAnim;
    private RunningWindowAnim mRunningWindowAnim;
@@ -229,11 +230,12 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
    private final long mTouchTimeMs;
    private final long mTouchTimeMs;
    private long mLauncherFrameDrawnTime;
    private long mLauncherFrameDrawnTime;


    public WindowTransformSwipeHandler(RunningTaskInfo runningTaskInfo, Context context,
    public WindowTransformSwipeHandler(RecentsAnimationDeviceState deviceState,
            long touchTimeMs, OverviewComponentObserver overviewComponentObserver,
            RunningTaskInfo runningTaskInfo, Context context, long touchTimeMs,
            boolean continuingLastGesture,
            OverviewComponentObserver overviewComponentObserver, boolean continuingLastGesture,
            InputConsumerController inputConsumer, RecentsModel recentsModel) {
            InputConsumerController inputConsumer, RecentsModel recentsModel) {
        super(context, overviewComponentObserver, recentsModel, inputConsumer, runningTaskInfo.id);
        super(context, overviewComponentObserver, recentsModel, inputConsumer, runningTaskInfo.id);
        mDeviceState = deviceState;
        mTouchTimeMs = touchTimeMs;
        mTouchTimeMs = touchTimeMs;
        mContinuingLastGesture = continuingLastGesture;
        mContinuingLastGesture = continuingLastGesture;
        initStateCallbacks();
        initStateCallbacks();
@@ -755,9 +757,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
            }
            }
        }
        }


        int stateFlags = OverviewInteractionState.INSTANCE.get(mActivity).getSystemUiStateFlags();
        if (mDeviceState.isOverviewDisabled() && (endTarget == RECENTS || endTarget == LAST_TASK)) {
        if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0
                && (endTarget == RECENTS || endTarget == LAST_TASK)) {
            return LAST_TASK;
            return LAST_TASK;
        }
        }
        return endTarget;
        return endTarget;
Loading