• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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