Merge "Describe requested visibilities in public types (4/n: sysui)"

This commit is contained in:
Tiger Huang
2022-11-03 08:06:57 +00:00
committed by Android (Google) Code Review
20 changed files with 102 additions and 132 deletions

View File

@@ -29,7 +29,6 @@ import android.media.MediaRoute2Info;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.service.notification.StatusBarNotification;
import android.view.InsetsVisibilities;
import com.android.internal.statusbar.IAddTileResultCallback;
import com.android.internal.statusbar.IUndoMediaTransferCallback;
@@ -201,13 +200,13 @@ oneway interface IStatusBar
* stacks.
* @param navbarColorManagedByIme {@code true} if navigation bar color is managed by IME.
* @param behavior the behavior of the focused window.
* @param requestedVisibilities the collection of the requested visibilities of system insets.
* @param requestedVisibleTypes the collection of insets types requested visible.
* @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,
in AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
int behavior, in InsetsVisibilities requestedVisibilities, String packageName,
int behavior, int requestedVisibleTypes, String packageName,
in LetterboxDetails[] letterboxDetails);
/**

View File

@@ -21,7 +21,6 @@ import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.ArrayMap;
import android.view.InsetsVisibilities;
import com.android.internal.view.AppearanceRegion;
@@ -40,7 +39,7 @@ public final class RegisterStatusBarResult implements Parcelable {
public final IBinder mImeToken;
public final boolean mNavbarColorManagedByIme;
public final int mBehavior;
public final InsetsVisibilities mRequestedVisibilities;
public final int mRequestedVisibleTypes;
public final String mPackageName;
public final int[] mTransientBarTypes;
public final LetterboxDetails[] mLetterboxDetails;
@@ -48,7 +47,7 @@ public final class RegisterStatusBarResult implements Parcelable {
public 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, InsetsVisibilities requestedVisibilities,
boolean navbarColorManagedByIme, int behavior, int requestedVisibleTypes,
String packageName, @NonNull int[] transientBarTypes,
LetterboxDetails[] letterboxDetails) {
mIcons = new ArrayMap<>(icons);
@@ -62,7 +61,7 @@ public final class RegisterStatusBarResult implements Parcelable {
mImeToken = imeToken;
mNavbarColorManagedByIme = navbarColorManagedByIme;
mBehavior = behavior;
mRequestedVisibilities = requestedVisibilities;
mRequestedVisibleTypes = requestedVisibleTypes;
mPackageName = packageName;
mTransientBarTypes = transientBarTypes;
mLetterboxDetails = letterboxDetails;
@@ -86,7 +85,7 @@ public final class RegisterStatusBarResult implements Parcelable {
dest.writeStrongBinder(mImeToken);
dest.writeBoolean(mNavbarColorManagedByIme);
dest.writeInt(mBehavior);
dest.writeTypedObject(mRequestedVisibilities, 0);
dest.writeInt(mRequestedVisibleTypes);
dest.writeString(mPackageName);
dest.writeIntArray(mTransientBarTypes);
dest.writeParcelableArray(mLetterboxDetails, flags);
@@ -112,8 +111,7 @@ public final class RegisterStatusBarResult implements Parcelable {
final IBinder imeToken = source.readStrongBinder();
final boolean navbarColorManagedByIme = source.readBoolean();
final int behavior = source.readInt();
final InsetsVisibilities requestedVisibilities =
source.readTypedObject(InsetsVisibilities.CREATOR);
final int requestedVisibleTypes = source.readInt();
final String packageName = source.readString();
final int[] transientBarTypes = source.createIntArray();
final LetterboxDetails[] letterboxDetails =
@@ -121,7 +119,7 @@ public final class RegisterStatusBarResult implements Parcelable {
return new RegisterStatusBarResult(icons, disabledFlags1, appearance,
appearanceRegions, imeWindowVis, imeBackDisposition, showImeSwitcher,
disabledFlags2, imeToken, navbarColorManagedByIme, behavior,
requestedVisibilities, packageName, transientBarTypes,
requestedVisibleTypes, packageName, transientBarTypes,
letterboxDetails);
}

View File

@@ -25,7 +25,7 @@ import android.os.Binder;
import android.os.Parcel;
import android.os.UserHandle;
import android.util.ArrayMap;
import android.view.InsetsVisibilities;
import android.view.WindowInsets;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -65,7 +65,7 @@ public class RegisterStatusBarResultTest {
new Binder() /* imeToken */,
true /* navbarColorManagedByIme */,
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE,
new InsetsVisibilities() /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
"test" /* packageName */,
new int[0] /* transientBarTypes */,
new LetterboxDetails[] {letterboxDetails});
@@ -87,7 +87,7 @@ public class RegisterStatusBarResultTest {
assertThat(copy.mImeToken).isSameInstanceAs(original.mImeToken);
assertThat(copy.mNavbarColorManagedByIme).isEqualTo(original.mNavbarColorManagedByIme);
assertThat(copy.mBehavior).isEqualTo(original.mBehavior);
assertThat(copy.mRequestedVisibilities).isEqualTo(original.mRequestedVisibilities);
assertThat(copy.mRequestedVisibleTypes).isEqualTo(original.mRequestedVisibleTypes);
assertThat(copy.mPackageName).isEqualTo(original.mPackageName);
assertThat(copy.mTransientBarTypes).isEqualTo(original.mTransientBarTypes);
assertThat(copy.mLetterboxDetails).isEqualTo(original.mLetterboxDetails);

View File

@@ -87,7 +87,6 @@ import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.InsetsFrameProvider;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.Surface;
@@ -99,6 +98,7 @@ import android.view.ViewRootImpl.SurfaceChangedCallback;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.InternalInsetsInfo;
import android.view.ViewTreeObserver.OnComputeInternalInsetsListener;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
import android.view.WindowManager;
@@ -1085,7 +1085,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
@Override
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
@Behavior int behavior, @InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails) {
if (displayId != mDisplayId) {
return;

View File

@@ -49,8 +49,8 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.view.Display;
import android.view.InsetsVisibilities;
import android.view.View;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -355,7 +355,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
@Override
public void onSystemBarAttributesChanged(int displayId, int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme, int behavior,
InsetsVisibilities requestedVisibilities, String packageName,
@InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails) {
mOverviewProxyService.onSystemBarAttributesChanged(displayId, behavior);
boolean nbModeChanged = false;

View File

@@ -53,7 +53,7 @@ import android.os.RemoteException;
import android.util.Pair;
import android.util.SparseArray;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -356,11 +356,11 @@ public class CommandQueue extends IStatusBar.Stub implements
default void onRecentsAnimationStateChanged(boolean running) { }
/**
* @see IStatusBar#onSystemBarAttributesChanged.
* @see IStatusBar#onSystemBarAttributesChanged
*/
default void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
@Behavior int behavior, @InsetsType int requestedVisibleTypes,
String packageName, LetterboxDetails[] letterboxDetails) { }
/**
@@ -1090,7 +1090,7 @@ public class CommandQueue extends IStatusBar.Stub implements
@Override
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
@Behavior int behavior, @InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails) {
synchronized (mLock) {
SomeArgs args = SomeArgs.obtain();
@@ -1099,7 +1099,7 @@ public class CommandQueue extends IStatusBar.Stub implements
args.argi3 = navbarColorManagedByIme ? 1 : 0;
args.arg1 = appearanceRegions;
args.argi4 = behavior;
args.arg2 = requestedVisibilities;
args.argi5 = requestedVisibleTypes;
args.arg3 = packageName;
args.arg4 = letterboxDetails;
mHandler.obtainMessage(MSG_SYSTEM_BAR_CHANGED, args).sendToTarget();
@@ -1582,8 +1582,7 @@ public class CommandQueue extends IStatusBar.Stub implements
for (int i = 0; i < mCallbacks.size(); i++) {
mCallbacks.get(i).onSystemBarAttributesChanged(args.argi1, args.argi2,
(AppearanceRegion[]) args.arg1, args.argi3 == 1, args.argi4,
(InsetsVisibilities) args.arg2, (String) args.arg3,
(LetterboxDetails[]) args.arg4);
args.argi5, (String) args.arg3, (LetterboxDetails[]) args.arg4);
}
args.recycle();
break;

View File

@@ -16,8 +16,6 @@
package com.android.systemui.statusbar;
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
import static android.view.InsetsState.ITYPE_STATUS_BAR;
import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_TRANSITION_FROM_AOD;
@@ -34,9 +32,10 @@ import android.util.FloatProperty;
import android.util.Log;
import android.view.Choreographer;
import android.view.InsetsFlags;
import android.view.InsetsVisibilities;
import android.view.View;
import android.view.ViewDebug;
import android.view.WindowInsets;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
import android.view.animation.Interpolator;
@@ -497,9 +496,9 @@ public class StatusBarStateControllerImpl implements
@Override
public void setSystemBarAttributes(@Appearance int appearance, @Behavior int behavior,
InsetsVisibilities requestedVisibilities, String packageName) {
boolean isFullscreen = !requestedVisibilities.getVisibility(ITYPE_STATUS_BAR)
|| !requestedVisibilities.getVisibility(ITYPE_NAVIGATION_BAR);
@InsetsType int requestedVisibleTypes, String packageName) {
boolean isFullscreen = (requestedVisibleTypes & WindowInsets.Type.statusBars()) == 0
|| (requestedVisibleTypes & WindowInsets.Type.navigationBars()) == 0;
if (mIsFullscreen != isFullscreen) {
mIsFullscreen = isFullscreen;
synchronized (mListeners) {
@@ -514,12 +513,12 @@ public class StatusBarStateControllerImpl implements
if (DEBUG_IMMERSIVE_APPS) {
boolean dim = (appearance & APPEARANCE_LOW_PROFILE_BARS) != 0;
String behaviorName = ViewDebug.flagsToString(InsetsFlags.class, "behavior", behavior);
String requestedVisibilityString = requestedVisibilities.toString();
if (requestedVisibilityString.isEmpty()) {
requestedVisibilityString = "none";
String requestedVisibleTypesString = WindowInsets.Type.toString(requestedVisibleTypes);
if (requestedVisibleTypesString.isEmpty()) {
requestedVisibleTypesString = "none";
}
Log.d(TAG, packageName + " dim=" + dim + " behavior=" + behaviorName
+ " requested visibilities: " + requestedVisibilityString);
+ " requested visible types: " + requestedVisibleTypesString);
}
}

View File

@@ -19,8 +19,8 @@ package com.android.systemui.statusbar;
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.IntDef;
import android.view.InsetsVisibilities;
import android.view.View;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -154,7 +154,7 @@ public interface SysuiStatusBarStateController extends StatusBarStateController
* Set the system bar attributes
*/
void setSystemBarAttributes(@Appearance int appearance, @Behavior int behavior,
InsetsVisibilities requestedVisibilities, String packageName);
@InsetsType int requestedVisibleTypes, String packageName);
/**
* Set pulsing

View File

@@ -38,8 +38,8 @@ import android.os.Vibrator;
import android.util.Log;
import android.util.Slog;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.KeyEvent;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -458,7 +458,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
@Override
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
@Behavior int behavior, @InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails) {
if (displayId != mDisplayId) {
return;
@@ -471,7 +471,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
appearanceRegions,
navbarColorManagedByIme,
behavior,
requestedVisibilities,
requestedVisibleTypes,
packageName,
letterboxDetails
);

View File

@@ -928,7 +928,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
}
mCommandQueueCallbacks.onSystemBarAttributesChanged(mDisplayId, result.mAppearance,
result.mAppearanceRegions, result.mNavbarColorManagedByIme, result.mBehavior,
result.mRequestedVisibilities, result.mPackageName, result.mLetterboxDetails);
result.mRequestedVisibleTypes, result.mPackageName, result.mLetterboxDetails);
// StatusBarManagerService has a back up of IME token and it's restored here.
mCommandQueueCallbacks.setImeWindowStatus(mDisplayId, result.mImeToken,

View File

@@ -22,8 +22,8 @@ import static com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFrag
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.view.InsetsVisibilities;
import android.view.View;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
import android.view.WindowManager;
@@ -144,7 +144,7 @@ public class LightsOutNotifController extends ViewController<View> {
@Override
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
@Behavior int behavior, @InsetsType int requestedVisibleTypes,
String packageName, LetterboxDetails[] letterboxDetails) {
if (displayId != mDisplayId) {
return;

View File

@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.phone
import android.view.InsetsVisibilities
import android.view.WindowInsets.Type.InsetsType
import android.view.WindowInsetsController.Appearance
import android.view.WindowInsetsController.Behavior
import com.android.internal.statusbar.LetterboxDetails
@@ -66,21 +66,21 @@ internal constructor(
params.appearanceRegionsArray,
params.navbarColorManagedByIme,
params.behavior,
params.requestedVisibilities,
params.requestedVisibleTypes,
params.packageName,
params.letterboxesArray)
}
}
fun onSystemBarAttributesChanged(
displayId: Int,
@Appearance originalAppearance: Int,
originalAppearanceRegions: Array<AppearanceRegion>,
navbarColorManagedByIme: Boolean,
@Behavior behavior: Int,
requestedVisibilities: InsetsVisibilities,
packageName: String,
letterboxDetails: Array<LetterboxDetails>
displayId: Int,
@Appearance originalAppearance: Int,
originalAppearanceRegions: Array<AppearanceRegion>,
navbarColorManagedByIme: Boolean,
@Behavior behavior: Int,
@InsetsType requestedVisibleTypes: Int,
packageName: String,
letterboxDetails: Array<LetterboxDetails>
) {
lastSystemBarAttributesParams =
SystemBarAttributesParams(
@@ -89,7 +89,7 @@ internal constructor(
originalAppearanceRegions.toList(),
navbarColorManagedByIme,
behavior,
requestedVisibilities,
requestedVisibleTypes,
packageName,
letterboxDetails.toList())
@@ -104,7 +104,7 @@ internal constructor(
centralSurfaces.updateBubblesVisibility()
statusBarStateController.setSystemBarAttributes(
appearance, behavior, requestedVisibilities, packageName)
appearance, behavior, requestedVisibleTypes, packageName)
}
private fun modifyAppearanceIfNeeded(
@@ -137,14 +137,14 @@ internal constructor(
* [SystemBarAttributesListener.onSystemBarAttributesChanged].
*/
private data class SystemBarAttributesParams(
val displayId: Int,
@Appearance val appearance: Int,
val appearanceRegions: List<AppearanceRegion>,
val navbarColorManagedByIme: Boolean,
@Behavior val behavior: Int,
val requestedVisibilities: InsetsVisibilities,
val packageName: String,
val letterboxes: List<LetterboxDetails>,
val displayId: Int,
@Appearance val appearance: Int,
val appearanceRegions: List<AppearanceRegion>,
val navbarColorManagedByIme: Boolean,
@Behavior val behavior: Int,
@InsetsType val requestedVisibleTypes: Int,
val packageName: String,
val letterboxes: List<LetterboxDetails>,
) {
val letterboxesArray = letterboxes.toTypedArray()
val appearanceRegionsArray = appearanceRegions.toTypedArray()

View File

@@ -35,7 +35,8 @@ import android.hardware.biometrics.IBiometricSysuiReceiver;
import android.hardware.biometrics.PromptInfo;
import android.hardware.fingerprint.IUdfpsRefreshRateRequestCallback;
import android.os.Bundle;
import android.view.InsetsVisibilities;
import android.view.WindowInsets;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -135,27 +136,29 @@ public class CommandQueueTest extends SysuiTestCase {
public void testOnSystemBarAttributesChanged() {
doTestOnSystemBarAttributesChanged(DEFAULT_DISPLAY, 1,
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test", TEST_LETTERBOX_DETAILS);
BEHAVIOR_DEFAULT, WindowInsets.Type.defaultVisible(), "test",
TEST_LETTERBOX_DETAILS);
}
@Test
public void testOnSystemBarAttributesChangedForSecondaryDisplay() {
doTestOnSystemBarAttributesChanged(SECONDARY_DISPLAY, 1,
new AppearanceRegion[]{new AppearanceRegion(2, new Rect())}, false,
BEHAVIOR_DEFAULT, new InsetsVisibilities(), "test", TEST_LETTERBOX_DETAILS);
BEHAVIOR_DEFAULT, WindowInsets.Type.defaultVisible(), "test",
TEST_LETTERBOX_DETAILS);
}
private void doTestOnSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
@Behavior int behavior, @InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails) {
mCommandQueue.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
navbarColorManagedByIme, behavior, requestedVisibleTypes, packageName,
letterboxDetails);
waitForIdleSync();
verify(mCallbacks).onSystemBarAttributesChanged(eq(displayId), eq(appearance),
eq(appearanceRegions), eq(navbarColorManagedByIme), eq(behavior),
eq(requestedVisibilities), eq(packageName), eq(letterboxDetails));
eq(requestedVisibleTypes), eq(packageName), eq(letterboxDetails));
}
@Test

