summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHyunyoung Song <hyunyoungs@google.com>2016-07-21 11:48:37 -0700
committerHyunyoung Song <hyunyoungs@google.com>2016-07-21 11:48:37 -0700
commit5aa2714959405043639cb2d0b8d9ab8c6eef0bd2 (patch)
tree92e46448e9a744378ede2da9f7cb8f8618bbbafb /src
parent06580312edc1fd1a94746de0626022e60d8e614e (diff)
downloadandroid_packages_apps_Trebuchet-5aa2714959405043639cb2d0b8d9ab8c6eef0bd2.tar.gz
android_packages_apps_Trebuchet-5aa2714959405043639cb2d0b8d9ab8c6eef0bd2.tar.bz2
android_packages_apps_Trebuchet-5aa2714959405043639cb2d0b8d9ab8c6eef0bd2.zip
Add user event log for deep shortcuts and all apps opening interaction.
b/30114798 Change-Id: I11ad99d0bc1983294d6a5329b98917cb87250823
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java5
-rw-r--r--src/com/android/launcher3/allapps/AllAppsTransitionController.java9
-rw-r--r--src/com/android/launcher3/logging/LoggerUtils.java39
-rw-r--r--src/com/android/launcher3/logging/UserEventDispatcher.java35
-rw-r--r--src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java8
5 files changed, 70 insertions, 26 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 73cd800ca..f57753bde 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -117,6 +117,7 @@ import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.pageindicators.PageIndicator;
import com.android.launcher3.shortcuts.DeepShortcutManager;
import com.android.launcher3.shortcuts.DeepShortcutsContainer;
+import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.util.ComponentKey;
import com.android.launcher3.util.MultiHashMap;
import com.android.launcher3.util.PackageManagerHelper;
@@ -2590,6 +2591,8 @@ public class Launcher extends Activity
protected void onClickAllAppsButton(View v) {
if (LOGD) Log.d(TAG, "onClickAllAppsButton");
if (!isAppsViewVisible()) {
+ mUserEventDispatcher.logActionOnControl(LauncherLogProto.Action.TAP,
+ LauncherLogProto.ALL_APPS_BUTTON);
showAppsView(true /* animated */, false /* resetListToTop */,
true /* updatePredictedApps */, false /* focusSearchBar */);
}
@@ -2598,6 +2601,8 @@ public class Launcher extends Activity
protected void onLongClickAllAppsButton(View v) {
if (LOGD) Log.d(TAG, "onLongClickAllAppsButton");
if (!isAppsViewVisible()) {
+ mUserEventDispatcher.logActionOnControl(LauncherLogProto.Action.LONGPRESS,
+ LauncherLogProto.ALL_APPS_BUTTON);
showAppsView(true /* animated */, false /* resetListToTop */,
true /* updatePredictedApps */, true /* focusSearchBar */);
}
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index 03b3107aa..136308bb1 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -22,6 +22,7 @@ import com.android.launcher3.PagedView;
import com.android.launcher3.R;
import com.android.launcher3.Workspace;
import com.android.launcher3.Workspace.Direction;
+import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.util.TouchController;
/**
@@ -210,6 +211,10 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
calculateDuration(velocity, mAppsView.getTranslationY());
if (!mLauncher.isAllAppsVisible()) {
+ mLauncher.getUserEventDispatcher().logActionOnContainer(
+ LauncherLogProto.Action.FLING,
+ LauncherLogProto.Action.UP,
+ LauncherLogProto.HOTSEAT);
mLauncher.showAppsView(true, true, false, false);
} else {
animateToAllApps(mCurrentAnimation, mAnimationDuration, true);
@@ -234,6 +239,10 @@ public class AllAppsTransitionController implements TouchController, VerticalPul
} else {
calculateDuration(velocity, Math.abs(mAppsView.getTranslationY()));
if (!mLauncher.isAllAppsVisible()) {
+ mLauncher.getUserEventDispatcher().logActionOnContainer(
+ LauncherLogProto.Action.SWIPE,
+ LauncherLogProto.Action.UP,
+ LauncherLogProto.HOTSEAT);
mLauncher.showAppsView(true, true, false, false);
} else {
animateToAllApps(mCurrentAnimation, mAnimationDuration, true);
diff --git a/src/com/android/launcher3/logging/LoggerUtils.java b/src/com/android/launcher3/logging/LoggerUtils.java
index 584e38e9e..9e927218b 100644
--- a/src/com/android/launcher3/logging/LoggerUtils.java
+++ b/src/com/android/launcher3/logging/LoggerUtils.java
@@ -1,15 +1,9 @@
package com.android.launcher3.logging;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.android.launcher3.LauncherSettings;
-import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
-
/**
* Debugging helper methods.
* toString() cannot be overriden inside auto generated {@link LauncherLogProto}.
@@ -24,12 +18,17 @@ public class LoggerUtils {
case Action.LONGPRESS: return "LONGPRESS";
case Action.DRAGDROP: return "DRAGDROP";
case Action.PINCH: return "PINCH";
+ case Action.SWIPE: return "SWIPE";
+ case Action.FLING: return "FLING";
default: return "UNKNOWN";
}
}
public static String getTargetStr(Target t) {
- String typeStr;
+ String typeStr = "";
+ if (t == null){
+ return typeStr;
+ }
switch (t.type) {
case Target.ITEM:
return getItemStr(t);
@@ -44,6 +43,9 @@ public class LoggerUtils {
private static String getItemStr(Target t) {
String typeStr = "";
+ if (t == null){
+ return typeStr;
+ }
switch(t.itemType){
case LauncherLogProto.APP_ICON: typeStr = "ICON"; break;
case LauncherLogProto.SHORTCUT: typeStr = "SHORTCUT"; break;
@@ -58,6 +60,9 @@ public class LoggerUtils {
}
private static String getControlStr(Target t) {
+ if (t == null){
+ return "";
+ }
switch(t.controlType) {
case LauncherLogProto.ALL_APPS_BUTTON: return "ALL_APPS_BUTTON";
case LauncherLogProto.WIDGETS_BUTTON: return "WIDGETS_BUTTON";
@@ -72,8 +77,10 @@ public class LoggerUtils {
}
private static String getContainerStr(LauncherLogProto.Target t) {
- String str;
- Log.d(TAG, "t.containerType" + t.containerType);
+ String str = "";
+ if (t == null) {
+ return str;
+ }
switch (t.containerType) {
case LauncherLogProto.WORKSPACE:
str = "WORKSPACE";
@@ -122,4 +129,18 @@ public class LoggerUtils {
event.action.type = actionType;
return event;
}
+
+ public static LauncherLogProto.LauncherEvent initLauncherEvent(
+ int actionType,
+ int childTargetType){
+ LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
+
+ event.srcTarget = new LauncherLogProto.Target[1];
+ event.srcTarget[0] = new LauncherLogProto.Target();
+ event.srcTarget[0].type = childTargetType;
+
+ event.action = new LauncherLogProto.Action();
+ event.action.type = actionType;
+ return event;
+ }
}
diff --git a/src/com/android/launcher3/logging/UserEventDispatcher.java b/src/com/android/launcher3/logging/UserEventDispatcher.java
index 0deee57ca..f67f48791 100644
--- a/src/com/android/launcher3/logging/UserEventDispatcher.java
+++ b/src/com/android/launcher3/logging/UserEventDispatcher.java
@@ -37,8 +37,8 @@ import java.util.Locale;
public class UserEventDispatcher {
private static final boolean DEBUG_LOGGING = false;
-
private final static int MAXIMUM_VIEW_HIERARCHY_LEVEL = 5;
+
/**
* Implemented by containers to provide a launch source for a given child.
*/
@@ -46,10 +46,11 @@ public class UserEventDispatcher {
/**
* 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
+ *
+ * @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 fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent);
}
@@ -126,12 +127,23 @@ public class UserEventDispatcher {
dispatchUserEvent(createLauncherEvent(v, intent), intent);
}
- public void logTap(View v) {
- // TODO
+ public void logActionOnControl(int action, int controlType) {
+ LauncherEvent event = LoggerUtils.initLauncherEvent(Action.TOUCH, Target.CONTROL);
+ event.action.touch = action;
+ event.srcTarget[0].controlType = controlType;
+ event.elapsedContainerMillis = System.currentTimeMillis() - mElapsedContainerMillis;
+ event.elapsedSessionMillis = System.currentTimeMillis() - mElapsedSessionMillis;
+ dispatchUserEvent(event, null);
}
- public void logLongPress() {
- // TODO
+ public void logActionOnContainer(int action, int dir, int containerType) {
+ LauncherEvent event = LoggerUtils.initLauncherEvent(Action.TOUCH, Target.CONTAINER);
+ event.action.touch = action;
+ event.action.dir = dir;
+ event.srcTarget[0].containerType = containerType;
+ event.elapsedContainerMillis = System.currentTimeMillis() - mElapsedContainerMillis;
+ event.elapsedSessionMillis = System.currentTimeMillis() - mElapsedSessionMillis;
+ dispatchUserEvent(event, null);
}
public void logDragNDrop() {
@@ -152,7 +164,6 @@ public class UserEventDispatcher {
public final void resetElapsedSessionMillis() {
mElapsedSessionMillis = System.currentTimeMillis();
mElapsedContainerMillis = System.currentTimeMillis();
-
}
public final void resetActionDurationMillis() {
@@ -164,8 +175,8 @@ public class UserEventDispatcher {
Log.d("UserEvent", String.format(Locale.US,
"action:%s\nchild:%s\nparent:%s\nelapsed container %d ms session %d ms",
LoggerUtils.getActionStr(ev.action),
- LoggerUtils.getTargetStr(ev.srcTarget[0]),
- LoggerUtils.getTargetStr(ev.srcTarget[1]),
+ LoggerUtils.getTargetStr(ev.srcTarget != null ? ev.srcTarget[0] : null),
+ LoggerUtils.getTargetStr(ev.srcTarget.length > 1 ? ev.srcTarget[1] : null),
ev.elapsedContainerMillis,
ev.elapsedSessionMillis));
}
diff --git a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
index f91665f86..9f59e06b0 100644
--- a/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
+++ b/src/com/android/launcher3/shortcuts/DeepShortcutsContainer.java
@@ -486,10 +486,8 @@ public class DeepShortcutsContainer extends LinearLayout implements View.OnLongC
@Override
public void fillInLaunchSourceData(View v, ItemInfo info, Target target, Target targetParent) {
- target.itemType = LauncherLogProto.SHORTCUT; // TODO: change to DYNAMIC_SHORTCUT
- target.gridX = info.cellX;
- target.gridY = info.cellY;
- target.pageIndex = 0;
- targetParent.containerType = LauncherLogProto.FOLDER; // TODO: change to DYNAMIC_SHORTCUTS
+ target.itemType = LauncherLogProto.DEEPSHORTCUT;
+ // TODO: add target.rank
+ targetParent.containerType = LauncherLogProto.DEEPSHORTCUTS;
}
}