• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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.internal.pm.pkg.component;
18 
19 import static com.android.internal.pm.parsing.pkg.PackageImpl.sForInternedString;
20 
21 import android.annotation.NonNull;
22 import android.annotation.Nullable;
23 import android.os.Parcel;
24 import android.os.Parcelable;
25 import android.text.TextUtils;
26 
27 import com.android.internal.util.DataClass;
28 import com.android.internal.util.Parcelling.BuiltIn.ForInternedString;
29 
30 import libcore.util.EmptyArray;
31 
32 /**
33  * @hide
34  */
35 @DataClass(genGetters = true, genSetters = true, genBuilder = false, genParcelable = false)
36 public class ParsedMainComponentImpl extends ParsedComponentImpl implements ParsedMainComponent,
37         Parcelable {
38 
39     @Nullable
40     @DataClass.ParcelWith(ForInternedString.class)
41     private String processName;
42     private boolean directBootAware;
43     private boolean enabled = true;
44     private boolean exported;
45     private int order;
46 
47     @Nullable
48     private String splitName;
49     @Nullable
50     private String[] attributionTags;
51 
52     private int mIntentMatchingFlags;
53 
54     /**
55      * Opt-out of all intent filter matching rules. The value corresponds to the <code>none</code>
56      * value of {@link android.R.attr#intentMatchingFlags}
57      * @hide
58      */
59     public static final int INTENT_MATCHING_FLAGS_NONE = 1;
60 
61     /**
62      * Opt-in to enforce intent filter matching. The value corresponds to the
63      * <code>enforceIntentFilter</code> value of {@link android.R.attr#intentMatchingFlags}
64      * @hide
65      */
66     public static final int INTENT_MATCHING_FLAGS_ENFORCE_INTENT_FILTER = 1 << 1;
67 
68     /**
69      * Allows intent filters to match actions even when the action value is null. The value
70      * corresponds to the <code>allowNullAction</code> value of
71      * {@link android.R.attr#intentMatchingFlags}
72      * @hide
73      */
74     public static final int INTENT_MATCHING_FLAGS_ALLOW_NULL_ACTION = 1 << 2;
75 
ParsedMainComponentImpl()76     public ParsedMainComponentImpl() {
77     }
78 
ParsedMainComponentImpl(ParsedMainComponent other)79     public ParsedMainComponentImpl(ParsedMainComponent other) {
80         super(other);
81         this.processName = other.getProcessName();
82         this.directBootAware = other.isDirectBootAware();
83         this.enabled = other.isEnabled();
84         this.exported = other.isExported();
85         this.order = other.getOrder();
86         this.splitName = other.getSplitName();
87         this.attributionTags = other.getAttributionTags();
88     }
89 
setProcessName(String processName)90     public ParsedMainComponentImpl setProcessName(String processName) {
91         this.processName = TextUtils.safeIntern(processName);
92         return this;
93     }
94 
95     /**
96      * A main component's name is a class name. This makes code slightly more readable.
97      */
getClassName()98     public String getClassName() {
99         return getName();
100     }
101 
102     @NonNull
103     @Override
getAttributionTags()104     public String[] getAttributionTags() {
105         return attributionTags == null ? EmptyArray.STRING : attributionTags;
106     }
107 
108     /**
109      * Sets the intent matching flags. This value is intended to be set from the "component" tags.
110      * @see android.R.styleable#AndroidManifestApplication_intentMatchingFlags
111      */
setIntentMatchingFlags(int intentMatchingFlags)112     public ParsedMainComponent setIntentMatchingFlags(int intentMatchingFlags) {
113         mIntentMatchingFlags = intentMatchingFlags;
114         return this;
115     }
116 
117     @Override
getIntentMatchingFlags()118     public int getIntentMatchingFlags() {
119         return this.mIntentMatchingFlags;
120     }
121 
122     @Override
describeContents()123     public int describeContents() {
124         return 0;
125     }
126 
127     @Override
writeToParcel(Parcel dest, int flags)128     public void writeToParcel(Parcel dest, int flags) {
129         super.writeToParcel(dest, flags);
130         sForInternedString.parcel(this.processName, dest, flags);
131         dest.writeBoolean(this.directBootAware);
132         dest.writeBoolean(this.enabled);
133         dest.writeBoolean(this.exported);
134         dest.writeInt(this.order);
135         dest.writeString(this.splitName);
136         dest.writeString8Array(this.attributionTags);
137         dest.writeInt(this.mIntentMatchingFlags);
138     }
139 
ParsedMainComponentImpl(Parcel in)140     protected ParsedMainComponentImpl(Parcel in) {
141         super(in);
142         this.processName = sForInternedString.unparcel(in);
143         this.directBootAware = in.readBoolean();
144         this.enabled = in.readBoolean();
145         this.exported = in.readBoolean();
146         this.order = in.readInt();
147         this.splitName = in.readString();
148         this.attributionTags = in.createString8Array();
149         this.mIntentMatchingFlags = in.readInt();
150     }
151 
152     public static final Parcelable.Creator<ParsedMainComponentImpl> CREATOR =
153             new Parcelable.Creator<ParsedMainComponentImpl>() {
154                 @Override
155                 public ParsedMainComponentImpl createFromParcel(Parcel source) {
156                     return new ParsedMainComponentImpl(source);
157                 }
158 
159                 @Override
160                 public ParsedMainComponentImpl[] newArray(int size) {
161                     return new ParsedMainComponentImpl[size];
162                 }
163             };
164 
165 
166 
167     // Code below generated by codegen v1.0.23.
168     //
169     // DO NOT MODIFY!
170     // CHECKSTYLE:OFF Generated code
171     //
172     // To regenerate run:
173     // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/com/android/internal/pm/pkg/component/ParsedMainComponentImpl.java
174     //
175     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
176     //   Settings > Editor > Code Style > Formatter Control
177     //@formatter:off
178 
179 
180     @android.annotation.IntDef(prefix = "INTENT_MATCHING_FLAGS_", value = {
181         INTENT_MATCHING_FLAGS_NONE,
182         INTENT_MATCHING_FLAGS_ENFORCE_INTENT_FILTER,
183         INTENT_MATCHING_FLAGS_ALLOW_NULL_ACTION
184     })
185     @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE)
186     @DataClass.Generated.Member
187     public @interface IntentMatchingFlags {}
188 
189     @DataClass.Generated.Member
intentMatchingFlagsToString(@ntentMatchingFlags int value)190     public static String intentMatchingFlagsToString(@IntentMatchingFlags int value) {
191         switch (value) {
192             case INTENT_MATCHING_FLAGS_NONE:
193                     return "INTENT_MATCHING_FLAGS_NONE";
194             case INTENT_MATCHING_FLAGS_ENFORCE_INTENT_FILTER:
195                     return "INTENT_MATCHING_FLAGS_ENFORCE_INTENT_FILTER";
196             case INTENT_MATCHING_FLAGS_ALLOW_NULL_ACTION:
197                     return "INTENT_MATCHING_FLAGS_ALLOW_NULL_ACTION";
198             default: return Integer.toHexString(value);
199         }
200     }
201 
202     @DataClass.Generated.Member
ParsedMainComponentImpl( @ullable String processName, boolean directBootAware, boolean enabled, boolean exported, int order, @Nullable String splitName, @Nullable String[] attributionTags, int intentMatchingFlags)203     public ParsedMainComponentImpl(
204             @Nullable String processName,
205             boolean directBootAware,
206             boolean enabled,
207             boolean exported,
208             int order,
209             @Nullable String splitName,
210             @Nullable String[] attributionTags,
211             int intentMatchingFlags) {
212         this.processName = processName;
213         this.directBootAware = directBootAware;
214         this.enabled = enabled;
215         this.exported = exported;
216         this.order = order;
217         this.splitName = splitName;
218         this.attributionTags = attributionTags;
219         this.mIntentMatchingFlags = intentMatchingFlags;
220 
221         // onConstructed(); // You can define this method to get a callback
222     }
223 
224     @DataClass.Generated.Member
getProcessName()225     public @Nullable String getProcessName() {
226         return processName;
227     }
228 
229     @DataClass.Generated.Member
isDirectBootAware()230     public boolean isDirectBootAware() {
231         return directBootAware;
232     }
233 
234     @DataClass.Generated.Member
isEnabled()235     public boolean isEnabled() {
236         return enabled;
237     }
238 
239     @DataClass.Generated.Member
isExported()240     public boolean isExported() {
241         return exported;
242     }
243 
244     @DataClass.Generated.Member
getOrder()245     public int getOrder() {
246         return order;
247     }
248 
249     @DataClass.Generated.Member
getSplitName()250     public @Nullable String getSplitName() {
251         return splitName;
252     }
253 
254     @DataClass.Generated.Member
setDirectBootAware( boolean value)255     public @NonNull ParsedMainComponentImpl setDirectBootAware( boolean value) {
256         directBootAware = value;
257         return this;
258     }
259 
260     @DataClass.Generated.Member
setEnabled( boolean value)261     public @NonNull ParsedMainComponentImpl setEnabled( boolean value) {
262         enabled = value;
263         return this;
264     }
265 
266     @DataClass.Generated.Member
setExported( boolean value)267     public @NonNull ParsedMainComponentImpl setExported( boolean value) {
268         exported = value;
269         return this;
270     }
271 
272     @DataClass.Generated.Member
setOrder( int value)273     public @NonNull ParsedMainComponentImpl setOrder( int value) {
274         order = value;
275         return this;
276     }
277 
278     @DataClass.Generated.Member
setSplitName(@onNull String value)279     public @NonNull ParsedMainComponentImpl setSplitName(@NonNull String value) {
280         splitName = value;
281         return this;
282     }
283 
284     @DataClass.Generated.Member
setAttributionTags(@onNull String... value)285     public @NonNull ParsedMainComponentImpl setAttributionTags(@NonNull String... value) {
286         attributionTags = value;
287         return this;
288     }
289 
290     @DataClass.Generated(
291             time = 1729613643190L,
292             codegenVersion = "1.0.23",
293             sourceFile = "frameworks/base/core/java/com/android/internal/pm/pkg/component/ParsedMainComponentImpl.java",
294             inputSignatures = "private @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String processName\nprivate  boolean directBootAware\nprivate  boolean enabled\nprivate  boolean exported\nprivate  int order\nprivate @android.annotation.Nullable java.lang.String splitName\nprivate @android.annotation.Nullable java.lang.String[] attributionTags\nprivate  int mIntentMatchingFlags\npublic static final  int INTENT_MATCHING_FLAGS_NONE\npublic static final  int INTENT_MATCHING_FLAGS_ENFORCE_INTENT_FILTER\npublic static final  int INTENT_MATCHING_FLAGS_ALLOW_NULL_ACTION\npublic static final  android.os.Parcelable.Creator<com.android.internal.pm.pkg.component.ParsedMainComponentImpl> CREATOR\npublic  com.android.internal.pm.pkg.component.ParsedMainComponentImpl setProcessName(java.lang.String)\npublic  java.lang.String getClassName()\npublic @android.annotation.NonNull @java.lang.Override java.lang.String[] getAttributionTags()\npublic  com.android.internal.pm.pkg.component.ParsedMainComponent setIntentMatchingFlags(int)\npublic @java.lang.Override int getIntentMatchingFlags()\npublic @java.lang.Override int describeContents()\npublic @java.lang.Override void writeToParcel(android.os.Parcel,int)\nclass ParsedMainComponentImpl extends com.android.internal.pm.pkg.component.ParsedComponentImpl implements [com.android.internal.pm.pkg.component.ParsedMainComponent, android.os.Parcelable]\n@com.android.internal.util.DataClass(genGetters=true, genSetters=true, genBuilder=false, genParcelable=false)")
295     @Deprecated
__metadata()296     private void __metadata() {}
297 
298 
299     //@formatter:on
300     // End of generated code
301 
302 }
303