From 9d80fb048d39e5d787a74db3dfaf77877d28d752 Mon Sep 17 00:00:00 2001 From: Jeff DeCew Date: Wed, 24 Nov 2021 21:48:02 +0000 Subject: [PATCH] New Pipeline: Add a debug flag to always log the ShadeListBuilder result. Test: manual Change-Id: I79010ecf8752dfc0d6178f3c4c428928051ddcb2 --- .../src/com/android/systemui/flags/Flags.java | 4 ++++ .../statusbar/notification/NotifPipelineFlags.kt | 11 +++++++---- .../notification/collection/ShadeListBuilder.java | 6 +++++- .../notification/collection/ShadeListBuilderTest.java | 11 +++++++++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index a1413f9e1b744..1120fba3dd89d 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java @@ -46,6 +46,10 @@ public class Flags { public static final BooleanFlag NOTIFICATION_UPDATES = new BooleanFlag(102, true); + public static final BooleanFlag NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = + new BooleanFlag(103, false); + + /***************************************/ // 200 - keyguard/lockscreen public static final BooleanFlag KEYGUARD_LAYOUT = diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt index 0fb9fc80e5100..4e31a9619cba2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt @@ -24,8 +24,8 @@ import com.android.systemui.flags.Flags import javax.inject.Inject class NotifPipelineFlags @Inject constructor( - val context: Context, - val featureFlags: FeatureFlags + val context: Context, + val featureFlags: FeatureFlags ) { fun checkLegacyPipelineEnabled(): Boolean { if (!featureFlags.isEnabled(Flags.NEW_NOTIFICATION_PIPELINE_RENDERING)) { @@ -39,7 +39,10 @@ class NotifPipelineFlags @Inject constructor( fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled( Flags.NEW_NOTIFICATION_PIPELINE_RENDERING) + fun isDevLoggingEnabled(): Boolean = + featureFlags.isEnabled(Flags.NOTIFICATION_PIPELINE_DEVELOPER_LOGGING) + fun isSmartspaceDedupingEnabled(): Boolean = - featureFlags.isEnabled(Flags.SMARTSPACE) - && featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) + featureFlags.isEnabled(Flags.SMARTSPACE) && + featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) } \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java index 72cd95128779b..12483f0e20352 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java @@ -42,6 +42,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection; import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener; import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener; @@ -87,6 +88,7 @@ public class ShadeListBuilder implements Dumpable { private final NotificationInteractionTracker mInteractionTracker; // used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated private final ArrayList mTempSectionMembers = new ArrayList<>(); + private final boolean mAlwaysLogList; private List mNotifList = new ArrayList<>(); private List mNewNotifList = new ArrayList<>(); @@ -119,6 +121,7 @@ public class ShadeListBuilder implements Dumpable { @Inject public ShadeListBuilder( SystemClock systemClock, + NotifPipelineFlags flags, ShadeListBuilderLogger logger, DumpManager dumpManager, NotificationInteractionTracker interactionTracker @@ -126,6 +129,7 @@ public class ShadeListBuilder implements Dumpable { Assert.isMainThread(); mSystemClock = systemClock; mLogger = logger; + mAlwaysLogList = flags.isDevLoggingEnabled(); mInteractionTracker = interactionTracker; dumpManager.registerDumpable(TAG, this); @@ -404,7 +408,7 @@ public class ShadeListBuilder implements Dumpable { mIterationCount, mReadOnlyNotifList.size(), countChildren(mReadOnlyNotifList)); - if (mIterationCount % 10 == 0) { + if (mAlwaysLogList || mIterationCount % 10 == 0) { mLogger.logFinalList(mNotifList); } mPipelineState.setState(STATE_IDLE); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java index b254ed4e3f2ed..82cd9fa3ac8b5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java @@ -32,7 +32,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; @@ -52,6 +51,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; +import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.collection.ShadeListBuilder.OnRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection; import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener; @@ -96,7 +96,9 @@ public class ShadeListBuilderTest extends SysuiTestCase { private ShadeListBuilder mListBuilder; private FakeSystemClock mSystemClock = new FakeSystemClock(); + @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private ShadeListBuilderLogger mLogger; + @Mock private DumpManager mDumpManager; @Mock private NotifCollection mNotifCollection; @Mock private NotificationInteractionTracker mInteractionTracker; @Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener; @@ -122,7 +124,12 @@ public class ShadeListBuilderTest extends SysuiTestCase { allowTestableLooperAsMainThread(); mListBuilder = new ShadeListBuilder( - mSystemClock, mLogger, mock(DumpManager.class), mInteractionTracker); + mSystemClock, + mNotifPipelineFlags, + mLogger, + mDumpManager, + mInteractionTracker + ); mListBuilder.setOnRenderListListener(mOnRenderListListener); mListBuilder.attach(mNotifCollection);