Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2e3c5de authored by Mario Bertschler's avatar Mario Bertschler
Browse files

Adding WEB_APP item type for logging.

Set in LoggerUtils.newItemTarget if instant app

Bug:67049361
Change-Id: I8e99e5c60bf1a2083f898e8978d403138f803276
parent 86d7b2d8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@ enum ItemType {
  EDITTEXT = 7;
  NOTIFICATION = 8;
  TASK = 9;         // Each page of Recents UI (QuickStep)
  WEB_APP = 10;
}

// Used to define what type of container a Target would represent.
+4 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import com.android.launcher3.model.WidgetItem;
import com.android.launcher3.shortcuts.ShortcutInfoCompat;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.util.InstantAppResolver;
import com.android.launcher3.widget.PendingAddShortcutInfo;
import com.android.launcher3.widget.PendingAddWidgetInfo;
import com.android.launcher3.widget.WidgetHostViewLoader;
@@ -82,6 +83,7 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener
    private Bundle mWidgetOptions;

    private boolean mFinishOnPause = false;
    private InstantAppResolver mInstantAppResolver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -95,6 +97,7 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener

        mApp = LauncherAppState.getInstance(this);
        mIdp = mApp.getInvariantDeviceProfile();
        mInstantAppResolver = InstantAppResolver.newInstance(this);

        // Use the application context to get the device profile, as in multiwindow-mode, the
        // confirmation activity might be rotated.
@@ -298,7 +301,7 @@ public class AddItemActivity extends BaseActivity implements OnLongClickListener
    private void logCommand(int command) {
        getUserEventDispatcher().dispatchUserEvent(newLauncherEvent(
                newCommandAction(command),
                newItemTarget(mWidgetCell.getWidgetView()),
                newItemTarget(mWidgetCell.getWidgetView(), mInstantAppResolver),
                newContainerTarget(ContainerType.PINITEM)), null);
    }
}
+10 −4
Original line number Diff line number Diff line
@@ -15,10 +15,12 @@
 */
package com.android.launcher3.logging;

import android.content.Context;
import android.util.ArrayMap;
import android.util.SparseArray;
import android.view.View;

import com.android.launcher3.AppInfo;
import com.android.launcher3.ButtonDropTarget;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherSettings;
@@ -29,6 +31,7 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.ControlType;
import com.android.launcher3.userevent.nano.LauncherLogProto.ItemType;
import com.android.launcher3.userevent.nano.LauncherLogProto.LauncherEvent;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.InstantAppResolver;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -127,18 +130,21 @@ public class LoggerUtils {
        return t;
    }

    public static Target newItemTarget(View v) {
    public static Target newItemTarget(View v, InstantAppResolver instantAppResolver) {
        return (v.getTag() instanceof ItemInfo)
                ? newItemTarget((ItemInfo) v.getTag())
                ? newItemTarget((ItemInfo) v.getTag(), instantAppResolver)
                : newTarget(Target.Type.ITEM);
    }

    public static Target newItemTarget(ItemInfo info) {
    public static Target newItemTarget(ItemInfo info, InstantAppResolver instantAppResolver) {
        Target t = newTarget(Target.Type.ITEM);

        switch (info.itemType) {
            case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
                t.itemType = ItemType.APP_ICON;
                t.itemType = (instantAppResolver != null && info instanceof AppInfo
                        && instantAppResolver.isInstantApp(((AppInfo) info)) )
                        ? ItemType.WEB_APP
                        : ItemType.APP_ICON;
                t.predictedRank = -100; // Never assigned
                break;
            case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
+11 −6
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import com.android.launcher3.userevent.nano.LauncherLogProto.LauncherEvent;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
import com.android.launcher3.util.InstantAppResolver;
import com.android.launcher3.util.LogConfig;

import java.util.Locale;
@@ -78,6 +79,7 @@ public class UserEventDispatcher {
        ued.mIsInLandscapeMode = dp.isVerticalBarLayout();
        ued.mIsInMultiWindowMode = dp.isMultiWindowMode;
        ued.mUuidStr = uuidStr;
        ued.mInstantAppResolver = InstantAppResolver.newInstance(context);
        return ued;
    }

@@ -126,6 +128,7 @@ public class UserEventDispatcher {
    private boolean mIsInMultiWindowMode;
    private boolean mIsInLandscapeMode;
    private String mUuidStr;
    protected InstantAppResolver mInstantAppResolver;

    //                      APP_ICON    SHORTCUT    WIDGET
    // --------------------------------------------------------------
@@ -151,7 +154,7 @@ public class UserEventDispatcher {

    public void logAppLaunch(View v, Intent intent) {
        LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP),
                newItemTarget(v), newTarget(Target.Type.CONTAINER));
                newItemTarget(v, mInstantAppResolver), newTarget(Target.Type.CONTAINER));

        if (fillInLogContainerData(event, v)) {
            fillIntentInfo(event.srcTarget[0], intent);
@@ -184,7 +187,7 @@ public class UserEventDispatcher {

    public void logNotificationLaunch(View v, PendingIntent intent) {
        LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP),
                newItemTarget(v), newTarget(Target.Type.CONTAINER));
                newItemTarget(v, mInstantAppResolver), newTarget(Target.Type.CONTAINER));
        if (fillInLogContainerData(event, v)) {
            event.srcTarget[0].packageNameHash = (mUuidStr + intent.getCreatorPackage()).hashCode();
        }
@@ -215,7 +218,7 @@ public class UserEventDispatcher {
     */
    public void logActionCommand(int command, View itemView, int srcContainerType) {
        LauncherEvent event = newLauncherEvent(newCommandAction(command),
                newItemTarget(itemView), newTarget(Target.Type.CONTAINER));
                newItemTarget(itemView, mInstantAppResolver), newTarget(Target.Type.CONTAINER));

        if (fillInLogContainerData(event, itemView)) {
            // TODO: Remove the following two lines once fillInLogContainerData can take in a
@@ -320,7 +323,7 @@ public class UserEventDispatcher {
        }
        ItemInfo info = (ItemInfo) icon.getTag();
        LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.LONGPRESS),
                newItemTarget(info), newTarget(Target.Type.CONTAINER));
                newItemTarget(info, mInstantAppResolver), newTarget(Target.Type.CONTAINER));
        provider.fillInLogContainerData(icon, info, event.srcTarget[0], event.srcTarget[1]);
        dispatchUserEvent(event, null);

@@ -338,9 +341,11 @@ public class UserEventDispatcher {

    public void logDragNDrop(DropTarget.DragObject dragObj, View dropTargetAsView) {
        LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.DRAGDROP),
                newItemTarget(dragObj.originalDragInfo), newTarget(Target.Type.CONTAINER));
                newItemTarget(dragObj.originalDragInfo, mInstantAppResolver),
                newTarget(Target.Type.CONTAINER));
        event.destTarget = new Target[] {
                newItemTarget(dragObj.originalDragInfo), newDropTarget(dropTargetAsView)
                newItemTarget(dragObj.originalDragInfo, mInstantAppResolver),
                newDropTarget(dropTargetAsView)
        };

        dragObj.dragSource.fillInLogContainerData(null, dragObj.originalDragInfo,