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

Commit 2657c08a authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge changes from topic "b204127880_pipeline_backport_2" into sc-v2-dev

* changes:
  New Pipeline: Disable legacy dynamic privacy listener
  Fix Coordinators failing to build with gradle build in sysui-studio
  Enforce Coordinator encapsulation w/ Dagger
  Add sensitive content redaction to notif pipeline
parents 585e55f5 ad994eed
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.systemui.flags;

import android.content.Context;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.widget.Toast;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
@@ -86,6 +88,22 @@ public class FeatureFlags {
        }
    }

    public void assertLegacyPipelineEnabled() {
        if (isNewNotifPipelineRenderingEnabled()) {
            throw new IllegalStateException("Old pipeline code running w/ new pipeline enabled");
        }
    }

    public boolean checkLegacyPipelineEnabled() {
        if (!isNewNotifPipelineRenderingEnabled()) {
            return true;
        }
        Log.d("NotifPipeline", "Old pipeline code running w/ new pipeline enabled",
                new Exception());
        Toast.makeText(mContext, "Old pipeline code running!", Toast.LENGTH_SHORT).show();
        return false;
    }

    public boolean isNewNotifPipelineEnabled() {
        return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE);
    }
+16 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.view.ViewGroup;

import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.AssistantFeedbackController;
@@ -72,6 +73,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle

    // Dependencies:
    private final DynamicChildBindController mDynamicChildBindController;
    private final FeatureFlags mFeatureFlags;
    protected final NotificationLockscreenUserManager mLockscreenUserManager;
    protected final NotificationGroupManagerLegacy mGroupManager;
    protected final VisualStabilityManager mVisualStabilityManager;
@@ -107,6 +109,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
    public NotificationViewHierarchyManager(
            Context context,
            @Main Handler mainHandler,
            FeatureFlags featureFlags,
            NotificationLockscreenUserManager notificationLockscreenUserManager,
            NotificationGroupManagerLegacy groupManager,
            VisualStabilityManager visualStabilityManager,
@@ -121,6 +124,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
            AssistantFeedbackController assistantFeedbackController) {
        mContext = context;
        mHandler = mainHandler;
        mFeatureFlags = featureFlags;
        mLockscreenUserManager = notificationLockscreenUserManager;
        mBypassController = bypassController;
        mGroupManager = groupManager;
@@ -142,8 +146,10 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
            NotificationListContainer listContainer) {
        mPresenter = presenter;
        mListContainer = listContainer;
        if (!mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
            mDynamicPrivacyController.addListener(this);
        }
    }

    /**
     * Updates the visual representation of the notifications.
@@ -151,6 +157,10 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
    //TODO: Rewrite this to focus on Entries, or some other data object instead of views
    public void updateNotificationViews() {
        Assert.isMainThread();
        if (!mFeatureFlags.checkLegacyPipelineEnabled()) {
            return;
        }

        beginUpdate();

        List<NotificationEntry> activeNotifications = mEntryManager.getVisibleNotifications();
@@ -425,6 +435,10 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
     */
    public void updateRowStates() {
        Assert.isMainThread();
        if (!mFeatureFlags.checkLegacyPipelineEnabled()) {
            return;
        }

        beginUpdate();
        updateRowStatesInternal();
        endUpdate();
@@ -510,6 +524,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle

    @Override
    public void onDynamicPrivacyChanged() {
        mFeatureFlags.assertLegacyPipelineEnabled();
        if (mPerformingUpdate) {
            Log.w(TAG, "onDynamicPrivacyChanged made a re-entrant call");
        }
+2 −0
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ public interface StatusBarDependenciesModule {
    static NotificationViewHierarchyManager provideNotificationViewHierarchyManager(
            Context context,
            @Main Handler mainHandler,
            FeatureFlags featureFlags,
            NotificationLockscreenUserManager notificationLockscreenUserManager,
            NotificationGroupManagerLegacy groupManager,
            VisualStabilityManager visualStabilityManager,
@@ -199,6 +200,7 @@ public interface StatusBarDependenciesModule {
        return new NotificationViewHierarchyManager(
                context,
                mainHandler,
                featureFlags,
                notificationLockscreenUserManager,
                groupManager,
                visualStabilityManager,
+6 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.OnBefo
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeSortListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeTransformGroupsListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
@@ -216,6 +217,11 @@ public class NotifPipeline implements CommonNotifCollection {
        mShadeListBuilder.addOnBeforeRenderListListener(listener);
    }

    /** Registers an invalidator that can be used to invalidate the entire notif list. */
    public void addPreRenderInvalidator(Invalidator invalidator) {
        mShadeListBuilder.addPreRenderInvalidator(invalidator);
    }

    /**
     * Returns a read-only view in to the current shade list, i.e. the list of notifications that
     * are currently present in the shade. If this method is called during pipeline execution it
+16 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.systemui.statusbar.notification.collection.listbuilder.OnBefo
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeTransformGroupsListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.PipelineState;
import com.android.systemui.statusbar.notification.collection.listbuilder.ShadeListBuilderLogger;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.Invalidator;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifComparator;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
@@ -174,6 +175,13 @@ public class ShadeListBuilder implements Dumpable {
        mOnBeforeRenderListListeners.add(listener);
    }

    void addPreRenderInvalidator(Invalidator invalidator) {
        Assert.isMainThread();

        mPipelineState.requireState(STATE_IDLE);
        invalidator.setInvalidationListener(this::onPreRenderInvalidated);
    }

    void addPreGroupFilter(NotifFilter filter) {
        Assert.isMainThread();
        mPipelineState.requireState(STATE_IDLE);
@@ -256,6 +264,14 @@ public class ShadeListBuilder implements Dumpable {
                }
            };

    private void onPreRenderInvalidated(Invalidator invalidator) {
        Assert.isMainThread();

        mLogger.logPreRenderInvalidated(invalidator.getName(), mPipelineState.getState());

        rebuildListIfBefore(STATE_FINALIZING);
    }

    private void onPreGroupFilterInvalidated(NotifFilter filter) {
        Assert.isMainThread();

Loading