1 /* 2 * Copyright (C) 2019 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 */ 16 17 package com.android.documentsui; 18 19 import androidx.annotation.IntDef; 20 21 import java.lang.annotation.Retention; 22 import java.lang.annotation.RetentionPolicy; 23 24 /** 25 * All constants are based on the enums in 26 * frameworks/base/core/proto/android/stats/docsui/docsui_enums.proto. 27 */ 28 public class MetricConsts { 29 30 // Codes representing different root types. 31 public static final int ROOT_UNKNOWN = 0; 32 public static final int ROOT_NONE = 1; 33 public static final int ROOT_OTHER_DOCS_PROVIDER = 2; 34 public static final int ROOT_AUDIO = 3; 35 public static final int ROOT_DEVICE_STORAGE = 4; 36 public static final int ROOT_DOWNLOADS = 5; 37 public static final int ROOT_HOME = 6; 38 public static final int ROOT_IMAGES = 7; 39 public static final int ROOT_RECENTS = 8; 40 public static final int ROOT_VIDEOS = 9; 41 public static final int ROOT_MTP = 10; 42 public static final int ROOT_THIRD_PARTY_APP = 11; 43 44 @IntDef(flag = true, value = { 45 ROOT_UNKNOWN, 46 ROOT_NONE, 47 ROOT_OTHER_DOCS_PROVIDER, 48 ROOT_AUDIO, 49 ROOT_DEVICE_STORAGE, 50 ROOT_DOWNLOADS, 51 ROOT_HOME, 52 ROOT_IMAGES, 53 ROOT_RECENTS, 54 ROOT_VIDEOS, 55 ROOT_MTP, 56 ROOT_THIRD_PARTY_APP 57 }) 58 @Retention(RetentionPolicy.SOURCE) 59 public @interface Root { 60 } 61 62 // Codes representing different mime types. 63 static final int MIME_UNKNOWN = 0; 64 static final int MIME_NONE = 1; // null mime 65 static final int MIME_ANY = 2; // */* 66 static final int MIME_APPLICATION = 3; // application/* 67 static final int MIME_AUDIO = 4; // audio/* 68 static final int MIME_IMAGE = 5; // image/* 69 static final int MIME_MESSAGE = 6; // message/* 70 static final int MIME_MULTIPART = 7; // multipart/* 71 static final int MIME_TEXT = 8; // text/* 72 static final int MIME_VIDEO = 9; // video/* 73 static final int MIME_OTHER = 10; // anything not enumerated below 74 75 @IntDef(flag = true, value = { 76 MIME_UNKNOWN, 77 MIME_NONE, 78 MIME_ANY, 79 MIME_APPLICATION, 80 MIME_AUDIO, 81 MIME_IMAGE, 82 MIME_MESSAGE, 83 MIME_MULTIPART, 84 MIME_TEXT, 85 MIME_VIDEO, 86 MIME_OTHER 87 }) 88 @Retention(RetentionPolicy.SOURCE) 89 public @interface Mime { 90 } 91 92 public static final int UNKNOWN_SCOPE = 0; 93 public static final int FILES_SCOPE = 1; 94 public static final int PICKER_SCOPE = 2; 95 96 // Codes representing different scopes(FILE/PICKER mode). 97 @IntDef({UNKNOWN_SCOPE, FILES_SCOPE, PICKER_SCOPE}) 98 @Retention(RetentionPolicy.SOURCE) 99 public @interface ContextScope { 100 } 101 102 // Codes representing different kinds of file operations. 103 static final int FILEOP_UNKNOWN = 0; 104 static final int FILEOP_OTHER = 1; // any file operation not listed below 105 static final int FILEOP_COPY = 2; 106 static final int FILEOP_COPY_INTRA_PROVIDER = 3; // Copy within a provider 107 static final int FILEOP_COPY_SYSTEM_PROVIDER = 4; // Copy to a system provider. 108 static final int FILEOP_COPY_EXTERNAL_PROVIDER = 5; // Copy to a 3rd-party provider. 109 static final int FILEOP_MOVE = 6; 110 static final int FILEOP_MOVE_INTRA_PROVIDER = 7; // Move within a provider. 111 static final int FILEOP_MOVE_SYSTEM_PROVIDER = 8; // Move to a system provider. 112 static final int FILEOP_MOVE_EXTERNAL_PROVIDER = 9; // Move to a 3rd-party provider. 113 static final int FILEOP_DELETE = 10; 114 static final int FILEOP_RENAME = 11; 115 static final int FILEOP_CREATE_DIR = 12; 116 static final int FILEOP_OTHER_ERROR = 13; 117 static final int FILEOP_DELETE_ERROR = 14; 118 static final int FILEOP_MOVE_ERROR = 15; 119 static final int FILEOP_COPY_ERROR = 16; 120 static final int FILEOP_RENAME_ERROR = 17; 121 static final int FILEOP_CREATE_DIR_ERROR = 18; 122 static final int FILEOP_COMPRESS_INTRA_PROVIDER = 19; // Compres within a provider 123 static final int FILEOP_COMPRESS_SYSTEM_PROVIDER = 20; // Compress to a system provider. 124 static final int FILEOP_COMPRESS_EXTERNAL_PROVIDER = 21; // Compress to a 3rd-party provider. 125 static final int FILEOP_EXTRACT_INTRA_PROVIDER = 22; // Extract within a provider 126 static final int FILEOP_EXTRACT_SYSTEM_PROVIDER = 23; // Extract to a system provider. 127 static final int FILEOP_EXTRACT_EXTERNAL_PROVIDER = 24; // Extract to a 3rd-party provider. 128 static final int FILEOP_COMPRESS_ERROR = 25; 129 static final int FILEOP_EXTRACT_ERROR = 26; 130 131 @IntDef(flag = true, value = { 132 FILEOP_UNKNOWN, 133 FILEOP_OTHER, 134 FILEOP_COPY, 135 FILEOP_COPY_INTRA_PROVIDER, 136 FILEOP_COPY_SYSTEM_PROVIDER, 137 FILEOP_COPY_EXTERNAL_PROVIDER, 138 FILEOP_MOVE, 139 FILEOP_MOVE_INTRA_PROVIDER, 140 FILEOP_MOVE_SYSTEM_PROVIDER, 141 FILEOP_MOVE_EXTERNAL_PROVIDER, 142 FILEOP_DELETE, 143 FILEOP_RENAME, 144 FILEOP_CREATE_DIR, 145 FILEOP_OTHER_ERROR, 146 FILEOP_DELETE_ERROR, 147 FILEOP_MOVE_ERROR, 148 FILEOP_COPY_ERROR, 149 FILEOP_RENAME_ERROR, 150 FILEOP_CREATE_DIR_ERROR, 151 FILEOP_COMPRESS_INTRA_PROVIDER, 152 FILEOP_COMPRESS_SYSTEM_PROVIDER, 153 FILEOP_COMPRESS_EXTERNAL_PROVIDER, 154 FILEOP_EXTRACT_INTRA_PROVIDER, 155 FILEOP_EXTRACT_SYSTEM_PROVIDER, 156 FILEOP_EXTRACT_EXTERNAL_PROVIDER, 157 FILEOP_COMPRESS_ERROR, 158 FILEOP_EXTRACT_ERROR 159 }) 160 @Retention(RetentionPolicy.SOURCE) 161 public @interface FileOp { 162 } 163 164 // Codes representing different provider types. Used for sorting file operations when logging. 165 static final int PROVIDER_INTRA = 0; 166 static final int PROVIDER_SYSTEM = 1; 167 static final int PROVIDER_EXTERNAL = 2; 168 169 @IntDef(flag = false, value = { 170 PROVIDER_INTRA, 171 PROVIDER_SYSTEM, 172 PROVIDER_EXTERNAL 173 }) 174 @Retention(RetentionPolicy.SOURCE) 175 public @interface Provider { 176 } 177 178 // Codes representing different types of sub-fileops. 179 public static final int SUBFILEOP_UNKNOWN = 0; 180 public static final int SUBFILEOP_QUERY_DOCUMENT = 1; 181 public static final int SUBFILEOP_QUERY_CHILDREN = 2; 182 public static final int SUBFILEOP_OPEN_FILE = 3; 183 public static final int SUBFILEOP_READ_FILE = 4; 184 public static final int SUBFILEOP_CREATE_DOCUMENT = 5; 185 public static final int SUBFILEOP_WRITE_FILE = 6; 186 public static final int SUBFILEOP_DELETE_DOCUMENT = 7; 187 public static final int SUBFILEOP_OBTAIN_STREAM_TYPE = 8; 188 public static final int SUBFILEOP_QUICK_MOVE = 9; 189 public static final int SUBFILEOP_QUICK_COPY = 10; 190 191 @IntDef(flag = false, value = { 192 SUBFILEOP_UNKNOWN, 193 SUBFILEOP_QUERY_DOCUMENT, 194 SUBFILEOP_QUERY_CHILDREN, 195 SUBFILEOP_OPEN_FILE, 196 SUBFILEOP_READ_FILE, 197 SUBFILEOP_CREATE_DOCUMENT, 198 SUBFILEOP_WRITE_FILE, 199 SUBFILEOP_DELETE_DOCUMENT, 200 SUBFILEOP_OBTAIN_STREAM_TYPE, 201 SUBFILEOP_QUICK_MOVE, 202 SUBFILEOP_QUICK_COPY 203 }) 204 @Retention(RetentionPolicy.SOURCE) 205 public @interface SubFileOp { 206 } 207 208 // Codes representing different user actions 209 public static final int USER_ACTION_UNKNOWN = 0; 210 public static final int USER_ACTION_OTHER = 1; 211 public static final int USER_ACTION_GRID = 2; 212 public static final int USER_ACTION_LIST = 3; 213 public static final int USER_ACTION_SORT_NAME = 4; 214 public static final int USER_ACTION_SORT_DATE = 5; 215 public static final int USER_ACTION_SORT_SIZE = 6; 216 public static final int USER_ACTION_SORT_TYPE = 7; 217 public static final int USER_ACTION_SEARCH = 8; 218 public static final int USER_ACTION_SHOW_SIZE = 9; 219 public static final int USER_ACTION_HIDE_SIZE = 10; 220 public static final int USER_ACTION_SETTINGS = 11; 221 public static final int USER_ACTION_COPY_TO = 12; 222 public static final int USER_ACTION_MOVE_TO = 13; 223 public static final int USER_ACTION_DELETE = 14; 224 public static final int USER_ACTION_RENAME = 15; 225 public static final int USER_ACTION_CREATE_DIR = 16; 226 public static final int USER_ACTION_SELECT_ALL = 17; 227 public static final int USER_ACTION_SHARE = 18; 228 public static final int USER_ACTION_OPEN = 19; 229 public static final int USER_ACTION_SHOW_ADVANCED = 20; 230 public static final int USER_ACTION_HIDE_ADVANCED = 21; 231 public static final int USER_ACTION_NEW_WINDOW = 22; 232 public static final int USER_ACTION_PASTE_CLIPBOARD = 23; 233 public static final int USER_ACTION_COPY_CLIPBOARD = 24; 234 public static final int USER_ACTION_DRAG_N_DROP = 25; 235 public static final int USER_ACTION_DRAG_N_DROP_MULTI_WINDOW = 26; 236 public static final int USER_ACTION_CUT_CLIPBOARD = 27; 237 public static final int USER_ACTION_COMPRESS = 28; 238 public static final int USER_ACTION_EXTRACT_TO = 29; 239 public static final int USER_ACTION_VIEW_IN_APPLICATION = 30; 240 public static final int USER_ACTION_INSPECTOR = 31; 241 public static final int USER_ACTION_SEARCH_CHIP = 32; 242 public static final int USER_ACTION_SEARCH_HISTORY = 33; 243 244 @IntDef(flag = false, value = { 245 USER_ACTION_UNKNOWN, 246 USER_ACTION_OTHER, 247 USER_ACTION_GRID, 248 USER_ACTION_LIST, 249 USER_ACTION_SORT_NAME, 250 USER_ACTION_SORT_DATE, 251 USER_ACTION_SORT_SIZE, 252 USER_ACTION_SORT_TYPE, 253 USER_ACTION_SEARCH, 254 USER_ACTION_SHOW_SIZE, 255 USER_ACTION_HIDE_SIZE, 256 USER_ACTION_SETTINGS, 257 USER_ACTION_COPY_TO, 258 USER_ACTION_MOVE_TO, 259 USER_ACTION_DELETE, 260 USER_ACTION_RENAME, 261 USER_ACTION_CREATE_DIR, 262 USER_ACTION_SELECT_ALL, 263 USER_ACTION_SHARE, 264 USER_ACTION_OPEN, 265 USER_ACTION_SHOW_ADVANCED, 266 USER_ACTION_HIDE_ADVANCED, 267 USER_ACTION_NEW_WINDOW, 268 USER_ACTION_PASTE_CLIPBOARD, 269 USER_ACTION_COPY_CLIPBOARD, 270 USER_ACTION_DRAG_N_DROP, 271 USER_ACTION_DRAG_N_DROP_MULTI_WINDOW, 272 USER_ACTION_CUT_CLIPBOARD, 273 USER_ACTION_COMPRESS, 274 USER_ACTION_EXTRACT_TO, 275 USER_ACTION_VIEW_IN_APPLICATION, 276 USER_ACTION_INSPECTOR, 277 USER_ACTION_SEARCH_CHIP, 278 USER_ACTION_SEARCH_HISTORY 279 }) 280 @Retention(RetentionPolicy.SOURCE) 281 public @interface UserAction { 282 } 283 284 // Codes representing different approaches to copy/move a document. OPMODE_PROVIDER indicates 285 // it's an optimized operation provided by providers; OPMODE_CONVERTED means it's converted from 286 // a virtual file; and OPMODE_CONVENTIONAL means it's byte copied. 287 public static final int OPMODE_UNKNOWN = 0; 288 public static final int OPMODE_PROVIDER = 1; 289 public static final int OPMODE_CONVERTED = 2; 290 public static final int OPMODE_CONVENTIONAL = 3; 291 292 @IntDef({OPMODE_UNKNOWN, OPMODE_PROVIDER, OPMODE_CONVERTED, OPMODE_CONVENTIONAL}) 293 @Retention(RetentionPolicy.SOURCE) 294 public @interface FileOpMode { 295 } 296 297 // Codes representing different menu actions. 298 static final int ACTION_UNKNOWN = 0; 299 static final int ACTION_OPEN = 1; 300 static final int ACTION_CREATE = 2; 301 static final int ACTION_GET_CONTENT = 3; 302 static final int ACTION_OPEN_TREE = 4; 303 static final int ACTION_PICK_COPY_DESTINATION = 5; 304 static final int ACTION_BROWSE = 6; 305 static final int ACTION_OTHER = 7; 306 307 @IntDef(flag = true, value = { 308 ACTION_UNKNOWN, 309 ACTION_OPEN, 310 ACTION_CREATE, 311 ACTION_GET_CONTENT, 312 ACTION_OPEN_TREE, 313 ACTION_PICK_COPY_DESTINATION, 314 ACTION_BROWSE, 315 ACTION_OTHER 316 }) 317 @Retention(RetentionPolicy.SOURCE) 318 public @interface MetricsAction { 319 } 320 321 public static final int AUTH_UNKNOWN = 0; 322 public static final int AUTH_OTHER = 1; 323 public static final int AUTH_MEDIA = 2; 324 public static final int AUTH_STORAGE_INTERNAL = 3; 325 public static final int AUTH_STORAGE_EXTERNAL = 4; 326 public static final int AUTH_DOWNLOADS = 5; 327 public static final int AUTH_MTP = 6; 328 329 @IntDef(flag = true, value = { 330 AUTH_UNKNOWN, 331 AUTH_OTHER, 332 AUTH_MEDIA, 333 AUTH_STORAGE_INTERNAL, 334 AUTH_STORAGE_EXTERNAL, 335 AUTH_DOWNLOADS, 336 AUTH_MTP 337 }) 338 @Retention(RetentionPolicy.SOURCE) 339 public @interface MetricsAuth { 340 } 341 342 // Types for logInvalidScopedAccessRequest 343 public static final int SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS = 1; 344 public static final int SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY = 2; 345 public static final int SCOPED_DIRECTORY_ACCESS_ERROR = 3; 346 public static final int SCOPED_DIRECTORY_ACCESS_DEPRECATED = 4; 347 348 @IntDef(value = { 349 SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS, 350 SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY, 351 SCOPED_DIRECTORY_ACCESS_ERROR, 352 SCOPED_DIRECTORY_ACCESS_DEPRECATED 353 }) 354 @Retention(RetentionPolicy.SOURCE) 355 public @interface InvalidScopedAccess { 356 } 357 358 // Codes representing different search types 359 public static final int TYPE_UNKNOWN = 0; 360 public static final int TYPE_CHIP_IMAGES = 1; 361 public static final int TYPE_CHIP_AUDIOS = 2; 362 public static final int TYPE_CHIP_VIDEOS = 3; 363 public static final int TYPE_CHIP_DOCS = 4; 364 public static final int TYPE_SEARCH_HISTORY = 5; 365 public static final int TYPE_SEARCH_STRING = 6; 366 367 @IntDef(flag = true, value = { 368 TYPE_UNKNOWN, 369 TYPE_CHIP_IMAGES, 370 TYPE_CHIP_AUDIOS, 371 TYPE_CHIP_VIDEOS, 372 TYPE_CHIP_DOCS, 373 TYPE_SEARCH_HISTORY, 374 TYPE_SEARCH_STRING 375 }) 376 @Retention(RetentionPolicy.SOURCE) 377 public @interface SearchType {} 378 379 // Codes representing different search types 380 public static final int SEARCH_UNKNOWN = 0; 381 public static final int SEARCH_KEYWORD = 1; 382 public static final int SEARCH_CHIPS = 2; 383 public static final int SEARCH_KEYWORD_N_CHIPS = 3; 384 385 @IntDef(flag = true, value = { 386 SEARCH_UNKNOWN, 387 SEARCH_KEYWORD, 388 SEARCH_CHIPS, 389 SEARCH_KEYWORD_N_CHIPS 390 }) 391 @Retention(RetentionPolicy.SOURCE) 392 public @interface SearchMode {} 393 }