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

Commit 35e9074e authored by Kevin Han's avatar Kevin Han Committed by Automerger Merge Worker
Browse files

Merge changes I92ee530a,I5a528d65,Ifb3a9ff7,I0c841bec into rvc-dev am:...

Merge changes I92ee530a,I5a528d65,Ifb3a9ff7,I0c841bec into rvc-dev am: 7d00ba0d am: c162225f am: 2bc89e48

Change-Id: Ie8de2e1d4b8c843b07f324a67a5e27681ef305aa
parents 9c388150 2bc89e48
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -95,8 +95,8 @@ public class DynamicChildBindController {


    private void freeChildContent(NotificationEntry entry) {
    private void freeChildContent(NotificationEntry entry) {
        RowContentBindParams params = mStage.getStageParams(entry);
        RowContentBindParams params = mStage.getStageParams(entry);
        params.freeContentViews(FLAG_CONTENT_VIEW_CONTRACTED);
        params.markContentViewsFreeable(FLAG_CONTENT_VIEW_CONTRACTED);
        params.freeContentViews(FLAG_CONTENT_VIEW_EXPANDED);
        params.markContentViewsFreeable(FLAG_CONTENT_VIEW_EXPANDED);
        mStage.requestRebind(entry, null);
        mStage.requestRebind(entry, null);
    }
    }


+0 −5
Original line number Original line Diff line number Diff line
@@ -67,7 +67,6 @@ import com.android.systemui.statusbar.notification.icon.IconPack;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
import com.android.systemui.statusbar.notification.row.NotificationGuts;
import com.android.systemui.statusbar.notification.row.NotificationGuts;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager;
import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager;


import java.util.ArrayList;
import java.util.ArrayList;
@@ -579,10 +578,6 @@ public final class NotificationEntry extends ListEntry {
        if (row != null) row.resetUserExpansion();
        if (row != null) row.resetUserExpansion();
    }
    }


    public void freeContentViewWhenSafe(@InflationFlag int inflationFlag) {
        if (row != null) row.freeContentViewWhenSafe(inflationFlag);
    }

    public boolean rowExists() {
    public boolean rowExists() {
        return row != null;
        return row != null;
    }
    }
+60 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator;
package com.android.systemui.statusbar.notification.collection.coordinator;


import static com.android.systemui.statusbar.NotificationRemoteInputManager.FORCE_REMOTE_INPUT_HISTORY;
import static com.android.systemui.statusbar.NotificationRemoteInputManager.FORCE_REMOTE_INPUT_HISTORY;
import static com.android.systemui.statusbar.notification.interruption.NotificationAlertingManager.alertAgain;


import android.annotation.Nullable;
import android.annotation.Nullable;


@@ -28,6 +29,8 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.plugga
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSection;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSection;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
import com.android.systemui.statusbar.notification.headsup.HeadsUpViewBinder;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;


