Merge "Fill in LauncherTarget fields with values extracted from LauncherLogProto.Target." into ub-launcher3-qt-future-dev

am: 4a4755fc70

Change-Id: I6435b1e475b7a39e68a78dc893c2a6cc4f2b8d72
This commit is contained in:
Becky Qiu 2019-10-02 16:36:52 -07:00 committed by android-build-merger
commit d53cb6333f
1 changed files with 114 additions and 1 deletions

View File

@ -29,12 +29,16 @@ import android.content.Intent;
import android.stats.launcher.nano.Launcher;
import android.stats.launcher.nano.LauncherExtension;
import android.stats.launcher.nano.LauncherTarget;
import android.util.Log;
import android.view.View;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.logging.StatsLogUtils;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.userevent.nano.LauncherLogProto.ItemType;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType;
import com.android.launcher3.util.ComponentKey;
import com.android.systemui.shared.system.StatsLogCompat;
import com.google.protobuf.nano.MessageNano;
@ -50,6 +54,8 @@ import com.google.protobuf.nano.MessageNano;
public class StatsLogCompatManager extends StatsLogManager {
private static final int SUPPORTED_TARGET_DEPTH = 2;
private static final String TAG = "StatsLogCompatManager";
private static final boolean DEBUG = false;
public StatsLogCompatManager(Context context) { }
@ -59,6 +65,9 @@ public class StatsLogCompatManager extends StatsLogManager {
ext.srcTarget = new LauncherTarget[SUPPORTED_TARGET_DEPTH];
int srcState = mStateProvider.getCurrentState();
fillInLauncherExtension(v, ext);
if (ext.srcTarget[0] != null) {
ext.srcTarget[0].item = LauncherTarget.APP_ICON;
}
StatsLogCompat.write(LAUNCH_APP, srcState, BACKGROUND /* dstState */,
MessageNano.toByteArray(ext), true);
}
@ -95,28 +104,132 @@ public class StatsLogCompatManager extends StatsLogManager {
}
public static boolean fillInLauncherExtension(View v, LauncherExtension extension) {
if (DEBUG) {
Log.d(TAG, "fillInLauncherExtension");
}
StatsLogUtils.LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(v);
if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) {
if (DEBUG) {
Log.d(TAG, "View or provider is null, or view doesn't have an ItemInfo tag.");
}
return false;
}
ItemInfo itemInfo = (ItemInfo) v.getTag();
Target child = new Target();
Target parent = new Target();
provider.fillInLogContainerData(v, itemInfo, child, parent);
extension.srcTarget[0] = new LauncherTarget();
extension.srcTarget[1] = new LauncherTarget();
copy(child, extension.srcTarget[0]);
copy(parent, extension.srcTarget[1]);
return true;
}
public static boolean fillInLauncherExtensionWithPageId(LauncherExtension ext, int pageId) {
if (DEBUG) {
Log.d(TAG, "fillInLauncherExtensionWithPageId, pageId = " + pageId);
}
Target target = new Target();
target.pageIndex = pageId;
ext.srcTarget[0] = new LauncherTarget();
copy(target, ext.srcTarget[0]);
return true;
}
private static void copy(Target src, LauncherTarget dst) {
// fill in
if (DEBUG) {
Log.d(TAG, "copy target information from clearcut Target to LauncherTarget.");
}
// Fill in type
switch (src.type) {
case Target.Type.ITEM:
dst.type = LauncherTarget.ITEM_TYPE;
break;
case Target.Type.CONTROL:
dst.type = LauncherTarget.CONTROL_TYPE;
break;
case Target.Type.CONTAINER:
dst.type = LauncherTarget.CONTAINER_TYPE;
break;
default:
dst.type = LauncherTarget.NONE;
break;
}
// Fill in item
switch (src.itemType) {
case ItemType.APP_ICON:
dst.item = LauncherTarget.APP_ICON;
break;
case ItemType.SHORTCUT:
dst.item = LauncherTarget.SHORTCUT;
break;
case ItemType.WIDGET:
dst.item = LauncherTarget.WIDGET;
break;
case ItemType.FOLDER_ICON:
dst.item = LauncherTarget.FOLDER_ICON;
break;
case ItemType.DEEPSHORTCUT:
dst.item = LauncherTarget.DEEPSHORTCUT;
break;
case ItemType.SEARCHBOX:
dst.item = LauncherTarget.SEARCHBOX;
break;
case ItemType.EDITTEXT:
dst.item = LauncherTarget.EDITTEXT;
break;
case ItemType.NOTIFICATION:
dst.item = LauncherTarget.NOTIFICATION;
break;
case ItemType.TASK:
dst.item = LauncherTarget.TASK;
break;
default:
dst.item = LauncherTarget.DEFAULT_ITEM;
break;
}
// Fill in container
switch (src.containerType) {
case ContainerType.HOTSEAT:
dst.container = LauncherTarget.HOTSEAT;
break;
case ContainerType.FOLDER:
dst.container = LauncherTarget.FOLDER;
break;
case ContainerType.PREDICTION:
dst.container = LauncherTarget.PREDICTION;
break;
case ContainerType.SEARCHRESULT:
dst.container = LauncherTarget.SEARCHRESULT;
break;
default:
dst.container = LauncherTarget.DEFAULT_CONTAINER;
break;
}
// Fill in control
switch (src.controlType) {
case ControlType.UNINSTALL_TARGET:
dst.control = LauncherTarget.UNINSTALL;
break;
case ControlType.REMOVE_TARGET:
dst.control = LauncherTarget.REMOVE;
break;
default:
dst.control = LauncherTarget.DEFAULT_CONTROL;
break;
}
// Fill in other fields
dst.pageId = src.pageIndex;
dst.gridX = src.gridX;
dst.gridY = src.gridY;
}
@Override