Implements LAUNCHER_ITEM_DROP_COMPLETED event.
Assigns InstanceId to match LAUNCHER_ITEM_DROP_COMPLETED, LAUNCHER_ITEM_DRAG_STARTED events.
Sample Log:
2020-05-01 14:07:53.158 18369-18369/com.google.android.apps.nexuslauncher D/StatsLogManager: LAUNCHER_ITEM_DRAG_STARTED(InstanceId:282)
# com.android.launcher3.logger.LauncherAtom$ItemInfo@c0711fbd
application {
component_name: "com.google.android.apps.maps/com.google.android.maps.MapsActivity"
package_name: "com.google.android.apps.maps"
}
container_info {
workspace {
grid_x: 2
grid_y: 1
page_index: 0
}
}
is_work: false
2020-05-01 14:07:54.308 18369-18369/com.google.android.apps.nexuslauncher D/StatsLogManager: LAUNCHER_ITEM_DROP_COMPLETED(InstanceId:282)
# com.android.launcher3.logger.LauncherAtom$ItemInfo@90000206
application {
component_name: "com.google.android.apps.maps/com.google.android.maps.MapsActivity"
package_name: "com.google.android.apps.maps"
}
container_info {
workspace {
grid_x: 0
grid_y: 4
page_index: 0
}
}
is_work: false
Bug: 152978018
Change-Id: Ib4fc860e8080edd407ed15b93f7d55ac31328d11
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 2111162..a58bf70 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -248,6 +248,8 @@
// Handles workspace state transitions
private final WorkspaceStateTransitionAnimation mStateTransitionAnimation;
+ private final StatsLogManager mStatsLogManager;
+
/**
* Used to inflate the Workspace from XML.
*
@@ -280,6 +282,7 @@
// Disable multitouch across the workspace/all apps/customize tray
setMotionEventSplittingEnabled(true);
setOnTouchListener(new WorkspaceTouchListener(mLauncher, this));
+ mStatsLogManager = StatsLogManager.newInstance(context);
}
@Override
@@ -359,7 +362,7 @@
}
@Override
- public void onDragStart(DropTarget.DragObject dragObject, DragOptions options) {
+ public void onDragStart(DragObject dragObject, DragOptions options) {
if (ENFORCE_DRAG_EVENT_ORDER) {
enforceDragParity("onDragStart", 0, 0);
}
@@ -411,10 +414,10 @@
// Always enter the spring loaded mode
mLauncher.getStateManager().goToState(SPRING_LOADED);
- StatsLogManager.newInstance(getContext())
- .log(
- LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED,
- dragObject.originalDragInfo.buildProto(null));
+ mStatsLogManager.log(
+ LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED,
+ dragObject.originalDragInfo.id,
+ dragObject.originalDragInfo.buildProto(null));
}
public void deferRemoveExtraEmptyScreen() {
@@ -1695,6 +1698,7 @@
@Override
public void prepareAccessibilityDrop() { }
+ @Override
public void onDrop(final DragObject d, DragOptions options) {
mDragViewVisualCenter = d.getVisualCenter(mDragViewVisualCenter);
CellLayout dropTargetLayout = mDropToLayout;
@@ -1886,6 +1890,10 @@
if (d.stateAnnouncer != null && !droppedOnOriginalCell) {
d.stateAnnouncer.completeAction(R.string.item_moved);
}
+ mStatsLogManager.log(
+ LauncherEvent.LAUNCHER_ITEM_DROP_COMPLETED,
+ d.dragInfo.id,
+ d.dragInfo.buildProto(null));
}
public void onNoCellFound(View dropTargetLayout) {
diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java
index 05dd473..1e2ce53 100644
--- a/src/com/android/launcher3/logging/StatsLogManager.java
+++ b/src/com/android/launcher3/logging/StatsLogManager.java
@@ -45,7 +45,9 @@
@LauncherUiEvent(doc = "TASK dismissed from overview using SWIPE UP")
TASK_DISMISS_SWIPE_UP(3),
@LauncherUiEvent(doc = "User dragged a launcher item")
- LAUNCHER_ITEM_DRAG_STARTED(383);
+ LAUNCHER_ITEM_DRAG_STARTED(383),
+ @LauncherUiEvent(doc = "A dragged launcher item is successfully dropped")
+ LAUNCHER_ITEM_DROP_COMPLETED(385);
// ADD MORE
private final int mId;
@@ -83,6 +85,14 @@
}
/**
+ * Logs an event and accompanying {@link ItemInfo}
+ */
+ public void log(LauncherEvent event, int instanceId, LauncherAtom.ItemInfo itemInfo) {
+ Log.d(TAG, String.format("%s(InstanceId:%s)\n%s", event.name(), instanceId, itemInfo));
+ // Call StatsLog method
+ }
+
+ /**
* Logs snapshot, or impression of the current workspace.
*/
public void logSnapshot() { }