View File

@@ -29,7 +29,7 @@ import android.app.StatusBarManager;
import android.os.PowerManager;
import android.os.Vibrator;
import android.testing.AndroidTestingRunner;
import android.view.InsetsVisibilities;
import android.view.WindowInsets;
import androidx.test.filters.SmallTest;
@@ -177,7 +177,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
AppearanceRegion[] appearanceRegions = new AppearanceRegion[]{};
boolean navbarColorManagedByIme = true;
int behavior = 456;
InsetsVisibilities requestedVisibilities = new InsetsVisibilities();
int requestedVisibleTypes = WindowInsets.Type.systemBars();
String packageName = "test package name";
LetterboxDetails[] letterboxDetails = new LetterboxDetails[]{};
@@ -187,7 +187,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
appearanceRegions,
navbarColorManagedByIme,
behavior,
requestedVisibilities,
requestedVisibleTypes,
packageName,
letterboxDetails);
@@ -197,7 +197,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
appearanceRegions,
navbarColorManagedByIme,
behavior,
requestedVisibilities,
requestedVisibleTypes,
packageName,
letterboxDetails
);
@@ -209,7 +209,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
AppearanceRegion[] appearanceRegions = new AppearanceRegion[]{};
boolean navbarColorManagedByIme = true;
int behavior = 456;
InsetsVisibilities requestedVisibilities = new InsetsVisibilities();
int requestedVisibleTypes = WindowInsets.Type.systemBars();
String packageName = "test package name";
LetterboxDetails[] letterboxDetails = new LetterboxDetails[]{};
@@ -219,7 +219,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
appearanceRegions,
navbarColorManagedByIme,
behavior,
requestedVisibilities,
requestedVisibleTypes,
packageName,
letterboxDetails);

