OSDN Git Service

Using the keyguard fading away duration for the scrim
authorSelim Cinek <cinek@google.com>
Sat, 10 Aug 2019 00:19:57 +0000 (17:19 -0700)
committerSelim Cinek <cinek@google.com>
Sat, 10 Aug 2019 01:01:27 +0000 (18:01 -0700)
Previously we were using a fixed duration and as a result the
scrims duration was much shorter right after boot when the
fading away duration takes 2 seconds. We're now always using
the fading away duration which simplifies also the bypass
transition.

Fixes: 138305791
Test: atest SystemUITests
Change-Id: I2eba68c75c9777ab1ba6ffadadafed3836eb74e3

packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitor.java
packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java

index e87da3c..264a102 100644 (file)
@@ -66,6 +66,7 @@ import com.android.systemui.statusbar.phone.StatusBar;
 import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
 import com.android.systemui.statusbar.phone.UnlockMethodCache;
 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
 import com.android.systemui.util.AsyncSensorManager;
 import com.android.systemui.util.InjectionInflationController;
 import com.android.systemui.util.leak.GarbageMonitor;
@@ -144,9 +145,9 @@ public class SystemUIFactory {
             LockscreenWallpaper lockscreenWallpaper,
             TriConsumer<ScrimState, Float, GradientColors> scrimStateListener,
             Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters,
-            AlarmManager alarmManager) {
+            AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) {
         return new ScrimController(scrimBehind, scrimInFront, scrimStateListener,
-                scrimVisibleListener, dozeParameters, alarmManager);
+                scrimVisibleListener, dozeParameters, alarmManager, keyguardMonitor);
     }
 
     public NotificationIconAreaController createNotificationIconAreaController(Context context,
index c209b31..83b000d 100644 (file)
@@ -296,10 +296,13 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
         mY = y - containerLocation[1];
     }
 
-    private final Callback mKeyguardCallback = () -> {
-        if (!isAttachedToWindow()) return;
-        if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) {
-            hide();
+    private final Callback mKeyguardCallback = new Callback() {
+        @Override
+        public void onKeyguardShowingChanged() {
+            if (!isAttachedToWindow()) return;
+            if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) {
+                hide();
+            }
         }
     };
 
index b12bf5c..a7262cf 100644 (file)
@@ -47,6 +47,7 @@ import com.android.systemui.R;
 import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.statusbar.ScrimView;
 import com.android.systemui.statusbar.notification.stack.ViewState;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
 import com.android.systemui.util.AlarmTimeout;
 import com.android.systemui.util.wakelock.DelayedWakeLock;
 import com.android.systemui.util.wakelock.WakeLock;
@@ -177,7 +178,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
     public ScrimController(ScrimView scrimBehind, ScrimView scrimInFront,
             TriConsumer<ScrimState, Float, GradientColors> scrimStateListener,
             Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters,
-            AlarmManager alarmManager) {
+            AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) {
         mScrimBehind = scrimBehind;
         mScrimInFront = scrimInFront;
         mScrimStateListener = scrimStateListener;
@@ -197,6 +198,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
         // to make sure that text on top of it is legible.
         mScrimBehindAlpha = mScrimBehindAlphaResValue;
         mDozeParameters = dozeParameters;
+        keyguardMonitor.addCallback(new KeyguardMonitor.Callback() {
+            @Override
+            public void onKeyguardFadingAwayChanged() {
+                setKeyguardFadingAway(keyguardMonitor.isKeyguardFadingAway(),
+                        keyguardMonitor.getKeyguardFadingAwayDuration());
+            }
+        });
 
         mColorExtractor = Dependency.get(SysuiColorExtractor.class);
         mColorExtractor.addOnColorsChangedListener(this);
@@ -948,9 +956,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
         }
     }
 
