Merge "Keep window expanded when blurring it" into rvc-dev

This commit is contained in:
Lucas Dupin
2020-03-17 03:26:23 +00:00
committed by Android (Google) Code Review
3 changed files with 30 additions and 2 deletions

View File

@@ -31,6 +31,7 @@ import com.android.systemui.Interpolators
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK
import com.android.systemui.statusbar.phone.NotificationShadeWindowController
import com.android.systemui.statusbar.phone.PanelExpansionListener
import com.android.systemui.statusbar.policy.KeyguardStateController
import java.io.FileDescriptor
@@ -50,6 +51,7 @@ class NotificationShadeDepthController @Inject constructor(
private val keyguardStateController: KeyguardStateController,
private val choreographer: Choreographer,
private val wallpaperManager: WallpaperManager,
private val notificationShadeWindowController: NotificationShadeWindowController,
dumpManager: DumpManager
) : PanelExpansionListener, Dumpable {
companion object {
@@ -62,7 +64,6 @@ class NotificationShadeDepthController @Inject constructor(
private var keyguardAnimator: Animator? = null
private var notificationAnimator: Animator? = null
private var updateScheduled: Boolean = false
private var shadeExpansion = 1.0f
private val shadeSpring = SpringAnimation(this, object :
FloatPropertyCompat<NotificationShadeDepthController>("shadeBlurRadius") {
override fun setValue(rect: NotificationShadeDepthController?, value: Float) {
@@ -100,6 +101,7 @@ class NotificationShadeDepthController @Inject constructor(
val rawZoom = max(blurUtils.ratioOfBlurRadius(blur), globalDialogVisibility)
wallpaperManager.setWallpaperZoomOut(root.windowToken,
zoomInterpolator.getInterpolation(rawZoom))
notificationShadeWindowController.setBackgroundBlurRadius(blur)
}
/**

View File

@@ -309,7 +309,8 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
return !state.mForceCollapsed && (state.isKeyguardShowingAndNotOccluded()
|| state.mPanelVisible || state.mKeyguardFadingAway || state.mBouncerShowing
|| state.mHeadsUpShowing || state.mBubblesShowing
|| state.mScrimsVisibility != ScrimController.TRANSPARENT);
|| state.mScrimsVisibility != ScrimController.TRANSPARENT)
|| state.mBackgroundBlurRadius > 0;
}
private void applyFitsSystemWindows(State state) {
@@ -478,6 +479,19 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
apply(mCurrentState);
}
/**
* Current blur level, controller by
* {@link com.android.systemui.statusbar.NotificationShadeDepthController}.
* @param backgroundBlurRadius Radius in pixels.
*/
public void setBackgroundBlurRadius(int backgroundBlurRadius) {
if (mCurrentState.mBackgroundBlurRadius == backgroundBlurRadius) {
return;
}
mCurrentState.mBackgroundBlurRadius = backgroundBlurRadius;
apply(mCurrentState);
}
public void setHeadsUpShowing(boolean showing) {
mCurrentState.mHeadsUpShowing = showing;
apply(mCurrentState);
@@ -665,6 +679,7 @@ public class NotificationShadeWindowController implements Callback, Dumpable,
boolean mForcePluginOpen;
boolean mDozing;
int mScrimsVisibility;
int mBackgroundBlurRadius;
private boolean isKeyguardShowingAndNotOccluded() {
return mKeyguardShowing && !mKeyguardOccluded;

View File

@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -27,6 +28,7 @@ import static org.mockito.Mockito.when;
import android.app.IActivityManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
import android.view.View;
import android.view.WindowManager;
import androidx.test.filters.SmallTest;
@@ -110,4 +112,13 @@ public class NotificationShadeWindowControllerTest extends SysuiTestCase {
public void testSetForcePluginOpen_beforeStatusBarInitialization() {
mNotificationShadeWindowController.setForcePluginOpen(true);
}
@Test
public void setBackgroundBlurRadius_expandedWithBlurs() {
mNotificationShadeWindowController.setBackgroundBlurRadius(10);
verify(mNotificationShadeWindowView).setVisibility(eq(View.VISIBLE));
mNotificationShadeWindowController.setBackgroundBlurRadius(0);
verify(mNotificationShadeWindowView).setVisibility(eq(View.INVISIBLE));
}
}