Merge changes I09f58bdc,Iaf6cee33 into pi-dev am: b5438ce105

am: 7ee7406915

Change-Id: Id697f434d8b70c929e0390a48e360a5d10dc3e9e
This commit is contained in:
Lucas Dupin
2018-03-20 21:16:59 +00:00
committed by android-build-merger
4 changed files with 40 additions and 7 deletions

View File

@@ -158,6 +158,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
private final WakeLock mWakeLock;
private boolean mWakeLockHeld;
private boolean mKeyguardOccluded;
public ScrimController(LightBarController lightBarController, ScrimView scrimBehind,
ScrimView scrimInFront, View headsUpScrim, Consumer<Integer> scrimVisibleListener,
@@ -268,12 +269,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
// AOD wallpapers should fade away after a while
if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn()
&& (mState == ScrimState.AOD || mState == ScrimState.PULSING)) {
&& mState == ScrimState.AOD) {
if (!mWallpaperVisibilityTimedOut) {
mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
}
} else {
// Do not re-schedule timeout when pulsing, let's save some extra battery.
} else if (mState != ScrimState.PULSING) {
mTimeTicker.cancel();
mWallpaperVisibilityTimedOut = false;
}
@@ -317,7 +319,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
@VisibleForTesting
protected void onHideWallpaperTimeout() {
if (mState != ScrimState.AOD && mState != ScrimState.PULSING) {
if (mState != ScrimState.AOD) {
return;
}
@@ -478,11 +480,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
mLightBarController.setScrimColor(mScrimInFront.getColors());
}
// We want to override the back scrim opacity for AOD and PULSING
// We want to override the back scrim opacity for the AOD state
// when it's time to fade the wallpaper away.
boolean overrideBackScrimAlpha = (mState == ScrimState.PULSING || mState == ScrimState.AOD)
&& mWallpaperVisibilityTimedOut;
if (overrideBackScrimAlpha) {
boolean aodWallpaperTimeout = mState == ScrimState.AOD && mWallpaperVisibilityTimedOut;
// We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim.
boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD)
&& mKeyguardOccluded;
if (aodWallpaperTimeout || occludedKeyguard) {
mCurrentBehindAlpha = 1;
}
@@ -926,6 +930,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
mExpansionAffectsAlpha = expansionAffectsAlpha;
}
public void setKeyguardOccluded(boolean keyguardOccluded) {
mKeyguardOccluded = keyguardOccluded;
}
public interface Callback {
default void onStart() {
}

View File

@@ -2040,6 +2040,7 @@ public class StatusBar extends SystemUI implements DemoMode,
public void setOccluded(boolean occluded) {
mIsOccluded = occluded;
mScrimController.setKeyguardOccluded(occluded);
updateHideIconsForBouncer(false /* animate */);
}

View File

@@ -475,6 +475,19 @@ public class ScrimControllerTest extends SysuiTestCase {
Assert.assertTrue("Should be focusable on keyguard", mScrimInFront.isFocusable());
}
@Test
public void testHidesShowWhenLockedActivity() {
mScrimController.setWallpaperSupportsAmbientMode(true);
mScrimController.setKeyguardOccluded(true);
mScrimController.transitionTo(ScrimState.AOD);
mScrimController.finishAnimationsImmediately();
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
mScrimController.transitionTo(ScrimState.PULSING);
mScrimController.finishAnimationsImmediately();
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
}
/**
* Conserves old notification density after leaving state and coming back.
*

View File

@@ -30,6 +30,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -547,6 +548,16 @@ public class StatusBarTest extends SysuiTestCase {
verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any());
}
@Test
public void testSetOccluded_propagatesToScrimController() {
mStatusBar.setOccluded(true);
verify(mScrimController).setKeyguardOccluded(eq(true));
reset(mScrimController);
mStatusBar.setOccluded(false);
verify(mScrimController).setKeyguardOccluded(eq(false));
}
static class TestableStatusBar extends StatusBar {
public TestableStatusBar(StatusBarKeyguardViewManager man,
UnlockMethodCache unlock, KeyguardIndicationController key,