View File

@@ -30,6 +30,7 @@ import android.testing.TestableLooper.RunWithLooper;
import android.view.Display;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.view.WindowInsets;
import android.view.WindowManager;
import androidx.lifecycle.Observer;
@@ -107,7 +108,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
null /* appearanceRegions */,
false /* navbarColorManagedByIme */,
BEHAVIOR_DEFAULT,
null /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
null /* packageName */,
null /* letterboxDetails */);
assertTrue(mLightsOutNotifController.areLightsOut());
@@ -121,7 +122,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
null /* appearanceRegions */,
false /* navbarColorManagedByIme */,
BEHAVIOR_DEFAULT,
null /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
null /* packageName */,
null /* letterboxDetails */);
assertFalse(mLightsOutNotifController.areLightsOut());
@@ -153,7 +154,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
null /* appearanceRegions */,
false /* navbarColorManagedByIme */,
BEHAVIOR_DEFAULT,
null /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
null /* packageName */,
null /* letterboxDetails */);
@@ -174,7 +175,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
null /* appearanceRegions */,
false /* navbarColorManagedByIme */,
BEHAVIOR_DEFAULT,
null /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
null /* packageName */,
null /* letterboxDetails */);
@@ -195,7 +196,7 @@ public class LightsOutNotifControllerTest extends SysuiTestCase {
null /* appearanceRegions */,
false /* navbarColorManagedByIme */,
BEHAVIOR_DEFAULT,
null /* requestedVisibilities */,
WindowInsets.Type.defaultVisible(),
null /* packageName */,
null /* letterboxDetails */);