-    public void setUnlockIsFading(boolean unlockFading) {
+    private void setKeyguardFadingAway(boolean fadingAway, long duration) {
         for (ScrimState state : ScrimState.values()) {
-            state.setUnlockIsFading(unlockFading);
+            state.setKeyguardFadingAway(fadingAway, duration);
         }
     }
 
index c706062..d28dadd 100644 (file)
@@ -150,8 +150,8 @@ public enum ScrimState {
         public void prepare(ScrimState previousState) {
             mCurrentBehindAlpha = 0;
             mCurrentInFrontAlpha = 0;
-            mAnimationDuration = mUnlockIsFading
-                    ? KeyguardBypassController.BYPASS_PANEL_FADE_DURATION
+            mAnimationDuration = mKeyguardFadingAway
+                    ? mKeyguardFadingAwayDuration
                     : StatusBar.FADE_KEYGUARD_DURATION;
             mAnimateChange = !mLaunchingAffordanceWithPreview;
 
@@ -203,7 +203,8 @@ public enum ScrimState {
     boolean mHasBackdrop;
     boolean mLaunchingAffordanceWithPreview;
     boolean mWakeLockScreenSensorActive;
-    boolean mUnlockIsFading;
+    boolean mKeyguardFadingAway;
+    long mKeyguardFadingAwayDuration;
 
     ScrimState(int index) {
         mIndex = index;
@@ -292,7 +293,8 @@ public enum ScrimState {
         mWakeLockScreenSensorActive = active;
     }
 
-    public void setUnlockIsFading(boolean unlockIsFading) {
-        mUnlockIsFading = unlockIsFading;
+    public void setKeyguardFadingAway(boolean fadingAway, long duration) {
+        mKeyguardFadingAway = fadingAway;
+        mKeyguardFadingAwayDuration = duration;
     }
 }
\ No newline at end of file
index c943a04..d12bed9 100644 (file)
@@ -938,7 +938,8 @@ public class StatusBar extends SystemUI implements DemoMode,
                         mStatusBarWindow.onScrimVisibilityChanged(scrimsVisible);
                     }
                 }, DozeParameters.getInstance(mContext),
-                mContext.getSystemService(AlarmManager.class));
+                mContext.getSystemService(AlarmManager.class),
+                mKeyguardMonitor);
         mNotificationPanel.initDependencies(this, mGroupManager, mNotificationShelf,
                 mHeadsUpManager, mNotificationIconAreaController, mScrimController);
         mDozeScrimController = new DozeScrimController(DozeParameters.getInstance(context));
@@ -3864,7 +3865,6 @@ public class StatusBar extends SystemUI implements DemoMode,
 
     public void notifyBiometricAuthModeChanged() {
         updateDozing();
-        mScrimController.setUnlockIsFading(mBiometricUnlockController.isUnlockFading());
         updateScrimController();
         mStatusBarWindow.onBiometricAuthModeChanged(mBiometricUnlockController.isWakeAndUnlock(),
                 mBiometricUnlockController.isBiometricUnlock());
index 070136e..e1ef809 100644 (file)
@@ -76,7 +76,7 @@ public interface KeyguardMonitor extends CallbackController<Callback> {
     }
 
     interface Callback {
-        void onKeyguardShowingChanged();
+        default void onKeyguardShowingChanged() {}
         default void onKeyguardFadingAwayChanged() {}
     }
 }
index 8829be4..87ed14a 100644 (file)
@@ -142,10 +142,10 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback
     }
 
     public void notifyKeyguardFadingAway(long delay, long fadeoutDuration, boolean isBypassFading) {
-        setKeyguardFadingAway(true);
         mKeyguardFadingAwayDelay = delay;
         mKeyguardFadingAwayDuration = fadeoutDuration;
         mBypassFadingAnimation = isBypassFading;
+        setKeyguardFadingAway(true);
     }
 
     private void setKeyguardFadingAway(boolean keyguardFadingAway) {
index 0dbf308..97ad47e 100644 (file)
@@ -47,6 +47,7 @@ import com.android.internal.colorextraction.ColorExtractor.GradientColors;
 import com.android.internal.util.function.TriConsumer;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.statusbar.ScrimView;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
 import com.android.systemui.util.wakelock.WakeLock;
 import com.android.systemui.utils.os.FakeHandler;
 
@@ -96,7 +97,8 @@ public class ScrimControllerTest extends SysuiTestCase {
                     mScrimBehindAlpha = scrimBehindAlpha;
                     mScrimInFrontColor = scrimInFrontColor;
                 },
-                visible -> mScrimVisibility = visible, mDozeParamenters, mAlarmManager);
+                visible -> mScrimVisibility = visible, mDozeParamenters, mAlarmManager,
+                mock(KeyguardMonitor.class));
         mScrimController.setHasBackdrop(false);
         mScrimController.setWallpaperSupportsAmbientMode(false);
         mScrimController.transitionTo(ScrimState.KEYGUARD);
@@ -681,9 +683,9 @@ public class ScrimControllerTest extends SysuiTestCase {
         SynchronousScrimController(ScrimView scrimBehind, ScrimView scrimInFront,
                 TriConsumer<ScrimState, Float, GradientColors> scrimStateListener,
                 Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters,
-                AlarmManager alarmManager) {
+                AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) {
             super(scrimBehind, scrimInFront, scrimStateListener, scrimVisibleListener,
-                    dozeParameters, alarmManager);
+                    dozeParameters, alarmManager, keyguardMonitor);
         }
 
         @Override