ItemInfo supports lite proto builder (1/n)
Bug: 144953948
Bug: 137777105
The new lite proto builder is used to send two types of logging to statsd
1) Snapshot logging
2) App launch, task launch, task dismiss
Statsd will be connected once platform CL is submitted
Change-Id: If606cee5288fe4bd6c522605ae84eb0f24174f5b
diff --git a/protos/launcher_atom.proto b/protos/launcher_atom.proto
new file mode 100644
index 0000000..a89fe5c
--- /dev/null
+++ b/protos/launcher_atom.proto
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2020 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.
+ */
+syntax = "proto2";
+
+option java_package = "com.android.launcher3.logger";
+option java_outer_classname = "LauncherAtom";
+
+//
+// ItemInfos
+message ItemInfo {
+ oneof Item {
+ Application application = 1;
+ Task task= 2;
+ Shortcut shortcut = 3;
+ Widget widget = 4;
+ }
+ // When used for launch event, stores the global predictive rank
+ optional int32 rank = 5;
+
+ // Stores whether the Item belows to non primary user
+ optional bool is_work = 6;
+
+ // Item can be child node to parent container or parent containers (nested)
+ oneof Container {
+ WorkspaceContainer workspace = 7;
+ HotseatContainer hotseat = 8;
+ FolderContainer folder = 9;
+ }
+ // Stores the origin of the Item
+ optional Origin source = 10;
+}
+
+enum Origin {
+ UNKNOWN = 0;
+ DEFAULT_LAYOUT = 1; // icon automatically placed in workspace, folder, hotseat
+ BACKUP_RESTORE = 2; // icon layout restored from backup
+ PINITEM = 3; // from another app (e.g., Chrome's "Add to Home screen")
+ ALLAPPS_ATOZ = 4; // within launcher surface, all aps a-z
+ WIDGETS = 5; // within launcher, widgets tray
+ ADD_TO_HOMESCREEN = 6; // play install + launcher home setting
+ ALLAPPS_PREDICTION = 7; // from prediction bar in all apps container
+ HOTSEAT_PREDICTION = 8; // from prediction bar in hotseat container
+}
+
+// Main app icons
+message Application {
+ optional string package_name = 1;
+ optional string component_name = 2;
+}
+
+// Legacy shortcuts and shortcuts handled by ShortcutManager
+message Shortcut {
+ optional string shortcut_name = 1;
+}
+
+// AppWidgets handled by AppWidgetManager
+message Widget {
+ optional int32 span_x = 1;
+ optional int32 span_y = 2;
+ optional int32 app_widget_id = 3;
+ optional string package_name = 4; // only populated during snapshot if from workspace
+ optional string component_name = 5; // only populated during snapshot if from workspace
+}
+
+// Tasks handled by PackageManager
+message Task {
+ optional string package_name = 1;
+ optional string component_name = 2;
+ optional int32 index = 3;
+}
+
+//////////////////////////////////////////////
+// Containers
+
+message WorkspaceContainer {
+ optional int32 page_index = 1; // range [-1, l], 0 is the index of the main homescreen
+ optional int32 grid_x = 2; // [0, m], m varies based on the display density and resolution
+ optional int32 grid_y = 3; // [0, n], n varies based on the display density and resolution
+}
+
+message HotseatContainer {
+ optional int32 index = 1;
+}
+
+message FolderContainer {
+ optional int32 page_index = 1;
+ optional int32 grid_x = 2;
+ optional int32 grid_y = 3;
+ oneof Container {
+ WorkspaceContainer workspace = 4;
+ HotseatContainer hotseat = 5;
+ }
+}
+
+