View File

@@ -3,12 +3,9 @@ package com.android.systemui.statusbar.phone
import android.graphics.Rect
import android.testing.AndroidTestingRunner
import android.view.Display
import android.view.InsetsVisibilities
import android.view.WindowInsets
import android.view.WindowInsetsController
import android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS
import android.view.WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
import android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS
import android.view.WindowInsetsController.Appearance
import android.view.WindowInsetsController.*
import androidx.test.filters.SmallTest
import com.android.internal.statusbar.LetterboxDetails
import com.android.internal.view.AppearanceRegion
@@ -27,8 +24,8 @@ import org.mockito.Mockito
import org.mockito.Mockito.reset
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyZeroInteractions
import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations
import org.mockito.Mockito.`when` as whenever
@SmallTest
@RunWith(AndroidTestingRunner::class)
@@ -88,7 +85,7 @@ class SystemBarAttributesListenerTest : SysuiTestCase() {
changeSysBarAttrs(TEST_APPEARANCE)
verify(statusBarStateController)
.setSystemBarAttributes(eq(TEST_APPEARANCE), anyInt(), any(), any())
.setSystemBarAttributes(eq(TEST_APPEARANCE), anyInt(), anyInt(), any())
}
@Test
@@ -97,7 +94,7 @@ class SystemBarAttributesListenerTest : SysuiTestCase() {
verify(statusBarStateController)
.setSystemBarAttributes(
eq(TEST_LETTERBOX_APPEARANCE.appearance), anyInt(), any(), any())
eq(TEST_LETTERBOX_APPEARANCE.appearance), anyInt(), anyInt(), any())
}
@Test
@@ -130,7 +127,7 @@ class SystemBarAttributesListenerTest : SysuiTestCase() {
verify(statusBarStateController)
.setSystemBarAttributes(
eq(TEST_LETTERBOX_APPEARANCE.appearance), anyInt(), any(), any())
eq(TEST_LETTERBOX_APPEARANCE.appearance), anyInt(), anyInt(), any())
}
@Test
@@ -197,7 +194,7 @@ class SystemBarAttributesListenerTest : SysuiTestCase() {
appearanceRegions,
/* navbarColorManagedByIme= */ false,
WindowInsetsController.BEHAVIOR_DEFAULT,
InsetsVisibilities(),
WindowInsets.Type.defaultVisible(),
"package name",
letterboxDetails)
}

