• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.launcher3.logging;
2 
3 import android.view.View;
4 
5 import com.android.launcher3.ButtonDropTarget;
6 import com.android.launcher3.DeleteDropTarget;
7 import com.android.launcher3.InfoDropTarget;
8 import com.android.launcher3.ItemInfo;
9 import com.android.launcher3.LauncherSettings;
10 import com.android.launcher3.UninstallDropTarget;
11 import com.android.launcher3.userevent.nano.LauncherLogProto;
12 import com.android.launcher3.userevent.nano.LauncherLogProto.Action;
13 import com.android.launcher3.userevent.nano.LauncherLogProto.Target;
14 
15 /**
16  * Debugging helper methods.
17  * toString() cannot be overriden inside auto generated {@link LauncherLogProto}.
18  * Note: switch statement cannot be replaced with reflection as proguard strips the constants
19  */
20 public class LoggerUtils {
21     private static final String TAG = "LoggerUtils";
22 
getActionStr(LauncherLogProto.Action action)23     public static String getActionStr(LauncherLogProto.Action action) {
24         switch(action.touch) {
25             case Action.TAP: return "TAP";
26             case Action.LONGPRESS: return "LONGPRESS";
27             case Action.DRAGDROP: return "DRAGDROP";
28             case Action.PINCH: return "PINCH";
29             case Action.SWIPE: return "SWIPE";
30             case Action.FLING: return "FLING";
31             default: return "UNKNOWN";
32         }
33     }
34 
getTargetStr(Target t)35     public static String getTargetStr(Target t) {
36         String typeStr = "";
37         if (t == null){
38             return typeStr;
39         }
40         switch (t.type) {
41             case Target.ITEM:
42                 return getItemStr(t);
43             case Target.CONTROL:
44                 return getControlStr(t);
45             case Target.CONTAINER:
46                 return getContainerStr(t);
47             default:
48                 return "UNKNOWN TARGET TYPE";
49         }
50     }
51 
getItemStr(Target t)52     private static String getItemStr(Target t) {
53         String typeStr = "";
54         if (t == null){
55             return typeStr;
56         }
57         switch(t.itemType){
58             case LauncherLogProto.APP_ICON: typeStr = "APPICON"; break;
59             case LauncherLogProto.SHORTCUT: typeStr = "SHORTCUT"; break;
60             case LauncherLogProto.WIDGET: typeStr = "WIDGET"; break;
61             case LauncherLogProto.DEEPSHORTCUT: typeStr = "DEEPSHORTCUT"; break;
62             case LauncherLogProto.FOLDER_ICON: typeStr = "FOLDERICON"; break;
63             case LauncherLogProto.SEARCHBOX: typeStr = "SEARCHBOX"; break;
64 
65             default: typeStr = "UNKNOWN";
66         }
67 
68         if (t.packageNameHash != 0) {
69             typeStr += ", packageHash=" + t.packageNameHash;
70         }
71         if (t.componentHash != 0) {
72             typeStr += ", componentHash=" + t.componentHash;
73         }
74         if (t.intentHash != 0) {
75             typeStr += ", intentHash=" + t.intentHash;
76         }
77         if (t.spanX != 0) {
78             typeStr += ", spanX=" + t.spanX;
79         }
80         return typeStr += ", grid=(" + t.gridX + "," + t.gridY + "), id=" + t.pageIndex;
81     }
82 
getControlStr(Target t)83     private static String getControlStr(Target t) {
84         if (t == null){
85             return "";
86         }
87         switch(t.controlType) {
88             case LauncherLogProto.ALL_APPS_BUTTON: return "ALL_APPS_BUTTON";
89             case LauncherLogProto.WIDGETS_BUTTON: return "WIDGETS_BUTTON";
90             case LauncherLogProto.WALLPAPER_BUTTON: return "WALLPAPER_BUTTON";
91             case LauncherLogProto.SETTINGS_BUTTON: return "SETTINGS_BUTTON";
92             case LauncherLogProto.REMOVE_TARGET: return "REMOVE_TARGET";
93             case LauncherLogProto.UNINSTALL_TARGET: return "UNINSTALL_TARGET";
94             case LauncherLogProto.APPINFO_TARGET: return "APPINFO_TARGET";
95             case LauncherLogProto.RESIZE_HANDLE: return "RESIZE_HANDLE";
96             default: return "UNKNOWN";
97         }
98     }
99 
getContainerStr(LauncherLogProto.Target t)100     private static String getContainerStr(LauncherLogProto.Target t) {
101         String str = "";
102         if (t == null) {
103             return str;
104         }
105         switch (t.containerType) {
106             case LauncherLogProto.WORKSPACE:
107                 str = "WORKSPACE";
108                 break;
109             case LauncherLogProto.HOTSEAT:
110                 str = "HOTSEAT";
111                 break;
112             case LauncherLogProto.FOLDER:
113                 str = "FOLDER";
114                 break;
115             case LauncherLogProto.ALLAPPS:
116                 str = "ALLAPPS";
117                 break;
118             case LauncherLogProto.WIDGETS:
119                 str = "WIDGETS";
120                 break;
121             case LauncherLogProto.OVERVIEW:
122                 str = "OVERVIEW";
123                 break;
124             case LauncherLogProto.PREDICTION:
125                 str = "PREDICTION";
126                 break;
127             case LauncherLogProto.SEARCHRESULT:
128                 str = "SEARCHRESULT";
129                 break;
130             case LauncherLogProto.DEEPSHORTCUTS:
131                 str = "DEEPSHORTCUTS";
132                 break;
133             default:
134                 str = "UNKNOWN";
135         }
136         return str + " id=" + t.pageIndex;
137     }
138 
139     /**
140      * Used for launching an event by tapping on an icon.
141      */
initLauncherEvent( int actionType, View v, int parentTargetType)142     public static LauncherLogProto.LauncherEvent initLauncherEvent(
143             int actionType,
144             View v,
145             int parentTargetType){
146         LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
147 
148         event.srcTarget = new LauncherLogProto.Target[2];
149         event.srcTarget[0] = initTarget(v);
150         event.srcTarget[1] = new LauncherLogProto.Target();
151         event.srcTarget[1].type = parentTargetType;
152 
153         event.action = new LauncherLogProto.Action();
154         event.action.type = actionType;
155         return event;
156     }
157 
158     /**
159      * Used for clicking on controls and buttons.
160      */
initLauncherEvent( int actionType, int childTargetType)161     public static LauncherLogProto.LauncherEvent initLauncherEvent(
162             int actionType,
163             int childTargetType){
164         LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
165 
166         event.srcTarget = new LauncherLogProto.Target[1];
167         event.srcTarget[0] = new LauncherLogProto.Target();
168         event.srcTarget[0].type = childTargetType;
169 
170         event.action = new LauncherLogProto.Action();
171         event.action.type = actionType;
172         return event;
173     }
174 
175     /**
176      * Used for drag and drop interaction.
177      */
initLauncherEvent( int actionType, View v, ItemInfo info, int parentSrcTargetType, View parentDestTargetType)178     public static LauncherLogProto.LauncherEvent initLauncherEvent(
179             int actionType,
180             View v,
181             ItemInfo info,
182             int parentSrcTargetType,
183             View parentDestTargetType){
184         LauncherLogProto.LauncherEvent event = new LauncherLogProto.LauncherEvent();
185 
186         event.srcTarget = new LauncherLogProto.Target[2];
187         event.srcTarget[0] = initTarget(v, info);
188         event.srcTarget[1] = new LauncherLogProto.Target();
189         event.srcTarget[1].type = parentSrcTargetType;
190 
191         event.destTarget = new LauncherLogProto.Target[2];
192         event.destTarget[0] = initTarget(v, info);
193         event.destTarget[1] = initDropTarget(parentDestTargetType);
194 
195         event.action = new LauncherLogProto.Action();
196         event.action.type = actionType;
197         return event;
198     }
199 
initTarget(View v, ItemInfo info)200     private static Target initTarget(View v, ItemInfo info) {
201         Target t = new LauncherLogProto.Target();
202         t.type = Target.ITEM;
203         switch (info.itemType) {
204             case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
205                 t.itemType = LauncherLogProto.APP_ICON;
206                 break;
207             case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
208                 t.itemType = LauncherLogProto.SHORTCUT;
209                 break;
210             case LauncherSettings.Favorites.ITEM_TYPE_FOLDER:
211                 t.itemType = LauncherLogProto.FOLDER_ICON;
212                 break;
213             case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
214                 t.itemType = LauncherLogProto.WIDGET;
215                 break;
216             case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
217                 t.itemType = LauncherLogProto.DEEPSHORTCUT;
218                 break;
219         }
220         return t;
221     }
222 
initDropTarget(View v)223     private static Target initDropTarget(View v) {
224         Target t = new LauncherLogProto.Target();
225         t.type = (v instanceof ButtonDropTarget)? Target.CONTROL : Target.CONTAINER;
226         if (t.type == Target.CONTAINER) {
227             return t;
228         }
229 
230         if (v instanceof InfoDropTarget) {
231             t.controlType = LauncherLogProto.APPINFO_TARGET;
232         } else if (v instanceof UninstallDropTarget) {
233             t.controlType = LauncherLogProto.UNINSTALL_TARGET;
234         } else if (v instanceof DeleteDropTarget) {
235             t.controlType = LauncherLogProto.REMOVE_TARGET;
236         }
237         return t;
238     }
239 
initTarget(View v)240     private static Target initTarget(View v) {
241         Target t = new LauncherLogProto.Target();
242         t.type = Target.ITEM;
243         if (!(v.getTag() instanceof ItemInfo)) {
244             return t;
245         }
246         return initTarget(v, (ItemInfo) v.getTag());
247     }
248 }
249