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

Commit c98a4c38 authored by Steve Elliott's avatar Steve Elliott
Browse files

Decouple NotifIconAreaController and NotifShelf

Bug: 271161129
Test: atest SystemUITests
Change-Id: I656d7d974836eae6fd680f70aeade3ad0ed1353c
parent 277d3cf2
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableViewController
import com.android.systemui.statusbar.notification.shelf.ui.viewmodel.NotificationShelfViewModel
import com.android.systemui.statusbar.notification.shelf.ui.viewmodel.NotificationShelfViewModel
import com.android.systemui.statusbar.notification.stack.AmbientState
import com.android.systemui.statusbar.notification.stack.AmbientState
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController
import com.android.systemui.statusbar.phone.NotificationIconAreaController
import com.android.systemui.statusbar.phone.NotificationIconContainer
import com.android.systemui.statusbar.phone.NotificationIconContainer
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope
import com.android.systemui.util.kotlin.getValue
import com.android.systemui.util.kotlin.getValue
@@ -58,6 +59,7 @@ constructor(
    private val a11yManager: AccessibilityManager,
    private val a11yManager: AccessibilityManager,
    private val falsingManager: FalsingManager,
    private val falsingManager: FalsingManager,
    hostControllerLazy: Lazy<NotificationStackScrollLayoutController>,
    hostControllerLazy: Lazy<NotificationStackScrollLayoutController>,
    private val notificationIconAreaController: NotificationIconAreaController,
) : NotificationShelfController {
) : NotificationShelfController {


    private val hostController: NotificationStackScrollLayoutController by hostControllerLazy
    private val hostController: NotificationStackScrollLayoutController by hostControllerLazy
@@ -87,13 +89,14 @@ constructor(
        hostController.setOnNotificationRemovedListener { child, _ ->
        hostController.setOnNotificationRemovedListener { child, _ ->
            view.requestRoundnessResetFor(child)
            view.requestRoundnessResetFor(child)
        }
        }
        notificationIconAreaController.setShelfIcons(shelf.shelfIcons)
    }
    }


    override val intrinsicHeight: Int
    override val intrinsicHeight: Int
        get() = shelf.intrinsicHeight
        get() = shelf.intrinsicHeight


    override val shelfIcons: NotificationIconContainer
    override val shelfIcons: NotificationIconContainer
        get() = shelf.shelfIcons
        get() = unsupported


    override fun canModifyColorOfNotifications(): Boolean = unsupported
    override fun canModifyColorOfNotifications(): Boolean = unsupported


+3 −1
Original line number Original line Diff line number Diff line
@@ -1253,7 +1253,9 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {


        // TODO: Deal with the ugliness that comes from having some of the status bar broken out
        // TODO: Deal with the ugliness that comes from having some of the status bar broken out
        // into fragments, but the rest here, it leaves some awkward lifecycle and whatnot.
        // into fragments, but the rest here, it leaves some awkward lifecycle and whatnot.
        if (!mFeatureFlags.isEnabled(Flags.NOTIFICATION_SHELF_REFACTOR)) {
            mNotificationIconAreaController.setupShelf(mNotificationShelfController);
            mNotificationIconAreaController.setupShelf(mNotificationShelfController);
        }
        mShadeExpansionStateManager.addExpansionListener(mWakeUpCoordinator);
        mShadeExpansionStateManager.addExpansionListener(mWakeUpCoordinator);


        // Allow plugins to reference DarkIconDispatcher and StatusBarStateController
        // Allow plugins to reference DarkIconDispatcher and StatusBarStateController
+12 −1
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.systemui.animation.Interpolators;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -92,6 +93,8 @@ public class NotificationIconAreaController implements


    private final DemoModeController mDemoModeController;
    private final DemoModeController mDemoModeController;


    private final FeatureFlags mFeatureFlags;

    private int mAodIconAppearTranslation;
    private int mAodIconAppearTranslation;


    private boolean mAnimationsEnabled;
    private boolean mAnimationsEnabled;
@@ -122,11 +125,12 @@ public class NotificationIconAreaController implements
            Optional<Bubbles> bubblesOptional,
            Optional<Bubbles> bubblesOptional,
            DemoModeController demoModeController,
            DemoModeController demoModeController,
            DarkIconDispatcher darkIconDispatcher,
            DarkIconDispatcher darkIconDispatcher,
            StatusBarWindowController statusBarWindowController,
            FeatureFlags featureFlags, StatusBarWindowController statusBarWindowController,
            ScreenOffAnimationController screenOffAnimationController) {
            ScreenOffAnimationController screenOffAnimationController) {
        mContrastColorUtil = ContrastColorUtil.getInstance(context);
        mContrastColorUtil = ContrastColorUtil.getInstance(context);
        mContext = context;
        mContext = context;
        mStatusBarStateController = statusBarStateController;
        mStatusBarStateController = statusBarStateController;
        mFeatureFlags = featureFlags;
        mStatusBarStateController.addCallback(this);
        mStatusBarStateController.addCallback(this);
        mMediaManager = notificationMediaManager;
        mMediaManager = notificationMediaManager;
        mDozeParameters = dozeParameters;
        mDozeParameters = dozeParameters;
@@ -192,9 +196,16 @@ public class NotificationIconAreaController implements
    }
    }


    public void setupShelf(NotificationShelfController notificationShelfController) {
    public void setupShelf(NotificationShelfController notificationShelfController) {
        NotificationShelfController.assertRefactorFlagDisabled(mFeatureFlags);
        mShelfIcons = notificationShelfController.getShelfIcons();
        mShelfIcons = notificationShelfController.getShelfIcons();
    }
    }


    public void setShelfIcons(NotificationIconContainer icons) {
        if (NotificationShelfController.checkRefactorFlagEnabled(mFeatureFlags)) {
            mShelfIcons = icons;
        }
    }

    public void onDensityOrFontScaleChanged(Context context) {
    public void onDensityOrFontScaleChanged(Context context) {
        updateIconLayoutParams(context);
        updateIconLayoutParams(context);
    }
    }
+4 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,7 @@ import androidx.test.filters.SmallTest;


import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationListener;
@@ -75,6 +76,8 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
    @Mock private DemoModeController mDemoModeController;
    @Mock private DemoModeController mDemoModeController;
    @Mock
    @Mock
    private NotificationIconContainer mAodIcons;
    private NotificationIconContainer mAodIcons;
    @Mock
    private FeatureFlags mFeatureFlags;


    @Before
    @Before
    public void setup() {
    public void setup() {
@@ -91,6 +94,7 @@ public class NotificationIconAreaControllerTest extends SysuiTestCase {
                Optional.of(mBubbles),
                Optional.of(mBubbles),
                mDemoModeController,
                mDemoModeController,
                mDarkIconDispatcher,
                mDarkIconDispatcher,
                mFeatureFlags,
                mStatusBarWindowController,
                mStatusBarWindowController,
                mScreenOffAnimationController);
                mScreenOffAnimationController);
    }
    }