From be06874c8105cf1beec8171235600da9f4ee035e Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 10 Aug 2016 16:06:22 -0700 Subject: Log shortcuts open on ACTION_UP instead of in showForIcon(). - We only want to log when the container is opened and potentially used, not when a long press is followed by a drag-and-drop. - Also cleaned up code that was determining the container of the app icon, since LaunchSourceProvider.fillInLaunchSourceData() can do that instead (it's more robust and consistent). Bug: 30791570 Change-Id: I05b6750f26182fda8a9940ac66f1371c2d228ca9 --- .../launcher3/allapps/AllAppsRecyclerView.java | 11 ++++----- .../launcher3/logging/UserEventDispatcher.java | 8 ++++--- .../shortcuts/DeepShortcutsContainer.java | 27 +--------------------- 3 files changed, 10 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java index 55f544caa..218347743 100644 --- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java +++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java @@ -208,12 +208,8 @@ public class AllAppsRecyclerView extends BaseRecyclerView @Override public void fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent) { - targetParent.containerType = getContainerType(v); - } - - public int getContainerType(View v) { if (mApps.hasFilter()) { - return LauncherLogProto.SEARCHRESULT; + targetParent.containerType = LauncherLogProto.SEARCHRESULT; } else { if (v instanceof BubbleTextView) { BubbleTextView icon = (BubbleTextView) v; @@ -222,11 +218,12 @@ public class AllAppsRecyclerView extends BaseRecyclerView List items = mApps.getAdapterItems(); AlphabeticalAppsList.AdapterItem item = items.get(position); if (item.viewType == AllAppsGridAdapter.VIEW_TYPE_PREDICTION_ICON) { - return LauncherLogProto.PREDICTION; + targetParent.containerType = LauncherLogProto.PREDICTION; + return; } } } - return LauncherLogProto.ALLAPPS; + targetParent.containerType = LauncherLogProto.ALLAPPS; } } diff --git a/src/com/android/launcher3/logging/UserEventDispatcher.java b/src/com/android/launcher3/logging/UserEventDispatcher.java index e780cc91b..64a5f573d 100644 --- a/src/com/android/launcher3/logging/UserEventDispatcher.java +++ b/src/com/android/launcher3/logging/UserEventDispatcher.java @@ -147,12 +147,14 @@ public class UserEventDispatcher { dispatchUserEvent(event, null); } - public void logDeepShortcutsOpen(int containerType) { + public void logDeepShortcutsOpen(View icon) { LauncherEvent event = LoggerUtils.initLauncherEvent( Action.TOUCH, Target.ITEM, Target.CONTAINER); - event.action.touch = Action.LONGPRESS; + LaunchSourceProvider provider = getLaunchProviderRecursive(icon); + ItemInfo info = (ItemInfo) icon.getTag(); + provider.fillInLaunchSourceData(icon, info, event.srcTarget[0], event.srcTarget[1]); event.srcTarget[0].itemType = LauncherLogProto.DEEPSHORTCUT; - event.srcTarget[1].containerType = containerType; + event.action.touch = Action.LONGPRESS; event.elapsedContainerMillis = System.currentTimeMillis() - mElapsedContainerMillis; event.elapsedSessionMillis = System.currentTimeMillis() - mElapsedSessionMillis; dispatchUserEvent(event, null); diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java index a341b973c..6cd6d33b7 100644 --- a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java +++ b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java @@ -33,7 +33,6 @@ import android.os.Handler; import android.os.Looper; import android.text.TextUtils; import android.util.AttributeSet; -import android.util.Log; import android.view.Gravity; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; @@ -54,19 +53,16 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAnimUtils; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel; -import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherViewPropertyAnimator; import com.android.launcher3.R; import com.android.launcher3.ShortcutInfo; import com.android.launcher3.Utilities; import com.android.launcher3.Workspace; import com.android.launcher3.accessibility.ShortcutMenuAccessibilityDelegate; -import com.android.launcher3.allapps.AllAppsRecyclerView; import com.android.launcher3.compat.UserHandleCompat; import com.android.launcher3.dragndrop.DragController; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.dragndrop.DragView; -import com.android.launcher3.folder.Folder; import com.android.launcher3.graphics.TriangleShape; import com.android.launcher3.logging.UserEventDispatcher; import com.android.launcher3.userevent.nano.LauncherLogProto; @@ -476,6 +472,7 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC } } else if (action == MotionEvent.ACTION_UP) { cleanupDeferredDrag(true); + mLauncher.getUserEventDispatcher().logDeepShortcutsOpen(mDeferredDragIcon); } else if (action == MotionEvent.ACTION_CANCEL) { // Do not change the source icon visibility if we are already dragging the source icon. cleanupDeferredDrag(!mSrcIconDragStarted); @@ -745,33 +742,11 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC container.populateAndShow(icon, ids); icon.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); - logOpen(launcher, icon); return container; } return null; } - private static void logOpen(Launcher launcher, View icon) { - ItemInfo info = (ItemInfo) icon.getTag(); - long iconContainer = info.container; - Folder openFolder = launcher.getWorkspace().getOpenFolder(); - int containerType; - if (iconContainer == LauncherSettings.Favorites.CONTAINER_DESKTOP) { - containerType = LauncherLogProto.WORKSPACE; - } else if (iconContainer == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { - containerType = LauncherLogProto.HOTSEAT; - } else if (openFolder != null && iconContainer == openFolder.getInfo().id) { - containerType = LauncherLogProto.FOLDER; - } else if (icon.getParent() instanceof AllAppsRecyclerView) { - containerType = ((AllAppsRecyclerView) icon.getParent()).getContainerType(icon); - } else { - // This should not happen. - Log.w(TAG, "Couldn't determine parent of shortcut container"); - containerType = LauncherLogProto.DEFAULT_CONTAINERTYPE; - } - launcher.getUserEventDispatcher().logDeepShortcutsOpen(containerType); - } - /** * Extension of {@link ShortcutInfo} which does not badge the icons. */ -- cgit v1.2.3