Merge "[CS] Move LkscrnShadeTransitionCtlr to ShadeInteractor#isShadeEnabled." into udc-qpr-dev am: ed7bbe1fc3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23791305 Change-Id: Id857aedfdc410060410b5bdcb39041948dec6320 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -17,38 +17,52 @@
|
|||||||
package com.android.systemui.shade.domain.interactor
|
package com.android.systemui.shade.domain.interactor
|
||||||
|
|
||||||
import com.android.systemui.dagger.SysUISingleton
|
import com.android.systemui.dagger.SysUISingleton
|
||||||
|
import com.android.systemui.dagger.qualifiers.Application
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardRepository
|
||||||
import com.android.systemui.statusbar.disableflags.data.repository.DisableFlagsRepository
|
import com.android.systemui.statusbar.disableflags.data.repository.DisableFlagsRepository
|
||||||
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.UserSetupRepository
|
||||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
import com.android.systemui.statusbar.policy.DeviceProvisionedController
|
||||||
import com.android.systemui.user.domain.interactor.UserInteractor
|
import com.android.systemui.user.domain.interactor.UserInteractor
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
|
import kotlinx.coroutines.flow.stateIn
|
||||||
|
|
||||||
/** Business logic for shade interactions. */
|
/** Business logic for shade interactions. */
|
||||||
@SysUISingleton
|
@SysUISingleton
|
||||||
class ShadeInteractor
|
class ShadeInteractor
|
||||||
@Inject
|
@Inject
|
||||||
constructor(
|
constructor(
|
||||||
|
@Application scope: CoroutineScope,
|
||||||
disableFlagsRepository: DisableFlagsRepository,
|
disableFlagsRepository: DisableFlagsRepository,
|
||||||
keyguardRepository: KeyguardRepository,
|
keyguardRepository: KeyguardRepository,
|
||||||
userSetupRepository: UserSetupRepository,
|
userSetupRepository: UserSetupRepository,
|
||||||
deviceProvisionedController: DeviceProvisionedController,
|
deviceProvisionedController: DeviceProvisionedController,
|
||||||
userInteractor: UserInteractor,
|
userInteractor: UserInteractor,
|
||||||
) {
|
) {
|
||||||
|
/** Emits true if the shade is currently allowed and false otherwise. */
|
||||||
|
val isShadeEnabled: StateFlow<Boolean> =
|
||||||
|
disableFlagsRepository.disableFlags
|
||||||
|
.map { it.isShadeEnabled() }
|
||||||
|
.stateIn(scope, SharingStarted.Eagerly, initialValue = false)
|
||||||
|
|
||||||
/** Emits true if the shade can be expanded from QQS to QS and false otherwise. */
|
/** Emits true if the shade can be expanded from QQS to QS and false otherwise. */
|
||||||
val isExpandToQsEnabled: Flow<Boolean> =
|
val isExpandToQsEnabled: Flow<Boolean> =
|
||||||
combine(
|
combine(
|
||||||
disableFlagsRepository.disableFlags,
|
disableFlagsRepository.disableFlags,
|
||||||
|
isShadeEnabled,
|
||||||
keyguardRepository.isDozing,
|
keyguardRepository.isDozing,
|
||||||
userSetupRepository.isUserSetupFlow,
|
userSetupRepository.isUserSetupFlow,
|
||||||
) { disableFlags, isDozing, isUserSetup ->
|
) { disableFlags, isShadeEnabled, isDozing, isUserSetup ->
|
||||||
deviceProvisionedController.isDeviceProvisioned &&
|
deviceProvisionedController.isDeviceProvisioned &&
|
||||||
// Disallow QS during setup if it's a simple user switcher. (The user intends to
|
// Disallow QS during setup if it's a simple user switcher. (The user intends to
|
||||||
// use the lock screen user switcher, QS is not needed.)
|
// use the lock screen user switcher, QS is not needed.)
|
||||||
(isUserSetup || !userInteractor.isSimpleUserSwitcher) &&
|
(isUserSetup || !userInteractor.isSimpleUserSwitcher) &&
|
||||||
disableFlags.isShadeEnabled() &&
|
isShadeEnabled &&
|
||||||
disableFlags.isQuickSettingsEnabled() &&
|
disableFlags.isQuickSettingsEnabled() &&
|
||||||
!isDozing
|
!isDozing
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController
|
|||||||
import com.android.systemui.power.domain.interactor.PowerInteractor
|
import com.android.systemui.power.domain.interactor.PowerInteractor
|
||||||
import com.android.systemui.shade.ShadeViewController
|
import com.android.systemui.shade.ShadeViewController
|
||||||
import com.android.systemui.shade.data.repository.ShadeRepository
|
import com.android.systemui.shade.data.repository.ShadeRepository
|
||||||
|
import com.android.systemui.shade.domain.interactor.ShadeInteractor
|
||||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
import com.android.systemui.statusbar.notification.collection.NotificationEntry
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableView
|
import com.android.systemui.statusbar.notification.row.ExpandableView
|
||||||
@@ -76,6 +77,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
dumpManager: DumpManager,
|
dumpManager: DumpManager,
|
||||||
qsTransitionControllerFactory: LockscreenShadeQsTransitionController.Factory,
|
qsTransitionControllerFactory: LockscreenShadeQsTransitionController.Factory,
|
||||||
private val shadeRepository: ShadeRepository,
|
private val shadeRepository: ShadeRepository,
|
||||||
|
private val shadeInteractor: ShadeInteractor,
|
||||||
private val powerInteractor: PowerInteractor,
|
private val powerInteractor: PowerInteractor,
|
||||||
) : Dumpable {
|
) : Dumpable {
|
||||||
private var pulseHeight: Float = 0f
|
private var pulseHeight: Float = 0f
|
||||||
@@ -558,7 +560,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
animationHandler: ((Long) -> Unit)? = null,
|
animationHandler: ((Long) -> Unit)? = null,
|
||||||
cancelAction: Runnable? = null
|
cancelAction: Runnable? = null
|
||||||
) {
|
) {
|
||||||
if (centralSurfaces.isShadeDisabled) {
|
if (!shadeInteractor.isShadeEnabled.value) {
|
||||||
cancelAction?.run()
|
cancelAction?.run()
|
||||||
logger.logShadeDisabledOnGoToLockedShade()
|
logger.logShadeDisabledOnGoToLockedShade()
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -203,8 +203,6 @@ public interface CentralSurfaces extends Dumpable, LifecycleOwner {
|
|||||||
|
|
||||||
int getStatusBarHeight();
|
int getStatusBarHeight();
|
||||||
|
|
||||||
boolean isShadeDisabled();
|
|
||||||
|
|
||||||
boolean isLaunchingActivityOverLockscreen();
|
boolean isLaunchingActivityOverLockscreen();
|
||||||
|
|
||||||
void onKeyguardViewManagerStatesUpdated();
|
void onKeyguardViewManagerStatesUpdated();
|
||||||
@@ -380,14 +378,6 @@ public interface CentralSurfaces extends Dumpable, LifecycleOwner {
|
|||||||
|
|
||||||
void resendMessage(Object msg);
|
void resendMessage(Object msg);
|
||||||
|
|
||||||
int getDisabled1();
|
|
||||||
|
|
||||||
void setDisabled1(int disabled);
|
|
||||||
|
|
||||||
int getDisabled2();
|
|
||||||
|
|
||||||
void setDisabled2(int disabled);
|
|
||||||
|
|
||||||
void setLastCameraLaunchSource(int source);
|
void setLastCameraLaunchSource(int source);
|
||||||
|
|
||||||
void setLaunchCameraOnFinishedGoingToSleep(boolean launch);
|
void setLaunchCameraOnFinishedGoingToSleep(boolean launch);
|
||||||
|
|||||||
@@ -111,6 +111,9 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
|
|||||||
private static final VibrationAttributes HARDWARE_FEEDBACK_VIBRATION_ATTRIBUTES =
|
private static final VibrationAttributes HARDWARE_FEEDBACK_VIBRATION_ATTRIBUTES =
|
||||||
VibrationAttributes.createForUsage(VibrationAttributes.USAGE_HARDWARE_FEEDBACK);
|
VibrationAttributes.createForUsage(VibrationAttributes.USAGE_HARDWARE_FEEDBACK);
|
||||||
|
|
||||||
|
private int mDisabled1;
|
||||||
|
private int mDisabled2;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
CentralSurfacesCommandQueueCallbacks(
|
CentralSurfacesCommandQueueCallbacks(
|
||||||
CentralSurfaces centralSurfaces,
|
CentralSurfaces centralSurfaces,
|
||||||
@@ -256,22 +259,14 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int state2BeforeAdjustment = state2;
|
final int old1 = mDisabled1;
|
||||||
state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);
|
|
||||||
Log.d(CentralSurfaces.TAG,
|
|
||||||
mDisableFlagsLogger.getDisableFlagsString(
|
|
||||||
/* new= */ new DisableFlagsLogger.DisableState(
|
|
||||||
state1, state2BeforeAdjustment),
|
|
||||||
/* newStateAfterLocalModification= */ new DisableFlagsLogger.DisableState(
|
|
||||||
state1, state2)));
|
|
||||||
|
|
||||||
final int old1 = mCentralSurfaces.getDisabled1();
|
|
||||||
final int diff1 = state1 ^ old1;
|
final int diff1 = state1 ^ old1;
|
||||||
mCentralSurfaces.setDisabled1(state1);
|
mDisabled1 = state1;
|
||||||
|
|
||||||
final int old2 = mCentralSurfaces.getDisabled2();
|
state2 = mRemoteInputQuickSettingsDisabler.adjustDisableFlags(state2);
|
||||||
|
final int old2 = mDisabled2;
|
||||||
final int diff2 = state2 ^ old2;
|
final int diff2 = state2 ^ old2;
|
||||||
mCentralSurfaces.setDisabled2(state2);
|
mDisabled2 = state2;
|
||||||
|
|
||||||
if ((diff1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
if ((diff1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
||||||
if ((state1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
if ((state1 & StatusBarManager.DISABLE_EXPAND) != 0) {
|
||||||
|
|||||||
@@ -361,26 +361,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
|||||||
mMessageRouter.sendMessage(msg);
|
mMessageRouter.sendMessage(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDisabled1() {
|
|
||||||
return mDisabled1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDisabled1(int disabled) {
|
|
||||||
mDisabled1 = disabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDisabled2() {
|
|
||||||
return mDisabled2;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDisabled2(int disabled) {
|
|
||||||
mDisabled2 = disabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLastCameraLaunchSource(int source) {
|
public void setLastCameraLaunchSource(int source) {
|
||||||
mLastCameraLaunchSource = source;
|
mLastCameraLaunchSource = source;
|
||||||
@@ -527,11 +507,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
|||||||
|
|
||||||
private CentralSurfacesComponent mCentralSurfacesComponent;
|
private CentralSurfacesComponent mCentralSurfacesComponent;
|
||||||
|
|
||||||
// Flags for disabling the status bar
|
|
||||||
// Two variables because the first one evidently ran out of room for new flags.
|
|
||||||
private int mDisabled1 = 0;
|
|
||||||
private int mDisabled2 = 0;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This keeps track of whether we have (or haven't) registered the predictive back callback.
|
* This keeps track of whether we have (or haven't) registered the predictive back callback.
|
||||||
* Since we can have visible -> visible transitions, we need to avoid
|
* Since we can have visible -> visible transitions, we need to avoid
|
||||||
@@ -1721,11 +1696,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
|||||||
return mStatusBarWindowController.getStatusBarHeight();
|
return mStatusBarWindowController.getStatusBarHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isShadeDisabled() {
|
|
||||||
return (mDisabled2 & StatusBarManager.DISABLE2_NOTIFICATION_SHADE) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateReportRejectedTouchVisibility() {
|
private void updateReportRejectedTouchVisibility() {
|
||||||
if (mReportRejectedTouch == null) {
|
if (mReportRejectedTouch == null) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ public class QuickSettingsControllerBaseTest extends SysuiTestCase {
|
|||||||
when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true);
|
when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true);
|
||||||
mShadeInteractor =
|
mShadeInteractor =
|
||||||
new ShadeInteractor(
|
new ShadeInteractor(
|
||||||
|
mTestScope.getBackgroundScope(),
|
||||||
mDisableFlagsRepository,
|
mDisableFlagsRepository,
|
||||||
mKeyguardRepository,
|
mKeyguardRepository,
|
||||||
new FakeUserSetupRepository(),
|
new FakeUserSetupRepository(),
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ class ShadeInteractorTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
underTest =
|
underTest =
|
||||||
ShadeInteractor(
|
ShadeInteractor(
|
||||||
|
testScope.backgroundScope,
|
||||||
disableFlagsRepository,
|
disableFlagsRepository,
|
||||||
keyguardRepository,
|
keyguardRepository,
|
||||||
userSetupRepository,
|
userSetupRepository,
|
||||||
@@ -125,6 +126,20 @@ class ShadeInteractorTest : SysuiTestCase() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun isShadeEnabled_matchesDisableFlagsRepo() =
|
||||||
|
testScope.runTest {
|
||||||
|
val actual by collectLastValue(underTest.isShadeEnabled)
|
||||||
|
|
||||||
|
disableFlagsRepository.disableFlags.value =
|
||||||
|
DisableFlagsModel(disable2 = DISABLE2_NOTIFICATION_SHADE)
|
||||||
|
assertThat(actual).isFalse()
|
||||||
|
|
||||||
|
disableFlagsRepository.disableFlags.value = DisableFlagsModel(disable2 = DISABLE2_NONE)
|
||||||
|
|
||||||
|
assertThat(actual).isTrue()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun isExpandToQsEnabled_deviceNotProvisioned_false() =
|
fun isExpandToQsEnabled_deviceNotProvisioned_false() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.android.systemui.statusbar
|
package com.android.systemui.statusbar
|
||||||
|
|
||||||
|
import android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE
|
||||||
import android.testing.AndroidTestingRunner
|
import android.testing.AndroidTestingRunner
|
||||||
import android.testing.TestableLooper
|
import android.testing.TestableLooper
|
||||||
import android.testing.TestableLooper.RunWithLooper
|
import android.testing.TestableLooper.RunWithLooper
|
||||||
@@ -11,6 +12,7 @@ import com.android.systemui.classifier.FalsingCollector
|
|||||||
import com.android.systemui.classifier.FalsingCollectorFake
|
import com.android.systemui.classifier.FalsingCollectorFake
|
||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle
|
import com.android.systemui.keyguard.WakefulnessLifecycle
|
||||||
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
||||||
import com.android.systemui.media.controls.ui.MediaHierarchyManager
|
import com.android.systemui.media.controls.ui.MediaHierarchyManager
|
||||||
import com.android.systemui.plugins.ActivityStarter
|
import com.android.systemui.plugins.ActivityStarter
|
||||||
import com.android.systemui.plugins.FalsingManager
|
import com.android.systemui.plugins.FalsingManager
|
||||||
@@ -19,6 +21,9 @@ import com.android.systemui.power.data.repository.FakePowerRepository
|
|||||||
import com.android.systemui.power.domain.interactor.PowerInteractor
|
import com.android.systemui.power.domain.interactor.PowerInteractor
|
||||||
import com.android.systemui.shade.ShadeViewController
|
import com.android.systemui.shade.ShadeViewController
|
||||||
import com.android.systemui.shade.data.repository.FakeShadeRepository
|
import com.android.systemui.shade.data.repository.FakeShadeRepository
|
||||||
|
import com.android.systemui.shade.domain.interactor.ShadeInteractor
|
||||||
|
import com.android.systemui.statusbar.disableflags.data.model.DisableFlagsModel
|
||||||
|
import com.android.systemui.statusbar.disableflags.data.repository.FakeDisableFlagsRepository
|
||||||
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||||
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
|
import com.android.systemui.statusbar.notification.row.NotificationTestHelper
|
||||||
import com.android.systemui.statusbar.notification.stack.AmbientState
|
import com.android.systemui.statusbar.notification.stack.AmbientState
|
||||||
@@ -28,8 +33,13 @@ import com.android.systemui.statusbar.phone.CentralSurfaces
|
|||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
import com.android.systemui.statusbar.phone.KeyguardBypassController
|
||||||
import com.android.systemui.statusbar.phone.LSShadeTransitionLogger
|
import com.android.systemui.statusbar.phone.LSShadeTransitionLogger
|
||||||
import com.android.systemui.statusbar.phone.ScrimController
|
import com.android.systemui.statusbar.phone.ScrimController
|
||||||
|
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeUserSetupRepository
|
||||||
import com.android.systemui.statusbar.policy.FakeConfigurationController
|
import com.android.systemui.statusbar.policy.FakeConfigurationController
|
||||||
import com.android.systemui.util.mockito.mock
|
import com.android.systemui.util.mockito.mock
|
||||||
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
|
import kotlinx.coroutines.test.StandardTestDispatcher
|
||||||
|
import kotlinx.coroutines.test.TestScope
|
||||||
|
import kotlinx.coroutines.test.runCurrent
|
||||||
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
|
||||||
@@ -60,8 +70,11 @@ private fun <T> anyObject(): T {
|
|||||||
@SmallTest
|
@SmallTest
|
||||||
@RunWithLooper(setAsMainLooper = true)
|
@RunWithLooper(setAsMainLooper = true)
|
||||||
@RunWith(AndroidTestingRunner::class)
|
@RunWith(AndroidTestingRunner::class)
|
||||||
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
||||||
|
|
||||||
|
private val testScope = TestScope(StandardTestDispatcher())
|
||||||
|
|
||||||
lateinit var transitionController: LockscreenShadeTransitionController
|
lateinit var transitionController: LockscreenShadeTransitionController
|
||||||
lateinit var row: ExpandableNotificationRow
|
lateinit var row: ExpandableNotificationRow
|
||||||
@Mock lateinit var statusbarStateController: SysuiStatusBarStateController
|
@Mock lateinit var statusbarStateController: SysuiStatusBarStateController
|
||||||
@@ -87,6 +100,15 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock lateinit var qsTransitionController: LockscreenShadeQsTransitionController
|
@Mock lateinit var qsTransitionController: LockscreenShadeQsTransitionController
|
||||||
@Mock lateinit var activityStarter: ActivityStarter
|
@Mock lateinit var activityStarter: ActivityStarter
|
||||||
@Mock lateinit var transitionControllerCallback: LockscreenShadeTransitionController.Callback
|
@Mock lateinit var transitionControllerCallback: LockscreenShadeTransitionController.Callback
|
||||||
|
private val disableFlagsRepository = FakeDisableFlagsRepository()
|
||||||
|
private val shadeInteractor = ShadeInteractor(
|
||||||
|
testScope.backgroundScope,
|
||||||
|
disableFlagsRepository,
|
||||||
|
keyguardRepository = FakeKeyguardRepository(),
|
||||||
|
userSetupRepository = FakeUserSetupRepository(),
|
||||||
|
deviceProvisionedController = mock(),
|
||||||
|
userInteractor = mock(),
|
||||||
|
)
|
||||||
private val powerInteractor = PowerInteractor(
|
private val powerInteractor = PowerInteractor(
|
||||||
FakePowerRepository(),
|
FakePowerRepository(),
|
||||||
FalsingCollectorFake(),
|
FalsingCollectorFake(),
|
||||||
@@ -99,6 +121,10 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setup() {
|
fun setup() {
|
||||||
|
// By default, have the shade enabled
|
||||||
|
disableFlagsRepository.disableFlags.value = DisableFlagsModel()
|
||||||
|
testScope.runCurrent()
|
||||||
|
|
||||||
val helper = NotificationTestHelper(
|
val helper = NotificationTestHelper(
|
||||||
mContext,
|
mContext,
|
||||||
mDependency,
|
mDependency,
|
||||||
@@ -139,6 +165,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
qsTransitionControllerFactory = { qsTransitionController },
|
qsTransitionControllerFactory = { qsTransitionController },
|
||||||
activityStarter = activityStarter,
|
activityStarter = activityStarter,
|
||||||
shadeRepository = FakeShadeRepository(),
|
shadeRepository = FakeShadeRepository(),
|
||||||
|
shadeInteractor = shadeInteractor,
|
||||||
powerInteractor = powerInteractor,
|
powerInteractor = powerInteractor,
|
||||||
)
|
)
|
||||||
transitionController.addCallback(transitionControllerCallback)
|
transitionController.addCallback(transitionControllerCallback)
|
||||||
@@ -214,7 +241,10 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testDontGoWhenShadeDisabled() {
|
fun testDontGoWhenShadeDisabled() {
|
||||||
whenever(mCentralSurfaces.isShadeDisabled).thenReturn(true)
|
disableFlagsRepository.disableFlags.value = DisableFlagsModel(
|
||||||
|
disable2 = DISABLE2_NOTIFICATION_SHADE,
|
||||||
|
)
|
||||||
|
testScope.runCurrent()
|
||||||
transitionController.goToLockedShade(null)
|
transitionController.goToLockedShade(null)
|
||||||
verify(statusbarStateController, never()).setState(anyInt())
|
verify(statusbarStateController, never()).setState(anyInt())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static android.view.Display.DEFAULT_DISPLAY;
|
|||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.verifyZeroInteractions;
|
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -144,23 +145,32 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDisableNotificationShade() {
|
public void testDisableNotificationShade() {
|
||||||
when(mCentralSurfaces.getDisabled1()).thenReturn(StatusBarManager.DISABLE_NONE);
|
// Start with nothing disabled
|
||||||
when(mCentralSurfaces.getDisabled2()).thenReturn(StatusBarManager.DISABLE_NONE);
|
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||||
|
StatusBarManager.DISABLE2_NONE, false);
|
||||||
|
|
||||||
when(mCommandQueue.panelsEnabled()).thenReturn(false);
|
when(mCommandQueue.panelsEnabled()).thenReturn(false);
|
||||||
|
// WHEN the new disable flags have the shade disabled
|
||||||
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||||
StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
|
StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
|
||||||
|
|
||||||
|
// THEN the shade is collapsed
|
||||||
verify(mShadeController).animateCollapseShade();
|
verify(mShadeController).animateCollapseShade();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testEnableNotificationShade() {
|
public void testEnableNotificationShade() {
|
||||||
when(mCentralSurfaces.getDisabled1()).thenReturn(StatusBarManager.DISABLE_NONE);
|
// Start with the shade disabled
|
||||||
when(mCentralSurfaces.getDisabled2())
|
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||||
.thenReturn(StatusBarManager.DISABLE2_NOTIFICATION_SHADE);
|
StatusBarManager.DISABLE2_NOTIFICATION_SHADE, false);
|
||||||
|
reset(mShadeController);
|
||||||
|
|
||||||
when(mCommandQueue.panelsEnabled()).thenReturn(true);
|
when(mCommandQueue.panelsEnabled()).thenReturn(true);
|
||||||
|
// WHEN the new disable flags have the shade enabled
|
||||||
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
mSbcqCallbacks.disable(DEFAULT_DISPLAY, StatusBarManager.DISABLE_NONE,
|
||||||
StatusBarManager.DISABLE2_NONE, false);
|
StatusBarManager.DISABLE2_NONE, false);
|
||||||
|
|
||||||
|
// THEN the shade is not collapsed
|
||||||
verify(mShadeController, never()).animateCollapseShade();
|
verify(mShadeController, never()).animateCollapseShade();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user