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.server.pm.pkg.component;
18 
19 import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE;
20 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
21 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION;
22 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
23 import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_UNSPECIFIED;
24 
25 import static com.android.server.pm.parsing.pkg.PackageImpl.sForInternedString;
26 import static com.android.server.pm.parsing.pkg.PackageImpl.sForStringSet;
27 
28 import android.annotation.NonNull;
29 import android.annotation.Nullable;
30 import android.app.ActivityTaskManager;
31 import android.content.ComponentName;
32 import android.content.pm.ActivityInfo;
33 import android.content.pm.PackageManager;
34 import android.os.Parcel;
35 import android.os.Parcelable;
36 import android.text.TextUtils;
37 import android.util.ArraySet;
38 
39 import com.android.internal.annotations.VisibleForTesting;
40 import com.android.internal.util.DataClass;
41 import com.android.internal.util.Parcelling.BuiltIn.ForInternedString;
42 import com.android.server.pm.pkg.parsing.ParsingUtils;
43 
44 import java.util.Collections;
45 import java.util.Locale;
46 import java.util.Set;
47 
48 /**
49  * @hide
50  **/
51 @DataClass(genGetters = true, genSetters = true, genBuilder = false, genParcelable = false)
52 @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
53 public class ParsedActivityImpl extends ParsedMainComponentImpl implements ParsedActivity,
54         Parcelable {
55 
56     private int theme;
57     private int uiOptions;
58 
59     @Nullable
60     @DataClass.ParcelWith(ForInternedString.class)
61     private String targetActivity;
62 
63     @Nullable
64     @DataClass.ParcelWith(ForInternedString.class)
65     private String parentActivityName;
66     @Nullable
67     private String taskAffinity;
68     private int privateFlags;
69     @Nullable
70     @DataClass.ParcelWith(ForInternedString.class)
71     private String permission;
72     @Nullable
73     private Set<String> mKnownActivityEmbeddingCerts;
74 
75     private int launchMode;
76     private int documentLaunchMode;
77     private int maxRecents;
78     private int configChanges;
79     private int softInputMode;
80     private int persistableMode;
81     private int lockTaskLaunchMode;
82 
83     private int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
84     private int resizeMode = ActivityInfo.RESIZE_MODE_RESIZEABLE;
85 
86     private float maxAspectRatio = ParsingUtils.NOT_SET;
87     private float minAspectRatio = ParsingUtils.NOT_SET;
88 
89     private boolean supportsSizeChanges;
90 
91     @Nullable
92     private String requestedVrComponent;
93     private int rotationAnimation = -1;
94     private int colorMode;
95 
96     @Nullable
97     private ActivityInfo.WindowLayout windowLayout;
98 
99     @Nullable
100     private String mRequiredDisplayCategory;
101 
ParsedActivityImpl(ParsedActivityImpl other)102     public ParsedActivityImpl(ParsedActivityImpl other) {
103         super(other);
104         this.theme = other.theme;
105         this.uiOptions = other.uiOptions;
106         this.targetActivity = other.targetActivity;
107         this.parentActivityName = other.parentActivityName;
108         this.taskAffinity = other.taskAffinity;
109         this.privateFlags = other.privateFlags;
110         this.permission = other.permission;
111         this.launchMode = other.launchMode;
112         this.documentLaunchMode = other.documentLaunchMode;
113         this.maxRecents = other.maxRecents;
114         this.configChanges = other.configChanges;
115         this.softInputMode = other.softInputMode;
116         this.persistableMode = other.persistableMode;
117         this.lockTaskLaunchMode = other.lockTaskLaunchMode;
118         this.screenOrientation = other.screenOrientation;
119         this.resizeMode = other.resizeMode;
120         this.maxAspectRatio = other.maxAspectRatio;
121         this.minAspectRatio = other.minAspectRatio;
122         this.supportsSizeChanges = other.supportsSizeChanges;
123         this.requestedVrComponent = other.requestedVrComponent;
124         this.rotationAnimation = other.rotationAnimation;
125         this.colorMode = other.colorMode;
126         this.windowLayout = other.windowLayout;
127         this.mKnownActivityEmbeddingCerts = other.mKnownActivityEmbeddingCerts;
128         this.mRequiredDisplayCategory = other.mRequiredDisplayCategory;
129     }
130 
131     /**
132      * Generate activity object that forwards user to App Details page automatically. This activity
133      * should be invisible to user and user should not know or see it.
134      */
135     @NonNull
makeAppDetailsActivity(String packageName, String processName, int uiOptions, String taskAffinity, boolean hardwareAccelerated)136     static ParsedActivityImpl makeAppDetailsActivity(String packageName, String processName,
137             int uiOptions, String taskAffinity, boolean hardwareAccelerated) {
138         ParsedActivityImpl activity = new ParsedActivityImpl();
139         activity.setPackageName(packageName);
140         activity.theme = android.R.style.Theme_NoDisplay;
141         activity.setExported(true);
142         activity.setName(PackageManager.APP_DETAILS_ACTIVITY_CLASS_NAME);
143         activity.setProcessName(processName);
144         activity.uiOptions = uiOptions;
145         activity.taskAffinity = taskAffinity;
146         activity.launchMode = ActivityInfo.LAUNCH_MULTIPLE;
147         activity.documentLaunchMode = ActivityInfo.DOCUMENT_LAUNCH_NONE;
148         activity.maxRecents = ActivityTaskManager.getDefaultAppRecentsLimitStatic();
149         activity.configChanges = ParsedActivityUtils.getActivityConfigChanges(0, 0);
150         activity.softInputMode = 0;
151         activity.persistableMode = ActivityInfo.PERSIST_NEVER;
152         activity.screenOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
153         activity.resizeMode = RESIZE_MODE_FORCE_RESIZEABLE;
154         activity.lockTaskLaunchMode = 0;
155         activity.setDirectBootAware(false);
156         activity.rotationAnimation = ROTATION_ANIMATION_UNSPECIFIED;
157         activity.colorMode = ActivityInfo.COLOR_MODE_DEFAULT;
158         if (hardwareAccelerated) {
159             activity.setFlags(activity.getFlags() | ActivityInfo.FLAG_HARDWARE_ACCELERATED);
160         }
161         return activity;
162     }
163 
164     @NonNull
makeAlias(String targetActivityName, ParsedActivity target)165     static ParsedActivityImpl makeAlias(String targetActivityName, ParsedActivity target) {
166         ParsedActivityImpl alias = new ParsedActivityImpl();
167         alias.setPackageName(target.getPackageName());
168         alias.setTargetActivity(targetActivityName);
169         alias.configChanges = target.getConfigChanges();
170         alias.setFlags(target.getFlags());
171         alias.privateFlags = target.getPrivateFlags();
172         alias.setIcon(target.getIcon());
173         alias.setLogo(target.getLogo());
174         alias.setBanner(target.getBanner());
175         alias.setLabelRes(target.getLabelRes());
176         alias.setNonLocalizedLabel(target.getNonLocalizedLabel());
177         alias.launchMode = target.getLaunchMode();
178         alias.lockTaskLaunchMode = target.getLockTaskLaunchMode();
179         alias.documentLaunchMode = target.getDocumentLaunchMode();
180         alias.setDescriptionRes(target.getDescriptionRes());
181         alias.screenOrientation = target.getScreenOrientation();
182         alias.taskAffinity = target.getTaskAffinity();
183         alias.theme = target.getTheme();
184         alias.softInputMode = target.getSoftInputMode();
185         alias.uiOptions = target.getUiOptions();
186         alias.parentActivityName = target.getParentActivityName();
187         alias.maxRecents = target.getMaxRecents();
188         alias.windowLayout = target.getWindowLayout();
189         alias.resizeMode = target.getResizeMode();
190         alias.maxAspectRatio = target.getMaxAspectRatio();
191         alias.minAspectRatio = target.getMinAspectRatio();
192         alias.supportsSizeChanges = target.isSupportsSizeChanges();
193         alias.requestedVrComponent = target.getRequestedVrComponent();
194         alias.setDirectBootAware(target.isDirectBootAware());
195         alias.setProcessName(target.getProcessName());
196         alias.setRequiredDisplayCategory(target.getRequiredDisplayCategory());
197         return alias;
198 
199         // Not all attributes from the target ParsedActivity are copied to the alias.
200         // Careful when adding an attribute and determine whether or not it should be copied.
201 //        alias.enabled = target.enabled;
202 //        alias.exported = target.exported;
203 //        alias.permission = target.permission;
204 //        alias.splitName = target.splitName;
205 //        alias.persistableMode = target.persistableMode;
206 //        alias.rotationAnimation = target.rotationAnimation;
207 //        alias.colorMode = target.colorMode;
208 //        alias.intents.addAll(target.intents);
209 //        alias.order = target.order;
210 //        alias.metaData = target.metaData;
211     }
212 
setMaxAspectRatio(int resizeMode, float maxAspectRatio)213     public ParsedActivityImpl setMaxAspectRatio(int resizeMode, float maxAspectRatio) {
214         if (resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE
215                 || resizeMode == ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) {
216             // Resizeable activities can be put in any aspect ratio.
217             return this;
218         }
219 
220         if (maxAspectRatio < 1.0f && maxAspectRatio != 0) {
221             // Ignore any value lesser than 1.0.
222             return this;
223         }
224 
225         this.maxAspectRatio = maxAspectRatio;
226         return this;
227     }
228 
setMinAspectRatio(int resizeMode, float minAspectRatio)229     public ParsedActivityImpl setMinAspectRatio(int resizeMode, float minAspectRatio) {
230         if (resizeMode == RESIZE_MODE_RESIZEABLE
231                 || resizeMode == RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION) {
232             // Resizeable activities can be put in any aspect ratio.
233             return this;
234         }
235 
236         if (minAspectRatio < 1.0f && minAspectRatio != 0) {
237             // Ignore any value lesser than 1.0.
238             return this;
239         }
240 
241         this.minAspectRatio = minAspectRatio;
242         return this;
243     }
244 
setTargetActivity(String targetActivity)245     public ParsedActivityImpl setTargetActivity(String targetActivity) {
246         this.targetActivity = TextUtils.safeIntern(targetActivity);
247         return this;
248     }
249 
setPermission(String permission)250     public ParsedActivityImpl setPermission(String permission) {
251         // Empty string must be converted to null
252         this.permission = TextUtils.isEmpty(permission) ? null : permission.intern();
253         return this;
254     }
255 
256     @NonNull
257     @Override
getKnownActivityEmbeddingCerts()258     public Set<String> getKnownActivityEmbeddingCerts() {
259         return mKnownActivityEmbeddingCerts == null ? Collections.emptySet()
260                 : mKnownActivityEmbeddingCerts;
261     }
262 
263     /**
264      * Sets the trusted host certificates of apps that are allowed to embed this activity.
265      */
setKnownActivityEmbeddingCerts(@onNull Set<String> knownActivityEmbeddingCerts)266     public void setKnownActivityEmbeddingCerts(@NonNull Set<String> knownActivityEmbeddingCerts) {
267         // Convert the provided digest to upper case for consistent Set membership
268         // checks when verifying the signing certificate digests of requesting apps.
269         this.mKnownActivityEmbeddingCerts = new ArraySet<>();
270         for (String knownCert : knownActivityEmbeddingCerts) {
271             this.mKnownActivityEmbeddingCerts.add(knownCert.toUpperCase(Locale.US));
272         }
273     }
274 
toString()275     public String toString() {
276         StringBuilder sb = new StringBuilder(128);
277         sb.append("Activity{");
278         sb.append(Integer.toHexString(System.identityHashCode(this)));
279         sb.append(' ');
280         ComponentName.appendShortString(sb, getPackageName(), getName());
281         sb.append('}');
282         return sb.toString();
283     }
284 
285     @Override
describeContents()286     public int describeContents() {
287         return 0;
288     }
289 
290     @Override
writeToParcel(Parcel dest, int flags)291     public void writeToParcel(Parcel dest, int flags) {
292         super.writeToParcel(dest, flags);
293         dest.writeInt(this.theme);
294         dest.writeInt(this.uiOptions);
295         dest.writeString(this.targetActivity);
296         dest.writeString(this.parentActivityName);
297         dest.writeString(this.taskAffinity);
298         dest.writeInt(this.privateFlags);
299         sForInternedString.parcel(this.permission, dest, flags);
300         dest.writeInt(this.launchMode);
301         dest.writeInt(this.documentLaunchMode);
302         dest.writeInt(this.maxRecents);
303         dest.writeInt(this.configChanges);
304         dest.writeInt(this.softInputMode);
305         dest.writeInt(this.persistableMode);
306         dest.writeInt(this.lockTaskLaunchMode);
307         dest.writeInt(this.screenOrientation);
308         dest.writeInt(this.resizeMode);
309         dest.writeValue(this.maxAspectRatio);
310         dest.writeValue(this.minAspectRatio);
311         dest.writeBoolean(this.supportsSizeChanges);
312         dest.writeString(this.requestedVrComponent);
313         dest.writeInt(this.rotationAnimation);
314         dest.writeInt(this.colorMode);
315         dest.writeBundle(this.getMetaData());
316 
317         if (windowLayout != null) {
318             dest.writeInt(1);
319             windowLayout.writeToParcel(dest);
320         } else {
321             dest.writeBoolean(false);
322         }
323         sForStringSet.parcel(this.mKnownActivityEmbeddingCerts, dest, flags);
324         dest.writeString8(this.mRequiredDisplayCategory);
325     }
326 
ParsedActivityImpl()327     public ParsedActivityImpl() {
328     }
329 
ParsedActivityImpl(Parcel in)330     protected ParsedActivityImpl(Parcel in) {
331         super(in);
332         this.theme = in.readInt();
333         this.uiOptions = in.readInt();
334         this.targetActivity = in.readString();
335         this.parentActivityName = in.readString();
336         this.taskAffinity = in.readString();
337         this.privateFlags = in.readInt();
338         this.permission = sForInternedString.unparcel(in);
339         this.launchMode = in.readInt();
340         this.documentLaunchMode = in.readInt();
341         this.maxRecents = in.readInt();
342         this.configChanges = in.readInt();
343         this.softInputMode = in.readInt();
344         this.persistableMode = in.readInt();
345         this.lockTaskLaunchMode = in.readInt();
346         this.screenOrientation = in.readInt();
347         this.resizeMode = in.readInt();
348         this.maxAspectRatio = (Float) in.readValue(Float.class.getClassLoader());
349         this.minAspectRatio = (Float) in.readValue(Float.class.getClassLoader());
350         this.supportsSizeChanges = in.readBoolean();
351         this.requestedVrComponent = in.readString();
352         this.rotationAnimation = in.readInt();
353         this.colorMode = in.readInt();
354         this.setMetaData(in.readBundle());
355         if (in.readBoolean()) {
356             windowLayout = new ActivityInfo.WindowLayout(in);
357         }
358         this.mKnownActivityEmbeddingCerts = sForStringSet.unparcel(in);
359         this.mRequiredDisplayCategory = in.readString8();
360     }
361 
362     @NonNull
363     public static final Parcelable.Creator<ParsedActivityImpl> CREATOR =
364             new Parcelable.Creator<ParsedActivityImpl>() {
365         @Override
366         public ParsedActivityImpl createFromParcel(Parcel source) {
367             return new ParsedActivityImpl(source);
368         }
369 
370         @Override
371         public ParsedActivityImpl[] newArray(int size) {
372             return new ParsedActivityImpl[size];
373         }
374     };
375 
376 
377 
378     // Code below generated by codegen v1.0.23.
379     //
380     // DO NOT MODIFY!
381     // CHECKSTYLE:OFF Generated code
382     //
383     // To regenerate run:
384     // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/component/ParsedActivityImpl.java
385     //
386     // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
387     //   Settings > Editor > Code Style > Formatter Control
388     //@formatter:off
389 
390 
391     @DataClass.Generated.Member
ParsedActivityImpl( int theme, int uiOptions, @Nullable String targetActivity, @Nullable String parentActivityName, @Nullable String taskAffinity, int privateFlags, @Nullable String permission, @Nullable Set<String> knownActivityEmbeddingCerts, int launchMode, int documentLaunchMode, int maxRecents, int configChanges, int softInputMode, int persistableMode, int lockTaskLaunchMode, int screenOrientation, int resizeMode, float maxAspectRatio, float minAspectRatio, boolean supportsSizeChanges, @Nullable String requestedVrComponent, int rotationAnimation, int colorMode, @Nullable ActivityInfo.WindowLayout windowLayout, @Nullable String requiredDisplayCategory)392     public ParsedActivityImpl(
393             int theme,
394             int uiOptions,
395             @Nullable String targetActivity,
396             @Nullable String parentActivityName,
397             @Nullable String taskAffinity,
398             int privateFlags,
399             @Nullable String permission,
400             @Nullable Set<String> knownActivityEmbeddingCerts,
401             int launchMode,
402             int documentLaunchMode,
403             int maxRecents,
404             int configChanges,
405             int softInputMode,
406             int persistableMode,
407             int lockTaskLaunchMode,
408             int screenOrientation,
409             int resizeMode,
410             float maxAspectRatio,
411             float minAspectRatio,
412             boolean supportsSizeChanges,
413             @Nullable String requestedVrComponent,
414             int rotationAnimation,
415             int colorMode,
416             @Nullable ActivityInfo.WindowLayout windowLayout,
417             @Nullable String requiredDisplayCategory) {
418         this.theme = theme;
419         this.uiOptions = uiOptions;
420         this.targetActivity = targetActivity;
421         this.parentActivityName = parentActivityName;
422         this.taskAffinity = taskAffinity;
423         this.privateFlags = privateFlags;
424         this.permission = permission;
425         this.mKnownActivityEmbeddingCerts = knownActivityEmbeddingCerts;
426         this.launchMode = launchMode;
427         this.documentLaunchMode = documentLaunchMode;
428         this.maxRecents = maxRecents;
429         this.configChanges = configChanges;
430         this.softInputMode = softInputMode;
431         this.persistableMode = persistableMode;
432         this.lockTaskLaunchMode = lockTaskLaunchMode;
433         this.screenOrientation = screenOrientation;
434         this.resizeMode = resizeMode;
435         this.maxAspectRatio = maxAspectRatio;
436         this.minAspectRatio = minAspectRatio;
437         this.supportsSizeChanges = supportsSizeChanges;
438         this.requestedVrComponent = requestedVrComponent;
439         this.rotationAnimation = rotationAnimation;
440         this.colorMode = colorMode;
441         this.windowLayout = windowLayout;
442         this.mRequiredDisplayCategory = requiredDisplayCategory;
443 
444         // onConstructed(); // You can define this method to get a callback
445     }
446 
447     @DataClass.Generated.Member
getTheme()448     public int getTheme() {
449         return theme;
450     }
451 
452     @DataClass.Generated.Member
getUiOptions()453     public int getUiOptions() {
454         return uiOptions;
455     }
456 
457     @DataClass.Generated.Member
getTargetActivity()458     public @Nullable String getTargetActivity() {
459         return targetActivity;
460     }
461 
462     @DataClass.Generated.Member
getParentActivityName()463     public @Nullable String getParentActivityName() {
464         return parentActivityName;
465     }
466 
467     @DataClass.Generated.Member
getTaskAffinity()468     public @Nullable String getTaskAffinity() {
469         return taskAffinity;
470     }
471 
472     @DataClass.Generated.Member
getPrivateFlags()473     public int getPrivateFlags() {
474         return privateFlags;
475     }
476 
477     @DataClass.Generated.Member
getPermission()478     public @Nullable String getPermission() {
479         return permission;
480     }
481 
482     @DataClass.Generated.Member
getLaunchMode()483     public int getLaunchMode() {
484         return launchMode;
485     }
486 
487     @DataClass.Generated.Member
getDocumentLaunchMode()488     public int getDocumentLaunchMode() {
489         return documentLaunchMode;
490     }
491 
492     @DataClass.Generated.Member
getMaxRecents()493     public int getMaxRecents() {
494         return maxRecents;
495     }
496 
497     @DataClass.Generated.Member
getConfigChanges()498     public int getConfigChanges() {
499         return configChanges;
500     }
501 
502     @DataClass.Generated.Member
getSoftInputMode()503     public int getSoftInputMode() {
504         return softInputMode;
505     }
506 
507     @DataClass.Generated.Member
getPersistableMode()508     public int getPersistableMode() {
509         return persistableMode;
510     }
511 
512     @DataClass.Generated.Member
getLockTaskLaunchMode()513     public int getLockTaskLaunchMode() {
514         return lockTaskLaunchMode;
515     }
516 
517     @DataClass.Generated.Member
getScreenOrientation()518     public int getScreenOrientation() {
519         return screenOrientation;
520     }
521 
522     @DataClass.Generated.Member
getResizeMode()523     public int getResizeMode() {
524         return resizeMode;
525     }
526 
527     @DataClass.Generated.Member
getMaxAspectRatio()528     public float getMaxAspectRatio() {
529         return maxAspectRatio;
530     }
531 
532     @DataClass.Generated.Member
getMinAspectRatio()533     public float getMinAspectRatio() {
534         return minAspectRatio;
535     }
536 
537     @DataClass.Generated.Member
isSupportsSizeChanges()538     public boolean isSupportsSizeChanges() {
539         return supportsSizeChanges;
540     }
541 
542     @DataClass.Generated.Member
getRequestedVrComponent()543     public @Nullable String getRequestedVrComponent() {
544         return requestedVrComponent;
545     }
546 
547     @DataClass.Generated.Member
getRotationAnimation()548     public int getRotationAnimation() {
549         return rotationAnimation;
550     }
551 
552     @DataClass.Generated.Member
getColorMode()553     public int getColorMode() {
554         return colorMode;
555     }
556 
557     @DataClass.Generated.Member
getWindowLayout()558     public @Nullable ActivityInfo.WindowLayout getWindowLayout() {
559         return windowLayout;
560     }
561 
562     @DataClass.Generated.Member
getRequiredDisplayCategory()563     public @Nullable String getRequiredDisplayCategory() {
564         return mRequiredDisplayCategory;
565     }
566 
567     @DataClass.Generated.Member
setTheme( int value)568     public @NonNull ParsedActivityImpl setTheme( int value) {
569         theme = value;
570         return this;
571     }
572 
573     @DataClass.Generated.Member
setUiOptions( int value)574     public @NonNull ParsedActivityImpl setUiOptions( int value) {
575         uiOptions = value;
576         return this;
577     }
578 
579     @DataClass.Generated.Member
setParentActivityName(@onNull String value)580     public @NonNull ParsedActivityImpl setParentActivityName(@NonNull String value) {
581         parentActivityName = value;
582         return this;
583     }
584 
585     @DataClass.Generated.Member
setTaskAffinity(@onNull String value)586     public @NonNull ParsedActivityImpl setTaskAffinity(@NonNull String value) {
587         taskAffinity = value;
588         return this;
589     }
590 
591     @DataClass.Generated.Member
setPrivateFlags( int value)592     public @NonNull ParsedActivityImpl setPrivateFlags( int value) {
593         privateFlags = value;
594         return this;
595     }
596 
597     @DataClass.Generated.Member
setLaunchMode( int value)598     public @NonNull ParsedActivityImpl setLaunchMode( int value) {
599         launchMode = value;
600         return this;
601     }
602 
603     @DataClass.Generated.Member
setDocumentLaunchMode( int value)604     public @NonNull ParsedActivityImpl setDocumentLaunchMode( int value) {
605         documentLaunchMode = value;
606         return this;
607     }
608 
609     @DataClass.Generated.Member
setMaxRecents( int value)610     public @NonNull ParsedActivityImpl setMaxRecents( int value) {
611         maxRecents = value;
612         return this;
613     }
614 
615     @DataClass.Generated.Member
setConfigChanges( int value)616     public @NonNull ParsedActivityImpl setConfigChanges( int value) {
617         configChanges = value;
618         return this;
619     }
620 
621     @DataClass.Generated.Member
setSoftInputMode( int value)622     public @NonNull ParsedActivityImpl setSoftInputMode( int value) {
623         softInputMode = value;
624         return this;
625     }
626 
627     @DataClass.Generated.Member
setPersistableMode( int value)628     public @NonNull ParsedActivityImpl setPersistableMode( int value) {
629         persistableMode = value;
630         return this;
631     }
632 
633     @DataClass.Generated.Member
setLockTaskLaunchMode( int value)634     public @NonNull ParsedActivityImpl setLockTaskLaunchMode( int value) {
635         lockTaskLaunchMode = value;
636         return this;
637     }
638 
639     @DataClass.Generated.Member
setScreenOrientation( int value)640     public @NonNull ParsedActivityImpl setScreenOrientation( int value) {
641         screenOrientation = value;
642         return this;
643     }
644 
645     @DataClass.Generated.Member
setResizeMode( int value)646     public @NonNull ParsedActivityImpl setResizeMode( int value) {
647         resizeMode = value;
648         return this;
649     }
650 
651     @DataClass.Generated.Member
setMaxAspectRatio( float value)652     public @NonNull ParsedActivityImpl setMaxAspectRatio( float value) {
653         maxAspectRatio = value;
654         return this;
655     }
656 
657     @DataClass.Generated.Member
setMinAspectRatio( float value)658     public @NonNull ParsedActivityImpl setMinAspectRatio( float value) {
659         minAspectRatio = value;
660         return this;
661     }
662 
663     @DataClass.Generated.Member
setSupportsSizeChanges( boolean value)664     public @NonNull ParsedActivityImpl setSupportsSizeChanges( boolean value) {
665         supportsSizeChanges = value;
666         return this;
667     }
668 
669     @DataClass.Generated.Member
setRequestedVrComponent(@onNull String value)670     public @NonNull ParsedActivityImpl setRequestedVrComponent(@NonNull String value) {
671         requestedVrComponent = value;
672         return this;
673     }
674 
675     @DataClass.Generated.Member
setRotationAnimation( int value)676     public @NonNull ParsedActivityImpl setRotationAnimation( int value) {
677         rotationAnimation = value;
678         return this;
679     }
680 
681     @DataClass.Generated.Member
setColorMode( int value)682     public @NonNull ParsedActivityImpl setColorMode( int value) {
683         colorMode = value;
684         return this;
685     }
686 
687     @DataClass.Generated.Member
setWindowLayout(@onNull ActivityInfo.WindowLayout value)688     public @NonNull ParsedActivityImpl setWindowLayout(@NonNull ActivityInfo.WindowLayout value) {
689         windowLayout = value;
690         return this;
691     }
692 
693     @DataClass.Generated.Member
setRequiredDisplayCategory(@onNull String value)694     public @NonNull ParsedActivityImpl setRequiredDisplayCategory(@NonNull String value) {
695         mRequiredDisplayCategory = value;
696         return this;
697     }
698 
699     @DataClass.Generated(
700             time = 1669437519576L,
701             codegenVersion = "1.0.23",
702             sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/component/ParsedActivityImpl.java",
703             inputSignatures = "private  int theme\nprivate  int uiOptions\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String targetActivity\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String parentActivityName\nprivate @android.annotation.Nullable java.lang.String taskAffinity\nprivate  int privateFlags\nprivate @android.annotation.Nullable @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInternedString.class) java.lang.String permission\nprivate @android.annotation.Nullable java.util.Set<java.lang.String> mKnownActivityEmbeddingCerts\nprivate  int launchMode\nprivate  int documentLaunchMode\nprivate  int maxRecents\nprivate  int configChanges\nprivate  int softInputMode\nprivate  int persistableMode\nprivate  int lockTaskLaunchMode\nprivate  int screenOrientation\nprivate  int resizeMode\nprivate  float maxAspectRatio\nprivate  float minAspectRatio\nprivate  boolean supportsSizeChanges\nprivate @android.annotation.Nullable java.lang.String requestedVrComponent\nprivate  int rotationAnimation\nprivate  int colorMode\nprivate @android.annotation.Nullable android.content.pm.ActivityInfo.WindowLayout windowLayout\nprivate @android.annotation.Nullable java.lang.String mRequiredDisplayCategory\npublic static final @android.annotation.NonNull android.os.Parcelable.Creator<com.android.server.pm.pkg.component.ParsedActivityImpl> CREATOR\nstatic @android.annotation.NonNull com.android.server.pm.pkg.component.ParsedActivityImpl makeAppDetailsActivity(java.lang.String,java.lang.String,int,java.lang.String,boolean)\nstatic @android.annotation.NonNull com.android.server.pm.pkg.component.ParsedActivityImpl makeAlias(java.lang.String,com.android.server.pm.pkg.component.ParsedActivity)\npublic  com.android.server.pm.pkg.component.ParsedActivityImpl setMaxAspectRatio(int,float)\npublic  com.android.server.pm.pkg.component.ParsedActivityImpl setMinAspectRatio(int,float)\npublic  com.android.server.pm.pkg.component.ParsedActivityImpl setTargetActivity(java.lang.String)\npublic  com.android.server.pm.pkg.component.ParsedActivityImpl setPermission(java.lang.String)\npublic @android.annotation.NonNull @java.lang.Override java.util.Set<java.lang.String> getKnownActivityEmbeddingCerts()\npublic  void setKnownActivityEmbeddingCerts(java.util.Set<java.lang.String>)\npublic  java.lang.String toString()\npublic @java.lang.Override int describeContents()\npublic @java.lang.Override void writeToParcel(android.os.Parcel,int)\nclass ParsedActivityImpl extends com.android.server.pm.pkg.component.ParsedMainComponentImpl implements [com.android.server.pm.pkg.component.ParsedActivity, android.os.Parcelable]\n@com.android.internal.util.DataClass(genGetters=true, genSetters=true, genBuilder=false, genParcelable=false)")
704     @Deprecated
__metadata()705     private void __metadata() {}
706 
707 
708     //@formatter:on
709     // End of generated code
710 
711 }
712