Fix navigation bar flaky tests

The flakiness is because the timing issue on hasNavigationBar.
When a new display is added, onDisplayAdded is called and we may try to
add nav bar before DisplayPolicy#configure is called, which sets
mHasNavigationBar value. Therefore, we may get false from
hasNavigationBar even if a display does support system decorations.

Fixes: 120748674
Test: atest ActivityManagerMultiDisplayTests
Test: atest
ActivityManagerMultiDisplayTests#testNavBarShowingOnDisplayWithDecor *
100

Change-Id: Idb3c3d0874c15a466d179cc471ade5cea890e20e
This commit is contained in:
Charles Chen
2018-12-18 17:51:56 +08:00
parent 29ca21ba8e
commit 5bdd3e27fb

View File

@@ -505,23 +505,6 @@ public class DisplayPolicy {
// TODO: Make it can take screenshot on external display
mScreenshotHelper = displayContent.isDefaultDisplay
? new ScreenshotHelper(mContext) : null;
}
void systemReady() {
mSystemGestures.systemReady();
}
private int getDisplayId() {
return mDisplayContent.getDisplayId();
}
void onDisplayRemoved() {
mDisplayContent.unregisterPointerEventListener(mSystemGestures);
}
void configure(int width, int height, int shortSizeDp) {
// Allow the navigation bar to move on non-square small devices (phones).
mNavigationBarCanMove = width != height && shortSizeDp < 600;
if (mDisplayContent.isDefaultDisplay) {
mHasStatusBar = true;
@@ -541,6 +524,23 @@ public class DisplayPolicy {
}
}
void systemReady() {
mSystemGestures.systemReady();
}
private int getDisplayId() {
return mDisplayContent.getDisplayId();
}
void onDisplayRemoved() {
mDisplayContent.unregisterPointerEventListener(mSystemGestures);
}
void configure(int width, int height, int shortSizeDp) {
// Allow the navigation bar to move on non-square small devices (phones).
mNavigationBarCanMove = width != height && shortSizeDp < 600;
}
void updateConfigurationDependentBehaviors() {
mNavBarOpacityMode = mContext.getResources().getInteger(R.integer.config_navBarOpacityMode);
}