Loading src/com/android/launcher3/folder/Folder.java +8 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,10 @@ import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragOptions; import com.android.launcher3.logging.LoggerUtils; import com.android.launcher3.pageindicators.PageIndicatorDots; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.userevent.nano.LauncherLogProto.ItemType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.util.Thunk; import com.android.launcher3.views.ClipPathView; Loading Loading @@ -559,7 +562,11 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo mState = STATE_OPEN; announceAccessibilityChanges(); mLauncher.getUserEventDispatcher().resetElapsedContainerMillis("folder opened"); mLauncher.getUserEventDispatcher().logActionOnItem( Touch.TAP, Direction.NONE, ItemType.FOLDER_ICON, mInfo.cellX, mInfo.cellY); mContent.setFocusOnFirstChild(); } }); Loading src/com/android/launcher3/logging/LoggerUtils.java +7 −8 Original line number Diff line number Diff line Loading @@ -138,17 +138,16 @@ public class LoggerUtils { if (t.intentHash != 0) { typeStr += ", intentHash=" + t.intentHash; } if ((t.packageNameHash != 0 || t.componentHash != 0 || t.intentHash != 0) && t.itemType != ItemType.TASK) { if (t.itemType == ItemType.FOLDER_ICON) { typeStr += ", grid(" + t.gridX + "," + t.gridY + ")"; } else if ((t.packageNameHash != 0 || t.componentHash != 0 || t.intentHash != 0) && t.itemType != ItemType.TASK) { typeStr += ", predictiveRank=" + t.predictedRank + ", grid(" + t.gridX + "," + t.gridY + "), span(" + t.spanX + "," + t.spanY + "), pageIdx=" + t.pageIndex; + "), span(" + t.spanX + "," + t.spanY + "), pageIdx=" + t.pageIndex; } if (t.searchQueryLength != 0) { typeStr += ", searchQueryLength=" + t.searchQueryLength; } if (t.itemType == ItemType.TASK) { typeStr += ", pageIdx=" + t.pageIndex; } Loading src/com/android/launcher3/logging/UserEventDispatcher.java +41 −21 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import static com.android.launcher3.logging.LoggerUtils.newLauncherEvent; import static com.android.launcher3.logging.LoggerUtils.newTarget; import static com.android.launcher3.logging.LoggerUtils.newTouchAction; import static java.util.Optional.ofNullable; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -59,7 +61,7 @@ import java.util.UUID; /** * Manages the creation of {@link LauncherEvent}. * To debug this class, execute following command before side loading a new apk. * * <p> * $ adb shell setprop log.tag.UserEvent VERBOSE */ public class UserEventDispatcher implements ResourceBasedOverride { Loading Loading @@ -95,6 +97,7 @@ 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. */ public boolean fillInLogContainerData(LauncherLogProto.LauncherEvent event, @Nullable View v) { Loading Loading @@ -146,7 +149,11 @@ public class UserEventDispatcher implements ResourceBasedOverride { mAppOrTaskLaunch = true; } public void logActionTip(int actionType, int viewType) { } /** * Dummy method. */ public void logActionTip(int actionType, int viewType) { } @Deprecated public void logTaskLaunchOrDismiss(int action, int direction, int taskIndex, Loading Loading @@ -308,8 +315,8 @@ 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 downX, int downY, int srcChildTargetType, int srcParentContainerType, int dstContainerType, public void logStateChangeAction(int action, int dir, int downX, int downY, int srcChildTargetType, int srcParentContainerType, int dstContainerType, int pageIndex) { LauncherEvent event; if (srcChildTargetType == LauncherLogProto.ItemType.TASK) { Loading @@ -333,9 +340,25 @@ public class UserEventDispatcher implements ResourceBasedOverride { } public void logActionOnItem(int action, int dir, int itemType) { logActionOnItem(action, dir, itemType, null, null); } /** * Creates new {@link LauncherEvent} of ITEM target type with input arguments and dispatches it. * * @param touchAction ENUM value of {@link LauncherLogProto.Action.Touch} Action * @param dir ENUM value of {@link LauncherLogProto.Action.Direction} Action * @param itemType ENUM value of {@link LauncherLogProto.ItemType} * @param gridX Nullable X coordinate of item's position on the workspace grid * @param gridY Nullable Y coordinate of item's position on the workspace grid */ public void logActionOnItem(int touchAction, int dir, int itemType, @Nullable Integer gridX, @Nullable Integer gridY) { Target itemTarget = newTarget(Target.Type.ITEM); itemTarget.itemType = itemType; LauncherEvent event = newLauncherEvent(newTouchAction(action), itemTarget); ofNullable(gridX).ifPresent(value -> itemTarget.gridX = value); ofNullable(gridY).ifPresent(value -> itemTarget.gridY = value); LauncherEvent event = newLauncherEvent(newTouchAction(touchAction), itemTarget); event.action.dir = dir; dispatchUserEvent(event, null); } Loading Loading @@ -380,14 +403,10 @@ public class UserEventDispatcher implements ResourceBasedOverride { int actionTouch = isButton ? Action.Touch.TAP : Action.Touch.SWIPE; Action action = newCommandAction(actionTouch); action.command = Action.Command.BACK; action.dir = isButton ? Action.Direction.NONE : gestureSwipeLeft ? Action.Direction.LEFT : Action.Direction.RIGHT; Target target = newControlTarget(isButton ? LauncherLogProto.ControlType.BACK_BUTTON : LauncherLogProto.ControlType.BACK_GESTURE); action.dir = isButton ? Action.Direction.NONE : gestureSwipeLeft ? Action.Direction.LEFT : Action.Direction.RIGHT; Target target = newControlTarget(isButton ? LauncherLogProto.ControlType.BACK_BUTTON : LauncherLogProto.ControlType.BACK_GESTURE); target.spanX = downX; target.spanY = downY; target.cardinality = completed ? 1 : 0; Loading @@ -398,6 +417,7 @@ public class UserEventDispatcher implements ResourceBasedOverride { /** * Currently logs following containers: workspace, allapps, widget tray. * * @param reason */ public final void resetElapsedContainerMillis(String reason) { Loading Loading
src/com/android/launcher3/folder/Folder.java +8 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,10 @@ import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragOptions; import com.android.launcher3.logging.LoggerUtils; import com.android.launcher3.pageindicators.PageIndicatorDots; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.userevent.nano.LauncherLogProto.ItemType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.util.Thunk; import com.android.launcher3.views.ClipPathView; Loading Loading @@ -559,7 +562,11 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo mState = STATE_OPEN; announceAccessibilityChanges(); mLauncher.getUserEventDispatcher().resetElapsedContainerMillis("folder opened"); mLauncher.getUserEventDispatcher().logActionOnItem( Touch.TAP, Direction.NONE, ItemType.FOLDER_ICON, mInfo.cellX, mInfo.cellY); mContent.setFocusOnFirstChild(); } }); Loading
src/com/android/launcher3/logging/LoggerUtils.java +7 −8 Original line number Diff line number Diff line Loading @@ -138,17 +138,16 @@ public class LoggerUtils { if (t.intentHash != 0) { typeStr += ", intentHash=" + t.intentHash; } if ((t.packageNameHash != 0 || t.componentHash != 0 || t.intentHash != 0) && t.itemType != ItemType.TASK) { if (t.itemType == ItemType.FOLDER_ICON) { typeStr += ", grid(" + t.gridX + "," + t.gridY + ")"; } else if ((t.packageNameHash != 0 || t.componentHash != 0 || t.intentHash != 0) && t.itemType != ItemType.TASK) { typeStr += ", predictiveRank=" + t.predictedRank + ", grid(" + t.gridX + "," + t.gridY + "), span(" + t.spanX + "," + t.spanY + "), pageIdx=" + t.pageIndex; + "), span(" + t.spanX + "," + t.spanY + "), pageIdx=" + t.pageIndex; } if (t.searchQueryLength != 0) { typeStr += ", searchQueryLength=" + t.searchQueryLength; } if (t.itemType == ItemType.TASK) { typeStr += ", pageIdx=" + t.pageIndex; } Loading
src/com/android/launcher3/logging/UserEventDispatcher.java +41 −21 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import static com.android.launcher3.logging.LoggerUtils.newLauncherEvent; import static com.android.launcher3.logging.LoggerUtils.newTarget; import static com.android.launcher3.logging.LoggerUtils.newTouchAction; import static java.util.Optional.ofNullable; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -59,7 +61,7 @@ import java.util.UUID; /** * Manages the creation of {@link LauncherEvent}. * To debug this class, execute following command before side loading a new apk. * * <p> * $ adb shell setprop log.tag.UserEvent VERBOSE */ public class UserEventDispatcher implements ResourceBasedOverride { Loading Loading @@ -95,6 +97,7 @@ 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. */ public boolean fillInLogContainerData(LauncherLogProto.LauncherEvent event, @Nullable View v) { Loading Loading @@ -146,7 +149,11 @@ public class UserEventDispatcher implements ResourceBasedOverride { mAppOrTaskLaunch = true; } public void logActionTip(int actionType, int viewType) { } /** * Dummy method. */ public void logActionTip(int actionType, int viewType) { } @Deprecated public void logTaskLaunchOrDismiss(int action, int direction, int taskIndex, Loading Loading @@ -308,8 +315,8 @@ 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 downX, int downY, int srcChildTargetType, int srcParentContainerType, int dstContainerType, public void logStateChangeAction(int action, int dir, int downX, int downY, int srcChildTargetType, int srcParentContainerType, int dstContainerType, int pageIndex) { LauncherEvent event; if (srcChildTargetType == LauncherLogProto.ItemType.TASK) { Loading @@ -333,9 +340,25 @@ public class UserEventDispatcher implements ResourceBasedOverride { } public void logActionOnItem(int action, int dir, int itemType) { logActionOnItem(action, dir, itemType, null, null); } /** * Creates new {@link LauncherEvent} of ITEM target type with input arguments and dispatches it. * * @param touchAction ENUM value of {@link LauncherLogProto.Action.Touch} Action * @param dir ENUM value of {@link LauncherLogProto.Action.Direction} Action * @param itemType ENUM value of {@link LauncherLogProto.ItemType} * @param gridX Nullable X coordinate of item's position on the workspace grid * @param gridY Nullable Y coordinate of item's position on the workspace grid */ public void logActionOnItem(int touchAction, int dir, int itemType, @Nullable Integer gridX, @Nullable Integer gridY) { Target itemTarget = newTarget(Target.Type.ITEM); itemTarget.itemType = itemType; LauncherEvent event = newLauncherEvent(newTouchAction(action), itemTarget); ofNullable(gridX).ifPresent(value -> itemTarget.gridX = value); ofNullable(gridY).ifPresent(value -> itemTarget.gridY = value); LauncherEvent event = newLauncherEvent(newTouchAction(touchAction), itemTarget); event.action.dir = dir; dispatchUserEvent(event, null); } Loading Loading @@ -380,14 +403,10 @@ public class UserEventDispatcher implements ResourceBasedOverride { int actionTouch = isButton ? Action.Touch.TAP : Action.Touch.SWIPE; Action action = newCommandAction(actionTouch); action.command = Action.Command.BACK; action.dir = isButton ? Action.Direction.NONE : gestureSwipeLeft ? Action.Direction.LEFT : Action.Direction.RIGHT; Target target = newControlTarget(isButton ? LauncherLogProto.ControlType.BACK_BUTTON : LauncherLogProto.ControlType.BACK_GESTURE); action.dir = isButton ? Action.Direction.NONE : gestureSwipeLeft ? Action.Direction.LEFT : Action.Direction.RIGHT; Target target = newControlTarget(isButton ? LauncherLogProto.ControlType.BACK_BUTTON : LauncherLogProto.ControlType.BACK_GESTURE); target.spanX = downX; target.spanY = downY; target.cardinality = completed ? 1 : 0; Loading @@ -398,6 +417,7 @@ public class UserEventDispatcher implements ResourceBasedOverride { /** * Currently logs following containers: workspace, allapps, widget tray. * * @param reason */ public final void resetElapsedContainerMillis(String reason) { Loading