Merge "Create API for WM to send letterbox info to SysUI." into tm-qpr-dev am: fb27457c53
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19032748 Change-Id: If10ac7a41f17332c3bdd5ace51aa436c7b9f8e26 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -33,6 +33,7 @@ import android.view.InsetsVisibilities;
|
|||||||
|
|
||||||
import com.android.internal.statusbar.IAddTileResultCallback;
|
import com.android.internal.statusbar.IAddTileResultCallback;
|
||||||
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.statusbar.StatusBarIcon;
|
import com.android.internal.statusbar.StatusBarIcon;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
|
|
||||||
@@ -202,10 +203,12 @@ oneway interface IStatusBar
|
|||||||
* @param behavior the behavior of the focused window.
|
* @param behavior the behavior of the focused window.
|
||||||
* @param requestedVisibilities the collection of the requested visibilities of system insets.
|
* @param requestedVisibilities the collection of the requested visibilities of system insets.
|
||||||
* @param packageName the package name of the focused app.
|
* @param packageName the package name of the focused app.
|
||||||
|
* @param letterboxDetails a set of letterbox details of apps visible on the screen.
|
||||||
*/
|
*/
|
||||||
void onSystemBarAttributesChanged(int displayId, int appearance,
|
void onSystemBarAttributesChanged(int displayId, int appearance,
|
||||||
in AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
in AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
int behavior, in InsetsVisibilities requestedVisibilities, String packageName);
|
int behavior, in InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
in LetterboxDetails[] letterboxDetails);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies System UI to show transient bars. The transient bars are system bars, e.g., status
|
* Notifies System UI to show transient bars. The transient bars are system bars, e.g., status
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.internal.statusbar;
|
||||||
|
|
||||||
|
parcelable LetterboxDetails;
|
||||||
243
core/java/com/android/internal/statusbar/LetterboxDetails.java
Normal file
243
core/java/com/android/internal/statusbar/LetterboxDetails.java
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2022 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.internal.statusbar;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
|
import android.annotation.Nullable;
|
||||||
|
import android.graphics.Rect;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
import android.view.InsetsFlags;
|
||||||
|
import android.view.ViewDebug;
|
||||||
|
import android.view.WindowInsetsController.Appearance;
|
||||||
|
|
||||||
|
import com.android.internal.util.DataClass;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Details about the letterbox state of an app.
|
||||||
|
*/
|
||||||
|
@DataClass(
|
||||||
|
genParcelable = true,
|
||||||
|
genAidl = true,
|
||||||
|
genToString = true,
|
||||||
|
genGetters = false,
|
||||||
|
genEqualsHashCode = true
|
||||||
|
)
|
||||||
|
public class LetterboxDetails implements Parcelable {
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private final Rect mLetterboxInnerBounds;
|
||||||
|
@NonNull
|
||||||
|
private final Rect mLetterboxFullBounds;
|
||||||
|
private final int mAppAppearance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the bounds of the inner letterbox (app content).
|
||||||
|
*
|
||||||
|
* <p>When an app is letterboxed, it is not using the full bounds of its window. Here we return
|
||||||
|
* the bounds that are being used for the app content.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* +-------+---------+-------+
|
||||||
|
* | | | |
|
||||||
|
* | | | |
|
||||||
|
* | Outer | Inner | Outer |
|
||||||
|
* | | | |
|
||||||
|
* | | | |
|
||||||
|
* +-------+-------- +-------+
|
||||||
|
* <pre>
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
public Rect getLetterboxInnerBounds() {
|
||||||
|
return mLetterboxInnerBounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the full bounds of the letterbox.
|
||||||
|
*
|
||||||
|
* <p>These are the entire bounds of the window where the app is placed. We cannot assume that
|
||||||
|
* the full bounds are the bounds of the screen, as the app can be in split-screen, or can have
|
||||||
|
* some margin due to display cutouts.
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
* ---- Full bounds width ----
|
||||||
|
* +-------+---------+-------+ |
|
||||||
|
* | | | | |
|
||||||
|
* | | | | |
|
||||||
|
* | Outer | Inner | Outer | + Full bounds height
|
||||||
|
* | | | | |
|
||||||
|
* | | | | |
|
||||||
|
* +-------+-------- +-------+ |
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@NonNull
|
||||||
|
public Rect getLetterboxFullBounds() {
|
||||||
|
return mLetterboxFullBounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the {@link Appearance} of the inner letterbox (app content).
|
||||||
|
*/
|
||||||
|
@Appearance
|
||||||
|
public int getAppAppearance() {
|
||||||
|
return mAppAppearance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns a string representation of the {@link #getAppAppearance()} property. */
|
||||||
|
public String appAppearanceToString() {
|
||||||
|
return ViewDebug.flagsToString(InsetsFlags.class, "appearance", mAppAppearance);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Code below generated by codegen v1.0.23.
|
||||||
|
//
|
||||||
|
// DO NOT MODIFY!
|
||||||
|
// CHECKSTYLE:OFF Generated code
|
||||||
|
//
|
||||||
|
// To regenerate run:
|
||||||
|
// $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/com/android/internal/statusbar/LetterboxDetails.java
|
||||||
|
//
|
||||||
|
// To exclude the generated code from IntelliJ auto-formatting enable (one-time):
|
||||||
|
// Settings > Editor > Code Style > Formatter Control
|
||||||
|
//@formatter:off
|
||||||
|
|
||||||
|
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public LetterboxDetails(
|
||||||
|
@NonNull Rect letterboxInnerBounds,
|
||||||
|
@NonNull Rect letterboxFullBounds,
|
||||||
|
int appAppearance) {
|
||||||
|
this.mLetterboxInnerBounds = letterboxInnerBounds;
|
||||||
|
com.android.internal.util.AnnotationValidations.validate(
|
||||||
|
NonNull.class, null, mLetterboxInnerBounds);
|
||||||
|
this.mLetterboxFullBounds = letterboxFullBounds;
|
||||||
|
com.android.internal.util.AnnotationValidations.validate(
|
||||||
|
NonNull.class, null, mLetterboxFullBounds);
|
||||||
|
this.mAppAppearance = appAppearance;
|
||||||
|
|
||||||
|
// onConstructed(); // You can define this method to get a callback
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public String toString() {
|
||||||
|
// You can override field toString logic by defining methods like:
|
||||||
|
// String fieldNameToString() { ... }
|
||||||
|
|
||||||
|
return "LetterboxDetails { " +
|
||||||
|
"letterboxInnerBounds = " + mLetterboxInnerBounds + ", " +
|
||||||
|
"letterboxFullBounds = " + mLetterboxFullBounds + ", " +
|
||||||
|
"appAppearance = " + appAppearanceToString() +
|
||||||
|
" }";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public boolean equals(@Nullable Object o) {
|
||||||
|
// You can override field equality logic by defining either of the methods like:
|
||||||
|
// boolean fieldNameEquals(LetterboxDetails other) { ... }
|
||||||
|
// boolean fieldNameEquals(FieldType otherValue) { ... }
|
||||||
|
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
LetterboxDetails that = (LetterboxDetails) o;
|
||||||
|
//noinspection PointlessBooleanExpression
|
||||||
|
return true
|
||||||
|
&& java.util.Objects.equals(mLetterboxInnerBounds, that.mLetterboxInnerBounds)
|
||||||
|
&& java.util.Objects.equals(mLetterboxFullBounds, that.mLetterboxFullBounds)
|
||||||
|
&& mAppAppearance == that.mAppAppearance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public int hashCode() {
|
||||||
|
// You can override field hashCode logic by defining methods like:
|
||||||
|
// int fieldNameHashCode() { ... }
|
||||||
|
|
||||||
|
int _hash = 1;
|
||||||
|
_hash = 31 * _hash + java.util.Objects.hashCode(mLetterboxInnerBounds);
|
||||||
|
_hash = 31 * _hash + java.util.Objects.hashCode(mLetterboxFullBounds);
|
||||||
|
_hash = 31 * _hash + mAppAppearance;
|
||||||
|
return _hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||||
|
// You can override field parcelling by defining methods like:
|
||||||
|
// void parcelFieldName(Parcel dest, int flags) { ... }
|
||||||
|
|
||||||
|
dest.writeTypedObject(mLetterboxInnerBounds, flags);
|
||||||
|
dest.writeTypedObject(mLetterboxFullBounds, flags);
|
||||||
|
dest.writeInt(mAppAppearance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public int describeContents() { return 0; }
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
@SuppressWarnings({"unchecked", "RedundantCast"})
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
protected LetterboxDetails(@NonNull Parcel in) {
|
||||||
|
// You can override field unparcelling by defining methods like:
|
||||||
|
// static FieldType unparcelFieldName(Parcel in) { ... }
|
||||||
|
|
||||||
|
Rect letterboxInnerBounds = (Rect) in.readTypedObject(Rect.CREATOR);
|
||||||
|
Rect letterboxFullBounds = (Rect) in.readTypedObject(Rect.CREATOR);
|
||||||
|
int appAppearance = in.readInt();
|
||||||
|
|
||||||
|
this.mLetterboxInnerBounds = letterboxInnerBounds;
|
||||||
|
com.android.internal.util.AnnotationValidations.validate(
|
||||||
|
NonNull.class, null, mLetterboxInnerBounds);
|
||||||
|
this.mLetterboxFullBounds = letterboxFullBounds;
|
||||||
|
com.android.internal.util.AnnotationValidations.validate(
|
||||||
|
NonNull.class, null, mLetterboxFullBounds);
|
||||||
|
this.mAppAppearance = appAppearance;
|
||||||
|
|
||||||
|
// onConstructed(); // You can define this method to get a callback
|
||||||
|
}
|
||||||
|
|
||||||
|
@DataClass.Generated.Member
|
||||||
|
public static final @NonNull Parcelable.Creator<LetterboxDetails> CREATOR
|
||||||
|
= new Parcelable.Creator<LetterboxDetails>() {
|
||||||
|
@Override
|
||||||
|
public LetterboxDetails[] newArray(int size) {
|
||||||
|
return new LetterboxDetails[size];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LetterboxDetails createFromParcel(@NonNull Parcel in) {
|
||||||
|
return new LetterboxDetails(in);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@DataClass.Generated(
|
||||||
|
time = 1656941109526L,
|
||||||
|
codegenVersion = "1.0.23",
|
||||||
|
sourceFile = "frameworks/base/core/java/com/android/internal/statusbar/LetterboxDetails.java",
|
||||||
|
inputSignatures = "private final @android.annotation.NonNull android.graphics.Rect mLetterboxInnerBounds\nprivate final @android.annotation.NonNull android.graphics.Rect mLetterboxFullBounds\nprivate final int mAppAppearance\npublic @android.annotation.NonNull android.graphics.Rect getLetterboxInnerBounds()\npublic @android.annotation.NonNull android.graphics.Rect getLetterboxFullBounds()\npublic @android.view.WindowInsetsController.Appearance int getAppAppearance()\npublic java.lang.String appAppearanceToString()\nclass LetterboxDetails extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genAidl=true, genToString=true, genGetters=false, genEqualsHashCode=true)")
|
||||||
|
@Deprecated
|
||||||
|
private void __metadata() {}
|
||||||
|
|
||||||
|
|
||||||
|
//@formatter:on
|
||||||
|
// End of generated code
|
||||||
|
|
||||||
|
}
|
||||||
@@ -43,12 +43,14 @@ public final class RegisterStatusBarResult implements Parcelable {
|
|||||||
public final InsetsVisibilities mRequestedVisibilities;
|
public final InsetsVisibilities mRequestedVisibilities;
|
||||||
public final String mPackageName;
|
public final String mPackageName;
|
||||||
public final int[] mTransientBarTypes;
|
public final int[] mTransientBarTypes;
|
||||||
|
public final LetterboxDetails[] mLetterboxDetails;
|
||||||
|
|
||||||
public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1,
|
public RegisterStatusBarResult(ArrayMap<String, StatusBarIcon> icons, int disabledFlags1,
|
||||||
int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis,
|
int appearance, AppearanceRegion[] appearanceRegions, int imeWindowVis,
|
||||||
int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken,
|
int imeBackDisposition, boolean showImeSwitcher, int disabledFlags2, IBinder imeToken,
|
||||||
boolean navbarColorManagedByIme, int behavior, InsetsVisibilities requestedVisibilities,
|
boolean navbarColorManagedByIme, int behavior, InsetsVisibilities requestedVisibilities,
|
||||||
String packageName, @NonNull int[] transientBarTypes) {
|
String packageName, @NonNull int[] transientBarTypes,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
mIcons = new ArrayMap<>(icons);
|
mIcons = new ArrayMap<>(icons);
|
||||||
mDisabledFlags1 = disabledFlags1;
|
mDisabledFlags1 = disabledFlags1;
|
||||||
mAppearance = appearance;
|
mAppearance = appearance;
|
||||||
@@ -63,6 +65,7 @@ public final class RegisterStatusBarResult implements Parcelable {
|
|||||||
mRequestedVisibilities = requestedVisibilities;
|
mRequestedVisibilities = requestedVisibilities;
|
||||||
mPackageName = packageName;
|
mPackageName = packageName;
|
||||||
mTransientBarTypes = transientBarTypes;
|
mTransientBarTypes = transientBarTypes;
|
||||||
|
mLetterboxDetails = letterboxDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -86,6 +89,7 @@ public final class RegisterStatusBarResult implements Parcelable {
|
|||||||
dest.writeTypedObject(mRequestedVisibilities, 0);
|
dest.writeTypedObject(mRequestedVisibilities, 0);
|
||||||
dest.writeString(mPackageName);
|
dest.writeString(mPackageName);
|
||||||
dest.writeIntArray(mTransientBarTypes);
|
dest.writeIntArray(mTransientBarTypes);
|
||||||
|
dest.writeParcelableArray(mLetterboxDetails, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,10 +116,13 @@ public final class RegisterStatusBarResult implements Parcelable {
|
|||||||
source.readTypedObject(InsetsVisibilities.CREATOR);
|
source.readTypedObject(InsetsVisibilities.CREATOR);
|
||||||
final String packageName = source.readString();
|
final String packageName = source.readString();
|
||||||
final int[] transientBarTypes = source.createIntArray();
|
final int[] transientBarTypes = source.createIntArray();
|
||||||
|
final LetterboxDetails[] letterboxDetails =
|
||||||
|
source.readParcelableArray(null, LetterboxDetails.class);
|
||||||
return new RegisterStatusBarResult(icons, disabledFlags1, appearance,
|
return new RegisterStatusBarResult(icons, disabledFlags1, appearance,
|
||||||
appearanceRegions, imeWindowVis, imeBackDisposition, showImeSwitcher,
|
appearanceRegions, imeWindowVis, imeBackDisposition, showImeSwitcher,
|
||||||
disabledFlags2, imeToken, navbarColorManagedByIme, behavior,
|
disabledFlags2, imeToken, navbarColorManagedByIme, behavior,
|
||||||
requestedVisibilities, packageName, transientBarTypes);
|
requestedVisibilities, packageName, transientBarTypes,
|
||||||
|
letterboxDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_B
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.graphics.Rect;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@@ -48,7 +49,11 @@ public class RegisterStatusBarResultTest {
|
|||||||
final ArrayMap<String, StatusBarIcon> iconMap = new ArrayMap<>();
|
final ArrayMap<String, StatusBarIcon> iconMap = new ArrayMap<>();
|
||||||
iconMap.put(dumyIconKey, new StatusBarIcon("com.android.internal.statusbar.test",
|
iconMap.put(dumyIconKey, new StatusBarIcon("com.android.internal.statusbar.test",
|
||||||
UserHandle.of(100), 123, 1, 2, "dummyIconDescription"));
|
UserHandle.of(100), 123, 1, 2, "dummyIconDescription"));
|
||||||
|
final LetterboxDetails letterboxDetails = new LetterboxDetails(
|
||||||
|
/* letterboxInnerBounds= */ new Rect(1, 2, 3, 4),
|
||||||
|
/* letterboxFullBounds= */ new Rect(5, 6, 7, 8),
|
||||||
|
/* appAppearance= */ 321
|
||||||
|
);
|
||||||
final RegisterStatusBarResult original = new RegisterStatusBarResult(iconMap,
|
final RegisterStatusBarResult original = new RegisterStatusBarResult(iconMap,
|
||||||
0x2 /* disabledFlags1 */,
|
0x2 /* disabledFlags1 */,
|
||||||
0x4 /* appearance */,
|
0x4 /* appearance */,
|
||||||
@@ -62,7 +67,8 @@ public class RegisterStatusBarResultTest {
|
|||||||
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE,
|
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE,
|
||||||
new InsetsVisibilities() /* requestedVisibilities */,
|
new InsetsVisibilities() /* requestedVisibilities */,
|
||||||
"test" /* packageName */,
|
"test" /* packageName */,
|
||||||
new int[0] /* transientBarTypes */);
|
new int[0] /* transientBarTypes */,
|
||||||
|
new LetterboxDetails[] {letterboxDetails});
|
||||||
|
|
||||||
final RegisterStatusBarResult copy = clone(original);
|
final RegisterStatusBarResult copy = clone(original);
|
||||||
|
|
||||||
@@ -84,6 +90,7 @@ public class RegisterStatusBarResultTest {
|
|||||||
assertThat(copy.mRequestedVisibilities).isEqualTo(original.mRequestedVisibilities);
|
assertThat(copy.mRequestedVisibilities).isEqualTo(original.mRequestedVisibilities);
|
||||||
assertThat(copy.mPackageName).isEqualTo(original.mPackageName);
|
assertThat(copy.mPackageName).isEqualTo(original.mPackageName);
|
||||||
assertThat(copy.mTransientBarTypes).isEqualTo(original.mTransientBarTypes);
|
assertThat(copy.mTransientBarTypes).isEqualTo(original.mTransientBarTypes);
|
||||||
|
assertThat(copy.mLetterboxDetails).isEqualTo(original.mLetterboxDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RegisterStatusBarResult clone(RegisterStatusBarResult original) {
|
private RegisterStatusBarResult clone(RegisterStatusBarResult original) {
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ import com.android.internal.logging.MetricsLogger;
|
|||||||
import com.android.internal.logging.UiEvent;
|
import com.android.internal.logging.UiEvent;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.util.LatencyTracker;
|
import com.android.internal.util.LatencyTracker;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.systemui.Gefingerpoken;
|
import com.android.systemui.Gefingerpoken;
|
||||||
@@ -1069,7 +1070,8 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
|
|||||||
@Override
|
@Override
|
||||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName) {
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
if (displayId != mDisplayId) {
|
if (displayId != mDisplayId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ import android.view.WindowInsetsController.Behavior;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.systemui.Dumpable;
|
import com.android.systemui.Dumpable;
|
||||||
import com.android.systemui.dagger.SysUISingleton;
|
import com.android.systemui.dagger.SysUISingleton;
|
||||||
@@ -357,7 +358,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
|
|||||||
@Override
|
@Override
|
||||||
public void onSystemBarAttributesChanged(int displayId, int appearance,
|
public void onSystemBarAttributesChanged(int displayId, int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
|
||||||
InsetsVisibilities requestedVisibilities, String packageName) {
|
InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
|
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
|
||||||
boolean nbModeChanged = false;
|
boolean nbModeChanged = false;
|
||||||
if (mAppearance != appearance) {
|
if (mAppearance != appearance) {
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ import com.android.internal.os.SomeArgs;
|
|||||||
import com.android.internal.statusbar.IAddTileResultCallback;
|
import com.android.internal.statusbar.IAddTileResultCallback;
|
||||||
import com.android.internal.statusbar.IStatusBar;
|
import com.android.internal.statusbar.IStatusBar;
|
||||||
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.statusbar.StatusBarIcon;
|
import com.android.internal.statusbar.StatusBarIcon;
|
||||||
import com.android.internal.util.GcUtils;
|
import com.android.internal.util.GcUtils;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
@@ -361,7 +362,7 @@ public class CommandQueue extends IStatusBar.Stub implements
|
|||||||
default void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
default void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
||||||
String packageName) { }
|
String packageName, LetterboxDetails[] letterboxDetails) { }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see IStatusBar#showTransient(int, int[], boolean).
|
* @see IStatusBar#showTransient(int, int[], boolean).
|
||||||
@@ -1090,7 +1091,8 @@ public class CommandQueue extends IStatusBar.Stub implements
|
|||||||
@Override
|
@Override
|
||||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName) {
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
SomeArgs args = SomeArgs.obtain();
|
SomeArgs args = SomeArgs.obtain();
|
||||||
args.argi1 = displayId;
|
args.argi1 = displayId;
|
||||||
@@ -1100,6 +1102,7 @@ public class CommandQueue extends IStatusBar.Stub implements
|
|||||||
args.argi4 = behavior;
|
args.argi4 = behavior;
|
||||||
args.arg2 = requestedVisibilities;
|
args.arg2 = requestedVisibilities;
|
||||||
args.arg3 = packageName;
|
args.arg3 = packageName;
|
||||||
|
args.arg4 = letterboxDetails;
|
||||||
mHandler.obtainMessage(MSG_SYSTEM_BAR_CHANGED, args).sendToTarget();
|
mHandler.obtainMessage(MSG_SYSTEM_BAR_CHANGED, args).sendToTarget();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1561,7 +1564,8 @@ public class CommandQueue extends IStatusBar.Stub implements
|
|||||||
for (int i = 0; i < mCallbacks.size(); i++) {
|
for (int i = 0; i < mCallbacks.size(); i++) {
|
||||||
mCallbacks.get(i).onSystemBarAttributesChanged(args.argi1, args.argi2,
|
mCallbacks.get(i).onSystemBarAttributesChanged(args.argi1, args.argi2,
|
||||||
(AppearanceRegion[]) args.arg1, args.argi3 == 1, args.argi4,
|
(AppearanceRegion[]) args.arg1, args.argi3 == 1, args.argi4,
|
||||||
(InsetsVisibilities) args.arg2, (String) args.arg3);
|
(InsetsVisibilities) args.arg2, (String) args.arg3,
|
||||||
|
(LetterboxDetails[]) args.arg4);
|
||||||
}
|
}
|
||||||
args.recycle();
|
args.recycle();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import android.view.WindowInsetsController.Behavior;
|
|||||||
|
|
||||||
import com.android.internal.logging.MetricsLogger;
|
import com.android.internal.logging.MetricsLogger;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
@@ -463,7 +464,8 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
|
|||||||
@Override
|
@Override
|
||||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName) {
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
if (displayId != mDisplayId) {
|
if (displayId != mDisplayId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -974,7 +974,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
|||||||
}
|
}
|
||||||
mCommandQueueCallbacks.onSystemBarAttributesChanged(mDisplayId, result.mAppearance,
|
mCommandQueueCallbacks.onSystemBarAttributesChanged(mDisplayId, result.mAppearance,
|
||||||
result.mAppearanceRegions, result.mNavbarColorManagedByIme, result.mBehavior,
|
result.mAppearanceRegions, result.mNavbarColorManagedByIme, result.mBehavior,
|
||||||
result.mRequestedVisibilities, result.mPackageName);
|
result.mRequestedVisibilities, result.mPackageName, result.mLetterboxDetails);
|
||||||
|
|
||||||
// StatusBarManagerService has a back up of IME token and it's restored here.
|
// StatusBarManagerService has a back up of IME token and it's restored here.
|
||||||
mCommandQueueCallbacks.setImeWindowStatus(mDisplayId, result.mImeToken,
|
mCommandQueueCallbacks.setImeWindowStatus(mDisplayId, result.mImeToken,
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import android.view.animation.AccelerateInterpolator;
|
|||||||
import androidx.lifecycle.Observer;
|
import androidx.lifecycle.Observer;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore;
|
import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore;
|
||||||
@@ -144,7 +145,7 @@ public class LightsOutNotifController extends ViewController<View> {
|
|||||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
||||||
String packageName) {
|
String packageName, LetterboxDetails[] letterboxDetails) {
|
||||||
if (displayId != mDisplayId) {
|
if (displayId != mDisplayId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import android.view.WindowInsetsController.Behavior;
|
|||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.statusbar.StatusBarIcon;
|
import com.android.internal.statusbar.StatusBarIcon;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
@@ -53,6 +54,13 @@ import org.junit.Test;
|
|||||||
@SmallTest
|
@SmallTest
|
||||||
public class CommandQueueTest extends SysuiTestCase {
|
public class CommandQueueTest extends SysuiTestCase {
|
||||||
|
|
||||||
|
private static final LetterboxDetails[] TEST_LETTERBOX_DETAILS = new LetterboxDetails[] {
|
||||||
|
new LetterboxDetails(
|
||||||
|
/* letterboxInnerBounds= */ new Rect(100, 0, 200, 500),
|
||||||
|
/* letterboxFullBounds= */ new Rect(0, 0, 500, 100),
|
||||||
|
/* appAppearance= */ 123)
|
||||||
|
};
|
||||||
|
|
||||||
private CommandQueue mCommandQueue;
|
private CommandQueue mCommandQueue;
|
||||||
private Callbacks mCallbacks;
|
private Callbacks mCallbacks;
|
||||||
private static final int SECONDARY_DISPLAY = 1;
|
private static final int SECONDARY_DISPLAY = 1;
|
||||||
@@ -127,25 +135,27 @@ public class CommandQueueTest extends SysuiTestCase {
|
|||||||
public void testOnSystemBarAttributesChanged() {
|
public void testOnSystemBarAttributesChanged() {
|
||||||
doTestOnSystemBarAttributesChanged(DEFAULT_DISPLAY, 1,
|
doTestOnSystemBarAttributesChanged(DEFAULT_DISPLAY, 1,
|
||||||
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
|
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
|
||||||
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test");
|
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test", TEST_LETTERBOX_DETAILS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnSystemBarAttributesChangedForSecondaryDisplay() {
|
public void testOnSystemBarAttributesChangedForSecondaryDisplay() {
|
||||||
doTestOnSystemBarAttributesChanged(SECONDARY_DISPLAY, 1,
|
doTestOnSystemBarAttributesChanged(SECONDARY_DISPLAY, 1,
|
||||||
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
|
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
|
||||||
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test");
|
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test", TEST_LETTERBOX_DETAILS);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doTestOnSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
private void doTestOnSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName) {
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
mCommandQueue.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
|
mCommandQueue.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
|
||||||
navbarColorManagedByIme, behavior, requestedVisibilities, packageName);
|
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
|
||||||
|
letterboxDetails);
|
||||||
waitForIdleSync();
|
waitForIdleSync();
|
||||||
verify(mCallbacks).onSystemBarAttributesChanged(eq(displayId), eq(appearance),
|
verify(mCallbacks).onSystemBarAttributesChanged(eq(displayId), eq(appearance),
|
||||||
eq(appearanceRegions), eq(navbarColorManagedByIme), eq(behavior),
|
eq(appearanceRegions), eq(navbarColorManagedByIme), eq(behavior),
|
||||||
eq(requestedVisibilities), eq(packageName));
|
eq(requestedVisibilities), eq(packageName), eq(letterboxDetails));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
|
|||||||
false /* navbarColorManagedByIme */,
|
false /* navbarColorManagedByIme */,
|
||||||
BEHAVIOR_DEFAULT,
|
BEHAVIOR_DEFAULT,
|
||||||
null /* requestedVisibilities */,
|
null /* requestedVisibilities */,
|
||||||
null /* packageName */);
|
null /* packageName */,
|
||||||
|
null /* letterboxDetails */);
|
||||||
assertTrue(mLightsOutNotifController.areLightsOut());
|
assertTrue(mLightsOutNotifController.areLightsOut());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,7 +122,8 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
|
|||||||
false /* navbarColorManagedByIme */,
|
false /* navbarColorManagedByIme */,
|
||||||
BEHAVIOR_DEFAULT,
|
BEHAVIOR_DEFAULT,
|
||||||
null /* requestedVisibilities */,
|
null /* requestedVisibilities */,
|
||||||
null /* packageName */);
|
null /* packageName */,
|
||||||
|
null /* letterboxDetails */);
|
||||||
assertFalse(mLightsOutNotifController.areLightsOut());
|
assertFalse(mLightsOutNotifController.areLightsOut());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +154,8 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
|
|||||||
false /* navbarColorManagedByIme */,
|
false /* navbarColorManagedByIme */,
|
||||||
BEHAVIOR_DEFAULT,
|
BEHAVIOR_DEFAULT,
|
||||||
null /* requestedVisibilities */,
|
null /* requestedVisibilities */,
|
||||||
null /* packageName */);
|
null /* packageName */,
|
||||||
|
null /* letterboxDetails */);
|
||||||
|
|
||||||
// THEN we should show dot
|
// THEN we should show dot
|
||||||
assertTrue(mLightsOutNotifController.shouldShowDot());
|
assertTrue(mLightsOutNotifController.shouldShowDot());
|
||||||
@@ -172,7 +175,8 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
|
|||||||
false /* navbarColorManagedByIme */,
|
false /* navbarColorManagedByIme */,
|
||||||
BEHAVIOR_DEFAULT,
|
BEHAVIOR_DEFAULT,
|
||||||
null /* requestedVisibilities */,
|
null /* requestedVisibilities */,
|
||||||
null /* packageName */);
|
null /* packageName */,
|
||||||
|
null /* letterboxDetails */);
|
||||||
|
|
||||||
// THEN we shouldn't show the dot
|
// THEN we shouldn't show the dot
|
||||||
assertFalse(mLightsOutNotifController.shouldShowDot());
|
assertFalse(mLightsOutNotifController.shouldShowDot());
|
||||||
@@ -192,7 +196,8 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
|
|||||||
false /* navbarColorManagedByIme */,
|
false /* navbarColorManagedByIme */,
|
||||||
BEHAVIOR_DEFAULT,
|
BEHAVIOR_DEFAULT,
|
||||||
null /* requestedVisibilities */,
|
null /* requestedVisibilities */,
|
||||||
null /* packageName */);
|
null /* packageName */,
|
||||||
|
null /* letterboxDetails */);
|
||||||
|
|
||||||
// THEN we shouldn't show the dot
|
// THEN we shouldn't show the dot
|
||||||
assertFalse(mLightsOutNotifController.shouldShowDot());
|
assertFalse(mLightsOutNotifController.shouldShowDot());
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import android.view.InsetsVisibilities;
|
|||||||
import android.view.WindowInsetsController.Appearance;
|
import android.view.WindowInsetsController.Appearance;
|
||||||
import android.view.WindowInsetsController.Behavior;
|
import android.view.WindowInsetsController.Behavior;
|
||||||
|
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
import com.android.server.notification.NotificationDelegate;
|
import com.android.server.notification.NotificationDelegate;
|
||||||
|
|
||||||
@@ -133,7 +134,8 @@ public interface StatusBarManagerInternal {
|
|||||||
/** @see com.android.internal.statusbar.IStatusBar#onSystemBarAttributesChanged */
|
/** @see com.android.internal.statusbar.IStatusBar#onSystemBarAttributesChanged */
|
||||||
void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName);
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails);
|
||||||
|
|
||||||
/** @see com.android.internal.statusbar.IStatusBar#showTransient */
|
/** @see com.android.internal.statusbar.IStatusBar#showTransient */
|
||||||
void showTransient(int displayId, @InternalInsetsType int[] types,
|
void showTransient(int displayId, @InternalInsetsType int[] types,
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ import com.android.internal.statusbar.ISessionListener;
|
|||||||
import com.android.internal.statusbar.IStatusBar;
|
import com.android.internal.statusbar.IStatusBar;
|
||||||
import com.android.internal.statusbar.IStatusBarService;
|
import com.android.internal.statusbar.IStatusBarService;
|
||||||
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
import com.android.internal.statusbar.IUndoMediaTransferCallback;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.statusbar.NotificationVisibility;
|
import com.android.internal.statusbar.NotificationVisibility;
|
||||||
import com.android.internal.statusbar.RegisterStatusBarResult;
|
import com.android.internal.statusbar.RegisterStatusBarResult;
|
||||||
import com.android.internal.statusbar.StatusBarIcon;
|
import com.android.internal.statusbar.StatusBarIcon;
|
||||||
@@ -596,13 +597,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
|||||||
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
||||||
String packageName) {
|
String packageName, LetterboxDetails[] letterboxDetails) {
|
||||||
getUiState(displayId).setBarAttributes(appearance, appearanceRegions,
|
getUiState(displayId).setBarAttributes(appearance, appearanceRegions,
|
||||||
navbarColorManagedByIme, behavior, requestedVisibilities, packageName);
|
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
|
||||||
|
letterboxDetails);
|
||||||
if (mBar != null) {
|
if (mBar != null) {
|
||||||
try {
|
try {
|
||||||
mBar.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
|
mBar.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
|
||||||
navbarColorManagedByIme, behavior, requestedVisibilities, packageName);
|
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
|
||||||
|
letterboxDetails);
|
||||||
} catch (RemoteException ex) { }
|
} catch (RemoteException ex) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1204,17 +1207,20 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
|||||||
private int mImeBackDisposition = 0;
|
private int mImeBackDisposition = 0;
|
||||||
private boolean mShowImeSwitcher = false;
|
private boolean mShowImeSwitcher = false;
|
||||||
private IBinder mImeToken = null;
|
private IBinder mImeToken = null;
|
||||||
|
private LetterboxDetails[] mLetterboxDetails;
|
||||||
|
|
||||||
private void setBarAttributes(@Appearance int appearance,
|
private void setBarAttributes(@Appearance int appearance,
|
||||||
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
|
||||||
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
|
||||||
String packageName) {
|
String packageName,
|
||||||
|
LetterboxDetails[] letterboxDetails) {
|
||||||
mAppearance = appearance;
|
mAppearance = appearance;
|
||||||
mAppearanceRegions = appearanceRegions;
|
mAppearanceRegions = appearanceRegions;
|
||||||
mNavbarColorManagedByIme = navbarColorManagedByIme;
|
mNavbarColorManagedByIme = navbarColorManagedByIme;
|
||||||
mBehavior = behavior;
|
mBehavior = behavior;
|
||||||
mRequestedVisibilities = requestedVisibilities;
|
mRequestedVisibilities = requestedVisibilities;
|
||||||
mPackageName = packageName;
|
mPackageName = packageName;
|
||||||
|
mLetterboxDetails = letterboxDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showTransient(@InternalInsetsType int[] types) {
|
private void showTransient(@InternalInsetsType int[] types) {
|
||||||
@@ -1341,7 +1347,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
|
|||||||
state.mImeBackDisposition, state.mShowImeSwitcher,
|
state.mImeBackDisposition, state.mShowImeSwitcher,
|
||||||
gatherDisableActionsLocked(mCurrentUserId, 2), state.mImeToken,
|
gatherDisableActionsLocked(mCurrentUserId, 2), state.mImeToken,
|
||||||
state.mNavbarColorManagedByIme, state.mBehavior, state.mRequestedVisibilities,
|
state.mNavbarColorManagedByIme, state.mBehavior, state.mRequestedVisibilities,
|
||||||
state.mPackageName, transientBarTypes);
|
state.mPackageName, transientBarTypes, state.mLetterboxDetails);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ import com.android.internal.policy.GestureNavigationSettingsObserver;
|
|||||||
import com.android.internal.policy.ScreenDecorationsUtils;
|
import com.android.internal.policy.ScreenDecorationsUtils;
|
||||||
import com.android.internal.policy.SystemBarUtils;
|
import com.android.internal.policy.SystemBarUtils;
|
||||||
import com.android.internal.protolog.common.ProtoLog;
|
import com.android.internal.protolog.common.ProtoLog;
|
||||||
|
import com.android.internal.statusbar.LetterboxDetails;
|
||||||
import com.android.internal.util.ScreenshotHelper;
|
import com.android.internal.util.ScreenshotHelper;
|
||||||
import com.android.internal.util.function.TriConsumer;
|
import com.android.internal.util.function.TriConsumer;
|
||||||
import com.android.internal.view.AppearanceRegion;
|
import com.android.internal.view.AppearanceRegion;
|
||||||
@@ -2399,7 +2400,7 @@ public class DisplayPolicy {
|
|||||||
mLastStatusBarAppearanceRegions = statusBarAppearanceRegions;
|
mLastStatusBarAppearanceRegions = statusBarAppearanceRegions;
|
||||||
callStatusBarSafely(statusBar -> statusBar.onSystemBarAttributesChanged(displayId,
|
callStatusBarSafely(statusBar -> statusBar.onSystemBarAttributesChanged(displayId,
|
||||||
appearance, statusBarAppearanceRegions, isNavbarColorManagedByIme, behavior,
|
appearance, statusBarAppearanceRegions, isNavbarColorManagedByIme, behavior,
|
||||||
requestedVisibilities, focusedApp));
|
requestedVisibilities, focusedApp, new LetterboxDetails[]{}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void callStatusBarSafely(Consumer<StatusBarManagerInternal> consumer) {
|
private void callStatusBarSafely(Consumer<StatusBarManagerInternal> consumer) {
|
||||||
|
|||||||
Reference in New Issue
Block a user