Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9dd18822 authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Use aconfig flag for communal hub" into main

parents 75e0dbb1 792493ea
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
package com.android.systemui.communal.data.repository
package com.android.systemui.communal.data.repository


import com.android.systemui.FeatureFlags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.Flags
import com.android.systemui.flags.Flags
@@ -15,10 +16,11 @@ interface CommunalRepository {
class CommunalRepositoryImpl
class CommunalRepositoryImpl
@Inject
@Inject
constructor(
constructor(
    private val featureFlags: FeatureFlagsClassic,
    private val featureFlags: FeatureFlags,
    private val featureFlagsClassic: FeatureFlagsClassic,
) : CommunalRepository {
) : CommunalRepository {
    override val isCommunalEnabled: Boolean
    override val isCommunalEnabled: Boolean
        get() =
        get() =
            featureFlags.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) &&
            featureFlagsClassic.isEnabled(Flags.COMMUNAL_SERVICE_ENABLED) &&
                featureFlags.isEnabled(Flags.COMMUNAL_HUB)
                featureFlags.communalHub()
}
}
+6 −5
Original line number Original line Diff line number Diff line
@@ -35,7 +35,6 @@ import com.android.keyguard.KeyguardMessageAreaController;
import com.android.keyguard.LockIconViewController;
import com.android.keyguard.LockIconViewController;
import com.android.keyguard.dagger.KeyguardBouncerComponent;
import com.android.keyguard.dagger.KeyguardBouncerComponent;
import com.android.systemui.Dumpable;
import com.android.systemui.Dumpable;
import com.android.systemui.FeatureFlags;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
@@ -43,6 +42,7 @@ import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor;
import com.android.systemui.bouncer.ui.binder.KeyguardBouncerViewBinder;
import com.android.systemui.bouncer.ui.binder.KeyguardBouncerViewBinder;
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel;
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.communal.data.repository.CommunalRepository;
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel;
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel;
import com.android.systemui.compose.ComposeFacade;
import com.android.systemui.compose.ComposeFacade;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SysUISingleton;
@@ -107,8 +107,8 @@ public class NotificationShadeWindowViewController implements Dumpable {
    private final LockscreenHostedDreamGestureListener mLockscreenHostedDreamGestureListener;
    private final LockscreenHostedDreamGestureListener mLockscreenHostedDreamGestureListener;
    private final NotificationInsetsController mNotificationInsetsController;
    private final NotificationInsetsController mNotificationInsetsController;
    private final CommunalViewModel mCommunalViewModel;
    private final CommunalViewModel mCommunalViewModel;
    private final CommunalRepository mCommunalRepository;
    private final boolean mIsTrackpadCommonEnabled;
    private final boolean mIsTrackpadCommonEnabled;
    private final FeatureFlags mFeatureFlags;
    private final FeatureFlagsClassic mFeatureFlagsClassic;
    private final FeatureFlagsClassic mFeatureFlagsClassic;
    private final SysUIKeyEventHandler mSysUIKeyEventHandler;
    private final SysUIKeyEventHandler mSysUIKeyEventHandler;
    private final PrimaryBouncerInteractor mPrimaryBouncerInteractor;
    private final PrimaryBouncerInteractor mPrimaryBouncerInteractor;
@@ -181,9 +181,9 @@ public class NotificationShadeWindowViewController implements Dumpable {
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            PrimaryBouncerToGoneTransitionViewModel primaryBouncerToGoneTransitionViewModel,
            PrimaryBouncerToGoneTransitionViewModel primaryBouncerToGoneTransitionViewModel,
            CommunalViewModel communalViewModel,
            CommunalViewModel communalViewModel,
            CommunalRepository communalRepository,
            NotificationExpansionRepository notificationExpansionRepository,
            NotificationExpansionRepository notificationExpansionRepository,
            FeatureFlagsClassic featureFlagsClassic,
            FeatureFlagsClassic featureFlagsClassic,
            FeatureFlags featureFlags,
            SystemClock clock,
            SystemClock clock,
            BouncerMessageInteractor bouncerMessageInteractor,
            BouncerMessageInteractor bouncerMessageInteractor,
            BouncerLogger bouncerLogger,
            BouncerLogger bouncerLogger,
@@ -214,8 +214,8 @@ public class NotificationShadeWindowViewController implements Dumpable {
        mLockscreenHostedDreamGestureListener = lockscreenHostedDreamGestureListener;
        mLockscreenHostedDreamGestureListener = lockscreenHostedDreamGestureListener;
        mNotificationInsetsController = notificationInsetsController;
        mNotificationInsetsController = notificationInsetsController;
        mCommunalViewModel = communalViewModel;
        mCommunalViewModel = communalViewModel;
        mCommunalRepository = communalRepository;
        mIsTrackpadCommonEnabled = featureFlagsClassic.isEnabled(TRACKPAD_GESTURE_COMMON);
        mIsTrackpadCommonEnabled = featureFlagsClassic.isEnabled(TRACKPAD_GESTURE_COMMON);
        mFeatureFlags = featureFlags;
        mFeatureFlagsClassic = featureFlagsClassic;
        mFeatureFlagsClassic = featureFlagsClassic;
        mSysUIKeyEventHandler = sysUIKeyEventHandler;
        mSysUIKeyEventHandler = sysUIKeyEventHandler;
        mPrimaryBouncerInteractor = primaryBouncerInteractor;
        mPrimaryBouncerInteractor = primaryBouncerInteractor;
@@ -575,7 +575,8 @@ public class NotificationShadeWindowViewController implements Dumpable {
     * The layout lives in {@link R.id.communal_ui_container}.
     * The layout lives in {@link R.id.communal_ui_container}.
     */
     */
    public void setupCommunalHubLayout() {
    public void setupCommunalHubLayout() {
        if (!mFeatureFlags.communalHub() || !ComposeFacade.INSTANCE.isComposeAvailable()) {
        if (!mCommunalRepository.isCommunalEnabled()
                || !ComposeFacade.INSTANCE.isComposeAvailable()) {
            return;
            return;
        }
        }


+6 −8
Original line number Original line Diff line number Diff line
@@ -23,7 +23,6 @@ import android.view.KeyEvent
import android.view.MotionEvent
import android.view.MotionEvent
import android.view.View
import android.view.View
import android.view.ViewGroup
import android.view.ViewGroup
import androidx.core.view.contains
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardMessageAreaController
import com.android.keyguard.KeyguardMessageAreaController
import com.android.keyguard.KeyguardSecurityContainerController
import com.android.keyguard.KeyguardSecurityContainerController
@@ -31,8 +30,6 @@ import com.android.keyguard.KeyguardSecurityModel
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.LockIconViewController
import com.android.keyguard.LockIconViewController
import com.android.keyguard.dagger.KeyguardBouncerComponent
import com.android.keyguard.dagger.KeyguardBouncerComponent
import com.android.systemui.FakeFeatureFlagsImpl
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.back.domain.interactor.BackActionInteractor
import com.android.systemui.back.domain.interactor.BackActionInteractor
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
@@ -47,6 +44,7 @@ import com.android.systemui.bouncer.ui.BouncerView
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.communal.data.repository.FakeCommunalRepository
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.compose.ComposeFacade.isComposeAvailable
import com.android.systemui.compose.ComposeFacade.isComposeAvailable
import com.android.systemui.dock.DockManager
import com.android.systemui.dock.DockManager
@@ -150,6 +148,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
    private lateinit var mLockscreenHostedDreamGestureListener: LockscreenHostedDreamGestureListener
    private lateinit var mLockscreenHostedDreamGestureListener: LockscreenHostedDreamGestureListener
    @Mock private lateinit var notificationInsetsController: NotificationInsetsController
    @Mock private lateinit var notificationInsetsController: NotificationInsetsController
    @Mock private lateinit var mCommunalViewModel: CommunalViewModel
    @Mock private lateinit var mCommunalViewModel: CommunalViewModel
    private lateinit var mCommunalRepository: FakeCommunalRepository
    @Mock lateinit var keyguardBouncerComponentFactory: KeyguardBouncerComponent.Factory
    @Mock lateinit var keyguardBouncerComponentFactory: KeyguardBouncerComponent.Factory
    @Mock lateinit var keyguardBouncerComponent: KeyguardBouncerComponent
    @Mock lateinit var keyguardBouncerComponent: KeyguardBouncerComponent
    @Mock lateinit var keyguardSecurityContainerController: KeyguardSecurityContainerController
    @Mock lateinit var keyguardSecurityContainerController: KeyguardSecurityContainerController
@@ -175,7 +174,6 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
    private lateinit var testScope: TestScope
    private lateinit var testScope: TestScope


    private lateinit var featureFlagsClassic: FakeFeatureFlagsClassic
    private lateinit var featureFlagsClassic: FakeFeatureFlagsClassic
    private lateinit var featureFlags: FakeFeatureFlagsImpl


    @Before
    @Before
    fun setUp() {
    fun setUp() {
@@ -199,7 +197,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
        featureFlagsClassic.set(MIGRATE_NSSL, false)
        featureFlagsClassic.set(MIGRATE_NSSL, false)
        featureFlagsClassic.set(ALTERNATE_BOUNCER_VIEW, false)
        featureFlagsClassic.set(ALTERNATE_BOUNCER_VIEW, false)


        featureFlags = FakeFeatureFlagsImpl()
        mCommunalRepository = FakeCommunalRepository()


        testScope = TestScope()
        testScope = TestScope()
        fakeClock = FakeSystemClock()
        fakeClock = FakeSystemClock()
@@ -235,9 +233,9 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
                keyguardTransitionInteractor,
                keyguardTransitionInteractor,
                primaryBouncerToGoneTransitionViewModel,
                primaryBouncerToGoneTransitionViewModel,
                mCommunalViewModel,
                mCommunalViewModel,
                mCommunalRepository,
                notificationExpansionRepository,
                notificationExpansionRepository,
                featureFlagsClassic,
                featureFlagsClassic,
                featureFlags,
                fakeClock,
                fakeClock,
                BouncerMessageInteractor(
                BouncerMessageInteractor(
                    repository = BouncerMessageRepositoryImpl(),
                    repository = BouncerMessageRepositoryImpl(),
@@ -499,7 +497,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
            return
            return
        }
        }


        featureFlags.setFlag(FLAG_COMMUNAL_HUB, true)
        mCommunalRepository.setIsCommunalEnabled(true)


        val mockCommunalPlaceholder = mock(View::class.java)
        val mockCommunalPlaceholder = mock(View::class.java)
        val fakeViewIndex = 20
        val fakeViewIndex = 20
@@ -520,7 +518,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
            return
            return
        }
        }


        featureFlags.setFlag(FLAG_COMMUNAL_HUB, false)
        mCommunalRepository.setIsCommunalEnabled(false)


        val mockCommunalPlaceholder = mock(View::class.java)
        val mockCommunalPlaceholder = mock(View::class.java)
        val fakeViewIndex = 20
        val fakeViewIndex = 20
+5 −2
Original line number Original line Diff line number Diff line
@@ -28,7 +28,6 @@ import com.android.keyguard.KeyguardSecurityModel
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.LockIconViewController
import com.android.keyguard.LockIconViewController
import com.android.keyguard.dagger.KeyguardBouncerComponent
import com.android.keyguard.dagger.KeyguardBouncerComponent
import com.android.systemui.FakeFeatureFlagsImpl
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.back.domain.interactor.BackActionInteractor
import com.android.systemui.back.domain.interactor.BackActionInteractor
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
@@ -43,6 +42,7 @@ import com.android.systemui.bouncer.ui.BouncerView
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.bouncer.ui.viewmodel.KeyguardBouncerViewModel
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.classifier.FalsingCollector
import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.classifier.FalsingCollectorFake
import com.android.systemui.communal.data.repository.FakeCommunalRepository
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.dock.DockManager
import com.android.systemui.dock.DockManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
@@ -145,6 +145,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
        Optional<UnfoldTransitionProgressProvider>
        Optional<UnfoldTransitionProgressProvider>
    @Mock private lateinit var notificationInsetsController: NotificationInsetsController
    @Mock private lateinit var notificationInsetsController: NotificationInsetsController
    @Mock private lateinit var mCommunalViewModel: CommunalViewModel
    @Mock private lateinit var mCommunalViewModel: CommunalViewModel
    private lateinit var mCommunalRepository: FakeCommunalRepository
    @Mock private lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor
    @Mock private lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor
    @Mock lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor
    @Mock lateinit var primaryBouncerInteractor: PrimaryBouncerInteractor
    @Mock lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
    @Mock lateinit var alternateBouncerInteractor: AlternateBouncerInteractor
@@ -181,6 +182,8 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
        whenever(keyguardTransitionInteractor.lockscreenToDreamingTransition)
        whenever(keyguardTransitionInteractor.lockscreenToDreamingTransition)
            .thenReturn(emptyFlow())
            .thenReturn(emptyFlow())


        mCommunalRepository = FakeCommunalRepository()

        val featureFlags = FakeFeatureFlags()
        val featureFlags = FakeFeatureFlags()
        featureFlags.set(Flags.TRACKPAD_GESTURE_COMMON, true)
        featureFlags.set(Flags.TRACKPAD_GESTURE_COMMON, true)
        featureFlags.set(Flags.TRACKPAD_GESTURE_FEATURES, false)
        featureFlags.set(Flags.TRACKPAD_GESTURE_FEATURES, false)
@@ -222,9 +225,9 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
                keyguardTransitionInteractor,
                keyguardTransitionInteractor,
                primaryBouncerToGoneTransitionViewModel,
                primaryBouncerToGoneTransitionViewModel,
                mCommunalViewModel,
                mCommunalViewModel,
                mCommunalRepository,
                NotificationExpansionRepository(),
                NotificationExpansionRepository(),
                featureFlags,
                featureFlags,
                FakeFeatureFlagsImpl(),
                FakeSystemClock(),
                FakeSystemClock(),
                BouncerMessageInteractor(
                BouncerMessageInteractor(
                    repository = BouncerMessageRepositoryImpl(),
                    repository = BouncerMessageRepositoryImpl(),