Log query_length & parent_container for actions on search results.

Bug: 154717227
Change-Id: I8e7d725014f60a2fd9a7fe13fce705acbc7623ad
diff --git a/protos/launcher_atom.proto b/protos/launcher_atom.proto
index 98ce9af..5611969 100644
--- a/protos/launcher_atom.proto
+++ b/protos/launcher_atom.proto
@@ -71,6 +71,15 @@
 
 // Represents the apps container within search results.
 message SearchResultContainer {
+
+  // Length of search term.
+  optional int32 query_length = 1;
+
+  // Container from where search was invoked.
+  oneof ParentContainer {
+    WorkspaceContainer workspace = 2;
+    AllAppsContainer all_apps_container = 3;
+  }
 }
 
 // Container for package specific shortcuts to deep links and notifications.
diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
index 2034801..eac45e9 100644
--- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
+++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
@@ -17,7 +17,7 @@
 package com.android.quickstep.logging;
 
 import static com.android.launcher3.logger.LauncherAtom.ContainerInfo.ContainerCase.FOLDER;
-import static com.android.launcher3.logger.LauncherAtom.ContainerInfo.ContainerCase.PREDICTED_HOTSEAT_CONTAINER;
+import static com.android.launcher3.logger.LauncherAtom.ContainerInfo.ContainerCase.SEARCH_RESULT_CONTAINER;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WORKSPACE_SNAPSHOT;
 import static com.android.systemui.shared.system.SysUiStatsLog.LAUNCHER_UICHANGED__DST_STATE__ALLAPPS;
 import static com.android.systemui.shared.system.SysUiStatsLog.LAUNCHER_UICHANGED__DST_STATE__BACKGROUND;
@@ -75,6 +75,7 @@
     // from nano to lite, bake constant to prevent robo test failure.
     private static final int DEFAULT_PAGE_INDEX = -2;
     private static final int FOLDER_HIERARCHY_OFFSET = 100;
+    private static final int SEARCH_RESULT_HIERARCHY_OFFSET = 200;
 
     public StatsLogCompatManager(Context context) {
         sContext = context;
@@ -156,10 +157,10 @@
                 getComponentName(info) /* component_name */,
                 getGridX(info, false) /* grid_x */,
                 getGridY(info, false) /* grid_y */,
-                getPageId(info, false) /* page_id */,
+                getPageId(info) /* page_id */,
                 getGridX(info, true) /* grid_x_parent */,
                 getGridY(info, true) /* grid_y_parent */,
-                getPageId(info, true) /* page_id_parent */,
+                getParentPageId(info) /* page_id_parent */,
                 getHierarchy(info) /* hierarchy */,
                 info.getIsWork() /* is_work_profile */,
                 info.getAttribute().getNumber() /* origin */,
@@ -321,10 +322,10 @@
                     getComponentName(atomInfo) /* component_name */,
                     getGridX(atomInfo, false) /* grid_x */,
                     getGridY(atomInfo, false) /* grid_y */,
-                    getPageId(atomInfo, false) /* page_id */,
+                    getPageId(atomInfo) /* page_id */,
                     getGridX(atomInfo, true) /* grid_x_parent */,
                     getGridY(atomInfo, true) /* grid_y_parent */,
-                    getPageId(atomInfo, true) /* page_id_parent */,
+                    getParentPageId(atomInfo) /* page_id_parent */,
                     getHierarchy(atomInfo) /* hierarchy */,
                     atomInfo.getIsWork() /* is_work_profile */,
                     atomInfo.getRank() /* rank */,
@@ -336,9 +337,14 @@
     }
 
     private static int getCardinality(LauncherAtom.ItemInfo info) {
-        return info.getContainerInfo().getContainerCase().equals(PREDICTED_HOTSEAT_CONTAINER)
-                ? info.getContainerInfo().getPredictedHotseatContainer().getCardinality()
-                : info.getFolderIcon().getCardinality();
+        switch (info.getContainerInfo().getContainerCase()){
+            case PREDICTED_HOTSEAT_CONTAINER:
+                return info.getContainerInfo().getPredictedHotseatContainer().getCardinality();
+            case SEARCH_RESULT_CONTAINER:
+                return info.getContainerInfo().getSearchResultContainer().getQueryLength();
+            default:
+                return info.getFolderIcon().getCardinality();
+        }
     }
 
     private static String getPackageName(LauncherAtom.ItemInfo info) {
@@ -395,15 +401,24 @@
         }
     }
 
-    private static int getPageId(LauncherAtom.ItemInfo info, boolean parent) {
-        if (info.getContainerInfo().getContainerCase() == FOLDER) {
-            if (parent) {
-                return info.getContainerInfo().getFolder().getWorkspace().getPageIndex();
-            } else {
+    private static int getPageId(LauncherAtom.ItemInfo info) {
+        switch (info.getContainerInfo().getContainerCase()) {
+            case FOLDER:
                 return info.getContainerInfo().getFolder().getPageIndex();
-            }
-        } else {
-            return info.getContainerInfo().getWorkspace().getPageIndex();
+            default:
+                return info.getContainerInfo().getWorkspace().getPageIndex();
+        }
+    }
+
+    private static int getParentPageId(LauncherAtom.ItemInfo info) {
+        switch (info.getContainerInfo().getContainerCase()) {
+            case FOLDER:
+                return info.getContainerInfo().getFolder().getWorkspace().getPageIndex();
+            case SEARCH_RESULT_CONTAINER:
+                return info.getContainerInfo().getSearchResultContainer().getWorkspace()
+                        .getPageIndex();
+            default:
+                return info.getContainerInfo().getWorkspace().getPageIndex();
         }
     }
 
@@ -411,6 +426,9 @@
         if (info.getContainerInfo().getContainerCase() == FOLDER) {
             return info.getContainerInfo().getFolder().getParentContainerCase().getNumber()
                     + FOLDER_HIERARCHY_OFFSET;
+        } else if (info.getContainerInfo().getContainerCase() == SEARCH_RESULT_CONTAINER) {
+            return info.getContainerInfo().getSearchResultContainer().getParentContainerCase()
+                    .getNumber() + SEARCH_RESULT_HIERARCHY_OFFSET;
         } else {
             return info.getContainerInfo().getContainerCase().getNumber();
         }
diff --git a/src/com/android/launcher3/model/data/ItemInfo.java b/src/com/android/launcher3/model/data/ItemInfo.java
index 3082b6e..0d3ddad 100644
--- a/src/com/android/launcher3/model/data/ItemInfo.java
+++ b/src/com/android/launcher3/model/data/ItemInfo.java
@@ -344,7 +344,7 @@
         return itemBuilder;
     }
 
-    ContainerInfo getContainerInfo() {
+    protected ContainerInfo getContainerInfo() {
         switch (container) {
             case CONTAINER_HOTSEAT:
                 return ContainerInfo.newBuilder()