[DO NOT MERGE] Set launch source target correctly for user event logging
Before, everything is set to APP_ICON
With this changed, pinned shortcuts are set to DEEPSHORTCUT
Change-Id: I3e17de63f58693525236290ef5cb1f909f1d6098
(cherry picked from commit 8ce6063c4a)
This commit is contained in:
@@ -171,7 +171,6 @@ public class Hotseat extends FrameLayout
|
||||
|
||||
@Override
|
||||
public void fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent) {
|
||||
target.itemType = LauncherLogProto.APP_ICON;
|
||||
target.gridX = info.cellX;
|
||||
target.gridY = info.cellY;
|
||||
targetParent.containerType = LauncherLogProto.HOTSEAT;
|
||||
|
||||
@@ -4318,7 +4318,6 @@ public class Workspace extends PagedView
|
||||
|
||||
@Override
|
||||
public void fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent) {
|
||||
target.itemType = LauncherLogProto.APP_ICON;
|
||||
target.gridX = info.cellX;
|
||||
target.gridY = info.cellY;
|
||||
target.pageIndex = getCurrentPage();
|
||||
|
||||
@@ -1428,7 +1428,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList
|
||||
|
||||
@Override
|
||||
public void fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent) {
|
||||
target.itemType = LauncherLogProto.APP_ICON;
|
||||
target.gridX = info.cellX;
|
||||
target.gridY = info.cellY;
|
||||
target.pageIndex = mContent.getCurrentPage();
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.android.launcher3.logging;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.ItemInfo;
|
||||
import com.android.launcher3.LauncherSettings;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
|
||||
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
|
||||
@@ -47,17 +51,25 @@ public class LoggerUtils {
|
||||
return typeStr;
|
||||
}
|
||||
switch(t.itemType){
|
||||
case LauncherLogProto.APP_ICON: typeStr = "ICON"; break;
|
||||
case LauncherLogProto.APP_ICON: typeStr = "APPICON"; break;
|
||||
case LauncherLogProto.SHORTCUT: typeStr = "SHORTCUT"; break;
|
||||
case LauncherLogProto.WIDGET: typeStr = "WIDGET"; break;
|
||||
case LauncherLogProto.DEEPSHORTCUT: typeStr = "DEEPSHORTCUT"; break;
|
||||
case LauncherLogProto.FOLDER_ICON: typeStr = "FOLDERICON"; break;
|
||||
|
||||
default: typeStr = "UNKNOWN";
|
||||
}
|
||||
|
||||
return typeStr + ", packageHash=" + t.packageNameHash
|
||||
+ ", componentHash=" + t.componentHash
|
||||
+ ", intentHash=" + t.intentHash
|
||||
+ ", grid=(" + t.gridX + "," + t.gridY + "), id=" + t.pageIndex;
|
||||
if (t.packageNameHash != 0) {
|
||||
typeStr += ", packageHash=" + t.packageNameHash;
|
||||
}
|
||||
if (t.componentHash != 0) {
|
||||
typeStr += ", componentHash=" + t.componentHash;
|
||||
}
|
||||
if (t.intentHash != 0) {
|
||||
typeStr += ", intentHash=" + t.intentHash;
|
||||
}
|
||||
return typeStr += ", grid=(" + t.gridX + "," + t.gridY + "), id=" + t.pageIndex;
|
||||
}
|
||||
|
||||
private static String getControlStr(Target t) {
|
||||
@@ -116,16 +128,17 @@ public class LoggerUtils {
|
||||
return str + " id=" + t.pageIndex;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used for launching an event by tapping on an icon.
|
||||
*/
|
||||
public static LauncherLogProto.LauncherEvent initLauncherEvent(
|
||||
int actionType,
|
||||
int childTargetType,
|
||||
View v,
|
||||
int parentTargetType){
|
||||
LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
|
||||
|
||||
event.srcTarget = new LauncherLogProto.Target[2];
|
||||
event.srcTarget[0] = new LauncherLogProto.Target();
|
||||
event.srcTarget[0].type = childTargetType;
|
||||
event.srcTarget[0] = initTarget(v);
|
||||
event.srcTarget[1] = new LauncherLogProto.Target();
|
||||
event.srcTarget[1].type = parentTargetType;
|
||||
|
||||
@@ -134,6 +147,9 @@ public class LoggerUtils {
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Used for clicking on controls and buttons.
|
||||
*/
|
||||
public static LauncherLogProto.LauncherEvent initLauncherEvent(
|
||||
int actionType,
|
||||
int childTargetType){
|
||||
@@ -147,4 +163,31 @@ public class LoggerUtils {
|
||||
event.action.type = actionType;
|
||||
return event;
|
||||
}
|
||||
|
||||
private static Target initTarget(View v) {
|
||||
Target t = new LauncherLogProto.Target();
|
||||
t.type = Target.ITEM;
|
||||
if (!(v.getTag() instanceof ItemInfo)) {
|
||||
return t;
|
||||
}
|
||||
ItemInfo itemInfo = (ItemInfo) v.getTag();
|
||||
switch (itemInfo.itemType) {
|
||||
case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
|
||||
t.itemType = LauncherLogProto.APP_ICON;
|
||||
break;
|
||||
case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
|
||||
t.itemType = LauncherLogProto.SHORTCUT;
|
||||
break;
|
||||
case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
|
||||
t.itemType = LauncherLogProto.FOLDER_ICON;
|
||||
break;
|
||||
case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
|
||||
t.itemType = LauncherLogProto.WIDGET;
|
||||
break;
|
||||
case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
|
||||
t.itemType = LauncherLogProto.DEEPSHORTCUT;
|
||||
break;
|
||||
}
|
||||
return t;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,13 +97,16 @@ public class UserEventDispatcher {
|
||||
|
||||
protected LauncherEvent createLauncherEvent(View v, Intent intent) {
|
||||
LauncherEvent event = LoggerUtils.initLauncherEvent(
|
||||
Action.TOUCH, Target.ITEM, Target.CONTAINER);
|
||||
Action.TOUCH, v, Target.CONTAINER);
|
||||
event.action.touch = Action.TAP;
|
||||
|
||||
// Fill in grid(x,y), pageIndex of the child and container type of the parent
|
||||
// TODO: make this percolate up the view hierarchy if needed.
|
||||
int idx = 0;
|
||||
LaunchSourceProvider provider = getLaunchProviderRecursive(v);
|
||||
if (!(v.getTag() instanceof ItemInfo)) {
|
||||
return null;
|
||||
}
|
||||
ItemInfo itemInfo = (ItemInfo) v.getTag();
|
||||
provider.fillInLaunchSourceData(v, itemInfo, event.srcTarget[idx], event.srcTarget[idx + 1]);
|
||||
|
||||
@@ -125,7 +128,11 @@ public class UserEventDispatcher {
|
||||
}
|
||||
|
||||
public void logAppLaunch(View v, Intent intent) {
|
||||
dispatchUserEvent(createLauncherEvent(v, intent), intent);
|
||||
LauncherEvent ev = createLauncherEvent(v, intent);
|
||||
if (ev == null) {
|
||||
return;
|
||||
}
|
||||
dispatchUserEvent(ev, intent);
|
||||
}
|
||||
|
||||
public void logActionOnControl(int action, int controlType) {
|
||||
@@ -149,21 +156,19 @@ public class UserEventDispatcher {
|
||||
|
||||
public void logDeepShortcutsOpen(View icon) {
|
||||
LauncherEvent event = LoggerUtils.initLauncherEvent(
|
||||
Action.TOUCH, Target.ITEM, Target.CONTAINER);
|
||||
Action.TOUCH, icon, Target.CONTAINER);
|
||||
LaunchSourceProvider provider = getLaunchProviderRecursive(icon);
|
||||
if (!(icon.getTag() instanceof ItemInfo)) {
|
||||
return;
|
||||
}
|
||||
ItemInfo info = (ItemInfo) icon.getTag();
|
||||
provider.fillInLaunchSourceData(icon, info, event.srcTarget[0], event.srcTarget[1]);
|
||||
event.srcTarget[0].itemType = LauncherLogProto.DEEPSHORTCUT;
|
||||
event.action.touch = Action.LONGPRESS;
|
||||
event.elapsedContainerMillis = System.currentTimeMillis() - mElapsedContainerMillis;
|
||||
event.elapsedSessionMillis = System.currentTimeMillis() - mElapsedSessionMillis;
|
||||
dispatchUserEvent(event, null);
|
||||
}
|
||||
|
||||
public void logDragNDrop() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
public void setPredictedApps(List<ComponentKey> predictedApps) {
|
||||
mPredictedApps = predictedApps;
|
||||
}
|
||||
@@ -187,17 +192,20 @@ public class UserEventDispatcher {
|
||||
public void dispatchUserEvent(LauncherEvent ev, Intent intent) {
|
||||
if (DEBUG_LOGGING) {
|
||||
Log.d(TAG, String.format(Locale.US,
|
||||
"action:%s\nchild:%s\nparent:%s\nelapsed container %d ms session %d ms",
|
||||
"\naction:%s\n Source child:%s\tparent:%s",
|
||||
LoggerUtils.getActionStr(ev.action),
|
||||
LoggerUtils.getTargetStr(ev.srcTarget != null ? ev.srcTarget[0] : null),
|
||||
LoggerUtils.getTargetStr(ev.srcTarget.length > 1 ? ev.srcTarget[1] : null),
|
||||
LoggerUtils.getTargetStr(ev.srcTarget.length > 1 ? ev.srcTarget[1] : null)));
|
||||
if (ev.destTarget != null && ev.destTarget.length > 0) {
|
||||
Log.d(TAG, String.format(Locale.US,
|
||||
" Destination child:%s\tparent:%s",
|
||||
LoggerUtils.getTargetStr(ev.destTarget != null ? ev.destTarget[0] : null),
|
||||
LoggerUtils.getTargetStr(ev.destTarget.length > 1 ? ev.destTarget[1] : null)));
|
||||
}
|
||||
Log.d(TAG, String.format(Locale.US,
|
||||
" Elapsed container %d ms session %d ms",
|
||||
ev.elapsedContainerMillis,
|
||||
ev.elapsedSessionMillis));
|
||||
}
|
||||
}
|
||||
|
||||
public int getPredictedRank(ComponentKey key) {
|
||||
if (mPredictedApps == null) return -1;
|
||||
return mPredictedApps.indexOf(key);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user