Merge "Revert "Motion: tweak split shade expansion on lockscreen with media."" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
03879bfc1f
@@ -42,8 +42,4 @@
|
|||||||
the shade (in alpha) -->
|
the shade (in alpha) -->
|
||||||
<dimen name="lockscreen_shade_scrim_transition_distance">200dp</dimen>
|
<dimen name="lockscreen_shade_scrim_transition_distance">200dp</dimen>
|
||||||
|
|
||||||
<!-- Distance that the full shade transition takes in order for media to fully transition to
|
|
||||||
the shade -->
|
|
||||||
<dimen name="lockscreen_shade_media_transition_distance">200dp</dimen>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -795,9 +795,6 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
@TransformationType
|
@TransformationType
|
||||||
fun calculateTransformationType(): Int {
|
fun calculateTransformationType(): Int {
|
||||||
if (isTransitioningToFullShade) {
|
if (isTransitioningToFullShade) {
|
||||||
if (inSplitShade) {
|
|
||||||
return TRANSFORMATION_TYPE_TRANSITION
|
|
||||||
}
|
|
||||||
return TRANSFORMATION_TYPE_FADE
|
return TRANSFORMATION_TYPE_FADE
|
||||||
}
|
}
|
||||||
if (previousLocation == LOCATION_LOCKSCREEN && desiredLocation == LOCATION_QS ||
|
if (previousLocation == LOCATION_LOCKSCREEN && desiredLocation == LOCATION_QS ||
|
||||||
@@ -964,7 +961,6 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
(qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
|
(qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
|
||||||
qsExpansion > 0.4f && onLockscreen -> LOCATION_QS
|
qsExpansion > 0.4f && onLockscreen -> LOCATION_QS
|
||||||
!hasActiveMedia -> LOCATION_QS
|
!hasActiveMedia -> LOCATION_QS
|
||||||
onLockscreen && isSplitShadeExpanding() -> LOCATION_QS
|
|
||||||
onLockscreen && isTransformingToFullShadeAndInQQS() -> LOCATION_QQS
|
onLockscreen && isTransformingToFullShadeAndInQQS() -> LOCATION_QQS
|
||||||
onLockscreen && allowedOnLockscreen -> LOCATION_LOCKSCREEN
|
onLockscreen && allowedOnLockscreen -> LOCATION_LOCKSCREEN
|
||||||
else -> LOCATION_QQS
|
else -> LOCATION_QQS
|
||||||
@@ -990,10 +986,6 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
return location
|
return location
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isSplitShadeExpanding(): Boolean {
|
|
||||||
return inSplitShade && isTransitioningToFullShade
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Are we currently transforming to the full shade and already in QQS
|
* Are we currently transforming to the full shade and already in QQS
|
||||||
*/
|
*/
|
||||||
@@ -1001,10 +993,6 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
if (!isTransitioningToFullShade) {
|
if (!isTransitioningToFullShade) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if (inSplitShade) {
|
|
||||||
// Split shade doesn't use QQS.
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return fullShadeTransitionProgress > 0.5f
|
return fullShadeTransitionProgress > 0.5f
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1012,10 +1000,6 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
* Is the current transformationType fading
|
* Is the current transformationType fading
|
||||||
*/
|
*/
|
||||||
private fun isCurrentlyFading(): Boolean {
|
private fun isCurrentlyFading(): Boolean {
|
||||||
if (isSplitShadeExpanding()) {
|
|
||||||
// Split shade always uses transition instead of fade.
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if (isTransitioningToFullShade) {
|
if (isTransitioningToFullShade) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -513,8 +513,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
mContainer.setExpansion(expansion);
|
mContainer.setExpansion(expansion);
|
||||||
final float translationScaleY = (mInSplitShade
|
final float translationScaleY = (mInSplitShade
|
||||||
? 1 : QSAnimator.SHORT_PARALLAX_AMOUNT) * (expansion - 1);
|
? 1 : QSAnimator.SHORT_PARALLAX_AMOUNT) * (expansion - 1);
|
||||||
boolean onKeyguard = isKeyguardState();
|
boolean onKeyguardAndExpanded = isKeyguardState() && !mShowCollapsedOnKeyguard;
|
||||||
boolean onKeyguardAndExpanded = onKeyguard && !mShowCollapsedOnKeyguard;
|
|
||||||
if (!mHeaderAnimating && !headerWillBeAnimating()) {
|
if (!mHeaderAnimating && !headerWillBeAnimating()) {
|
||||||
getView().setTranslationY(
|
getView().setTranslationY(
|
||||||
onKeyguardAndExpanded
|
onKeyguardAndExpanded
|
||||||
@@ -548,7 +547,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
|||||||
mHeader.updateResources();
|
mHeader.updateResources();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mQSPanelController.setIsOnKeyguard(onKeyguard);
|
|
||||||
mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
|
mFooter.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
|
||||||
mQSFooterActionController.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
|
mQSFooterActionController.setExpansion(onKeyguardAndExpanded ? 1 : expansion);
|
||||||
mQSPanelController.setRevealExpansion(expansion);
|
mQSPanelController.setRevealExpansion(expansion);
|
||||||
|
|||||||
@@ -110,8 +110,6 @@ public class QSPanel extends LinearLayout implements Tunable {
|
|||||||
private final ArrayMap<View, Integer> mChildrenLayoutTop = new ArrayMap<>();
|
private final ArrayMap<View, Integer> mChildrenLayoutTop = new ArrayMap<>();
|
||||||
private final Rect mClippingRect = new Rect();
|
private final Rect mClippingRect = new Rect();
|
||||||
private boolean mUseNewFooter = false;
|
private boolean mUseNewFooter = false;
|
||||||
private ViewGroup mMediaHostView;
|
|
||||||
private boolean mShouldMoveMediaOnExpansion = true;
|
|
||||||
|
|
||||||
public QSPanel(Context context, AttributeSet attrs) {
|
public QSPanel(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
@@ -291,15 +289,9 @@ public class QSPanel extends LinearLayout implements Tunable {
|
|||||||
for (int i = 0; i < getChildCount(); i++) {
|
for (int i = 0; i < getChildCount(); i++) {
|
||||||
View child = getChildAt(i);
|
View child = getChildAt(i);
|
||||||
if (move) {
|
if (move) {
|
||||||
int topOffset;
|
|
||||||
if (child == mMediaHostView && !mShouldMoveMediaOnExpansion) {
|
|
||||||
topOffset = 0;
|
|
||||||
} else {
|
|
||||||
topOffset = tileHeightOffset;
|
|
||||||
}
|
|
||||||
int top = Objects.requireNonNull(mChildrenLayoutTop.get(child));
|
int top = Objects.requireNonNull(mChildrenLayoutTop.get(child));
|
||||||
child.setLeftTopRightBottom(child.getLeft(), top + topOffset,
|
child.setLeftTopRightBottom(child.getLeft(), top + tileHeightOffset,
|
||||||
child.getRight(), top + topOffset + child.getHeight());
|
child.getRight(), top + tileHeightOffset + child.getHeight());
|
||||||
}
|
}
|
||||||
if (child == mTileLayout) {
|
if (child == mTileLayout) {
|
||||||
move = true;
|
move = true;
|
||||||
@@ -471,7 +463,6 @@ public class QSPanel extends LinearLayout implements Tunable {
|
|||||||
if (!mUsingMediaPlayer) {
|
if (!mUsingMediaPlayer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mMediaHostView = hostView;
|
|
||||||
ViewGroup newParent = horizontal ? mHorizontalLinearLayout : this;
|
ViewGroup newParent = horizontal ? mHorizontalLinearLayout : this;
|
||||||
ViewGroup currentParent = (ViewGroup) hostView.getParent();
|
ViewGroup currentParent = (ViewGroup) hostView.getParent();
|
||||||
if (currentParent != newParent) {
|
if (currentParent != newParent) {
|
||||||
@@ -665,19 +656,6 @@ public class QSPanel extends LinearLayout implements Tunable {
|
|||||||
updatePadding();
|
updatePadding();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets whether the media container should move during the expansion of the QS Panel.
|
|
||||||
*
|
|
||||||
* As the QS Panel expands and the QS unsquish, the views below the QS tiles move to adapt to
|
|
||||||
* the new height of the QS tiles.
|
|
||||||
*
|
|
||||||
* In some cases this might not be wanted for media. One example is when there is a transition
|
|
||||||
* animation of the media container happening on split shade lock screen.
|
|
||||||
*/
|
|
||||||
public void setShouldMoveMediaOnExpansion(boolean shouldMoveMediaOnExpansion) {
|
|
||||||
mShouldMoveMediaOnExpansion = shouldMoveMediaOnExpansion;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class H extends Handler {
|
private class H extends Handler {
|
||||||
private static final int ANNOUNCE_FOR_ACCESSIBILITY = 1;
|
private static final int ANNOUNCE_FOR_ACCESSIBILITY = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -419,16 +419,6 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr
|
|||||||
return mView.getBrightnessView();
|
return mView.getBrightnessView();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets whether we are currently on lock screen. */
|
|
||||||
public void setIsOnKeyguard(boolean isOnKeyguard) {
|
|
||||||
boolean isOnSplitShadeLockscreen = mShouldUseSplitNotificationShade && isOnKeyguard;
|
|
||||||
// When the split shade is expanding on lockscreen, the media container transitions from the
|
|
||||||
// lockscreen to QS.
|
|
||||||
// We have to prevent the media container position from moving during the transition to have
|
|
||||||
// a smooth translation animation without stuttering.
|
|
||||||
mView.setShouldMoveMediaOnExpansion(!isOnSplitShadeLockscreen);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public static final class TileRecord {
|
public static final class TileRecord {
|
||||||
public TileRecord(QSTile tile, com.android.systemui.plugins.qs.QSTileView tileView) {
|
public TileRecord(QSTile tile, com.android.systemui.plugins.qs.QSTileView tileView) {
|
||||||
|
|||||||
@@ -342,7 +342,9 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
qS.setTransitionToFullShadeAmount(field, qSDragProgress)
|
qS.setTransitionToFullShadeAmount(field, qSDragProgress)
|
||||||
notificationPanelController.setTransitionToFullShadeAmount(field,
|
notificationPanelController.setTransitionToFullShadeAmount(field,
|
||||||
false /* animate */, 0 /* delay */)
|
false /* animate */, 0 /* delay */)
|
||||||
mediaHierarchyManager.setTransitionToFullShadeAmount(field)
|
// TODO: appear media also in split shade
|
||||||
|
val mediaAmount = if (useSplitShade) 0f else field
|
||||||
|
mediaHierarchyManager.setTransitionToFullShadeAmount(mediaAmount)
|
||||||
transitionToShadeAmountCommon(field)
|
transitionToShadeAmountCommon(field)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,11 +33,10 @@ import com.android.systemui.statusbar.NotificationLockscreenUserManager
|
|||||||
import com.android.systemui.statusbar.StatusBarState
|
import com.android.systemui.statusbar.StatusBarState
|
||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
import com.android.systemui.statusbar.SysuiStatusBarStateController
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
||||||
import com.android.systemui.statusbar.policy.FakeConfigurationController
|
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||||
import com.android.systemui.util.animation.UniqueObjectHostView
|
import com.android.systemui.util.animation.UniqueObjectHostView
|
||||||
import com.android.systemui.util.mockito.any
|
import junit.framework.Assert
|
||||||
import com.google.common.truth.Truth.assertThat
|
|
||||||
import org.junit.Assert.assertNotNull
|
import org.junit.Assert.assertNotNull
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
@@ -45,16 +44,16 @@ import org.junit.Test
|
|||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.ArgumentCaptor
|
import org.mockito.ArgumentCaptor
|
||||||
import org.mockito.ArgumentMatchers
|
import org.mockito.ArgumentMatchers
|
||||||
import org.mockito.ArgumentMatchers.anyBoolean
|
|
||||||
import org.mockito.ArgumentMatchers.anyLong
|
|
||||||
import org.mockito.Captor
|
import org.mockito.Captor
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
import org.mockito.Mockito.`when`
|
import org.mockito.Mockito.`when`
|
||||||
|
import org.mockito.Mockito.any
|
||||||
|
import org.mockito.Mockito.anyBoolean
|
||||||
|
import org.mockito.Mockito.anyLong
|
||||||
import org.mockito.Mockito.clearInvocations
|
import org.mockito.Mockito.clearInvocations
|
||||||
import org.mockito.Mockito.times
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.junit.MockitoJUnit
|
import org.mockito.junit.MockitoJUnit
|
||||||
import org.mockito.Mockito.`when` as whenever
|
|
||||||
|
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@RunWith(AndroidTestingRunner::class)
|
@RunWith(AndroidTestingRunner::class)
|
||||||
@@ -84,6 +83,8 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
@Mock
|
@Mock
|
||||||
private lateinit var keyguardViewController: KeyguardViewController
|
private lateinit var keyguardViewController: KeyguardViewController
|
||||||
@Mock
|
@Mock
|
||||||
|
private lateinit var configurationController: ConfigurationController
|
||||||
|
@Mock
|
||||||
private lateinit var uniqueObjectHostView: UniqueObjectHostView
|
private lateinit var uniqueObjectHostView: UniqueObjectHostView
|
||||||
@Mock
|
@Mock
|
||||||
private lateinit var dreamOverlayStateController: DreamOverlayStateController
|
private lateinit var dreamOverlayStateController: DreamOverlayStateController
|
||||||
@@ -96,7 +97,6 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
val mockito = MockitoJUnit.rule()
|
val mockito = MockitoJUnit.rule()
|
||||||
private lateinit var mediaHiearchyManager: MediaHierarchyManager
|
private lateinit var mediaHiearchyManager: MediaHierarchyManager
|
||||||
private lateinit var mediaFrame: ViewGroup
|
private lateinit var mediaFrame: ViewGroup
|
||||||
private val configurationController = FakeConfigurationController()
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
@@ -176,7 +176,12 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testGoingToFullShade() {
|
fun testGoingToFullShade() {
|
||||||
goToLockscreen()
|
// Let's set it onto Lock screen
|
||||||
|
`when`(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||||
|
`when`(notificationLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(
|
||||||
|
true)
|
||||||
|
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
||||||
|
clearInvocations(mediaCarouselController)
|
||||||
|
|
||||||
// Let's transition all the way to full shade
|
// Let's transition all the way to full shade
|
||||||
mediaHiearchyManager.setTransitionToFullShadeAmount(100000f)
|
mediaHiearchyManager.setTransitionToFullShadeAmount(100000f)
|
||||||
@@ -199,48 +204,41 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
// Let's make sure alpha is set
|
// Let's make sure alpha is set
|
||||||
mediaHiearchyManager.setTransitionToFullShadeAmount(2.0f)
|
mediaHiearchyManager.setTransitionToFullShadeAmount(2.0f)
|
||||||
assertThat(mediaFrame.alpha).isNotEqualTo(1.0f)
|
Assert.assertTrue("alpha should not be 1.0f when cross fading", mediaFrame.alpha != 1.0f)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testTransformationOnLockScreenIsFading() {
|
fun testTransformationOnLockScreenIsFading() {
|
||||||
goToLockscreen()
|
// Let's set it onto Lock screen
|
||||||
expandQS()
|
`when`(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||||
|
`when`(notificationLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(
|
||||||
|
true)
|
||||||
|
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
||||||
|
clearInvocations(mediaCarouselController)
|
||||||
|
|
||||||
|
// Let's transition from lockscreen to qs
|
||||||
|
mediaHiearchyManager.qsExpansion = 1.0f
|
||||||
val transformType = mediaHiearchyManager.calculateTransformationType()
|
val transformType = mediaHiearchyManager.calculateTransformationType()
|
||||||
assertThat(transformType).isEqualTo(MediaHierarchyManager.TRANSFORMATION_TYPE_FADE)
|
Assert.assertTrue("media isn't transforming to qs with a fade",
|
||||||
}
|
transformType == MediaHierarchyManager.TRANSFORMATION_TYPE_FADE)
|
||||||
|
|
||||||
@Test
|
|
||||||
fun calculateTransformationType_onLockShade_inSplitShade_goingToFullShade_returnsTransition() {
|
|
||||||
enableSplitShade()
|
|
||||||
goToLockscreen()
|
|
||||||
expandQS()
|
|
||||||
mediaHiearchyManager.setTransitionToFullShadeAmount(10000f)
|
|
||||||
|
|
||||||
val transformType = mediaHiearchyManager.calculateTransformationType()
|
|
||||||
assertThat(transformType).isEqualTo(MediaHierarchyManager.TRANSFORMATION_TYPE_TRANSITION)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun calculateTransformationType_onLockShade_inSplitShade_notExpanding_returnsFade() {
|
|
||||||
enableSplitShade()
|
|
||||||
goToLockscreen()
|
|
||||||
goToLockedShade()
|
|
||||||
expandQS()
|
|
||||||
mediaHiearchyManager.setTransitionToFullShadeAmount(0f)
|
|
||||||
|
|
||||||
val transformType = mediaHiearchyManager.calculateTransformationType()
|
|
||||||
assertThat(transformType).isEqualTo(MediaHierarchyManager.TRANSFORMATION_TYPE_FADE)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testTransformationOnLockScreenToQQSisFading() {
|
fun testTransformationOnLockScreenToQQSisFading() {
|
||||||
goToLockscreen()
|
// Let's set it onto Lock screen
|
||||||
goToLockedShade()
|
`when`(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||||
|
`when`(notificationLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(
|
||||||
|
true)
|
||||||
|
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
||||||
|
clearInvocations(mediaCarouselController)
|
||||||
|
|
||||||
|
// Let's transition from lockscreen to qs
|
||||||
|
`when`(statusBarStateController.state).thenReturn(StatusBarState.SHADE_LOCKED)
|
||||||
|
statusBarCallback.value.onStatePreChange(StatusBarState.KEYGUARD,
|
||||||
|
StatusBarState.SHADE_LOCKED)
|
||||||
val transformType = mediaHiearchyManager.calculateTransformationType()
|
val transformType = mediaHiearchyManager.calculateTransformationType()
|
||||||
assertThat(transformType).isEqualTo(MediaHierarchyManager.TRANSFORMATION_TYPE_FADE)
|
Assert.assertTrue("media isn't transforming to qqswith a fade",
|
||||||
|
transformType == MediaHierarchyManager.TRANSFORMATION_TYPE_FADE)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -256,32 +254,4 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
verify(mediaCarouselController).closeGuts()
|
verify(mediaCarouselController).closeGuts()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private fun enableSplitShade() {
|
|
||||||
context.getOrCreateTestableResources().addOverride(
|
|
||||||
R.bool.config_use_split_notification_shade, true
|
|
||||||
)
|
|
||||||
configurationController.notifyConfigurationChanged()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun goToLockscreen() {
|
|
||||||
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
|
||||||
whenever(notificationLockscreenUserManager.shouldShowLockscreenNotifications()).thenReturn(
|
|
||||||
true
|
|
||||||
)
|
|
||||||
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
|
||||||
clearInvocations(mediaCarouselController)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun goToLockedShade() {
|
|
||||||
whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE_LOCKED)
|
|
||||||
statusBarCallback.value.onStatePreChange(
|
|
||||||
StatusBarState.KEYGUARD,
|
|
||||||
StatusBarState.SHADE_LOCKED
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun expandQS() {
|
|
||||||
mediaHiearchyManager.qsExpansion = 1.0f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -23,7 +23,7 @@ import com.android.systemui.statusbar.phone.LSShadeTransitionLogger
|
|||||||
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
import com.android.systemui.statusbar.phone.NotificationPanelViewController
|
||||||
import com.android.systemui.statusbar.phone.ScrimController
|
import com.android.systemui.statusbar.phone.ScrimController
|
||||||
import com.android.systemui.statusbar.phone.StatusBar
|
import com.android.systemui.statusbar.phone.StatusBar
|
||||||
import com.android.systemui.statusbar.policy.FakeConfigurationController
|
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||||
import org.junit.After
|
import org.junit.After
|
||||||
import org.junit.Assert.assertFalse
|
import org.junit.Assert.assertFalse
|
||||||
import org.junit.Assert.assertNotNull
|
import org.junit.Assert.assertNotNull
|
||||||
@@ -66,6 +66,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock lateinit var wakefulnessLifecycle: WakefulnessLifecycle
|
@Mock lateinit var wakefulnessLifecycle: WakefulnessLifecycle
|
||||||
@Mock lateinit var mediaHierarchyManager: MediaHierarchyManager
|
@Mock lateinit var mediaHierarchyManager: MediaHierarchyManager
|
||||||
@Mock lateinit var scrimController: ScrimController
|
@Mock lateinit var scrimController: ScrimController
|
||||||
|
@Mock lateinit var configurationController: ConfigurationController
|
||||||
@Mock lateinit var falsingManager: FalsingManager
|
@Mock lateinit var falsingManager: FalsingManager
|
||||||
@Mock lateinit var notificationPanelController: NotificationPanelViewController
|
@Mock lateinit var notificationPanelController: NotificationPanelViewController
|
||||||
@Mock lateinit var nsslController: NotificationStackScrollLayoutController
|
@Mock lateinit var nsslController: NotificationStackScrollLayoutController
|
||||||
@@ -76,8 +77,6 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock lateinit var qS: QS
|
@Mock lateinit var qS: QS
|
||||||
@JvmField @Rule val mockito = MockitoJUnit.rule()
|
@JvmField @Rule val mockito = MockitoJUnit.rule()
|
||||||
|
|
||||||
private val configurationController = FakeConfigurationController()
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
val helper = NotificationTestHelper(
|
val helper = NotificationTestHelper(
|
||||||
@@ -245,27 +244,4 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
verify(qS).setTransitionToFullShadeAmount(anyFloat(), anyFloat())
|
verify(qS).setTransitionToFullShadeAmount(anyFloat(), anyFloat())
|
||||||
verify(depthController).transitionToFullShadeProgress = anyFloat()
|
verify(depthController).transitionToFullShadeProgress = anyFloat()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun setDragDownAmount_setsValueOnMediaHierarchyManager() {
|
|
||||||
transitionController.dragDownAmount = 10f
|
|
||||||
|
|
||||||
verify(mediaHierarchyManager).setTransitionToFullShadeAmount(10f)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
fun setDragDownAmount_inSplitShade_setsValueOnMediaHierarchyManager() {
|
|
||||||
enableSplitShade()
|
|
||||||
|
|
||||||
transitionController.dragDownAmount = 10f
|
|
||||||
|
|
||||||
verify(mediaHierarchyManager).setTransitionToFullShadeAmount(10f)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun enableSplitShade() {
|
|
||||||
context.getOrCreateTestableResources().addOverride(
|
|
||||||
R.bool.config_use_split_notification_shade, true
|
|
||||||
)
|
|
||||||
configurationController.notifyConfigurationChanged()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
package com.android.systemui.statusbar.policy
|
|
||||||
|
|
||||||
import android.content.res.Configuration
|
|
||||||
|
|
||||||
/** Fake implementation of [ConfigurationController] for tests. */
|
|
||||||
class FakeConfigurationController : ConfigurationController {
|
|
||||||
|
|
||||||
private var listener: ConfigurationController.ConfigurationListener? = null
|
|
||||||
|
|
||||||
override fun addCallback(listener: ConfigurationController.ConfigurationListener) {
|
|
||||||
this.listener = listener
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun removeCallback(listener: ConfigurationController.ConfigurationListener) {
|
|
||||||
this.listener = null
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onConfigurationChanged(newConfiguration: Configuration?) {
|
|
||||||
listener?.onConfigChanged(newConfiguration)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun notifyThemeChanged() {
|
|
||||||
listener?.onThemeChanged()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun notifyConfigurationChanged() {
|
|
||||||
onConfigurationChanged(newConfiguration = null)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun isLayoutRtl(): Boolean = false
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user