View File

@@ -22,7 +22,7 @@ import android.hardware.fingerprint.IUdfpsRefreshRateRequestCallback;
import android.os.Bundle;
import android.os.IBinder;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -158,7 +158,7 @@ public interface StatusBarManagerInternal {
/** @see com.android.internal.statusbar.IStatusBar#onSystemBarAttributesChanged */
void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities, String packageName,
@Behavior int behavior, @InsetsType int requestedVisibleTypes, String packageName,
LetterboxDetails[] letterboxDetails);
/** @see com.android.internal.statusbar.IStatusBar#showTransient */

View File

@@ -83,7 +83,8 @@ import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.WindowInsets;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowInsetsController.Appearance;
import android.view.WindowInsetsController.Behavior;
@@ -617,15 +618,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
@Override
public void onSystemBarAttributesChanged(int displayId, @Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
@Behavior int behavior, @InsetsType int requestedVisibleTypes,
String packageName, LetterboxDetails[] letterboxDetails) {
getUiState(displayId).setBarAttributes(appearance, appearanceRegions,
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
navbarColorManagedByIme, behavior, requestedVisibleTypes, packageName,
letterboxDetails);
if (mBar != null) {
try {
mBar.onSystemBarAttributesChanged(displayId, appearance, appearanceRegions,
navbarColorManagedByIme, behavior, requestedVisibilities, packageName,
navbarColorManagedByIme, behavior, requestedVisibleTypes, packageName,
letterboxDetails);
} catch (RemoteException ex) { }
}
@@ -1211,7 +1212,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
private final ArraySet<Integer> mTransientBarTypes = new ArraySet<>();
private boolean mNavbarColorManagedByIme = false;
private @Behavior int mBehavior;
private InsetsVisibilities mRequestedVisibilities = new InsetsVisibilities();
private @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible();
private String mPackageName = "none";
private int mDisabled1 = 0;
private int mDisabled2 = 0;
@@ -1223,14 +1224,14 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
private void setBarAttributes(@Appearance int appearance,
AppearanceRegion[] appearanceRegions, boolean navbarColorManagedByIme,
@Behavior int behavior, InsetsVisibilities requestedVisibilities,
@Behavior int behavior, @InsetsType int requestedVisibleTypes,
String packageName,
LetterboxDetails[] letterboxDetails) {
mAppearance = appearance;
mAppearanceRegions = appearanceRegions;
mNavbarColorManagedByIme = navbarColorManagedByIme;
mBehavior = behavior;
mRequestedVisibilities = requestedVisibilities;
mRequestedVisibleTypes = requestedVisibleTypes;
mPackageName = packageName;
mLetterboxDetails = letterboxDetails;
}
@@ -1363,7 +1364,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
state.mAppearance, state.mAppearanceRegions, state.mImeWindowVis,
state.mImeBackDisposition, state.mShowImeSwitcher,
gatherDisableActionsLocked(mCurrentUserId, 2), state.mImeToken,
state.mNavbarColorManagedByIme, state.mBehavior, state.mRequestedVisibilities,
state.mNavbarColorManagedByIme, state.mBehavior, state.mRequestedVisibleTypes,
state.mPackageName, transientBarTypes, state.mLetterboxDetails);
}
}