@@ -55,6 +58,8 @@ public class HeadsUpCoordinator implements Coordinator {
    private static final String TAG = "HeadsUpCoordinator";
    private static final String TAG = "HeadsUpCoordinator";


    private final HeadsUpManager mHeadsUpManager;
    private final HeadsUpManager mHeadsUpManager;
    private final HeadsUpViewBinder mHeadsUpViewBinder;
    private final NotificationInterruptStateProvider mNotificationInterruptStateProvider;
    private final NotificationRemoteInputManager mRemoteInputManager;
    private final NotificationRemoteInputManager mRemoteInputManager;


    // tracks the current HeadUpNotification reported by HeadsUpManager
    // tracks the current HeadUpNotification reported by HeadsUpManager
@@ -66,8 +71,12 @@ public class HeadsUpCoordinator implements Coordinator {
    @Inject
    @Inject
    public HeadsUpCoordinator(
    public HeadsUpCoordinator(
            HeadsUpManager headsUpManager,
            HeadsUpManager headsUpManager,
            HeadsUpViewBinder headsUpViewBinder,
            NotificationInterruptStateProvider notificationInterruptStateProvider,
            NotificationRemoteInputManager remoteInputManager) {
            NotificationRemoteInputManager remoteInputManager) {
        mHeadsUpManager = headsUpManager;
        mHeadsUpManager = headsUpManager;
        mHeadsUpViewBinder = headsUpViewBinder;
        mNotificationInterruptStateProvider = notificationInterruptStateProvider;
        mRemoteInputManager = remoteInputManager;
        mRemoteInputManager = remoteInputManager;
    }
    }


@@ -84,7 +93,50 @@ public class HeadsUpCoordinator implements Coordinator {
        return mNotifSection;
        return mNotifSection;
    }
    }


    private void onHeadsUpViewBound(NotificationEntry entry) {
        mHeadsUpManager.showNotification(entry);
    }

    private final NotifCollectionListener mNotifCollectionListener = new NotifCollectionListener() {
    private final NotifCollectionListener mNotifCollectionListener = new NotifCollectionListener() {
        /**
         * Notification was just added and if it should heads up, bind the view and then show it.
         */
        @Override
        public void onEntryAdded(NotificationEntry entry) {
            if (mNotificationInterruptStateProvider.shouldHeadsUp(entry)) {
                mHeadsUpViewBinder.bindHeadsUpView(
                        entry,
                        HeadsUpCoordinator.this::onHeadsUpViewBound);
            }
        }

        /**
         * Notification could've updated to be heads up or not heads up. Even if it did update to
         * heads up, if the notification specified that it only wants to alert once, don't heads
         * up again.
         */
        @Override
        public void onEntryUpdated(NotificationEntry entry) {
            boolean hunAgain = alertAgain(entry, entry.getSbn().getNotification());
            // includes check for whether this notification should be filtered:
            boolean shouldHeadsUp = mNotificationInterruptStateProvider.shouldHeadsUp(entry);
            final boolean wasHeadsUp = mHeadsUpManager.isAlerting(entry.getKey());
            if (wasHeadsUp) {
                if (shouldHeadsUp) {
                    mHeadsUpManager.updateNotification(entry.getKey(), hunAgain);
                } else if (!mHeadsUpManager.isEntryAutoHeadsUpped(entry.getKey())) {
                    // We don't want this to be interrupting anymore, let's remove it
                    mHeadsUpManager.removeNotification(
                            entry.getKey(), false /* removeImmediately */);
                }
            } else if (shouldHeadsUp && hunAgain) {
                // This notification was updated to be heads up, show it!
                mHeadsUpViewBinder.bindHeadsUpView(
                        entry,
                        HeadsUpCoordinator.this::onHeadsUpViewBound);
            }
        }

        /**
        /**
         * Stop alerting HUNs that are removed from the notification collection
         * Stop alerting HUNs that are removed from the notification collection
         */
         */
@@ -98,6 +150,11 @@ public class HeadsUpCoordinator implements Coordinator {
                mHeadsUpManager.removeNotification(entry.getKey(), removeImmediatelyForRemoteInput);
                mHeadsUpManager.removeNotification(entry.getKey(), removeImmediatelyForRemoteInput);
            }
            }
        }
        }

        @Override
        public void onEntryCleanUp(NotificationEntry entry) {
            mHeadsUpViewBinder.abortBindCallback(entry);
        }
    };
    };


    private final NotifLifetimeExtender mLifetimeExtender = new NotifLifetimeExtender() {
    private final NotifLifetimeExtender mLifetimeExtender = new NotifLifetimeExtender() {
@@ -153,6 +210,9 @@ public class HeadsUpCoordinator implements Coordinator {
                mNotifPromoter.invalidateList();
                mNotifPromoter.invalidateList();
                mNotifSection.invalidateList();
                mNotifSection.invalidateList();
            }
            }
            if (!isHeadsUp) {
                mHeadsUpViewBinder.unbindHeadsUpView(entry);
            }
        }
        }
    };
    };


+1 −14
Original line number Original line Diff line number Diff line
@@ -33,9 +33,7 @@ import com.android.systemui.statusbar.notification.collection.inflation.NotifInf
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
import com.android.systemui.statusbar.policy.HeadsUpManager;


