Merge "[Bouncer] Fix translation speed for notifications." into tm-dev am: 56e8e8e7d0 am: f65f90c989

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17697952

Change-Id: I2249fa97b3dd56a7c38d77d6f17fa8c7c1d59134
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Aaron Liu
2022-04-14 17:50:26 +00:00
committed by Automerger Merge Worker
14 changed files with 59 additions and 34 deletions

View File

@@ -475,7 +475,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
public void onPanelExpansionChanged(
float fraction, boolean expanded, boolean tracking) {
mPanelExpansionFraction =
mKeyguardViewManager.bouncerIsInTransit() ? BouncerPanelExpansionCalculator
mKeyguardViewManager.isBouncerInTransit() ? BouncerPanelExpansionCalculator
.aboutToShowBouncerProgress(fraction) : fraction;
updateAlpha();
}

View File

@@ -612,7 +612,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
} else if (progress > 0 && view.getVisibility() != View.VISIBLE) {
view.setVisibility((View.VISIBLE));
}
float alpha = mQSPanelController.bouncerInTransit()
float alpha = mQSPanelController.isBouncerInTransit()
? BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(progress)
: ShadeInterpolation.getContentAlpha(progress);
view.setAlpha(alpha);

View File

@@ -254,8 +254,8 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
*
* @return if bouncer is in transit
*/
public boolean bouncerInTransit() {
return mStatusBarKeyguardViewManager.bouncerIsInTransit();
public boolean isBouncerInTransit() {
return mStatusBarKeyguardViewManager.isBouncerInTransit();
}
}

View File

