From fc007479090e3a64d6e24534605fe08e7dc5bc96 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Thu, 25 Oct 2018 14:09:50 -0700 Subject: [PATCH] Add StatsLog*Manager for logging. Bug: 113043444 Verification: (19) is our event classifier number 11-05 11:24:28.188 932 994 I statsd : { 1541445868000000000 766293363001 (19)0x10000->1[I] 0x20000->0[I] 0x30000->0[I] 0x40000->[S] 0x50000->1[I] } Change-Id: I75403837f9fa8e51efa012fb708bce7efc9c4488 --- quickstep/libs/sysui_shared.jar | Bin 185554 -> 200647 bytes quickstep/res/values/config.xml | 2 + .../logging/StatsLogCompatManager.java | 105 ++++++++++++++++++ .../logging/UserEventDispatcherExtension.java | 1 + .../com/android/quickstep/views/TaskView.java | 3 + res/values/config.xml | 1 + src/com/android/launcher3/BaseActivity.java | 15 ++- .../launcher3/BaseDraggingActivity.java | 1 + src/com/android/launcher3/DragSource.java | 2 +- src/com/android/launcher3/Hotseat.java | 2 +- src/com/android/launcher3/Launcher.java | 11 ++ .../allapps/AllAppsRecyclerView.java | 2 +- .../launcher3/logging/LoggerUtils.java | 1 + .../launcher3/logging/StatsLogManager.java | 46 ++++++++ .../launcher3/logging/StatsLogUtils.java | 67 +++++++++++ .../logging/UserEventDispatcher.java | 78 +++---------- 16 files changed, 271 insertions(+), 66 deletions(-) create mode 100644 quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java create mode 100644 src/com/android/launcher3/logging/StatsLogManager.java create mode 100644 src/com/android/launcher3/logging/StatsLogUtils.java diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar index 6f3fa4be552bd57055bc12ca8b5d80dce8b08dd6..163524e179cad2fcd61593bf6ad85ea896dcc030 100644 GIT binary patch delta 73274 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 z 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%0A9=ZgWc*~DJj^~}(w`rMO~sLa?yQFu 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 diff --git a/quickstep/res/values/config.xml b/quickstep/res/values/config.xml index d8ca1c47c1..3fbfcdd6c4 100644 --- a/quickstep/res/values/config.xml +++ b/quickstep/res/values/config.xml @@ -20,6 +20,8 @@ com.android.quickstep.logging.UserEventDispatcherExtension + com.android.quickstep.logging.StatsLogCompatManager + 3 diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java new file mode 100644 index 0000000000..2f411efc7b --- /dev/null +++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.quickstep.logging; + +import android.content.Context; +import android.content.Intent; +import android.stats.launcher.nano.LauncherExtension; +import android.stats.launcher.nano.LauncherTarget; + +import static android.stats.launcher.nano.Launcher.ALLAPPS; +import static android.stats.launcher.nano.Launcher.HOME; +import static android.stats.launcher.nano.Launcher.LAUNCH_APP; +import static android.stats.launcher.nano.Launcher.LAUNCH_TASK; +import static android.stats.launcher.nano.Launcher.BACKGROUND; +import static android.stats.launcher.nano.Launcher.OVERVIEW; + +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.util.ComponentKey; +import com.android.systemui.shared.system.StatsLogCompat; +import com.google.protobuf.nano.MessageNano; + +import androidx.annotation.Nullable; + +/** + * This method calls the StatsLog hidden method until they are made available public. + * + * To see if the logs are properly sent to statsd, execute following command. + * $ adb root && adb shell statsd + * $ adb shell cmd stats print-logs + * $ adb logcat | grep statsd OR $ adb logcat -b stats + */ +public class StatsLogCompatManager extends StatsLogManager { + + private static final int SUPPORTED_TARGET_DEPTH = 2; + + public StatsLogCompatManager(Context context) { } + + @Override + public void logAppLaunch(View v, Intent intent) { + LauncherExtension ext = new LauncherExtension(); + ext.srcTarget = new LauncherTarget[SUPPORTED_TARGET_DEPTH]; + int srcState = mStateProvider.getCurrentState(); + fillInLauncherExtension(v, ext); + StatsLogCompat.write(LAUNCH_APP, srcState, BACKGROUND /* dstState */, + MessageNano.toByteArray(ext), true); + } + + @Override + public void logTaskLaunch(View v, ComponentKey componentKey) { + LauncherExtension ext = new LauncherExtension(); + ext.srcTarget = new LauncherTarget[SUPPORTED_TARGET_DEPTH]; + int srcState = OVERVIEW; + fillInLauncherExtension(v, ext); + StatsLogCompat.write(LAUNCH_TASK, srcState, BACKGROUND /* dstState */, + MessageNano.toByteArray(ext), true); + } + + public static boolean fillInLauncherExtension(View v, LauncherExtension extension) { + StatsLogUtils.LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(v); + if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) { + return false; + } + ItemInfo itemInfo = (ItemInfo) v.getTag(); + Target child = new Target(); + Target parent = new Target(); + provider.fillInLogContainerData(v, itemInfo, child, parent); + copy(child, extension.srcTarget[0]); + copy(parent, extension.srcTarget[1]); + return true; + } + + private static void copy(Target src, LauncherTarget dst) { + // fill in + } + + @Override + public void verify() { + if(!(StatsLogUtils.LAUNCHER_STATE_ALLAPPS == ALLAPPS && + StatsLogUtils.LAUNCHER_STATE_BACKGROUND == BACKGROUND && + StatsLogUtils.LAUNCHER_STATE_OVERVIEW == OVERVIEW && + StatsLogUtils.LAUNCHER_STATE_HOME == HOME)) { + throw new IllegalStateException( + "StatsLogUtil constants doesn't match enums in launcher.proto"); + } + } +} diff --git a/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java b/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java index 6dff187ea5..4392851c0e 100644 --- a/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java +++ b/quickstep/src/com/android/quickstep/logging/UserEventDispatcherExtension.java @@ -34,6 +34,7 @@ import com.android.systemui.shared.system.MetricsLoggerCompat; * quickstep interactions. */ @SuppressWarnings("unused") +@Deprecated public class UserEventDispatcherExtension extends UserEventDispatcher { private static final String TAG = "UserEventDispatcher"; diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index 2a4226faa2..d34dc5b811 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -167,9 +167,12 @@ public class TaskView extends FrameLayout implements PageCallbacks { return; } launchTask(true /* animate */); + fromContext(context).getUserEventDispatcher().logTaskLaunchOrDismiss( Touch.TAP, Direction.NONE, getRecentsView().indexOfChild(this), TaskUtils.getLaunchComponentKeyForTask(getTask().key)); + fromContext(context).getStatsLogManager().logTaskLaunch(getRecentsView(), + TaskUtils.getLaunchComponentKeyForTask(getTask().key)); }); setOutlineProvider(new TaskOutlineProvider(getResources())); } diff --git a/res/values/config.xml b/res/values/config.xml index 5e83ab7666..4ab22741c6 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -84,6 +84,7 @@ + diff --git a/src/com/android/launcher3/BaseActivity.java b/src/com/android/launcher3/BaseActivity.java index 7b565273f2..77b6010c26 100644 --- a/src/com/android/launcher3/BaseActivity.java +++ b/src/com/android/launcher3/BaseActivity.java @@ -28,6 +28,9 @@ import android.view.ContextThemeWrapper; import android.view.View.AccessibilityDelegate; import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener; +import com.android.launcher3.logging.StatsLogManager; +import com.android.launcher3.logging.StatsLogUtils; +import com.android.launcher3.logging.StatsLogUtils.LogStateProvider; import com.android.launcher3.logging.UserEventDispatcher; import com.android.launcher3.logging.UserEventDispatcher.UserEventDelegate; import com.android.launcher3.uioverrides.UiFactory; @@ -41,7 +44,7 @@ import java.util.ArrayList; import androidx.annotation.IntDef; -public abstract class BaseActivity extends Activity implements UserEventDelegate{ +public abstract class BaseActivity extends Activity implements UserEventDelegate, LogStateProvider{ public static final int INVISIBLE_BY_STATE_HANDLER = 1 << 0; public static final int INVISIBLE_BY_APP_TRANSITIONS = 1 << 1; @@ -72,6 +75,7 @@ public abstract class BaseActivity extends Activity implements UserEventDelegate protected DeviceProfile mDeviceProfile; protected UserEventDispatcher mUserEventDispatcher; + protected StatsLogManager mStatsLogManager; protected SystemUiController mSystemUiController; private static final int ACTIVITY_STATE_STARTED = 1 << 0; @@ -104,8 +108,17 @@ public abstract class BaseActivity extends Activity implements UserEventDelegate return null; } + public int getCurrentState() { return StatsLogUtils.LAUNCHER_STATE_BACKGROUND; } + public void modifyUserEvent(LauncherLogProto.LauncherEvent event) {} + public final StatsLogManager getStatsLogManager() { + if (mStatsLogManager == null) { + mStatsLogManager = StatsLogManager.newInstance(this, this); + } + return mStatsLogManager; + } + public final UserEventDispatcher getUserEventDispatcher() { if (mUserEventDispatcher == null) { mUserEventDispatcher = UserEventDispatcher.newInstance(this, this); diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java index f5fbf80dcd..152dc84d01 100644 --- a/src/com/android/launcher3/BaseDraggingActivity.java +++ b/src/com/android/launcher3/BaseDraggingActivity.java @@ -200,6 +200,7 @@ public abstract class BaseDraggingActivity extends BaseActivity intent.getComponent(), user, intent.getSourceBounds(), optsBundle); } getUserEventDispatcher().logAppLaunch(v, intent); + getStatsLogManager().logAppLaunch(v, intent); return true; } catch (ActivityNotFoundException|SecurityException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); diff --git a/src/com/android/launcher3/DragSource.java b/src/com/android/launcher3/DragSource.java index 93f865c9f9..d4d7b99fd4 100644 --- a/src/com/android/launcher3/DragSource.java +++ b/src/com/android/launcher3/DragSource.java @@ -19,7 +19,7 @@ package com.android.launcher3; import android.view.View; import com.android.launcher3.DropTarget.DragObject; -import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider; +import com.android.launcher3.logging.StatsLogUtils.LogContainerProvider; /** * Interface defining an object that can originate a drag. diff --git a/src/com/android/launcher3/Hotseat.java b/src/com/android/launcher3/Hotseat.java index 15a9f2e06b..cb354a6f1c 100644 --- a/src/com/android/launcher3/Hotseat.java +++ b/src/com/android/launcher3/Hotseat.java @@ -26,7 +26,7 @@ import android.view.ViewDebug; import android.view.ViewGroup; import android.widget.FrameLayout; -import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider; +import com.android.launcher3.logging.StatsLogUtils.LogContainerProvider; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 3ae9a49e70..3a38c0fbc8 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -91,6 +91,7 @@ import com.android.launcher3.icons.IconCache; import com.android.launcher3.keyboard.CustomActionsPopup; import com.android.launcher3.keyboard.ViewGroupFocusHelper; import com.android.launcher3.logging.FileLog; +import com.android.launcher3.logging.StatsLogUtils; import com.android.launcher3.logging.UserEventDispatcher; import com.android.launcher3.logging.UserEventDispatcher.UserEventDelegate; import com.android.launcher3.model.ModelWriter; @@ -1609,6 +1610,16 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } } + @Override + public int getCurrentState() { + if(mStateManager.getState() == LauncherState.ALL_APPS) { + return StatsLogUtils.LAUNCHER_STATE_ALLAPPS; + } else if (mStateManager.getState() == LauncherState.OVERVIEW) { + return StatsLogUtils.LAUNCHER_STATE_OVERVIEW; + } + return StatsLogUtils.LAUNCHER_STATE_BACKGROUND; + } + @Override public void modifyUserEvent(LauncherLogProto.LauncherEvent event) { if (event.srcTarget != null && event.srcTarget.length > 0 && diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index fa07d4d75c..180ca48166 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -33,7 +33,7 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.R; import com.android.launcher3.graphics.DrawableFactory; -import com.android.launcher3.logging.UserEventDispatcher.LogContainerProvider; +import com.android.launcher3.logging.StatsLogUtils.LogContainerProvider; import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType; import com.android.launcher3.userevent.nano.LauncherLogProto.Target; import com.android.launcher3.views.RecyclerViewFastScroller; diff --git a/src/com/android/launcher3/logging/LoggerUtils.java b/src/com/android/launcher3/logging/LoggerUtils.java index 1c4327c499..4ef86265f5 100644 --- a/src/com/android/launcher3/logging/LoggerUtils.java +++ b/src/com/android/launcher3/logging/LoggerUtils.java @@ -40,6 +40,7 @@ import java.lang.reflect.Modifier; /** * Helper methods for logging. */ +@Deprecated public class LoggerUtils { private static final ArrayMap> sNameCache = new ArrayMap<>(); private static final String UNKNOWN = "UNKNOWN"; diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java new file mode 100644 index 0000000000..d332dc5ce3 --- /dev/null +++ b/src/com/android/launcher3/logging/StatsLogManager.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.logging; + +import android.content.Context; +import android.content.Intent; +import android.view.View; + +import com.android.launcher3.R; +import com.android.launcher3.util.ComponentKey; +import com.android.launcher3.util.ResourceBasedOverride; +import com.android.launcher3.logging.StatsLogUtils.LogStateProvider; + +/** + * Handles the user event logging in Q. + * Since the AOSP Launcher3 doesn't take part in the StatsLog logging, the class + * itself is abstract. + */ +public abstract class StatsLogManager implements ResourceBasedOverride { + + protected LogStateProvider mStateProvider; + public static StatsLogManager newInstance(Context context, LogStateProvider stateProvider) { + StatsLogManager mgr = Overrides.getObject(StatsLogManager.class, + context.getApplicationContext(), R.string.stats_log_manager_class); + mgr.mStateProvider = stateProvider; + mgr.verify(); + return mgr; + } + + public void logAppLaunch(View v, Intent intent) { } + public void logTaskLaunch(View v, ComponentKey key) { } + public void verify() {} // TODO: should move into robo tests +} diff --git a/src/com/android/launcher3/logging/StatsLogUtils.java b/src/com/android/launcher3/logging/StatsLogUtils.java new file mode 100644 index 0000000000..647f255af3 --- /dev/null +++ b/src/com/android/launcher3/logging/StatsLogUtils.java @@ -0,0 +1,67 @@ +package com.android.launcher3.logging; + +import android.view.View; +import android.view.ViewParent; + +import com.android.launcher3.ItemInfo; +import com.android.launcher3.userevent.nano.LauncherLogProto.Target; + +import androidx.annotation.Nullable; + + +public class StatsLogUtils { + + // Defined in android.stats.launcher.nano + // As they cannot be linked in this file, defining again. + public final static int LAUNCHER_STATE_BACKGROUND = 0; + public final static int LAUNCHER_STATE_HOME = 1; + public final static int LAUNCHER_STATE_OVERVIEW = 2; + public final static int LAUNCHER_STATE_ALLAPPS = 3; + + private final static int MAXIMUM_VIEW_HIERARCHY_LEVEL = 5; + + public interface LogStateProvider { + int getCurrentState(); + } + + /** + * Implemented by containers to provide a container source for a given child. + * + * Currently, + */ + public interface LogContainerProvider { + + /** + * Copies data from the source to the destination proto. + * + * @param v source of the data + * @param info source of the data + * @param target dest of the data + * @param targetParent dest of the data + */ + void fillInLogContainerData(View v, ItemInfo info, Target target, Target targetParent); + } + + /** + * Recursively finds the parent of the given child which implements IconLogInfoProvider + */ + public static LogContainerProvider getLaunchProviderRecursive(@Nullable View v) { + ViewParent parent; + if (v != null) { + parent = v.getParent(); + } else { + return null; + } + + // Optimization to only check up to 5 parents. + int count = MAXIMUM_VIEW_HIERARCHY_LEVEL; + while (parent != null && count-- > 0) { + if (parent instanceof LogContainerProvider) { + return (LogContainerProvider) parent; + } else { + parent = parent.getParent(); + } + } + return null; + } +} diff --git a/src/com/android/launcher3/logging/UserEventDispatcher.java b/src/com/android/launcher3/logging/UserEventDispatcher.java index a318dc0eb6..e11516890c 100644 --- a/src/com/android/launcher3/logging/UserEventDispatcher.java +++ b/src/com/android/launcher3/logging/UserEventDispatcher.java @@ -41,9 +41,9 @@ import com.android.launcher3.ItemInfo; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; +import com.android.launcher3.logging.StatsLogUtils.LogContainerProvider; import com.android.launcher3.userevent.nano.LauncherLogProto; 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.ComponentKey; @@ -62,10 +62,9 @@ import androidx.annotation.Nullable; * * $ adb shell setprop log.tag.UserEvent VERBOSE */ +@Deprecated public class UserEventDispatcher implements ResourceBasedOverride { - private final static int MAXIMUM_VIEW_HIERARCHY_LEVEL = 5; - private static final String TAG = "UserEvent"; private static final boolean IS_VERBOSE = FeatureFlags.IS_DOGFOOD_BUILD && Utilities.isPropertyEnabled(LogConfig.USEREVENT); @@ -96,42 +95,19 @@ public class UserEventDispatcher implements ResourceBasedOverride { } /** - * Implemented by containers to provide a container source for a given child. + * Fills in the container data on the given event if the given view is not null. + * @return whether container data was added. */ - public interface LogContainerProvider { - - /** - * Copies data from the source to the destination proto. - * - * @param v source of the data - * @param info source of the data - * @param target dest of the data - * @param targetParent dest of the data - */ - void fillInLogContainerData(View v, ItemInfo info, Target target, Target targetParent); - } - - /** - * Recursively finds the parent of the given child which implements IconLogInfoProvider - */ - public static LogContainerProvider getLaunchProviderRecursive(@Nullable View v) { - ViewParent parent; - if (v != null) { - parent = v.getParent(); - } else { - return null; + @Deprecated + public static boolean fillInLogContainerData(LauncherLogProto.LauncherEvent event, @Nullable View v) { + // Fill in grid(x,y), pageIndex of the child and container type of the parent + LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(v); + if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) { + return false; } - - // Optimization to only check up to 5 parents. - int count = MAXIMUM_VIEW_HIERARCHY_LEVEL; - while (parent != null && count-- > 0) { - if (parent instanceof LogContainerProvider) { - return (LogContainerProvider) parent; - } else { - parent = parent.getParent(); - } - } - return null; + ItemInfo itemInfo = (ItemInfo) v.getTag(); + provider.fillInLogContainerData(v, itemInfo, event.srcTarget[0], event.srcTarget[1]); + return true; } private boolean mSessionStarted; @@ -150,21 +126,7 @@ public class UserEventDispatcher implements ResourceBasedOverride { // intentHash required // -------------------------------------------------------------- - /** - * Fills in the container data on the given event if the given view is not null. - * @return whether container data was added. - */ - protected boolean fillInLogContainerData(LauncherEvent event, @Nullable View v) { - // Fill in grid(x,y), pageIndex of the child and container type of the parent - LogContainerProvider provider = getLaunchProviderRecursive(v); - if (v == null || !(v.getTag() instanceof ItemInfo) || provider == null) { - return false; - } - ItemInfo itemInfo = (ItemInfo) v.getTag(); - provider.fillInLogContainerData(v, itemInfo, event.srcTarget[0], event.srcTarget[1]); - return true; - } - + @Deprecated public void logAppLaunch(View v, Intent intent) { LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.TAP), newItemTarget(v, mInstantAppResolver), newTarget(Target.Type.CONTAINER)); @@ -181,6 +143,7 @@ public class UserEventDispatcher implements ResourceBasedOverride { public void logActionTip(int actionType, int viewType) { } + @Deprecated public void logTaskLaunchOrDismiss(int action, int direction, int taskIndex, ComponentKey componentKey) { LauncherEvent event = newLauncherEvent(newTouchAction(action), // TAP or SWIPE or FLING @@ -363,7 +326,7 @@ public class UserEventDispatcher implements ResourceBasedOverride { } public void logDeepShortcutsOpen(View icon) { - LogContainerProvider provider = getLaunchProviderRecursive(icon); + LogContainerProvider provider = StatsLogUtils.getLaunchProviderRecursive(icon); if (icon == null || !(icon.getTag() instanceof ItemInfo)) { return; } @@ -376,15 +339,6 @@ public class UserEventDispatcher implements ResourceBasedOverride { resetElapsedContainerMillis("deep shortcut open"); } - /* Currently we are only interested in whether this event happens or not and don't - * care about which screen moves to where. */ - public void logOverviewReorder() { - LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.DRAGDROP), - newContainerTarget(ContainerType.WORKSPACE), - newContainerTarget(ContainerType.OVERVIEW)); - dispatchUserEvent(event, null); - } - public void logDragNDrop(DropTarget.DragObject dragObj, View dropTargetAsView) { LauncherEvent event = newLauncherEvent(newTouchAction(Action.Touch.DRAGDROP), newItemTarget(dragObj.originalDragInfo, mInstantAppResolver),