blob: 0bbec188dbe11ed39724b0ef40e53cb959b50d75 [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 Song726eb822016-03-07 10:07:35 -080058}
59
Hyunyoung Songddec1c72016-04-12 18:32:04 -070060// Used to define what type of item a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -080061enum ItemType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -070062 DEFAULT_ITEMTYPE = 0;
63 APP_ICON = 1;
64 SHORTCUT = 2;
65 WIDGET = 3;
66 FOLDER_ICON = 4;
Hyunyoung Song5aa27142016-07-21 11:48:37 -070067 DEEPSHORTCUT = 5;
Hyunyoung Songffad9622016-09-27 18:07:00 -070068 SEARCHBOX = 6;
Jon Mirandafeba90f2016-10-06 10:53:29 -070069 EDITTEXT = 7;
Tony Wickhamc6b79e32017-02-01 09:13:24 -080070 NOTIFICATION = 8;
Hyunyoung Song726eb822016-03-07 10:07:35 -080071}
72
Hyunyoung Songddec1c72016-04-12 18:32:04 -070073// Used to define what type of container a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -080074enum ContainerType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -070075 DEFAULT_CONTAINERTYPE = 0;
76 WORKSPACE = 1;
77 HOTSEAT = 2;
78 FOLDER = 3;
79 ALLAPPS = 4;
80 WIDGETS = 5;
81 OVERVIEW = 6;
82 PREDICTION = 7;
83 SEARCHRESULT = 8;
Hyunyoung Song5aa27142016-07-21 11:48:37 -070084 DEEPSHORTCUTS = 9;
Sunny Goyal778634c2017-03-21 11:59:04 -070085 PINITEM = 10; // confirmation screen
Hyunyoung Song726eb822016-03-07 10:07:35 -080086}
87
Hyunyoung Songddec1c72016-04-12 18:32:04 -070088// Used to define what type of control a Target would represent.
Hyunyoung Song726eb822016-03-07 10:07:35 -080089enum ControlType {
Hyunyoung Songddec1c72016-04-12 18:32:04 -070090 DEFAULT_CONTROLTYPE = 0;
91 ALL_APPS_BUTTON = 1;
92 WIDGETS_BUTTON = 2;
93 WALLPAPER_BUTTON = 3;
94 SETTINGS_BUTTON = 4;
95 REMOVE_TARGET = 5;
96 UNINSTALL_TARGET = 6;
97 APPINFO_TARGET = 7;
98 RESIZE_HANDLE = 8;
99 VERTICAL_SCROLL = 9;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700100 HOME_INTENT = 10; // Deprecated, use enum Command instead
101 BACK_BUTTON = 11; // Deprecated, use enum Command instead
102 // GO_TO_PLAYSTORE
Hyunyoung Song726eb822016-03-07 10:07:35 -0800103}
104
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700105// Used to define the action component of the LauncherEvent.
Hyunyoung Song726eb822016-03-07 10:07:35 -0800106message Action {
107 enum Type {
108 TOUCH = 0;
109 AUTOMATED = 1;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700110 COMMAND = 2;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800111 // SOFT_KEYBOARD, HARD_KEYBOARD, ASSIST
112 }
113 enum Touch {
114 TAP = 0;
115 LONGPRESS = 1;
116 DRAGDROP = 2;
117 SWIPE = 3;
118 FLING = 4;
119 PINCH = 5;
120 }
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700121 enum Direction {
122 NONE = 0;
123 UP = 1;
124 DOWN = 2;
125 LEFT = 3;
126 RIGHT = 4;
127 }
Jon Mirandafeba90f2016-10-06 10:53:29 -0700128 enum Command {
129 HOME_INTENT = 0;
130 BACK = 1;
Sunny Goyal778634c2017-03-21 11:59:04 -0700131 ENTRY = 2; // Indicates entry to one of Launcher container type target
132 // not using the HOME_INTENT
133 CANCEL = 3; // Indicates that a confirmation screen was cancelled
134 CONFIRM = 4; // Indicates thata confirmation screen was accepted
Jon Mirandafeba90f2016-10-06 10:53:29 -0700135 }
Hyunyoung Song726eb822016-03-07 10:07:35 -0800136 optional Type type = 1;
137 optional Touch touch = 2;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700138 optional Direction dir = 3;
Jon Mirandafeba90f2016-10-06 10:53:29 -0700139 optional Command command = 4;
140 // Log if the action was performed on outside of the container
141 optional bool is_outside = 5;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800142}
143
144//
145// Context free grammar of typical user interaction:
146// Action (Touch) + Target
147// Action (Touch) + Target + Target
148//
149message LauncherEvent {
Hyunyoung Song726eb822016-03-07 10:07:35 -0800150 required Action action = 1;
151
152 // List of targets that touch actions can be operated on.
Hyunyoung Songddec1c72016-04-12 18:32:04 -0700153 repeated Target src_target = 2;
154 repeated Target dest_target = 3;
Hyunyoung Song726eb822016-03-07 10:07:35 -0800155
156 optional int64 action_duration_millis = 4;
157 optional int64 elapsed_container_millis = 5;
158 optional int64 elapsed_session_millis = 6;
Jon Mirandafe964322017-03-22 10:25:17 -0700159
160 optional bool is_in_multi_window_mode = 7;
Hyunyoung Songd5a9b572017-05-16 11:04:26 -0700161 optional bool is_in_landscape_mode = 8;
Sunny Goyal2385ebe2017-07-19 01:24:07 -0700162
163 optional LauncherEventExtension extension = 9;
Hyunyoung Song5aa27142016-07-21 11:48:37 -0700164}