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