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