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

Commit 7572a12c authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

Merging ub-launcher3-master, build 5434161

Test: Manual

Bug:127840207 [logging] quickswitch usage
Bug:127848641 [logging] (left|right) back gesture / home gesture usage
Bug:128711026 [Gesture Nav] widgets and icons are clipped
Bug:129337684 Swipe up from home falses to Overview
Bug:129711952 Overview stays in view hierarchy while in all apps
Bug:129723135 Broken tests: swipe from killed launcher doesn't open overview
Bug:129867977 [gestural nav] Add assistant gesture logging

Change-Id: I5a47424b0eb6cadbb8e3ced037fe5913302e6afa
parents df7d0032 5fadfe56
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ import android.view.MotionEvent;

import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;

/**
 * Service connected by system-UI for handling touch interaction.
@@ -38,8 +37,6 @@ import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;
@TargetApi(Build.VERSION_CODES.O)
public class TouchInteractionService extends Service {

    public static final int EDGE_NAV_BAR = 1 << 8;

    private static final String TAG = "TouchInteractionService";

    private final IBinder mMyBinder = new IOverviewProxy.Stub() {
+3 −0
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ message Action {
    SWIPE = 3;
    FLING = 4;
    PINCH = 5;
    SWIPE_NOOP = 6;
  }

  enum Direction {
@@ -151,6 +152,8 @@ message Action {
    DOWN = 2;
    LEFT = 3;
    RIGHT = 4;
    UPRIGHT = 5;
    UPLEFT = 6;
  }
  enum Command {
    HOME_INTENT = 0;
+4 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;

import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherState;
@@ -96,9 +97,9 @@ public class FlingAndHoldTouchController extends PortraitStatesTouchController {
    }

    @Override
    public boolean onDrag(float displacement) {
        mMotionPauseDetector.addPosition(displacement, 0);
        return super.onDrag(displacement);
    public boolean onDrag(float displacement, MotionEvent event) {
        mMotionPauseDetector.addPosition(displacement, 0, event.getEventTime());
        return super.onDrag(displacement, event);
    }

    @Override
+16 −2
Original line number Diff line number Diff line
@@ -21,6 +21,11 @@ import static android.view.MotionEvent.ACTION_DOWN;
import static android.view.MotionEvent.ACTION_MOVE;
import static android.view.MotionEvent.ACTION_POINTER_UP;
import static android.view.MotionEvent.ACTION_UP;
import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.SWIPE;
import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch.SWIPE_NOOP;
import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction.UPLEFT;
import static com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction.UPRIGHT;
import static com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType.NAVBAR;

import android.animation.ValueAnimator;
import android.content.Context;
@@ -32,6 +37,7 @@ import android.os.SystemClock;
import android.util.Log;
import android.view.MotionEvent;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.logging.UserEventDispatcher;
import com.android.quickstep.util.MotionPauseDetector;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.launcher3.R;
@@ -66,6 +72,7 @@ public class AssistantTouchConsumer implements InputConsumer {
    private long mDragTime;
    private float mLastProgress;
    private int mState;
    private int mDirection;

    private final float mDistThreshold;
    private final long mTimeThreshold;
@@ -74,10 +81,12 @@ public class AssistantTouchConsumer implements InputConsumer {
    private final MotionPauseDetector mMotionPauseDetector;
    private final ISystemUiProxy mSysUiProxy;
    private final InputConsumer mConsumerDelegate;
    private final Context mContext;

    public AssistantTouchConsumer(Context context, ISystemUiProxy systemUiProxy,
            InputConsumer delegate) {
        final Resources res = context.getResources();
        mContext = context;
        mSysUiProxy = systemUiProxy;
        mConsumerDelegate = delegate;
        mMotionPauseDetector = new MotionPauseDetector(context);
@@ -151,6 +160,7 @@ public class AssistantTouchConsumer implements InputConsumer {
                        // Determine if angle is larger than threshold for assistant detection
                        float angle = (float) Math.toDegrees(
                                Math.atan2(mDownPos.y - mLastPos.y, mDownPos.x - mLastPos.x));
                        mDirection = angle > 90 ? UPLEFT : UPRIGHT;
                        angle = angle > 90 ? 180 - angle : angle;
                        if (angle > mAngleThreshold) {
                            mState = STATE_ASSISTANT_ACTIVE;
@@ -170,7 +180,7 @@ public class AssistantTouchConsumer implements InputConsumer {
                    // Movement
                    mDistance = (float) Math.hypot(mLastPos.x - mStartDragPos.x,
                            mLastPos.y - mStartDragPos.y);
                    mMotionPauseDetector.addPosition(mDistance, 0);
                    mMotionPauseDetector.addPosition(mDistance, 0, ev.getEventTime());
                    if (mDistance >= 0) {
                        final long diff = SystemClock.uptimeMillis() - mDragTime;
                        mTimeFraction = Math.min(diff * 1f / mTimeThreshold, 1);
@@ -184,9 +194,12 @@ public class AssistantTouchConsumer implements InputConsumer {
                if (mState != STATE_DELEGATE_ACTIVE && !mLaunchedAssistant) {
                    ValueAnimator animator = ValueAnimator.ofFloat(mLastProgress, 0)
                            .setDuration(RETRACT_ANIMATION_DURATION_MS);
                    UserEventDispatcher.newInstance(mContext).logActionOnContainer(
                            SWIPE_NOOP, mDirection, NAVBAR);
                    animator.addUpdateListener(valueAnimator -> {
                            float progress = (float) valueAnimator.getAnimatedValue();
                            try {

                                mSysUiProxy.onAssistantProgress(progress);
                            } catch (RemoteException e) {
                                Log.w(TAG, "Failed to send SysUI start/send assistant progress: "
@@ -211,8 +224,9 @@ public class AssistantTouchConsumer implements InputConsumer {
            mLastProgress = progress;
            try {
                mSysUiProxy.onAssistantProgress(progress);

                if (mDistance >= mDistThreshold && mTimeFraction >= 1) {
                    UserEventDispatcher.newInstance(mContext).logActionOnContainer(
                            SWIPE, mDirection, NAVBAR);
                    mSysUiProxy.startAssistant(new Bundle());
                    mLaunchedAssistant = true;
                }
+2 −1
Original line number Diff line number Diff line
@@ -255,7 +255,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
                        float orthogonalDisplacement = !isLandscape
                                ? ev.getX() - mDownPos.x
                                : ev.getY() - mDownPos.y;
                        mMotionPauseDetector.addPosition(displacement, orthogonalDisplacement);
                        mMotionPauseDetector.addPosition(displacement, orthogonalDisplacement,
                                ev.getEventTime());
                    }
                }
                break;
Loading