1/* 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 18import "launcher_log_extension.proto"; 19 20option java_package = "com.android.launcher3.userevent"; 21option 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.* 37 optional int32 page_index = 2; 38 optional int32 rank = 3; 39 optional int32 grid_x = 4; 40 optional int32 grid_y = 5; 41 42 // For container types only 43 optional ContainerType container_type = 6; 44 optional int32 cardinality = 7; 45 46 // For control types only 47 optional ControlType control_type = 8; 48 49 // For item types only 50 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; 57 optional TargetExtension extension = 16; 58 optional TipType tip_type = 17; 59 optional int32 search_query_length = 18; 60} 61 62// Used to define what type of item a Target would represent. 63enum ItemType { 64 DEFAULT_ITEMTYPE = 0; 65 APP_ICON = 1; 66 SHORTCUT = 2; 67 WIDGET = 3; 68 FOLDER_ICON = 4; 69 DEEPSHORTCUT = 5; 70 SEARCHBOX = 6; 71 EDITTEXT = 7; 72 NOTIFICATION = 8; 73 TASK = 9; // Each page of Recents UI (QuickStep) 74 WEB_APP = 10; 75 TASK_ICON = 11; 76} 77 78// Used to define what type of container a Target would represent. 79enum ContainerType { 80 DEFAULT_CONTAINERTYPE = 0; 81 WORKSPACE = 1; 82 HOTSEAT = 2; 83 FOLDER = 3; 84 ALLAPPS = 4; 85 WIDGETS = 5; 86 OVERVIEW = 6; // Zoomed out workspace (without QuickStep) 87 PREDICTION = 7; 88 SEARCHRESULT = 8; 89 DEEPSHORTCUTS = 9; 90 PINITEM = 10; // confirmation screen 91 NAVBAR = 11; 92 TASKSWITCHER = 12; // Recents UI Container (QuickStep) 93 APP = 13; // Foreground activity is another app (QuickStep) 94 TIP = 14; // Onboarding texts (QuickStep) 95 SIDELOADED_LAUNCHER = 15; 96} 97 98// Used to define what type of control a Target would represent. 99enum ControlType { 100 DEFAULT_CONTROLTYPE = 0; 101 ALL_APPS_BUTTON = 1; 102 WIDGETS_BUTTON = 2; 103 WALLPAPER_BUTTON = 3; 104 SETTINGS_BUTTON = 4; 105 REMOVE_TARGET = 5; 106 UNINSTALL_TARGET = 6; 107 APPINFO_TARGET = 7; 108 RESIZE_HANDLE = 8; 109 VERTICAL_SCROLL = 9; 110 HOME_INTENT = 10; // Deprecated, use enum Command instead 111 BACK_BUTTON = 11; 112 QUICK_SCRUB_BUTTON = 12; 113 CLEAR_ALL_BUTTON = 13; 114 CANCEL_TARGET = 14; 115 TASK_PREVIEW = 15; 116 SPLIT_SCREEN_TARGET = 16; 117 REMOTE_ACTION_SHORTCUT = 17; 118 APP_USAGE_SETTINGS = 18; 119 BACK_GESTURE = 19; 120 UNDO = 20; 121} 122 123enum TipType { 124 DEFAULT_NONE = 0; 125 BOUNCE = 1; 126 SWIPE_UP_TEXT = 2; 127 QUICK_SCRUB_TEXT = 3; 128 PREDICTION_TEXT = 4; 129 DWB_TOAST = 5; 130} 131 132// Used to define the action component of the LauncherEvent. 133message Action { 134 enum Type { 135 TOUCH = 0; 136 AUTOMATED = 1; 137 COMMAND = 2; 138 TIP = 3; 139 // SOFT_KEYBOARD, HARD_KEYBOARD, ASSIST 140 } 141 142 enum Touch { 143 TAP = 0; 144 LONGPRESS = 1; 145 DRAGDROP = 2; 146 SWIPE = 3; 147 FLING = 4; 148 PINCH = 5; 149 SWIPE_NOOP = 6; 150 } 151 152 enum Direction { 153 NONE = 0; 154 UP = 1; 155 DOWN = 2; 156 LEFT = 3; 157 RIGHT = 4; 158 UPRIGHT = 5; 159 UPLEFT = 6; 160 } 161 enum Command { 162 HOME_INTENT = 0; 163 BACK = 1; 164 ENTRY = 2; // Indicates entry to one of Launcher container type target 165 // not using the HOME_INTENT 166 CANCEL = 3; // Indicates that a confirmation screen was cancelled 167 CONFIRM = 4; // Indicates thata confirmation screen was accepted 168 STOP = 5; // Indicates onStop() was called (screen time out, power off) 169 RECENTS_BUTTON = 6; // Indicates that Recents button was pressed 170 RESUME = 7; // Indicates onResume() was called 171 } 172 173 optional Type type = 1; 174 optional Touch touch = 2; 175 optional Direction dir = 3; 176 optional Command command = 4; 177 // Log if the action was performed on outside of the container 178 optional bool is_outside = 5; 179 optional bool is_state_change = 6; 180} 181 182// 183// Context free grammar of typical user interaction: 184// Action (Touch) + Target 185// Action (Touch) + Target + Target 186// 187message LauncherEvent { 188 required Action action = 1; 189 // List of targets that touch actions can be operated on. 190 repeated Target src_target = 2; 191 repeated Target dest_target = 3; 192 193 optional int64 action_duration_millis = 4; 194 optional int64 elapsed_container_millis = 5; 195 optional int64 elapsed_session_millis = 6; 196 197 optional bool is_in_multi_window_mode = 7 [deprecated = true]; 198 optional bool is_in_landscape_mode = 8 [deprecated = true]; 199 200 optional LauncherEventExtension extension = 9; 201} 202