Merge "Fix NPE / add downX,Y location for all swipes/ add extra debugging info Bug: 122700646 Bug: 127840207" into ub-launcher3-qt-dev
This commit is contained in:
commit
a6f1969981
|
@ -17,8 +17,6 @@ package com.android.launcher3.uioverrides.touchcontrollers;
|
|||
|
||||
import static android.view.View.TRANSLATION_X;
|
||||
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_HIDE_BACK_BUTTON;
|
||||
import static com.android.launcher3.LauncherState.ALL_APPS;
|
||||
import static com.android.launcher3.LauncherState.NORMAL;
|
||||
import static com.android.launcher3.LauncherState.OVERVIEW;
|
||||
|
@ -47,7 +45,6 @@ import com.android.launcher3.anim.Interpolators;
|
|||
import com.android.launcher3.compat.AccessibilityManagerCompat;
|
||||
import com.android.launcher3.touch.SwipeDetector;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Command;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch;
|
||||
import com.android.launcher3.util.TouchController;
|
||||
import com.android.quickstep.views.RecentsView;
|
||||
|
@ -219,6 +216,7 @@ public class NavBarToHomeTouchController implements TouchController, SwipeDetect
|
|||
private void logStateChange(int startContainerType, int logAction) {
|
||||
mLauncher.getUserEventDispatcher().logStateChangeAction(logAction,
|
||||
LauncherLogProto.Action.Direction.UP,
|
||||
mSwipeDetector.getDownX(), mSwipeDetector.getDownY(),
|
||||
LauncherLogProto.ContainerType.NAVBAR,
|
||||
startContainerType,
|
||||
mEndState.containerType,
|
||||
|
|
|
@ -347,7 +347,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC
|
|||
: velocityY;
|
||||
|
||||
mInteractionHandler.updateDisplacement(getDisplacement(ev) - mStartDisplacement);
|
||||
mInteractionHandler.onGestureEnded(velocity, new PointF(velocityX, velocityY));
|
||||
mInteractionHandler.onGestureEnded(velocity, new PointF(velocityX, velocityY),
|
||||
mDownPos);
|
||||
} else {
|
||||
// Since we start touch tracking on DOWN, we may reach this state without actually
|
||||
// starting the gesture. In that case, just cleanup immediately.
|
||||
|
|
|
@ -253,6 +253,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
|
|||
private boolean mGestureStarted;
|
||||
private int mLogAction = Touch.SWIPE;
|
||||
private int mLogDirection = Direction.UP;
|
||||
private PointF mDownPos;
|
||||
|
||||
private final RecentsAnimationWrapper mRecentsAnimationWrapper;
|
||||
|
||||
|
@ -703,9 +704,10 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
|
|||
/**
|
||||
* @param endVelocity The velocity in the direction of the nav bar to the middle of the screen.
|
||||
* @param velocity The x and y components of the velocity when the gesture ends.
|
||||
* @param downPos The x and y value of where the gesture started.
|
||||
*/
|
||||
@UiThread
|
||||
public void onGestureEnded(float endVelocity, PointF velocity) {
|
||||
public void onGestureEnded(float endVelocity, PointF velocity, PointF downPos) {
|
||||
float flingThreshold = mContext.getResources()
|
||||
.getDimension(R.dimen.quickstep_fling_threshold_velocity);
|
||||
boolean isFling = mGestureStarted && Math.abs(endVelocity) > flingThreshold;
|
||||
|
@ -718,6 +720,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
|
|||
} else {
|
||||
mLogDirection = velocity.x < 0 ? Direction.LEFT : Direction.RIGHT;
|
||||
}
|
||||
mDownPos = downPos;
|
||||
handleNormalGestureEnd(endVelocity, isFling, velocity);
|
||||
}
|
||||
|
||||
|
@ -856,6 +859,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity>
|
|||
: mRecentsView.getNextPage();
|
||||
UserEventDispatcher.newInstance(mContext).logStateChangeAction(
|
||||
mLogAction, mLogDirection,
|
||||
(int) mDownPos.x, (int) mDownPos.y,
|
||||
ContainerType.NAVBAR, ContainerType.APP,
|
||||
endTarget.containerType,
|
||||
pageIndex);
|
||||
|
|
|
@ -42,13 +42,13 @@ public class UserEventDispatcherExtension extends UserEventDispatcher {
|
|||
|
||||
public UserEventDispatcherExtension(Context context) { }
|
||||
|
||||
public void logStateChangeAction(int action, int dir, int srcChildTargetType,
|
||||
int srcParentContainerType, int dstContainerType,
|
||||
int pageIndex) {
|
||||
public void logStateChangeAction(int action, int dir, int downX, int downY,
|
||||
int srcChildTargetType, int srcParentContainerType,
|
||||
int dstContainerType, int pageIndex) {
|
||||
new MetricsLoggerCompat().visibility(MetricsLoggerCompat.OVERVIEW_ACTIVITY,
|
||||
dstContainerType == LauncherLogProto.ContainerType.TASKSWITCHER);
|
||||
super.logStateChangeAction(action, dir, srcChildTargetType, srcParentContainerType,
|
||||
dstContainerType, pageIndex);
|
||||
super.logStateChangeAction(action, dir, downX, downY, srcChildTargetType,
|
||||
srcParentContainerType, dstContainerType, pageIndex);
|
||||
}
|
||||
|
||||
public void logActionTip(int actionType, int viewType) {
|
||||
|
|
|
@ -41,7 +41,6 @@ import java.lang.reflect.Modifier;
|
|||
/**
|
||||
* Helper methods for logging.
|
||||
*/
|
||||
@Deprecated
|
||||
public class LoggerUtils {
|
||||
private static final ArrayMap<Class, SparseArray<String>> sNameCache = new ArrayMap<>();
|
||||
private static final String UNKNOWN = "UNKNOWN";
|
||||
|
@ -77,10 +76,17 @@ public class LoggerUtils {
|
|||
if (action.touch == Action.Touch.SWIPE || action.touch == Action.Touch.FLING) {
|
||||
str += " direction=" + getFieldName(action.dir, Action.Direction.class);
|
||||
}
|
||||
return str;
|
||||
case Action.Type.COMMAND: return getFieldName(action.command, Action.Command.class);
|
||||
break;
|
||||
case Action.Type.COMMAND:
|
||||
str += getFieldName(action.command, Action.Command.class);
|
||||
break;
|
||||
default: return getFieldName(action.type, Action.Type.class);
|
||||
}
|
||||
if (action.touch == Action.Touch.SWIPE || action.touch == Action.Touch.FLING ||
|
||||
(action.command == Action.Command.BACK && action.dir != Action.Direction.NONE)) {
|
||||
str += " direction=" + getFieldName(action.dir, Action.Direction.class);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
public static String getTargetStr(Target t) {
|
||||
|
@ -102,13 +108,17 @@ public class LoggerUtils {
|
|||
t.containerType == NAVBAR) {
|
||||
str += " id=" + t.pageIndex;
|
||||
} else if (t.containerType == ContainerType.FOLDER) {
|
||||
str += " grid(" + t.gridX + "," + t.gridY+ ")";
|
||||
str += " grid(" + t.gridX + "," + t.gridY + ")";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
str += "UNKNOWN TARGET TYPE";
|
||||
}
|
||||
|
||||
if (t.spanX != 1 || t.spanY != 1) {
|
||||
str += " span(" + t.spanX + "," + t.spanY + ")";
|
||||
}
|
||||
|
||||
if (t.tipType != TipType.DEFAULT_NONE) {
|
||||
str += " " + getFieldName(t.tipType, TipType.class);
|
||||
}
|
||||
|
|
|
@ -96,7 +96,6 @@ public class UserEventDispatcher implements ResourceBasedOverride {
|
|||
* Fills in the container data on the given event if the given view is not null.
|
||||
* @return whether container data was added.
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean fillInLogContainerData(LauncherLogProto.LauncherEvent event, @Nullable View v) {
|
||||
// Fill in grid(x,y), pageIndex of the child and container type of the parent
|
||||
LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(v);
|
||||
|
@ -293,7 +292,7 @@ public class UserEventDispatcher implements ResourceBasedOverride {
|
|||
* (1) WORKSPACE: if the launcher is the foreground activity
|
||||
* (2) APP: if another app was the foreground activity
|
||||
*/
|
||||
public void logStateChangeAction(int action, int dir, int srcChildTargetType,
|
||||
public void logStateChangeAction(int action, int dir, int downX, int downY, int srcChildTargetType,
|
||||
int srcParentContainerType, int dstContainerType,
|
||||
int pageIndex) {
|
||||
LauncherEvent event;
|
||||
|
@ -311,6 +310,8 @@ public class UserEventDispatcher implements ResourceBasedOverride {
|
|||
event.action.dir = dir;
|
||||
event.action.isStateChange = true;
|
||||
event.srcTarget[0].pageIndex = pageIndex;
|
||||
event.srcTarget[0].spanX = downX;
|
||||
event.srcTarget[0].spanY = downY;
|
||||
dispatchUserEvent(event, null);
|
||||
resetElapsedContainerMillis("state changed");
|
||||
}
|
||||
|
@ -325,7 +326,7 @@ public class UserEventDispatcher implements ResourceBasedOverride {
|
|||
|
||||
public void logDeepShortcutsOpen(View icon) {
|
||||
LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(icon);
|
||||
if (icon == null || !(icon.getTag() instanceof ItemInfo)) {
|
||||
if (icon == null || !(icon.getTag() instanceof ItemInfo || provider == null)) {
|
||||
return;
|
||||
}
|
||||
ItemInfo info = (ItemInfo) icon.getTag();
|
||||
|
|
|
@ -540,7 +540,7 @@ public abstract class AbstractStateChangeTouchController
|
|||
private void logReachedState(int logAction, LauncherState targetState) {
|
||||
// Transition complete. log the action
|
||||
mLauncher.getUserEventDispatcher().logStateChangeAction(logAction,
|
||||
getDirectionForLog(),
|
||||
getDirectionForLog(), mDetector.getDownX(), mDetector.getDownY(),
|
||||
mStartContainerType,
|
||||
mStartState.containerType,
|
||||
targetState.containerType,
|
||||
|
|
|
@ -180,6 +180,13 @@ public class SwipeDetector {
|
|||
return mState == ScrollState.DRAGGING || mState == ScrollState.SETTLING;
|
||||
}
|
||||
|
||||
public int getDownX() {
|
||||
return (int) mDownPos.x;
|
||||
}
|
||||
|
||||
public int getDownY() {
|
||||
return (int) mDownPos.y;
|
||||
}
|
||||
/**
|
||||
* There's no touch and there's no animation.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue