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

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

Exempt all app notifs from vis stability when unbundling

Flag: com.android.systemui.notification_bundle_ui
Fixes: 422348323
Test: manual
  1. Go to Settings > Notifications > Notification Organizer is ON
  2. Receives many kinds of notifications like YouTube recommend,
     Instagram update, News, advertisements from apps >>> Expect to have
     the bundle groups
  3. Pull down the shade
  4. Long press on an app with at least 2 notifications under a bundle group to trigger GUTS
  5. Toggle OFF "Use Notification Organizer" & Apply
  6. Observe the notifications
Change-Id: Ie6af0533dc6f3ad473c5bd377db214a29318f474
parent 114489a6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -590,7 +590,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        val entry = NotificationEntryBuilder().setNotification(notification).build()
        underTest = factory.create(entry) as NotificationEntryAdapter

        underTest.onBundleDisabled()
        underTest.onBundleDisabledForEntry()
        verify(kosmos.mockVisualStabilityCoordinator)
            .temporarilyAllowFreeMovement(eq(entry), anyLong())
    }
@@ -627,7 +627,7 @@ class NotificationEntryAdapterTest : SysuiTestCase() {
        whenever(summaryRow.attachedChildren).thenReturn(listOf(childRow))

        underTest = factory.create(summaryEntry) as NotificationEntryAdapter
        underTest.onBundleDisabled()
        underTest.onBundleDisabledForEntry()
        verify(kosmos.mockVisualStabilityCoordinator)
            .temporarilyAllowFreeMovement(eq(summaryEntry), anyLong())
        verify(kosmos.mockVisualStabilityCoordinator)
+5 −5
Original line number Diff line number Diff line
@@ -50,13 +50,14 @@ import com.android.systemui.statusbar.notification.AssistantFeedbackController;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.collection.EntryAdapter;
import com.android.systemui.statusbar.notification.collection.EntryAdapterFactoryImpl;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.promoted.domain.interactor.PackageDemotionInteractor;
import com.android.systemui.statusbar.notification.collection.coordinator.VisualStabilityCoordinator;
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager;
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
import com.android.systemui.statusbar.notification.promoted.domain.interactor.PackageDemotionInteractor;
import com.android.systemui.statusbar.notification.row.icon.AppIconProvider;
import com.android.systemui.statusbar.notification.row.icon.NotificationIconStyleProvider;

@@ -125,14 +126,13 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
        }).build();
        mEntryAdapter = new EntryAdapterFactoryImpl(
                mock(NotificationActivityStarter.class),
                mock(MetricsLogger.class),
                mock(PeopleNotificationIdentifier.class),
                mock(NotificationIconStyleProvider.class),
                mock(VisualStabilityCoordinator.class),
                mock(NotificationActionClickManager.class),
                mock(HighPriorityProvider.class),
                mock(HeadsUpManager.class),
                mOnUserInteractionCallback
                mOnUserInteractionCallback,
                mock(NotifPipeline.class)
        ).create(mEntry);
        mRanking = mEntry.getRanking();
        when(mAssistantFeedbackController.isFeedbackEnabled()).thenReturn(false);
+7 −2
Original line number Diff line number Diff line
@@ -252,9 +252,14 @@ class BundleEntryAdapter(
        return true
    }

    override fun onBundleDisabled() {
    override fun onBundleDisabledForEntry() {
        // do nothing. it should not be possible for a bundle to be contained within a bundle
        Log.wtf(TAG, "onBundleDisabled() called")
        Log.wtf(TAG, "onBundleDisabledForEntry() called")
    }

    override fun onBundleDisabledForApp() {
        // do nothing. it should not be possible for a bundle to be contained within a bundle
        Log.wtf(TAG, "onBundleDisabledForApp() called")
    }

    override fun getBundleType(): Int {
+6 −3
Original line number Diff line number Diff line
@@ -239,11 +239,14 @@ public interface EntryAdapter {
     */
    boolean isBundle();

    /** Processes when the bundle this entry is within is disabled. */
    void onBundleDisabledForEntry();

    /**
     * Processes when the bundle this entry is within is disabled, or when the entry is removed
     * from the bundle it's within because of changed permissions.
     * Processes when the entry is removed from the bundle it's within because of changed app
     * permissions.
     */
    void onBundleDisabled();
    void onBundleDisabledForApp();

    /**
     * Returns the bundle type of this entry if it is a bundle.
+2 −6
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.statusbar.notification.collection

import com.android.internal.logging.MetricsLogger
import com.android.systemui.statusbar.notification.NotificationActivityStarter
import com.android.systemui.statusbar.notification.collection.coordinator.VisualStabilityCoordinator
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider
@@ -24,7 +23,6 @@ import com.android.systemui.statusbar.notification.headsup.HeadsUpManager
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
import com.android.systemui.statusbar.notification.row.NotificationActionClickManager
import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback
import com.android.systemui.statusbar.notification.row.icon.NotificationIconStyleProvider
import javax.inject.Inject

/** Creates an appropriate EntryAdapter for the entry type given */
@@ -32,29 +30,27 @@ class EntryAdapterFactoryImpl
@Inject
constructor(
    private val notificationActivityStarter: NotificationActivityStarter,
    private val metricsLogger: MetricsLogger,
    private val peopleNotificationIdentifier: PeopleNotificationIdentifier,
    private val iconStyleProvider: NotificationIconStyleProvider,
    private val visualStabilityCoordinator: VisualStabilityCoordinator,
    private val notificationActionClickManager: NotificationActionClickManager,
    private val highPriorityProvider: HighPriorityProvider,
    private val headsUpManager: HeadsUpManager,
    private val onUserInteractionCallback: OnUserInteractionCallback,
    private val notifPipeline: NotifPipeline,
) : EntryAdapterFactory {
    override fun create(entry: PipelineEntry): EntryAdapter =
        when (entry) {
            is NotificationEntry ->
                NotificationEntryAdapter(
                    notificationActivityStarter,
                    metricsLogger,
                    peopleNotificationIdentifier,
                    iconStyleProvider,
                    visualStabilityCoordinator,
                    notificationActionClickManager,
                    highPriorityProvider,
                    headsUpManager,
                    onUserInteractionCallback,
                    entry,
                    notifPipeline,
                )
            is BundleEntry ->
                BundleEntryAdapter(highPriorityProvider, onUserInteractionCallback, entry)
Loading