• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 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.statusbar;
18 
19 import android.annotation.NonNull;
20 import android.os.IBinder;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 import android.util.ArrayMap;
24 
25 import com.android.internal.view.AppearanceRegion;
26 
27 /**
28  * An immutable data object to return a set of values from StatusBarManagerService to its clients.
29  */
30 public final class RegisterStatusBarResult implements Parcelable {
31     public final ArrayMap<String, StatusBarIcon> mIcons;
32     public final int mDisabledFlags1;                   // switch[0]
33     public final int mAppearance;                       // switch[1]
34     public final AppearanceRegion[] mAppearanceRegions; // switch[2]
35     public final int mImeWindowVis;                     // switch[3]
36     public final int mImeBackDisposition;               // switch[4]
37     public final boolean mShowImeSwitcher;              // switch[5]
38     public final int mDisabledFlags2;                   // switch[6]
39     public final IBinder mImeToken;
40     public final boolean mNavbarColorManagedByIme;
41     public final int mBehavior;
42     public final boolean mAppFullscreen;
43     public final int[] mTransientBarTypes;
44 
RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1, int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis, int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken, boolean navbarColorManagedByIme, int behavior, boolean appFullscreen, @NonNull int[] transientBarTypes)45     public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1,
46             int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis,
47             int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken,
48             boolean navbarColorManagedByIme, int behavior, boolean appFullscreen,
49             @NonNull int[] transientBarTypes) {
50         mIcons = new ArrayMap<>(icons);
51         mDisabledFlags1 = disabledFlags1;
52         mAppearance = appearance;
53         mAppearanceRegions = appearanceRegions;
54         mImeWindowVis = imeWindowVis;
55         mImeBackDisposition = imeBackDisposition;
56         mShowImeSwitcher = showImeSwitcher;
57         mDisabledFlags2 = disabledFlags2;
58         mImeToken = imeToken;
59         mNavbarColorManagedByIme = navbarColorManagedByIme;
60         mBehavior = behavior;
61         mAppFullscreen = appFullscreen;
62         mTransientBarTypes = transientBarTypes;
63     }
64 
65     @Override
describeContents()66     public int describeContents() {
67         return 0;
68     }
69 
70     @Override
writeToParcel(Parcel dest, int flags)71     public void writeToParcel(Parcel dest, int flags) {
72         dest.writeTypedArrayMap(mIcons, flags);
73         dest.writeInt(mDisabledFlags1);
74         dest.writeInt(mAppearance);
75         dest.writeParcelableArray(mAppearanceRegions, 0);
76         dest.writeInt(mImeWindowVis);
77         dest.writeInt(mImeBackDisposition);
78         dest.writeBoolean(mShowImeSwitcher);
79         dest.writeInt(mDisabledFlags2);
80         dest.writeStrongBinder(mImeToken);
81         dest.writeBoolean(mNavbarColorManagedByIme);
82         dest.writeInt(mBehavior);
83         dest.writeBoolean(mAppFullscreen);
84         dest.writeIntArray(mTransientBarTypes);
85     }
86 
87     /**
88      * Used to make this class parcelable.
89      */
90     public static final Parcelable.Creator<RegisterStatusBarResult> CREATOR =
91             new Parcelable.Creator<RegisterStatusBarResult>() {
92                 @Override
93                 public RegisterStatusBarResult createFromParcel(Parcel source) {
94                     final ArrayMap<String, StatusBarIcon> icons =
95                             source.createTypedArrayMap(StatusBarIcon.CREATOR);
96                     final int disabledFlags1 = source.readInt();
97                     final int appearance = source.readInt();
98                     final AppearanceRegion[] appearanceRegions =
99                             source.readParcelableArray(null, AppearanceRegion.class);
100                     final int imeWindowVis = source.readInt();
101                     final int imeBackDisposition = source.readInt();
102                     final boolean showImeSwitcher = source.readBoolean();
103                     final int disabledFlags2 = source.readInt();
104                     final IBinder imeToken = source.readStrongBinder();
105                     final boolean navbarColorManagedByIme = source.readBoolean();
106                     final int behavior = source.readInt();
107                     final boolean appFullscreen = source.readBoolean();
108                     final int[] transientBarTypes = source.createIntArray();
109                     return new RegisterStatusBarResult(icons, disabledFlags1, appearance,
110                             appearanceRegions, imeWindowVis, imeBackDisposition, showImeSwitcher,
111                             disabledFlags2, imeToken, navbarColorManagedByIme, behavior,
112                             appFullscreen, transientBarTypes);
113                 }
114 
115                 @Override
116                 public RegisterStatusBarResult[] newArray(int size) {
117                     return new RegisterStatusBarResult[size];
118                 }
119             };
120 }
121