blob: 9423cb2642b78acb3e391cd996771ed89b8e63f0 [file] [log] [blame]
Hyunyoung Song726eb822016-03-07 10:07:35 -08001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16syntax = "proto2";
17
Sunny Goyal2385ebe2017-07-19 01:24:07 -070018import "launcher_log_extension.proto";
19
Tamas Berghammere54852d2016-10-31 18:07:11 +000020option java_package = "com.android.launcher3.userevent";
Hyunyoung Song726eb822016-03-07 10:07:35 -080021option java_outer_classname = "LauncherLogProto";
22
23package userevent;
24
25message Target {
26 enum Type {
27 NONE = 0;
28 ITEM = 1;
29 CONTROL = 2;
30 CONTAINER = 3;
31 }
32
33 optional Type type = 1;
34
35 // For container type and item type
36 // Used mainly for ContainerType.FOLDER, ItemType.*
Hyunyoung Songddec1c72016-04-12 18:32:04 -070037 optional int32 page_index = 2;
38 optional int32 rank = 3;
39 optional int32 grid_x = 4;
40 optional int32 grid_y = 5;
Hyunyoung Song726eb822016-03-07 10:07:35 -080041
42 // For container types only
Hyunyoung Songddec1c72016-04-12 18:32:04 -070043 optional ContainerType container_type = 6;
44 optional int32 cardinality = 7;
Hyunyoung Song726eb822016-03-07 10:07:35 -080045
46 // For control types only
Hyunyoung Songddec1c72016-04-12 18:32:04 -070047 optional ControlType control_type = 8;
Hyunyoung Song726eb822016-03-07 10:07:35 -080048
49 // For item types only
Hyunyoung Songddec1c72016-04-12 18:32:04 -070050 optional ItemType item_type = 9;
51 optional int32 package_name_hash = 10;
52 optional int32 component_hash = 11; // Used for ItemType.WIDGET
53 optional int32 intent_hash = 12; // Used for ItemType.SHORTCUT
54 optional int32 span_x = 13 [default = 1];// Used for ItemType.WIDGET
55 optional int32 span_y = 14 [default = 1];// Used for ItemType.WIDGET
56 optional int32 predictedRank = 15;
Sunny Goyal2385ebe2017-07-19 01:24:07 -070057 optional TargetExtension extension = 16;
Hyunyoung Song018eec62018-05-09 16:18:58 -070058 optional TipType tip_type = 17;
Alex Mang68c67542019-05-06 21:20:07 -070059 optional int32 search_query_length = 18;
Samuel Fufa78e7e5f2019-12-10 13:23:51 -080060 optional bool is_work_app = 19;
thiruramc1c2bfa2020-02-04 18:56:40 -080061 optional FromFolderLabelState from_folder_label_state = 20;
62 optional ToFolderLabelState to_folder_label_state = 21;
63
64 // Note: proto does not support duplicate enum values, even if they belong to different enum type.
65 // Hence "FROM" and "TO" prefix added.
thiruram73d0bb92020-04-03 14:05:38 -070066 enum FromFolderLabelState {
thiruramc1c2bfa2020-02-04 18:56:40 -080067 FROM_FOLDER_LABEL_STATE_UNSPECIFIED = 0;
68 FROM_EMPTY = 1;
69 FROM_CUSTOM = 2;
70 FROM_SUGGESTED = 3;
71 }
72
thiruram73d0bb92020-04-03 14:05:38 -070073 enum ToFolderLabelState {
thiruramc1c2bfa2020-02-04 18:56:40 -080074 TO_FOLDER_LABEL_STATE_UNSPECIFIED = 0;
75 TO_SUGGESTION0_WITH_VALID_PRIMARY = 1;
76 TO_SUGGESTION1_WITH_VALID_PRIMARY = 2;
77 TO_SUGGESTION1_WITH_EMPTY_PRIMARY = 3;
78 TO_SUGGESTION2_WITH_VALID_PRIMARY = 4;
79 TO_SUGGESTION2_WITH_EMPTY_PRIMARY = 5;
80 TO_SUGGESTION3_WITH_VALID_PRIMARY = 6;
81 TO_SUGGESTION3_WITH_EMPTY_PRIMARY = 7;
thiruram73d0bb92020-04-03 14:05:38 -070082 TO_EMPTY_WITH_VALID_SUGGESTIONS = 8 [deprecated = true];
83 TO_EMPTY_WITH_VALID_PRIMARY = 15;
84 TO_EMPTY_WITH_VALID_SUGGESTIONS_AND_EMPTY_PRIMARY = 16;
thiruramc1c2bfa2020-02-04 18:56:40 -080085 TO_EMPTY_WITH_EMPTY_SUGGESTIONS = 9;
86 TO_EMPTY_WITH_SUGGESTIONS_DISABLED = 10;
thiruram73d0bb92020-04-03 14:05:38 -070087 TO_CUSTOM_WITH_VALID_SUGGESTIONS = 11 [deprecated = true];
88 TO_CUSTOM_WITH_VALID_PRIMARY = 17;
89 TO_CUSTOM_WITH_VALID_SUGGESTIONS_AND_EMPTY_PRIMARY = 18;
thiruramc1c2bfa2020-02-04 18:56:40 -080090 TO_CUSTOM_WITH_EMPTY_SUGGESTIONS = 12;
91 TO_CUSTOM_WITH_SUGGESTIONS_DISABLED = 13;
92 UNCHANGED = 14;
93 }
Hyunyoung Song726eb822016-03-07 10:07:35 -080094}
95
Hyunyoung Songddec1c72016-04-12 18:32:04 -070096// Used to define what type of item a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -080097enum ItemType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -070098 DEFAULT_ITEMTYPE = 0;
99 APP_ICON = 1;
100 SHORTCUT = 2;
101 WIDGET = 3;
102 FOLDER_ICON = 4;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700103 DEEPSHORTCUT = 5;
Hyunyoung Songffad9622016-09-27 18:07:00 -0700104 SEARCHBOX = 6;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700105 EDITTEXT = 7;
Tony Wickhamc6b79e32017-02-01 09:13:24 -0800106 NOTIFICATION = 8;
Hyunyoung Songb3fbc0b2018-02-14 13:40:25 -0800107 TASK = 9; // Each page of Recents UI (QuickStep)
Mario Bertschlerd2e3c5d2018-03-29 21:12:12 +0200108 WEB_APP = 10;
Hyunyoung Songfd94cd52019-04-25 11:20:42 -0700109 TASK_ICON = 11;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800110}
111
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700112// Used to define what type of container a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -0800113enum ContainerType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700114 DEFAULT_CONTAINERTYPE = 0;
115 WORKSPACE = 1;
116 HOTSEAT = 2;
117 FOLDER = 3;
118 ALLAPPS = 4;
119 WIDGETS = 5;
Hyunyoung Songb3fbc0b2018-02-14 13:40:25 -0800120 OVERVIEW = 6; // Zoomed out workspace (without QuickStep)
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700121 PREDICTION = 7;
122 SEARCHRESULT = 8;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700123 DEEPSHORTCUTS = 9;
Sunny Goyal778634c2017-03-21 11:59:04 -0700124 PINITEM = 10; // confirmation screen
Hyunyoung Songb3fbc0b2018-02-14 13:40:25 -0800125 NAVBAR = 11;
126 TASKSWITCHER = 12; // Recents UI Container (QuickStep)
127 APP = 13; // Foreground activity is another app (QuickStep)
Hyunyoung Song018eec62018-05-09 16:18:58 -0700128 TIP = 14; // Onboarding texts (QuickStep)
vadimtbd28a8e2019-12-13 17:16:19 -0800129 OTHER_LAUNCHER_APP = 15;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800130}
131
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700132// Used to define what type of control a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -0800133enum ControlType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700134 DEFAULT_CONTROLTYPE = 0;
135 ALL_APPS_BUTTON = 1;
136 WIDGETS_BUTTON = 2;
137 WALLPAPER_BUTTON = 3;
138 SETTINGS_BUTTON = 4;
139 REMOVE_TARGET = 5;
140 UNINSTALL_TARGET = 6;
141 APPINFO_TARGET = 7;
142 RESIZE_HANDLE = 8;
143 VERTICAL_SCROLL = 9;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700144 HOME_INTENT = 10; // Deprecated, use enum Command instead
Winson Chung41d58f72019-04-02 15:09:36 -0700145 BACK_BUTTON = 11;
Hyunyoung Songb3fbc0b2018-02-14 13:40:25 -0800146 QUICK_SCRUB_BUTTON = 12;
Hyunyoung Song63311a22018-04-27 15:50:44 -0700147 CLEAR_ALL_BUTTON = 13;
Mehdi Alizadehbda47cf2018-05-01 19:26:05 -0700148 CANCEL_TARGET = 14;
Hyunyoung Songde184a22018-05-24 13:05:50 -0700149 TASK_PREVIEW = 15;
150 SPLIT_SCREEN_TARGET = 16;
Vadim Tryshevdc7d25d2018-10-15 14:01:04 -0700151 REMOTE_ACTION_SHORTCUT = 17;
Vadim Tryshev3514a222018-10-03 16:34:41 -0700152 APP_USAGE_SETTINGS = 18;
Winson Chung41d58f72019-04-02 15:09:36 -0700153 BACK_GESTURE = 19;
Hyunyoung Songfd94cd52019-04-25 11:20:42 -0700154 UNDO = 20;
Samuel Fufa866ff002019-08-09 16:16:06 -0700155 DISMISS_PREDICTION = 21;
Samuel Fufab641ac22020-02-10 17:58:11 -0800156 HYBRID_HOTSEAT_ACCEPTED = 22;
157 HYBRID_HOTSEAT_CANCELED = 23;
Becky Qiu4e3eaa52020-02-19 17:37:22 -0800158 OVERVIEW_ACTIONS_SHARE_BUTTON = 24;
159 OVERVIEW_ACTIONS_SCREENSHOT_BUTTON = 25;
160 OVERVIEW_ACTIONS_SELECT_BUTTON = 26;
161 SELECT_MODE_CLOSE_BUTTON = 27;
Zak Cohen8f1e00b2020-03-05 15:41:22 -0800162 SELECT_MODE_ITEM = 28;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800163}
164
Hyunyoung Song018eec62018-05-09 16:18:58 -0700165enum TipType {
166 DEFAULT_NONE = 0;
167 BOUNCE = 1;
168 SWIPE_UP_TEXT = 2;
169 QUICK_SCRUB_TEXT = 3;
170 PREDICTION_TEXT = 4;
vadimtc28aa1a2019-03-11 17:49:01 -0700171 DWB_TOAST = 5;
Samuel Fufab641ac22020-02-10 17:58:11 -0800172 HYBRID_HOTSEAT = 6;
Hyunyoung Song018eec62018-05-09 16:18:58 -0700173}
174
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700175// Used to define the action component of the LauncherEvent.
Hyunyoung Song726eb822016-03-07 10:07:35 -0800176message Action {
177 enum Type {
178 TOUCH = 0;
179 AUTOMATED = 1;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700180 COMMAND = 2;
Hyunyoung Song018eec62018-05-09 16:18:58 -0700181 TIP = 3;
thiruramc1c2bfa2020-02-04 18:56:40 -0800182 SOFT_KEYBOARD = 4;
183 // HARD_KEYBOARD, ASSIST
Hyunyoung Song726eb822016-03-07 10:07:35 -0800184 }
Hyunyoung Song018eec62018-05-09 16:18:58 -0700185
Hyunyoung Song726eb822016-03-07 10:07:35 -0800186 enum Touch {
187 TAP = 0;
188 LONGPRESS = 1;
189 DRAGDROP = 2;
190 SWIPE = 3;
191 FLING = 4;
192 PINCH = 5;
Hyunyoung Songebc5f822019-04-03 12:28:01 -0700193 SWIPE_NOOP = 6;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800194 }
Hyunyoung Song018eec62018-05-09 16:18:58 -0700195
196 enum Direction {
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700197 NONE = 0;
198 UP = 1;
199 DOWN = 2;
200 LEFT = 3;
201 RIGHT = 4;
Hyunyoung Songebc5f822019-04-03 12:28:01 -0700202 UPRIGHT = 5;
203 UPLEFT = 6;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700204 }
Jon Mirandafeba90f2016-10-06 10:53:29 -0700205 enum Command {
206 HOME_INTENT = 0;
207 BACK = 1;
Vadim Tryshevd0788022018-05-15 14:05:47 -0700208 ENTRY = 2; // Indicates entry to one of Launcher container type target
209 // not using the HOME_INTENT
210 CANCEL = 3; // Indicates that a confirmation screen was cancelled
211 CONFIRM = 4; // Indicates thata confirmation screen was accepted
212 STOP = 5; // Indicates onStop() was called (screen time out, power off)
213 RECENTS_BUTTON = 6; // Indicates that Recents button was pressed
Hyunyoung Songbd6fba92018-05-16 15:54:31 -0700214 RESUME = 7; // Indicates onResume() was called
Jon Mirandafeba90f2016-10-06 10:53:29 -0700215 }
Hyunyoung Song7fb3ccc2017-10-17 15:39:46 -0700216
Hyunyoung Song726eb822016-03-07 10:07:35 -0800217 optional Type type = 1;
218 optional Touch touch = 2;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700219 optional Direction dir = 3;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700220 optional Command command = 4;
221 // Log if the action was performed on outside of the container
222 optional bool is_outside = 5;
Hyunyoung Songb3fbc0b2018-02-14 13:40:25 -0800223 optional bool is_state_change = 6;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800224}
225
226//
227// Context free grammar of typical user interaction:
228// Action (Touch) + Target
229// Action (Touch) + Target + Target
230//
231message LauncherEvent {
Hyunyoung Song726eb822016-03-07 10:07:35 -0800232 required Action action = 1;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800233 // List of targets that touch actions can be operated on.
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700234 repeated Target src_target = 2;
235 repeated Target dest_target = 3;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800236
237 optional int64 action_duration_millis = 4;
238 optional int64 elapsed_container_millis = 5;
239 optional int64 elapsed_session_millis = 6;
Jon Mirandafe964322017-03-22 10:25:17 -0700240
Hyunyoung Song956ec4b2018-07-02 13:17:32 -0700241 optional bool is_in_multi_window_mode = 7 [deprecated = true];
242 optional bool is_in_landscape_mode = 8 [deprecated = true];
Sunny Goyal2385ebe2017-07-19 01:24:07 -0700243
244 optional LauncherEventExtension extension = 9;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700245}