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