246 lines
6.9 KiB
Protocol Buffer
246 lines
6.9 KiB
Protocol Buffer
|
/*
|
||
|
* Copyright (C) 2016 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";
|
||
|
|
||
|
import "launcher_log_extension.proto";
|
||
|
|
||
|
option java_package = "com.android.launcher3.userevent";
|
||
|
option java_outer_classname = "LauncherLogProto";
|
||
|
|
||
|
package userevent;
|
||
|
|
||
|
message Target {
|
||
|
enum Type {
|
||
|
NONE = 0;
|
||
|
ITEM = 1;
|
||
|
CONTROL = 2;
|
||
|
CONTAINER = 3;
|
||
|
}
|
||
|
|
||
|
optional Type type = 1;
|
||
|
|
||
|
// For container type and item type
|
||
|
// Used mainly for ContainerType.FOLDER, ItemType.*
|
||
|
optional int32 page_index = 2;
|
||
|
optional int32 rank = 3;
|
||
|
optional int32 grid_x = 4;
|
||
|
optional int32 grid_y = 5;
|
||
|
|
||
|
// For container types only
|
||
|
optional ContainerType container_type = 6;
|
||
|
optional int32 cardinality = 7;
|
||
|
|
||
|
// For control types only
|
||
|
optional ControlType control_type = 8;
|
||
|
|
||
|
// For item types only
|
||
|
optional ItemType item_type = 9;
|
||
|
optional int32 package_name_hash = 10;
|
||
|
optional int32 component_hash = 11; // Used for ItemType.WIDGET
|
||
|
optional int32 intent_hash = 12; // Used for ItemType.SHORTCUT
|
||
|
optional int32 span_x = 13 [default = 1];// Used for ItemType.WIDGET
|
||
|
optional int32 span_y = 14 [default = 1];// Used for ItemType.WIDGET
|
||
|
optional int32 predictedRank = 15;
|
||
|
optional TargetExtension extension = 16;
|
||
|
optional TipType tip_type = 17;
|
||
|
optional int32 search_query_length = 18;
|
||
|
optional bool is_work_app = 19;
|
||
|
optional FromFolderLabelState from_folder_label_state = 20;
|
||
|
optional ToFolderLabelState to_folder_label_state = 21;
|
||
|
|
||
|
// Note: proto does not support duplicate enum values, even if they belong to different enum type.
|
||
|
// Hence "FROM" and "TO" prefix added.
|
||
|
enum FromFolderLabelState {
|
||
|
FROM_FOLDER_LABEL_STATE_UNSPECIFIED = 0;
|
||
|
FROM_EMPTY = 1;
|
||
|
FROM_CUSTOM = 2;
|
||
|
FROM_SUGGESTED = 3;
|
||
|
}
|
||
|
|
||
|
enum ToFolderLabelState {
|
||
|
TO_FOLDER_LABEL_STATE_UNSPECIFIED = 0;
|
||
|
TO_SUGGESTION0_WITH_VALID_PRIMARY = 1;
|
||
|
TO_SUGGESTION1_WITH_VALID_PRIMARY = 2;
|
||
|
TO_SUGGESTION1_WITH_EMPTY_PRIMARY = 3;
|
||
|
TO_SUGGESTION2_WITH_VALID_PRIMARY = 4;
|
||
|
TO_SUGGESTION2_WITH_EMPTY_PRIMARY = 5;
|
||
|
TO_SUGGESTION3_WITH_VALID_PRIMARY = 6;
|
||
|
TO_SUGGESTION3_WITH_EMPTY_PRIMARY = 7;
|
||
|
TO_EMPTY_WITH_VALID_SUGGESTIONS = 8 [deprecated = true];
|
||
|
TO_EMPTY_WITH_VALID_PRIMARY = 15;
|
||
|
TO_EMPTY_WITH_VALID_SUGGESTIONS_AND_EMPTY_PRIMARY = 16;
|
||
|
TO_EMPTY_WITH_EMPTY_SUGGESTIONS = 9;
|
||
|
TO_EMPTY_WITH_SUGGESTIONS_DISABLED = 10;
|
||
|
TO_CUSTOM_WITH_VALID_SUGGESTIONS = 11 [deprecated = true];
|
||
|
TO_CUSTOM_WITH_VALID_PRIMARY = 17;
|
||
|
TO_CUSTOM_WITH_VALID_SUGGESTIONS_AND_EMPTY_PRIMARY = 18;
|
||
|
TO_CUSTOM_WITH_EMPTY_SUGGESTIONS = 12;
|
||
|
TO_CUSTOM_WITH_SUGGESTIONS_DISABLED = 13;
|
||
|
UNCHANGED = 14;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Used to define what type of item a Target would represent.
|
||
|
enum ItemType {
|
||
|
DEFAULT_ITEMTYPE = 0;
|
||
|
APP_ICON = 1;
|
||
|
SHORTCUT = 2;
|
||
|
WIDGET = 3;
|
||
|
FOLDER_ICON = 4;
|
||
|
DEEPSHORTCUT = 5;
|
||
|
SEARCHBOX = 6;
|
||
|
EDITTEXT = 7;
|
||
|
NOTIFICATION = 8;
|
||
|
TASK = 9; // Each page of Recents UI (QuickStep)
|
||
|
WEB_APP = 10;
|
||
|
TASK_ICON = 11;
|
||
|
}
|
||
|
|
||
|
// Used to define what type of container a Target would represent.
|
||
|
enum ContainerType {
|
||
|
DEFAULT_CONTAINERTYPE = 0;
|
||
|
WORKSPACE = 1;
|
||
|
HOTSEAT = 2;
|
||
|
FOLDER = 3;
|
||
|
ALLAPPS = 4;
|
||
|
WIDGETS = 5;
|
||
|
OVERVIEW = 6; // Zoomed out workspace (without QuickStep)
|
||
|
PREDICTION = 7;
|
||
|
SEARCHRESULT = 8;
|
||
|
DEEPSHORTCUTS = 9;
|
||
|
PINITEM = 10; // confirmation screen
|
||
|
NAVBAR = 11;
|
||
|
TASKSWITCHER = 12; // Recents UI Container (QuickStep)
|
||
|
APP = 13; // Foreground activity is another app (QuickStep)
|
||
|
TIP = 14; // Onboarding texts (QuickStep)
|
||
|
OTHER_LAUNCHER_APP = 15;
|
||
|
}
|
||
|
|
||
|
// Used to define what type of control a Target would represent.
|
||
|
enum ControlType {
|
||
|
DEFAULT_CONTROLTYPE = 0;
|
||
|
ALL_APPS_BUTTON = 1;
|
||
|
WIDGETS_BUTTON = 2;
|
||
|
WALLPAPER_BUTTON = 3;
|
||
|
SETTINGS_BUTTON = 4;
|
||
|
REMOVE_TARGET = 5;
|
||
|
UNINSTALL_TARGET = 6;
|
||
|
APPINFO_TARGET = 7;
|
||
|
RESIZE_HANDLE = 8;
|
||
|
VERTICAL_SCROLL = 9;
|
||
|
HOME_INTENT = 10; // Deprecated, use enum Command instead
|
||
|
BACK_BUTTON = 11;
|
||
|
QUICK_SCRUB_BUTTON = 12;
|
||
|
CLEAR_ALL_BUTTON = 13;
|
||
|
CANCEL_TARGET = 14;
|
||
|
TASK_PREVIEW = 15;
|
||
|
SPLIT_SCREEN_TARGET = 16;
|
||
|
REMOTE_ACTION_SHORTCUT = 17;
|
||
|
APP_USAGE_SETTINGS = 18;
|
||
|
BACK_GESTURE = 19;
|
||
|
UNDO = 20;
|
||
|
DISMISS_PREDICTION = 21;
|
||
|
HYBRID_HOTSEAT_ACCEPTED = 22;
|
||
|
HYBRID_HOTSEAT_CANCELED = 23;
|
||
|
OVERVIEW_ACTIONS_SHARE_BUTTON = 24;
|
||
|
OVERVIEW_ACTIONS_SCREENSHOT_BUTTON = 25;
|
||
|
OVERVIEW_ACTIONS_SELECT_BUTTON = 26;
|
||
|
SELECT_MODE_CLOSE_BUTTON = 27;
|
||
|
SELECT_MODE_ITEM = 28;
|
||
|
}
|
||
|
|
||
|
enum TipType {
|
||
|
DEFAULT_NONE = 0;
|
||
|
BOUNCE = 1;
|
||
|
SWIPE_UP_TEXT = 2;
|
||
|
QUICK_SCRUB_TEXT = 3;
|
||
|
PREDICTION_TEXT = 4;
|
||
|
DWB_TOAST = 5;
|
||
|
HYBRID_HOTSEAT = 6;
|
||
|
}
|
||
|
|
||
|
// Used to define the action component of the LauncherEvent.
|
||
|
message Action {
|
||
|
enum Type {
|
||
|
TOUCH = 0;
|
||
|
AUTOMATED = 1;
|
||
|
COMMAND = 2;
|
||
|
TIP = 3;
|
||
|
SOFT_KEYBOARD = 4;
|
||
|
// HARD_KEYBOARD, ASSIST
|
||
|
}
|
||
|
|
||
|
enum Touch {
|
||
|
TAP = 0;
|
||
|
LONGPRESS = 1;
|
||
|
DRAGDROP = 2;
|
||
|
SWIPE = 3;
|
||
|
FLING = 4;
|
||
|
PINCH = 5;
|
||
|
SWIPE_NOOP = 6;
|
||
|
}
|
||
|
|
||
|
enum Direction {
|
||
|
NONE = 0;
|
||
|
UP = 1;
|
||
|
DOWN = 2;
|
||
|
LEFT = 3;
|
||
|
RIGHT = 4;
|
||
|
UPRIGHT = 5;
|
||
|
UPLEFT = 6;
|
||
|
}
|
||
|
enum Command {
|
||
|
HOME_INTENT = 0;
|
||
|
BACK = 1;
|
||
|
ENTRY = 2; // Indicates entry to one of Launcher container type target
|
||
|
// not using the HOME_INTENT
|
||
|
CANCEL = 3; // Indicates that a confirmation screen was cancelled
|
||
|
CONFIRM = 4; // Indicates thata confirmation screen was accepted
|
||
|
STOP = 5; // Indicates onStop() was called (screen time out, power off)
|
||
|
RECENTS_BUTTON = 6; // Indicates that Recents button was pressed
|
||
|
RESUME = 7; // Indicates onResume() was called
|
||
|
}
|
||
|
|
||
|
optional Type type = 1;
|
||
|
optional Touch touch = 2;
|
||
|
optional Direction dir = 3;
|
||
|
optional Command command = 4;
|
||
|
// Log if the action was performed on outside of the container
|
||
|
optional bool is_outside = 5;
|
||
|
optional bool is_state_change = 6;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Context free grammar of typical user interaction:
|
||
|
// Action (Touch) + Target
|
||
|
// Action (Touch) + Target + Target
|
||
|
//
|
||
|
message LauncherEvent {
|
||
|
required Action action = 1;
|
||
|
// List of targets that touch actions can be operated on.
|
||
|
repeated Target src_target = 2;
|
||
|
repeated Target dest_target = 3;
|
||
|
|
||
|
optional int64 action_duration_millis = 4;
|
||
|
optional int64 elapsed_container_millis = 5;
|
||
|
optional int64 elapsed_session_millis = 6;
|
||
|
|
||
|
optional bool is_in_multi_window_mode = 7 [deprecated = true];
|
||
|
optional bool is_in_landscape_mode = 8 [deprecated = true];
|
||
|
|
||
|
optional LauncherEventExtension extension = 9;
|
||
|
}
|