@@ -31,6 +31,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.row.ExpandableView;
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.BypassController;
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.SectionProvider;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import javax.inject.Inject;
@@ -45,6 +46,10 @@ public class AmbientState {
private final SectionProvider mSectionProvider;
private final BypassController mBypassController;
/**
* Used to read bouncer states.
*/
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private int mScrollY;
private boolean mDimmed;
private ActivatableNotificationView mActivatedChild;
@@ -204,9 +209,11 @@ public class AmbientState {
public AmbientState(
Context context,
@NonNull SectionProvider sectionProvider,
@NonNull BypassController bypassController) {
@NonNull BypassController bypassController,
@Nullable StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
mSectionProvider = sectionProvider;
mBypassController = bypassController;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
reload(context);
}
@@ -661,4 +668,14 @@ public class AmbientState {
public int getStackTopMargin() {
return mStackTopMargin;
}
/**
* Check to see if we are about to show bouncer.
*
* @return if bouncer expansion is between 0 and 1.
*/
public boolean isBouncerInTransit() {
return mStatusBarKeyguardViewManager != null
&& mStatusBarKeyguardViewManager.isBouncerInTransit();
}
}

View File

@@ -27,6 +27,7 @@ import android.view.ViewGroup;
import androidx.annotation.VisibleForTesting;
import com.android.internal.policy.SystemBarUtils;
import com.android.keyguard.BouncerPanelExpansionCalculator;
import com.android.systemui.R;
import com.android.systemui.animation.ShadeInterpolation;
import com.android.systemui.statusbar.EmptyShadeView;
@@ -431,7 +432,9 @@ public class StackScrollAlgorithm {
} else if (ambientState.isExpansionChanging()) {
// Adjust alpha for shade open & close.
float expansion = ambientState.getExpansionFraction();
viewState.alpha = ShadeInterpolation.getContentAlpha(expansion);
viewState.alpha = ambientState.isBouncerInTransit()
? BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(expansion)
: ShadeInterpolation.getContentAlpha(expansion);
}
if (ambientState.isShadeExpanded() && view.mustStayOnScreen()

View File

@@ -48,7 +48,6 @@ import android.view.animation.Interpolator;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.LatencyTracker;
import com.android.keyguard.BouncerPanelExpansionCalculator;
import com.android.systemui.DejankUtils;
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
@@ -798,9 +797,7 @@ public abstract class PanelViewController {
}
mExpandedFraction = Math.min(1f,
maxPanelHeight == 0 ? 0 : mExpandedHeight / maxPanelHeight);
mAmbientState.setExpansionFraction(mStatusBarKeyguardViewManager.bouncerIsInTransit()
? BouncerPanelExpansionCalculator.aboutToShowBouncerProgress(mExpandedFraction)
: mExpandedFraction);
mAmbientState.setExpansionFraction(mExpandedFraction);
onHeightUpdated(mExpandedHeight);
updatePanelExpansionAndVisibility();
});

View File

@@ -1074,7 +1074,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
}
private float getInterpolatedFraction() {
if (mStatusBarKeyguardViewManager.bouncerIsInTransit()) {
if (mStatusBarKeyguardViewManager.isBouncerInTransit()) {
return BouncerPanelExpansionCalculator
.aboutToShowBouncerProgress(mPanelExpansionFraction);
}

View File

@@ -1376,7 +1376,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
/**
* Returns if bouncer expansion is between 0 and 1 non-inclusive.
*/
public boolean bouncerIsInTransit() {
public boolean isBouncerInTransit() {
if (mBouncer == null) return false;
return mBouncer.inTransit();

View File

@@ -190,7 +190,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
QSFragment fragment = resumeAndGetFragment();
enableSplitShade();
setStatusBarState(StatusBarState.KEYGUARD);
when(mQSPanelController.bouncerInTransit()).thenReturn(false);
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
int transitionPxAmount = 123;
float transitionProgress = 0.5f;
@@ -206,7 +206,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
QSFragment fragment = resumeAndGetFragment();
enableSplitShade();
setStatusBarState(StatusBarState.KEYGUARD);
when(mQSPanelController.bouncerInTransit()).thenReturn(true);
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
int transitionPxAmount = 123;
float transitionProgress = 0.5f;

View File

@@ -61,7 +61,7 @@ class QSPanelControllerTest : SysuiTestCase() {
whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider)
whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController)
whenever(qsPanel.resources).thenReturn(mContext.orCreateTestableResources.resources)
whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false)
whenever(statusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false)
controller = QSPanelController(
qsPanel,
@@ -109,10 +109,10 @@ class QSPanelControllerTest : SysuiTestCase() {
}
@Test
fun testBouncerIsInTransit() {
whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true)
assertThat(controller.bouncerInTransit()).isEqualTo(true)
whenever(statusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false)
assertThat(controller.bouncerInTransit()).isEqualTo(false)
fun testIsBouncerInTransit() {
whenever(statusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true)
assertThat(controller.isBouncerInTransit()).isEqualTo(true)
whenever(statusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false)
assertThat(controller.isBouncerInTransit()).isEqualTo(false)
}
}

View File

@@ -64,6 +64,7 @@ import com.android.systemui.statusbar.notification.row.FooterView;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController;
import org.junit.Assert;
@@ -104,6 +105,7 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
@Mock private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController;
@Mock private NotificationShelf mNotificationShelf;
@Mock private NotificationStackSizeCalculator mNotificationStackSizeCalculator;
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@Before
@UiThreadTest
@@ -111,7 +113,8 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
allowTestableLooperAsMainThread();
// Interact with real instance of AmbientState.
mAmbientState = new AmbientState(mContext, mNotificationSectionsManager, mBypassController);
mAmbientState = new AmbientState(mContext, mNotificationSectionsManager, mBypassController,
mStatusBarKeyguardViewManager);
// Inject dependencies before initializing the layout
mDependency.injectTestDependency(SysuiStatusBarStateController.class, mBarState);

View File

@@ -8,6 +8,7 @@ import com.android.systemui.statusbar.EmptyShadeView
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.BypassController
import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm.SectionProvider
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
@@ -21,10 +22,14 @@ class StackScrollAlgorithmTest : SysuiTestCase() {
private val stackScrollAlgorithm = StackScrollAlgorithm(context, hostView)
private val expandableViewState = ExpandableViewState()
private val notificationRow = mock(ExpandableNotificationRow::class.java)
private val mStatusBarKeyguardViewManager = mock(StatusBarKeyguardViewManager::class.java)
private val ambientState = AmbientState(
context,
SectionProvider { _, _ -> false },
BypassController { false })
context,
SectionProvider { _, _ -> false },
BypassController { false },
mStatusBarKeyguardViewManager
)
@Before
fun setUp() {

View File

@@ -1238,7 +1238,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void expansionNotificationAlpha_shadeLocked_bouncerActive_usesBouncerInterpolator() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true);
mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
@@ -1254,7 +1254,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void expansionNotificationAlpha_shadeLocked_bouncerNotActive_usesShadeInterpolator() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false);
mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
@@ -1269,7 +1269,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_unnocclusionAnimating_bouncerActive_usesKeyguardNotifAlpha() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true);
mScrimController.transitionTo(ScrimState.KEYGUARD);
mScrimController.setUnocclusionAnimationRunning(true);
@@ -1290,7 +1290,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_unnocclusionAnimating_bouncerNotActive_usesKeyguardNotifAlpha() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false);
mScrimController.transitionTo(ScrimState.KEYGUARD);
mScrimController.setUnocclusionAnimationRunning(true);
@@ -1311,7 +1311,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_inKeyguardState_bouncerActive_usesInvertedBouncerInterpolator() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(true);
mScrimController.transitionTo(ScrimState.KEYGUARD);
@@ -1330,7 +1330,7 @@ public class ScrimControllerTest extends SysuiTestCase {
@Test
public void notificationAlpha_inKeyguardState_bouncerNotActive_usesInvertedShadeInterpolator() {
when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);
when(mStatusBarKeyguardViewManager.isBouncerInTransit()).thenReturn(false);
mScrimController.transitionTo(ScrimState.KEYGUARD);

View File

@@ -438,12 +438,12 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase {
}
@Test
public void testBouncerIsInTransit() {
public void testIsBouncerInTransit() {
when(mBouncer.inTransit()).thenReturn(true);
Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isTrue();
Truth.assertThat(mStatusBarKeyguardViewManager.isBouncerInTransit()).isTrue();
when(mBouncer.inTransit()).thenReturn(false);
Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isFalse();
Truth.assertThat(mStatusBarKeyguardViewManager.isBouncerInTransit()).isFalse();
mBouncer = null;
Truth.assertThat(mStatusBarKeyguardViewManager.bouncerIsInTransit()).isFalse();
Truth.assertThat(mStatusBarKeyguardViewManager.isBouncerInTransit()).isFalse();
}
}