Reset the flag of attaching nav to app to prevent flickering

The restoreNavigationBarFromApp() could now be called twice in live tile
mode. Reset the mNavigationBarAttachedToApp once the nav bar is detached
to prevent the nav fade-in animation playing twice.

Bug: 189900722
Test: atest RecentsAnimationControllerTest
Change-Id: Ifa02a7355d6503399de636646d73b9a4b6766a51
This commit is contained in:
shawnlin
2021-06-03 15:24:10 +08:00
parent 21eeb8c976
commit b672d86050
2 changed files with 10 additions and 0 deletions

View File

@@ -658,6 +658,8 @@ public class RecentsAnimationController implements DeathRecipient {
if (!mNavigationBarAttachedToApp) {
return;
}
mNavigationBarAttachedToApp = false;
if (mStatusBar != null) {
mStatusBar.setNavigationBarLumaSamplingEnabled(mDisplayId, true);
}

View File

@@ -519,12 +519,14 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
eq(mDefaultDisplay.mDisplayId), eq(false));
verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
assertTrue(mController.isNavigationBarAttachedToApp());
mController.cleanupAnimation(REORDER_MOVE_TO_TOP);
verify(mController).restoreNavigationBarFromApp(eq(true));
verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
eq(mDefaultDisplay.mDisplayId), eq(true));
verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
assertFalse(mController.isNavigationBarAttachedToApp());
}
@Test
@@ -541,6 +543,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
eq(mDefaultDisplay.mDisplayId), eq(false));
verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
assertTrue(mController.isNavigationBarAttachedToApp());
final WindowContainer parent = navToken.getParent();
@@ -550,6 +553,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
eq(mDefaultDisplay.mDisplayId), eq(true));
verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
assertFalse(mController.isNavigationBarAttachedToApp());
}
@Test
@@ -566,6 +570,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
eq(mDefaultDisplay.mDisplayId), eq(false));
verify(transaction).reparent(navToken.getSurfaceControl(), activity.getSurfaceControl());
verify(transaction).setLayer(navToken.getSurfaceControl(), Integer.MAX_VALUE);
assertTrue(mController.isNavigationBarAttachedToApp());
final WindowContainer parent = navToken.getParent();
@@ -575,6 +580,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
verify(mController.mStatusBar).setNavigationBarLumaSamplingEnabled(
eq(mDefaultDisplay.mDisplayId), eq(true));
verify(transaction).setLayer(navToken.getSurfaceControl(), 0);
assertFalse(mController.isNavigationBarAttachedToApp());
}
@Test
@@ -607,6 +613,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
eq(mDefaultDisplay.mDisplayId), eq(false));
verify(navWindow).setSurfaceTranslationY(-secondary.getBounds().top);
verify(transaction).reparent(navToken.getSurfaceControl(), secondary.getSurfaceControl());
assertTrue(mController.isNavigationBarAttachedToApp());
reset(navWindow);
mController.cleanupAnimation(REORDER_MOVE_TO_ORIGINAL_POSITION);
@@ -616,6 +623,7 @@ public class RecentsAnimationControllerTest extends WindowTestsBase {
verify(navWindow).setSurfaceTranslationY(0);
verify(transaction).reparent(navToken.getSurfaceControl(), parent.getSurfaceControl());
verify(mController).restoreNavigationBarFromApp(eq(false));
assertFalse(mController.isNavigationBarAttachedToApp());
}
@Test