View File

@@ -115,11 +115,9 @@ import android.view.InsetsFrameProvider;
import android.view.InsetsSource;
import android.view.InsetsState;
import android.view.InsetsState.InternalInsetsType;
import android.view.InsetsVisibilities;
import android.view.Surface;
import android.view.View;
import android.view.ViewDebug;
import android.view.WindowInsets;
import android.view.WindowInsets.Type;
import android.view.WindowInsets.Type.InsetsType;
import android.view.WindowLayout;
@@ -314,7 +312,6 @@ public class DisplayPolicy {
private int mLastAppearance;
private int mLastBehavior;
private int mLastRequestedVisibleTypes = Type.defaultVisible();
private InsetsVisibilities mRequestedVisibilities = new InsetsVisibilities();
private AppearanceRegion[] mLastStatusBarAppearanceRegions;
private LetterboxDetails[] mLastLetterboxDetails;
@@ -2158,35 +2155,16 @@ public class DisplayPolicy {
mService.mInputManager.setSystemUiLightsOut(
isFullscreen || (appearance & APPEARANCE_LOW_PROFILE_BARS) != 0);
}
final InsetsVisibilities requestedVisibilities =
mLastRequestedVisibleTypes == requestedVisibleTypes
? mRequestedVisibilities
: toInsetsVisibilities(requestedVisibleTypes);
mLastAppearance = appearance;
mLastBehavior = behavior;
mLastRequestedVisibleTypes = requestedVisibleTypes;
mRequestedVisibilities = requestedVisibilities;
mFocusedApp = focusedApp;
mLastFocusIsFullscreen = isFullscreen;
mLastStatusBarAppearanceRegions = statusBarAppearanceRegions;
mLastLetterboxDetails = letterboxDetails;
callStatusBarSafely(statusBar -> statusBar.onSystemBarAttributesChanged(displayId,
appearance, statusBarAppearanceRegions, isNavbarColorManagedByIme, behavior,
requestedVisibilities, focusedApp, letterboxDetails));
}
// TODO (253420890): Remove this when removing mRequestedVisibilities.
private static InsetsVisibilities toInsetsVisibilities(@InsetsType int requestedVisibleTypes) {
final @InsetsType int defaultVisibleTypes = WindowInsets.Type.defaultVisible();
final InsetsVisibilities insetsVisibilities = new InsetsVisibilities();
for (@InternalInsetsType int i = InsetsState.SIZE - 1; i >= 0; i--) {
@InsetsType int type = InsetsState.toPublicType(i);
if ((type & (requestedVisibleTypes ^ defaultVisibleTypes)) != 0) {
// We only set the visibility if it is different from the default one.
insetsVisibilities.setVisibility(i, (type & requestedVisibleTypes) != 0);
}
}
return insetsVisibilities;
requestedVisibleTypes, focusedApp, letterboxDetails));
}
private void callStatusBarSafely(Consumer<StatusBarManagerInternal> consumer) {

View File

@@ -87,7 +87,6 @@ import android.platform.test.annotations.Presubmit;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.Properties;
import android.view.InsetsFrameProvider;
import android.view.InsetsVisibilities;
import android.view.WindowManager;
import androidx.test.filters.MediumTest;
@@ -2302,8 +2301,7 @@ public class SizeCompatTests extends WindowTestsBase {
// We should get a null LetterboxDetails object as there is no letterboxed activity, so
// nothing will get passed to SysUI
verify(statusBar, never()).onSystemBarAttributesChanged(anyInt(), anyInt(),
any(), anyBoolean(), anyInt(),
any(InsetsVisibilities.class), isNull(), isNull());
any(), anyBoolean(), anyInt(), anyInt(), isNull(), isNull());
}
@@ -2331,8 +2329,7 @@ public class SizeCompatTests extends WindowTestsBase {
// Check that letterboxDetails actually gets passed to SysUI
StatusBarManagerInternal statusBar = displayPolicy.getStatusBarManagerInternal();
verify(statusBar).onSystemBarAttributesChanged(anyInt(), anyInt(),
any(), anyBoolean(), anyInt(),
any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails));
any(), anyBoolean(), anyInt(), anyInt(), isNull(), eq(expectedLetterboxDetails));
}
@Test
@@ -2367,8 +2364,7 @@ public class SizeCompatTests extends WindowTestsBase {
// Check that letterboxDetails actually gets passed to SysUI
StatusBarManagerInternal statusBarManager = displayPolicy.getStatusBarManagerInternal();
verify(statusBarManager).onSystemBarAttributesChanged(anyInt(), anyInt(),
any(), anyBoolean(), anyInt(),
any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails));
any(), anyBoolean(), anyInt(), anyInt(), isNull(), eq(expectedLetterboxDetails));
}
@Test
@@ -2420,8 +2416,7 @@ public class SizeCompatTests extends WindowTestsBase {
// Check that letterboxDetails actually gets passed to SysUI
StatusBarManagerInternal statusBar = displayPolicy.getStatusBarManagerInternal();
verify(statusBar).onSystemBarAttributesChanged(anyInt(), anyInt(),
any(), anyBoolean(), anyInt(),
any(InsetsVisibilities.class), isNull(), eq(expectedLetterboxDetails));
any(), anyBoolean(), anyInt(), anyInt(), isNull(), eq(expectedLetterboxDetails));
}
private void recomputeNaturalConfigurationOfUnresizableActivity() {