diff options
-rw-r--r-- | protos/launcher_atom.proto | 2 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java | 11 | ||||
-rw-r--r-- | src/com/android/launcher3/BaseDraggingActivity.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/logging/StatsLogManager.java | 19 | ||||
-rw-r--r-- | src/com/android/launcher3/model/data/ItemInfo.java | 20 |
6 files changed, 40 insertions, 20 deletions
diff --git a/protos/launcher_atom.proto b/protos/launcher_atom.proto index f0ecba39e8..036fb02243 100644 --- a/protos/launcher_atom.proto +++ b/protos/launcher_atom.proto @@ -25,7 +25,7 @@ message ItemInfo { Application application = 1; Task task = 2; Shortcut shortcut = 3; - Widget widget = 4; + Widget widget = 4; } // When used for launch event, stores the global predictive rank optional int32 rank = 5; diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java index ac2200dcc4..2d51732e54 100644 --- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java +++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java @@ -57,11 +57,6 @@ public class StatsLogCompatManager extends StatsLogManager { } @Override - public void log(LauncherEvent eventId, LauncherAtom.ItemInfo item) { - // Call StatsLog method - } - - @Override public void verify() { if (!(StatsLogUtils.LAUNCHER_STATE_ALLAPPS == ALLAPPS && StatsLogUtils.LAUNCHER_STATE_BACKGROUND == BACKGROUND @@ -88,17 +83,17 @@ public class StatsLogCompatManager extends StatsLogManager { ArrayList<LauncherAppWidgetInfo> appWidgets = (ArrayList) dataModel.appWidgets.clone(); for (ItemInfo info : workspaceItems) { - LauncherAtom.ItemInfo atomInfo = info.buildProto(null, null); + LauncherAtom.ItemInfo atomInfo = info.buildProto(null); // call StatsLog method } for (FolderInfo fInfo : folders) { for (ItemInfo info : fInfo.contents) { - LauncherAtom.ItemInfo atomInfo = info.buildProto(null, fInfo); + LauncherAtom.ItemInfo atomInfo = info.buildProto(fInfo); // call StatsLog method } } for (ItemInfo info : appWidgets) { - LauncherAtom.ItemInfo atomInfo = info.buildProto(null, null); + LauncherAtom.ItemInfo atomInfo = info.buildProto(null); // call StatsLog method } } diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java index db69341b4f..09fe64a89b 100644 --- a/src/com/android/launcher3/BaseDraggingActivity.java +++ b/src/com/android/launcher3/BaseDraggingActivity.java @@ -185,7 +185,7 @@ public abstract class BaseDraggingActivity extends BaseActivity getUserEventDispatcher().logAppLaunch(v, intent, user); getStatsLogManager().log(APP_LAUNCH_TAP, item == null ? null - : item.buildProto(null, null)); + : item.buildProto(null)); return true; } catch (NullPointerException|ActivityNotFoundException|SecurityException e) { Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show(); diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 10c05d315b..2111162a31 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -79,6 +79,8 @@ import com.android.launcher3.folder.PreviewBackground; import com.android.launcher3.graphics.DragPreviewProvider; import com.android.launcher3.graphics.PreloadIconDrawable; import com.android.launcher3.icons.BitmapRenderer; +import com.android.launcher3.logging.StatsLogManager; +import com.android.launcher3.logging.StatsLogManager.LauncherEvent; import com.android.launcher3.logging.UserEventDispatcher; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.FolderInfo; @@ -409,6 +411,10 @@ public class Workspace extends PagedView<WorkspacePageIndicator> // Always enter the spring loaded mode mLauncher.getStateManager().goToState(SPRING_LOADED); + StatsLogManager.newInstance(getContext()) + .log( + LauncherEvent.LAUNCHER_ITEM_DRAG_STARTED, + dragObject.originalDragInfo.buildProto(null)); } public void deferRemoveExtraEmptyScreen() { diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java index 2829951da2..05dd473ea7 100644 --- a/src/com/android/launcher3/logging/StatsLogManager.java +++ b/src/com/android/launcher3/logging/StatsLogManager.java @@ -16,6 +16,7 @@ package com.android.launcher3.logging; import android.content.Context; +import android.util.Log; import com.android.launcher3.R; import com.android.launcher3.logger.LauncherAtom; @@ -28,6 +29,8 @@ import com.android.launcher3.util.ResourceBasedOverride; */ public class StatsLogManager implements ResourceBasedOverride { + private static final String TAG = "StatsLogManager"; + interface EventEnum { int getId(); } @@ -40,7 +43,9 @@ public class StatsLogManager implements ResourceBasedOverride { @LauncherUiEvent(doc = "Task launched from overview using SWIPE DOWN") TASK_LAUNCH_SWIPE_DOWN(2), @LauncherUiEvent(doc = "TASK dismissed from overview using SWIPE UP") - TASK_DISMISS_SWIPE_UP(3); + TASK_DISMISS_SWIPE_UP(3), + @LauncherUiEvent(doc = "User dragged a launcher item") + LAUNCHER_ITEM_DRAG_STARTED(383); // ADD MORE private final int mId; @@ -54,6 +59,13 @@ public class StatsLogManager implements ResourceBasedOverride { protected LogStateProvider mStateProvider; + /** + * Creates a new instance of {@link StatsLogManager} based on provided context. + */ + public static StatsLogManager newInstance(Context context) { + return newInstance(context, null); + } + public static StatsLogManager newInstance(Context context, LogStateProvider stateProvider) { StatsLogManager mgr = Overrides.getObject(StatsLogManager.class, context.getApplicationContext(), R.string.stats_log_manager_class); @@ -65,7 +77,10 @@ public class StatsLogManager implements ResourceBasedOverride { /** * Logs an event and accompanying {@link ItemInfo} */ - public void log(LauncherEvent eventId, LauncherAtom.ItemInfo itemInfo) { } + public void log(LauncherEvent event, LauncherAtom.ItemInfo itemInfo) { + Log.d(TAG, String.format("%s\n%s", event.name(), itemInfo)); + // Call StatsLog method + } /** * Logs snapshot, or impression of the current workspace. diff --git a/src/com/android/launcher3/model/data/ItemInfo.java b/src/com/android/launcher3/model/data/ItemInfo.java index 7ee2090c13..14f9934314 100644 --- a/src/com/android/launcher3/model/data/ItemInfo.java +++ b/src/com/android/launcher3/model/data/ItemInfo.java @@ -18,6 +18,7 @@ package com.android.launcher3.model.data; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT; +import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET; import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT; @@ -123,6 +124,12 @@ public class ItemInfo { */ public CharSequence contentDescription; + /** + * When the instance is created using {@link #copyFrom}, this field is used to keep track of + * original {@link ComponentName}. + */ + private ComponentName mComponentName; + public UserHandle user; public ItemInfo() { @@ -145,6 +152,7 @@ public class ItemInfo { container = info.container; user = info.user; contentDescription = info.contentDescription; + mComponentName = info.getTargetComponent(); } public Intent getIntent() { @@ -153,12 +161,7 @@ public class ItemInfo { @Nullable public ComponentName getTargetComponent() { - Intent intent = getIntent(); - if (intent != null) { - return intent.getComponent(); - } else { - return null; - } + return Optional.ofNullable(getIntent()).map(Intent::getComponent).orElse(mComponentName); } public void writeToValues(ContentWriter writer) { @@ -247,8 +250,7 @@ public class ItemInfo { /** * Creates {@link LauncherAtom.ItemInfo} with important fields and parent container info. */ - public LauncherAtom.ItemInfo buildProto(Intent intent, FolderInfo fInfo) { - + public LauncherAtom.ItemInfo buildProto(FolderInfo fInfo) { LauncherAtom.ItemInfo.Builder itemBuilder = LauncherAtom.ItemInfo.newBuilder(); itemBuilder.setIsWork(user != Process.myUserHandle()); Optional<ComponentName> nullableComponent = Optional.ofNullable(getTargetComponent()); @@ -282,6 +284,7 @@ public class ItemInfo { switch (fInfo.container) { case CONTAINER_HOTSEAT: + case CONTAINER_HOTSEAT_PREDICTION: folderBuilder.setHotseat(LauncherAtom.HotseatContainer.newBuilder() .setIndex(fInfo.screenId)); break; @@ -295,6 +298,7 @@ public class ItemInfo { } else { switch (container) { case CONTAINER_HOTSEAT: + case CONTAINER_HOTSEAT_PREDICTION: itemBuilder.setContainerInfo( ContainerInfo.newBuilder().setHotseat( LauncherAtom.HotseatContainer.newBuilder().setIndex(screenId))); |