1 /* 2 * Copyright (C) 2021 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 android.car.watchdog; 18 19 import static com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE; 20 21 import android.annotation.IntDef; 22 import android.annotation.NonNull; 23 import android.annotation.Nullable; 24 import android.annotation.StringDef; 25 import android.annotation.SystemApi; 26 import android.os.Parcelable; 27 28 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport; 29 import com.android.car.internal.util.AnnotationValidations; 30 import com.android.car.internal.util.DataClass; 31 32 import java.lang.annotation.Retention; 33 import java.lang.annotation.RetentionPolicy; 34 import java.util.List; 35 import java.util.Map; 36 37 /** 38 * Resource overuse configuration for a component. 39 * 40 * @hide 41 */ 42 @SystemApi 43 @DataClass(genToString = true, genBuilder = true, genHiddenConstDefs = true) 44 public final class ResourceOveruseConfiguration implements Parcelable { 45 /** 46 * System component. 47 */ 48 @ComponentType 49 public static final int COMPONENT_TYPE_SYSTEM = 1; 50 51 /** 52 * Vendor component. 53 */ 54 @ComponentType 55 public static final int COMPONENT_TYPE_VENDOR = 2; 56 57 /** 58 * Third party component. 59 */ 60 @ComponentType 61 public static final int COMPONENT_TYPE_THIRD_PARTY = 3; 62 63 /** 64 * Map applications. 65 */ 66 @ApplicationCategoryType 67 public static final String APPLICATION_CATEGORY_TYPE_MAPS = 68 "android.car.watchdog.app.category.MAPS"; 69 70 /** 71 * Media applications. 72 */ 73 @ApplicationCategoryType 74 public static final String APPLICATION_CATEGORY_TYPE_MEDIA = 75 "android.car.watchdog.app.category.MEDIA"; 76 77 /** 78 * Component type of the I/O overuse configuration. 79 */ 80 private @ComponentType int mComponentType; 81 82 /** 83 * List of system or vendor packages that are safe to be killed on resource overuse. 84 * 85 * <p>When specifying shared package names, the package names should contain the prefix 86 * 'shared:'. 87 * <p>System components must provide only safe-to-kill system packages in this list. 88 * <p>Vendor components must provide only safe-to-kill vendor packages in this list. 89 */ 90 private @NonNull List<String> mSafeToKillPackages; 91 92 /** 93 * List of vendor package prefixes. 94 * 95 * <p>Any pre-installed package name starting with one of the prefixes or any package from the 96 * vendor partition is identified as a vendor package and vendor provided thresholds are applied 97 * to these packages. This list must be provided only by the vendor component. 98 * 99 * <p>When specifying shared package name prefixes, the prefix should contain 'shared:' at 100 * the beginning. 101 */ 102 private @NonNull List<String> mVendorPackagePrefixes; 103 104 105 /** 106 * Mappings from package name to application category types. 107 * 108 * <p>This mapping must contain only packages that can be mapped to one of the 109 * {@link ApplicationCategoryType} types. This mapping must be defined only by the system and 110 * vendor components. 111 * 112 * <p>For packages under a shared UID, the application category type must be specified 113 * for the shared package name and not for individual packages under the shared UID. When 114 * specifying shared package names, the package names should contain the prefix 'shared:'. 115 */ 116 private @NonNull Map<String, String> mPackagesToAppCategoryTypes; 117 118 /** 119 * I/O overuse configuration for the component specified by 120 * {@link ResourceOveruseConfiguration#getComponentType}. 121 */ 122 private @Nullable IoOveruseConfiguration mIoOveruseConfiguration = null; 123 124 125 126 // Code below generated by codegen v1.0.23. 127 // 128 // DO NOT MODIFY! 129 // CHECKSTYLE:OFF Generated code 130 // 131 // To regenerate run: 132 // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/watchdog/ResourceOveruseConfiguration.java 133 // Added AddedInOrBefore or ApiRequirement Annotation manually 134 // 135 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 136 // Settings > Editor > Code Style > Formatter Control 137 //@formatter:off 138 139 140 /** @hide */ 141 @IntDef(prefix = "COMPONENT_TYPE_", value = { 142 COMPONENT_TYPE_SYSTEM, 143 COMPONENT_TYPE_VENDOR, 144 COMPONENT_TYPE_THIRD_PARTY 145 }) 146 @Retention(RetentionPolicy.SOURCE) 147 @DataClass.Generated.Member 148 public @interface ComponentType {} 149 150 /** @hide */ 151 @DataClass.Generated.Member componentTypeToString(@omponentType int value)152 public static String componentTypeToString(@ComponentType int value) { 153 switch (value) { 154 case COMPONENT_TYPE_SYSTEM: 155 return "COMPONENT_TYPE_SYSTEM"; 156 case COMPONENT_TYPE_VENDOR: 157 return "COMPONENT_TYPE_VENDOR"; 158 case COMPONENT_TYPE_THIRD_PARTY: 159 return "COMPONENT_TYPE_THIRD_PARTY"; 160 default: return Integer.toHexString(value); 161 } 162 } 163 164 /** @hide */ 165 @StringDef(prefix = "APPLICATION_CATEGORY_TYPE_", value = { 166 APPLICATION_CATEGORY_TYPE_MAPS, 167 APPLICATION_CATEGORY_TYPE_MEDIA 168 }) 169 @Retention(RetentionPolicy.SOURCE) 170 @DataClass.Generated.Member 171 public @interface ApplicationCategoryType {} 172 173 @DataClass.Generated.Member ResourceOveruseConfiguration( @omponentType int componentType, @NonNull List<String> safeToKillPackages, @NonNull List<String> vendorPackagePrefixes, @NonNull Map<String,String> packagesToAppCategoryTypes, @Nullable IoOveruseConfiguration ioOveruseConfiguration)174 /* package-private */ ResourceOveruseConfiguration( 175 @ComponentType int componentType, 176 @NonNull List<String> safeToKillPackages, 177 @NonNull List<String> vendorPackagePrefixes, 178 @NonNull Map<String,String> packagesToAppCategoryTypes, 179 @Nullable IoOveruseConfiguration ioOveruseConfiguration) { 180 this.mComponentType = componentType; 181 182 if (!(mComponentType == COMPONENT_TYPE_SYSTEM) 183 && !(mComponentType == COMPONENT_TYPE_VENDOR) 184 && !(mComponentType == COMPONENT_TYPE_THIRD_PARTY)) { 185 throw new java.lang.IllegalArgumentException( 186 "componentType was " + mComponentType + " but must be one of: " 187 + "COMPONENT_TYPE_SYSTEM(" + COMPONENT_TYPE_SYSTEM + "), " 188 + "COMPONENT_TYPE_VENDOR(" + COMPONENT_TYPE_VENDOR + "), " 189 + "COMPONENT_TYPE_THIRD_PARTY(" + COMPONENT_TYPE_THIRD_PARTY + ")"); 190 } 191 192 this.mSafeToKillPackages = safeToKillPackages; 193 AnnotationValidations.validate( 194 NonNull.class, null, mSafeToKillPackages); 195 this.mVendorPackagePrefixes = vendorPackagePrefixes; 196 AnnotationValidations.validate( 197 NonNull.class, null, mVendorPackagePrefixes); 198 this.mPackagesToAppCategoryTypes = packagesToAppCategoryTypes; 199 AnnotationValidations.validate( 200 NonNull.class, null, mPackagesToAppCategoryTypes); 201 this.mIoOveruseConfiguration = ioOveruseConfiguration; 202 203 // onConstructed(); // You can define this method to get a callback 204 } 205 206 /** 207 * Component type of the I/O overuse configuration. 208 */ 209 @DataClass.Generated.Member getComponentType()210 public @ComponentType int getComponentType() { 211 return mComponentType; 212 } 213 214 /** 215 * List of system or vendor packages that are safe to be killed on resource overuse. 216 * 217 * <p>When specifying shared package names, the package names should contain the prefix 218 * 'shared:'. 219 * <p>System components must provide only safe-to-kill system packages in this list. 220 * <p>Vendor components must provide only safe-to-kill vendor packages in this list. 221 */ 222 @DataClass.Generated.Member getSafeToKillPackages()223 public @NonNull List<String> getSafeToKillPackages() { 224 return mSafeToKillPackages; 225 } 226 227 /** 228 * List of vendor package prefixes. 229 * 230 * <p>Any pre-installed package name starting with one of the prefixes or any package from the 231 * vendor partition is identified as a vendor package and vendor provided thresholds are applied 232 * to these packages. This list must be provided only by the vendor component. 233 * 234 * <p>When specifying shared package name prefixes, the prefix should contain 'shared:' at 235 * the beginning. 236 */ 237 @DataClass.Generated.Member getVendorPackagePrefixes()238 public @NonNull List<String> getVendorPackagePrefixes() { 239 return mVendorPackagePrefixes; 240 } 241 242 /** 243 * Mappings from package name to application category types. 244 * 245 * <p>This mapping must contain only packages that can be mapped to one of the 246 * {@link ApplicationCategoryType} types. This mapping must be defined only by the system and 247 * vendor components. 248 * 249 * <p>For packages under a shared UID, the application category type must be specified 250 * for the shared package name and not for individual packages under the shared UID. When 251 * specifying shared package names, the package names should contain the prefix 'shared:'. 252 */ 253 @DataClass.Generated.Member getPackagesToAppCategoryTypes()254 public @NonNull Map<String,String> getPackagesToAppCategoryTypes() { 255 return mPackagesToAppCategoryTypes; 256 } 257 258 /** 259 * I/O overuse configuration for the component specified by 260 * {@link ResourceOveruseConfiguration#getComponentType}. 261 */ 262 @DataClass.Generated.Member getIoOveruseConfiguration()263 public @Nullable IoOveruseConfiguration getIoOveruseConfiguration() { 264 return mIoOveruseConfiguration; 265 } 266 267 @Override 268 @DataClass.Generated.Member toString()269 public String toString() { 270 // You can override field toString logic by defining methods like: 271 // String fieldNameToString() { ... } 272 273 return "ResourceOveruseConfiguration { " + 274 "componentType = " + componentTypeToString(mComponentType) + ", " + 275 "safeToKillPackages = " + mSafeToKillPackages + ", " + 276 "vendorPackagePrefixes = " + mVendorPackagePrefixes + ", " + 277 "packagesToAppCategoryTypes = " + mPackagesToAppCategoryTypes + ", " + 278 "ioOveruseConfiguration = " + mIoOveruseConfiguration + 279 " }"; 280 } 281 282 @Override 283 @DataClass.Generated.Member writeToParcel(@onNull android.os.Parcel dest, int flags)284 public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { 285 // You can override field parcelling by defining methods like: 286 // void parcelFieldName(Parcel dest, int flags) { ... } 287 288 byte flg = 0; 289 if (mIoOveruseConfiguration != null) flg |= 0x10; 290 dest.writeByte(flg); 291 dest.writeInt(mComponentType); 292 dest.writeStringList(mSafeToKillPackages); 293 dest.writeStringList(mVendorPackagePrefixes); 294 dest.writeMap(mPackagesToAppCategoryTypes); 295 if (mIoOveruseConfiguration != null) dest.writeTypedObject(mIoOveruseConfiguration, flags); 296 } 297 298 @Override 299 @DataClass.Generated.Member 300 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) describeContents()301 public int describeContents() { return 0; } 302 303 /** @hide */ 304 @SuppressWarnings({"unchecked", "RedundantCast"}) 305 @DataClass.Generated.Member ResourceOveruseConfiguration(@onNull android.os.Parcel in)306 /* package-private */ ResourceOveruseConfiguration(@NonNull android.os.Parcel in) { 307 // You can override field unparcelling by defining methods like: 308 // static FieldType unparcelFieldName(Parcel in) { ... } 309 310 byte flg = in.readByte(); 311 int componentType = in.readInt(); 312 List<String> safeToKillPackages = new java.util.ArrayList<>(); 313 in.readStringList(safeToKillPackages); 314 List<String> vendorPackagePrefixes = new java.util.ArrayList<>(); 315 in.readStringList(vendorPackagePrefixes); 316 Map<String,String> packagesToAppCategoryTypes = new java.util.LinkedHashMap<>(); 317 in.readMap(packagesToAppCategoryTypes, String.class.getClassLoader()); 318 IoOveruseConfiguration ioOveruseConfiguration = (flg & 0x10) == 0 ? null : (IoOveruseConfiguration) in.readTypedObject(IoOveruseConfiguration.CREATOR); 319 320 this.mComponentType = componentType; 321 322 if (!(mComponentType == COMPONENT_TYPE_SYSTEM) 323 && !(mComponentType == COMPONENT_TYPE_VENDOR) 324 && !(mComponentType == COMPONENT_TYPE_THIRD_PARTY)) { 325 throw new java.lang.IllegalArgumentException( 326 "componentType was " + mComponentType + " but must be one of: " 327 + "COMPONENT_TYPE_SYSTEM(" + COMPONENT_TYPE_SYSTEM + "), " 328 + "COMPONENT_TYPE_VENDOR(" + COMPONENT_TYPE_VENDOR + "), " 329 + "COMPONENT_TYPE_THIRD_PARTY(" + COMPONENT_TYPE_THIRD_PARTY + ")"); 330 } 331 332 this.mSafeToKillPackages = safeToKillPackages; 333 AnnotationValidations.validate( 334 NonNull.class, null, mSafeToKillPackages); 335 this.mVendorPackagePrefixes = vendorPackagePrefixes; 336 AnnotationValidations.validate( 337 NonNull.class, null, mVendorPackagePrefixes); 338 this.mPackagesToAppCategoryTypes = packagesToAppCategoryTypes; 339 AnnotationValidations.validate( 340 NonNull.class, null, mPackagesToAppCategoryTypes); 341 this.mIoOveruseConfiguration = ioOveruseConfiguration; 342 343 // onConstructed(); // You can define this method to get a callback 344 } 345 346 @DataClass.Generated.Member 347 public static final @NonNull Parcelable.Creator<ResourceOveruseConfiguration> CREATOR 348 = new Parcelable.Creator<ResourceOveruseConfiguration>() { 349 @Override 350 public ResourceOveruseConfiguration[] newArray(int size) { 351 return new ResourceOveruseConfiguration[size]; 352 } 353 354 @Override 355 public ResourceOveruseConfiguration createFromParcel(@NonNull android.os.Parcel in) { 356 return new ResourceOveruseConfiguration(in); 357 } 358 }; 359 360 /** 361 * A builder for {@link ResourceOveruseConfiguration} 362 */ 363 @SuppressWarnings("WeakerAccess") 364 @DataClass.Generated.Member 365 public static final class Builder { 366 367 private @ComponentType int mComponentType; 368 private @NonNull List<String> mSafeToKillPackages; 369 private @NonNull List<String> mVendorPackagePrefixes; 370 private @NonNull Map<String,String> mPackagesToAppCategoryTypes; 371 private @Nullable IoOveruseConfiguration mIoOveruseConfiguration; 372 373 private long mBuilderFieldsSet = 0L; 374 375 /** 376 * Creates a new Builder. 377 * 378 * @param componentType 379 * Component type of the I/O overuse configuration. 380 * @param safeToKillPackages 381 * List of system or vendor packages that are safe to be killed on resource overuse. 382 * 383 * <p>When specifying shared package names, the package names should contain the prefix 384 * 'shared:'. 385 * <p>System components must provide only safe-to-kill system packages in this list. 386 * <p>Vendor components must provide only safe-to-kill vendor packages in this list. 387 * @param vendorPackagePrefixes 388 * List of vendor package prefixes. 389 * 390 * <p>Any pre-installed package name starting with one of the prefixes or any package from the 391 * vendor partition is identified as a vendor package and vendor provided thresholds are applied 392 * to these packages. This list must be provided only by the vendor component. 393 * 394 * <p>When specifying shared package name prefixes, the prefix should contain 'shared:' at 395 * the beginning. 396 * @param packagesToAppCategoryTypes 397 * Mappings from package name to application category types. 398 * 399 * <p>This mapping must contain only packages that can be mapped to one of the 400 * {@link ApplicationCategoryType} types. This mapping must be defined only by the system and 401 * vendor components. 402 * 403 * <p>For packages under a shared UID, the application category type must be specified 404 * for the shared package name and not for individual packages under the shared UID. When 405 * specifying shared package names, the package names should contain the prefix 'shared:'. 406 */ Builder( @omponentType int componentType, @NonNull List<String> safeToKillPackages, @NonNull List<String> vendorPackagePrefixes, @NonNull Map<String,String> packagesToAppCategoryTypes)407 public Builder( 408 @ComponentType int componentType, 409 @NonNull List<String> safeToKillPackages, 410 @NonNull List<String> vendorPackagePrefixes, 411 @NonNull Map<String,String> packagesToAppCategoryTypes) { 412 mComponentType = componentType; 413 414 if (!(mComponentType == COMPONENT_TYPE_SYSTEM) 415 && !(mComponentType == COMPONENT_TYPE_VENDOR) 416 && !(mComponentType == COMPONENT_TYPE_THIRD_PARTY)) { 417 throw new java.lang.IllegalArgumentException( 418 "componentType was " + mComponentType + " but must be one of: " 419 + "COMPONENT_TYPE_SYSTEM(" + COMPONENT_TYPE_SYSTEM + "), " 420 + "COMPONENT_TYPE_VENDOR(" + COMPONENT_TYPE_VENDOR + "), " 421 + "COMPONENT_TYPE_THIRD_PARTY(" + COMPONENT_TYPE_THIRD_PARTY + ")"); 422 } 423 424 mSafeToKillPackages = safeToKillPackages; 425 AnnotationValidations.validate( 426 NonNull.class, null, mSafeToKillPackages); 427 mVendorPackagePrefixes = vendorPackagePrefixes; 428 AnnotationValidations.validate( 429 NonNull.class, null, mVendorPackagePrefixes); 430 mPackagesToAppCategoryTypes = packagesToAppCategoryTypes; 431 AnnotationValidations.validate( 432 NonNull.class, null, mPackagesToAppCategoryTypes); 433 } 434 435 /** 436 * Component type of the I/O overuse configuration. 437 */ 438 @DataClass.Generated.Member setComponentType(@omponentType int value)439 public @NonNull Builder setComponentType(@ComponentType int value) { 440 checkNotUsed(); 441 mBuilderFieldsSet |= 0x1; 442 mComponentType = value; 443 return this; 444 } 445 446 /** 447 * List of system or vendor packages that are safe to be killed on resource overuse. 448 * 449 * <p>When specifying shared package names, the package names should contain the prefix 450 * 'shared:'. 451 * <p>System components must provide only safe-to-kill system packages in this list. 452 * <p>Vendor components must provide only safe-to-kill vendor packages in this list. 453 */ 454 @DataClass.Generated.Member setSafeToKillPackages(@onNull List<String> value)455 public @NonNull Builder setSafeToKillPackages(@NonNull List<String> value) { 456 checkNotUsed(); 457 mBuilderFieldsSet |= 0x2; 458 mSafeToKillPackages = value; 459 return this; 460 } 461 462 /** @see #setSafeToKillPackages */ 463 @DataClass.Generated.Member addSafeToKillPackages(@onNull String value)464 public @NonNull Builder addSafeToKillPackages(@NonNull String value) { 465 // You can refine this method's name by providing item's singular name, e.g.: 466 // @DataClass.PluralOf("item")) mItems = ... 467 468 if (mSafeToKillPackages == null) setSafeToKillPackages(new java.util.ArrayList<>()); 469 mSafeToKillPackages.add(value); 470 return this; 471 } 472 473 /** 474 * List of vendor package prefixes. 475 * 476 * <p>Any pre-installed package name starting with one of the prefixes or any package from the 477 * vendor partition is identified as a vendor package and vendor provided thresholds are applied 478 * to these packages. This list must be provided only by the vendor component. 479 * 480 * <p>When specifying shared package name prefixes, the prefix should contain 'shared:' at 481 * the beginning. 482 */ 483 @DataClass.Generated.Member setVendorPackagePrefixes(@onNull List<String> value)484 public @NonNull Builder setVendorPackagePrefixes(@NonNull List<String> value) { 485 checkNotUsed(); 486 mBuilderFieldsSet |= 0x4; 487 mVendorPackagePrefixes = value; 488 return this; 489 } 490 491 /** @see #setVendorPackagePrefixes */ 492 @DataClass.Generated.Member addVendorPackagePrefixes(@onNull String value)493 public @NonNull Builder addVendorPackagePrefixes(@NonNull String value) { 494 // You can refine this method's name by providing item's singular name, e.g.: 495 // @DataClass.PluralOf("item")) mItems = ... 496 497 if (mVendorPackagePrefixes == null) setVendorPackagePrefixes(new java.util.ArrayList<>()); 498 mVendorPackagePrefixes.add(value); 499 return this; 500 } 501 502 /** 503 * Mappings from package name to application category types. 504 * 505 * <p>This mapping must contain only packages that can be mapped to one of the 506 * {@link ApplicationCategoryType} types. This mapping must be defined only by the system and 507 * vendor components. 508 * 509 * <p>For packages under a shared UID, the application category type must be specified 510 * for the shared package name and not for individual packages under the shared UID. When 511 * specifying shared package names, the package names should contain the prefix 'shared:'. 512 */ 513 @DataClass.Generated.Member setPackagesToAppCategoryTypes(@onNull Map<String,String> value)514 public @NonNull Builder setPackagesToAppCategoryTypes(@NonNull Map<String,String> value) { 515 checkNotUsed(); 516 mBuilderFieldsSet |= 0x8; 517 mPackagesToAppCategoryTypes = value; 518 return this; 519 } 520 521 /** @see #setPackagesToAppCategoryTypes */ 522 @DataClass.Generated.Member addPackagesToAppCategoryTypes(@onNull String key, @NonNull String value)523 public @NonNull Builder addPackagesToAppCategoryTypes(@NonNull String key, @NonNull String value) { 524 // You can refine this method's name by providing item's singular name, e.g.: 525 // @DataClass.PluralOf("item")) mItems = ... 526 527 if (mPackagesToAppCategoryTypes == null) setPackagesToAppCategoryTypes(new java.util.LinkedHashMap()); 528 mPackagesToAppCategoryTypes.put(key, value); 529 return this; 530 } 531 532 /** 533 * I/O overuse configuration for the component specified by 534 * {@link ResourceOveruseConfiguration#getComponentType}. 535 */ 536 @DataClass.Generated.Member setIoOveruseConfiguration(@onNull IoOveruseConfiguration value)537 public @NonNull Builder setIoOveruseConfiguration(@NonNull IoOveruseConfiguration value) { 538 checkNotUsed(); 539 mBuilderFieldsSet |= 0x10; 540 mIoOveruseConfiguration = value; 541 return this; 542 } 543 544 /** Builds the instance. This builder should not be touched after calling this! */ build()545 public @NonNull ResourceOveruseConfiguration build() { 546 checkNotUsed(); 547 mBuilderFieldsSet |= 0x20; // Mark builder used 548 549 if ((mBuilderFieldsSet & 0x10) == 0) { 550 mIoOveruseConfiguration = null; 551 } 552 ResourceOveruseConfiguration o = new ResourceOveruseConfiguration( 553 mComponentType, 554 mSafeToKillPackages, 555 mVendorPackagePrefixes, 556 mPackagesToAppCategoryTypes, 557 mIoOveruseConfiguration); 558 return o; 559 } 560 checkNotUsed()561 private void checkNotUsed() { 562 if ((mBuilderFieldsSet & 0x20) != 0) { 563 throw new IllegalStateException( 564 "This Builder should not be reused. Use a new Builder instance instead"); 565 } 566 } 567 } 568 569 @DataClass.Generated( 570 time = 1673057073656L, 571 codegenVersion = "1.0.23", 572 sourceFile = "packages/services/Car/car-lib/src/android/car/watchdog/ResourceOveruseConfiguration.java", 573 inputSignatures = "public static final @android.car.watchdog.ResourceOveruseConfiguration.ComponentType @android.car.annotation.AddedInOrBefore int COMPONENT_TYPE_SYSTEM\npublic static final @android.car.watchdog.ResourceOveruseConfiguration.ComponentType @android.car.annotation.AddedInOrBefore int COMPONENT_TYPE_VENDOR\npublic static final @android.car.watchdog.ResourceOveruseConfiguration.ComponentType @android.car.annotation.AddedInOrBefore int COMPONENT_TYPE_THIRD_PARTY\npublic static final @android.car.watchdog.ResourceOveruseConfiguration.ApplicationCategoryType @android.car.annotation.AddedInOrBefore java.lang.String APPLICATION_CATEGORY_TYPE_MAPS\npublic static final @android.car.watchdog.ResourceOveruseConfiguration.ApplicationCategoryType @android.car.annotation.AddedInOrBefore java.lang.String APPLICATION_CATEGORY_TYPE_MEDIA\nprivate @android.car.watchdog.ResourceOveruseConfiguration.ComponentType int mComponentType\nprivate @android.annotation.NonNull java.util.List<java.lang.String> mSafeToKillPackages\nprivate @android.annotation.NonNull java.util.List<java.lang.String> mVendorPackagePrefixes\nprivate @android.annotation.NonNull java.util.Map<java.lang.String,java.lang.String> mPackagesToAppCategoryTypes\nprivate @android.annotation.Nullable android.car.watchdog.IoOveruseConfiguration mIoOveruseConfiguration\nclass ResourceOveruseConfiguration extends java.lang.Object implements [android.os.Parcelable]\n@com.android.car.internal.util.DataClass(genToString=true, genBuilder=true, genHiddenConstDefs=true)") 574 @Deprecated 575 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) __metadata()576 private void __metadata() {} 577 578 579 //@formatter:on 580 // End of generated code 581 582 } 583