import java.lang.annotation.Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
@@ -63,8 +61,6 @@ public class PreparationCoordinator implements Coordinator {
    private final NotifViewBarn mViewBarn;
    private final NotifViewBarn mViewBarn;
    private final Map<NotificationEntry, Integer> mInflationStates = new ArrayMap<>();
    private final Map<NotificationEntry, Integer> mInflationStates = new ArrayMap<>();
    private final IStatusBarService mStatusBarService;
    private final IStatusBarService mStatusBarService;
    private final NotificationInterruptStateProvider mNotificationInterruptStateProvider;
    private final HeadsUpManager mHeadsUpManager;


    @Inject
    @Inject
    public PreparationCoordinator(
    public PreparationCoordinator(
@@ -72,9 +68,7 @@ public class PreparationCoordinator implements Coordinator {
            NotifInflaterImpl notifInflater,
            NotifInflaterImpl notifInflater,
            NotifInflationErrorManager errorManager,
            NotifInflationErrorManager errorManager,
            NotifViewBarn viewBarn,
            NotifViewBarn viewBarn,
            IStatusBarService service,
            IStatusBarService service
            NotificationInterruptStateProvider notificationInterruptStateProvider,
            HeadsUpManager headsUpManager
    ) {
    ) {
        mLogger = logger;
        mLogger = logger;
        mNotifInflater = notifInflater;
        mNotifInflater = notifInflater;
@@ -83,8 +77,6 @@ public class PreparationCoordinator implements Coordinator {
        mNotifErrorManager.addInflationErrorListener(mInflationErrorListener);
        mNotifErrorManager.addInflationErrorListener(mInflationErrorListener);
        mViewBarn = viewBarn;
        mViewBarn = viewBarn;
        mStatusBarService = service;
        mStatusBarService = service;
        mNotificationInterruptStateProvider = notificationInterruptStateProvider;
        mHeadsUpManager = headsUpManager;
    }
    }


    @Override
    @Override
@@ -158,11 +150,6 @@ public class PreparationCoordinator implements Coordinator {
            mLogger.logNotifInflated(entry.getKey());
            mLogger.logNotifInflated(entry.getKey());
            mViewBarn.registerViewForEntry(entry, entry.getRow());
            mViewBarn.registerViewForEntry(entry, entry.getRow());
            mInflationStates.put(entry, STATE_INFLATED);
            mInflationStates.put(entry, STATE_INFLATED);

            // TODO: should eventually be moved to HeadsUpCoordinator
            if (mNotificationInterruptStateProvider.shouldHeadsUp(entry)) {
                mHeadsUpManager.showNotification(entry);
            }
            mNotifInflatingFilter.invalidateList();
            mNotifInflatingFilter.invalidateList();
        }
        }
    };
    };
+0 −9
Original line number Original line Diff line number Diff line
@@ -16,8 +16,6 @@


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


import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;

import android.annotation.Nullable;
import android.annotation.Nullable;
import android.content.Context;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
@@ -227,24 +225,17 @@ public class NotificationRowBinderImpl implements NotificationRowBinder {


        final boolean useIncreasedCollapsedHeight =
        final boolean useIncreasedCollapsedHeight =
                mMessagingUtil.isImportantMessaging(sbn, entry.getImportance());
                mMessagingUtil.isImportantMessaging(sbn, entry.getImportance());
        final boolean useIncreasedHeadsUp = useIncreasedCollapsedHeight
                && !mPresenter.isPresenterFullyCollapsed();
        final boolean isLowPriority = entry.isAmbient();
        final boolean isLowPriority = entry.isAmbient();


        RowContentBindParams params = mRowContentBindStage.getStageParams(entry);
        RowContentBindParams params = mRowContentBindStage.getStageParams(entry);
        params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
        params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
        params.setUseIncreasedHeadsUpHeight(useIncreasedHeadsUp);
        params.setUseLowPriority(entry.isAmbient());
        params.setUseLowPriority(entry.isAmbient());


        if (mNotificationInterruptStateProvider.shouldHeadsUp(entry)) {
            params.requireContentViews(FLAG_CONTENT_VIEW_HEADS_UP);
        }
        //TODO: Replace this API with RowContentBindParams directly
        //TODO: Replace this API with RowContentBindParams directly
        row.setNeedsRedaction(mNotificationLockscreenUserManager.needsRedaction(entry));
        row.setNeedsRedaction(mNotificationLockscreenUserManager.needsRedaction(entry));
        params.rebindAllContentViews();
        params.rebindAllContentViews();
        mRowContentBindStage.requestRebind(entry, en -> {
        mRowContentBindStage.requestRebind(entry, en -> {
            row.setUsesIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
            row.setUsesIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
            row.setUsesIncreasedHeadsUpHeight(useIncreasedHeadsUp);
            row.setIsLowPriority(isLowPriority);
            row.setIsLowPriority(isLowPriority);
            mInflationCallback.onAsyncInflationFinished(en);
            mInflationCallback.onAsyncInflationFinished(en);
        });
        });
Loading