Loading packages/SystemUI/src/com/android/systemui/flags/Flags.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,10 @@ public class Flags { public static final BooleanFlag NOTIFICATION_UPDATES = public static final BooleanFlag NOTIFICATION_UPDATES = new BooleanFlag(102, true); new BooleanFlag(102, true); public static final BooleanFlag NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = new BooleanFlag(103, false); /***************************************/ /***************************************/ // 200 - keyguard/lockscreen // 200 - keyguard/lockscreen public static final BooleanFlag KEYGUARD_LAYOUT = public static final BooleanFlag KEYGUARD_LAYOUT = Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt +7 −4 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,10 @@ class NotifPipelineFlags @Inject constructor( fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled( fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled( Flags.NEW_NOTIFICATION_PIPELINE_RENDERING) Flags.NEW_NOTIFICATION_PIPELINE_RENDERING) fun isDevLoggingEnabled(): Boolean = featureFlags.isEnabled(Flags.NOTIFICATION_PIPELINE_DEVELOPER_LOGGING) fun isSmartspaceDedupingEnabled(): Boolean = fun isSmartspaceDedupingEnabled(): Boolean = featureFlags.isEnabled(Flags.SMARTSPACE) featureFlags.isEnabled(Flags.SMARTSPACE) && && featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) } } No newline at end of file packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +5 −1 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; 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.NotifSection; 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.OnBeforeRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener; Loading Loading @@ -87,6 +88,7 @@ public class ShadeListBuilder implements Dumpable { private final NotificationInteractionTracker mInteractionTracker; private final NotificationInteractionTracker mInteractionTracker; // used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated // used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated private final ArrayList<ListEntry> mTempSectionMembers = new ArrayList<>(); private final ArrayList<ListEntry> mTempSectionMembers = new ArrayList<>(); private final boolean mAlwaysLogList; private List<ListEntry> mNotifList = new ArrayList<>(); private List<ListEntry> mNotifList = new ArrayList<>(); private List<ListEntry> mNewNotifList = new ArrayList<>(); private List<ListEntry> mNewNotifList = new ArrayList<>(); Loading Loading @@ -119,6 +121,7 @@ public class ShadeListBuilder implements Dumpable { @Inject @Inject public ShadeListBuilder( public ShadeListBuilder( SystemClock systemClock, SystemClock systemClock, NotifPipelineFlags flags, ShadeListBuilderLogger logger, ShadeListBuilderLogger logger, DumpManager dumpManager, DumpManager dumpManager, NotificationInteractionTracker interactionTracker NotificationInteractionTracker interactionTracker Loading @@ -126,6 +129,7 @@ public class ShadeListBuilder implements Dumpable { Assert.isMainThread(); Assert.isMainThread(); mSystemClock = systemClock; mSystemClock = systemClock; mLogger = logger; mLogger = logger; mAlwaysLogList = flags.isDevLoggingEnabled(); mInteractionTracker = interactionTracker; mInteractionTracker = interactionTracker; dumpManager.registerDumpable(TAG, this); dumpManager.registerDumpable(TAG, this); Loading Loading @@ -404,7 +408,7 @@ public class ShadeListBuilder implements Dumpable { mIterationCount, mIterationCount, mReadOnlyNotifList.size(), mReadOnlyNotifList.size(), countChildren(mReadOnlyNotifList)); countChildren(mReadOnlyNotifList)); if (mIterationCount % 10 == 0) { if (mAlwaysLogList || mIterationCount % 10 == 0) { mLogger.logFinalList(mNotifList); mLogger.logFinalList(mNotifList); } } mPipelineState.setState(STATE_IDLE); mPipelineState.setState(STATE_IDLE); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java +9 −2 Original line number Original line Diff line number Diff line Loading @@ -32,7 +32,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.times; Loading @@ -52,6 +51,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; 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.ShadeListBuilder.OnRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection; 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.OnBeforeFinalizeFilterListener; Loading Loading @@ -96,7 +96,9 @@ public class ShadeListBuilderTest extends SysuiTestCase { private ShadeListBuilder mListBuilder; private ShadeListBuilder mListBuilder; private FakeSystemClock mSystemClock = new FakeSystemClock(); private FakeSystemClock mSystemClock = new FakeSystemClock(); @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private ShadeListBuilderLogger mLogger; @Mock private ShadeListBuilderLogger mLogger; @Mock private DumpManager mDumpManager; @Mock private NotifCollection mNotifCollection; @Mock private NotifCollection mNotifCollection; @Mock private NotificationInteractionTracker mInteractionTracker; @Mock private NotificationInteractionTracker mInteractionTracker; @Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener; @Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener; Loading @@ -122,7 +124,12 @@ public class ShadeListBuilderTest extends SysuiTestCase { allowTestableLooperAsMainThread(); allowTestableLooperAsMainThread(); mListBuilder = new ShadeListBuilder( mListBuilder = new ShadeListBuilder( mSystemClock, mLogger, mock(DumpManager.class), mInteractionTracker); mSystemClock, mNotifPipelineFlags, mLogger, mDumpManager, mInteractionTracker ); mListBuilder.setOnRenderListListener(mOnRenderListListener); mListBuilder.setOnRenderListListener(mOnRenderListListener); mListBuilder.attach(mNotifCollection); mListBuilder.attach(mNotifCollection); Loading Loading
packages/SystemUI/src/com/android/systemui/flags/Flags.java +4 −0 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,10 @@ public class Flags { public static final BooleanFlag NOTIFICATION_UPDATES = public static final BooleanFlag NOTIFICATION_UPDATES = new BooleanFlag(102, true); new BooleanFlag(102, true); public static final BooleanFlag NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = new BooleanFlag(103, false); /***************************************/ /***************************************/ // 200 - keyguard/lockscreen // 200 - keyguard/lockscreen public static final BooleanFlag KEYGUARD_LAYOUT = public static final BooleanFlag KEYGUARD_LAYOUT = Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt +7 −4 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,10 @@ class NotifPipelineFlags @Inject constructor( fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled( fun isNewPipelineEnabled(): Boolean = featureFlags.isEnabled( Flags.NEW_NOTIFICATION_PIPELINE_RENDERING) Flags.NEW_NOTIFICATION_PIPELINE_RENDERING) fun isDevLoggingEnabled(): Boolean = featureFlags.isEnabled(Flags.NOTIFICATION_PIPELINE_DEVELOPER_LOGGING) fun isSmartspaceDedupingEnabled(): Boolean = fun isSmartspaceDedupingEnabled(): Boolean = featureFlags.isEnabled(Flags.SMARTSPACE) featureFlags.isEnabled(Flags.SMARTSPACE) && && featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) featureFlags.isEnabled(Flags.SMARTSPACE_DEDUPING) } } No newline at end of file
packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java +5 −1 Original line number Original line Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; 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.NotifSection; 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.OnBeforeRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener; Loading Loading @@ -87,6 +88,7 @@ public class ShadeListBuilder implements Dumpable { private final NotificationInteractionTracker mInteractionTracker; private final NotificationInteractionTracker mInteractionTracker; // used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated // used exclusivly by ShadeListBuilder#notifySectionEntriesUpdated private final ArrayList<ListEntry> mTempSectionMembers = new ArrayList<>(); private final ArrayList<ListEntry> mTempSectionMembers = new ArrayList<>(); private final boolean mAlwaysLogList; private List<ListEntry> mNotifList = new ArrayList<>(); private List<ListEntry> mNotifList = new ArrayList<>(); private List<ListEntry> mNewNotifList = new ArrayList<>(); private List<ListEntry> mNewNotifList = new ArrayList<>(); Loading Loading @@ -119,6 +121,7 @@ public class ShadeListBuilder implements Dumpable { @Inject @Inject public ShadeListBuilder( public ShadeListBuilder( SystemClock systemClock, SystemClock systemClock, NotifPipelineFlags flags, ShadeListBuilderLogger logger, ShadeListBuilderLogger logger, DumpManager dumpManager, DumpManager dumpManager, NotificationInteractionTracker interactionTracker NotificationInteractionTracker interactionTracker Loading @@ -126,6 +129,7 @@ public class ShadeListBuilder implements Dumpable { Assert.isMainThread(); Assert.isMainThread(); mSystemClock = systemClock; mSystemClock = systemClock; mLogger = logger; mLogger = logger; mAlwaysLogList = flags.isDevLoggingEnabled(); mInteractionTracker = interactionTracker; mInteractionTracker = interactionTracker; dumpManager.registerDumpable(TAG, this); dumpManager.registerDumpable(TAG, this); Loading Loading @@ -404,7 +408,7 @@ public class ShadeListBuilder implements Dumpable { mIterationCount, mIterationCount, mReadOnlyNotifList.size(), mReadOnlyNotifList.size(), countChildren(mReadOnlyNotifList)); countChildren(mReadOnlyNotifList)); if (mIterationCount % 10 == 0) { if (mAlwaysLogList || mIterationCount % 10 == 0) { mLogger.logFinalList(mNotifList); mLogger.logFinalList(mNotifList); } } mPipelineState.setState(STATE_IDLE); mPipelineState.setState(STATE_IDLE); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java +9 −2 Original line number Original line Diff line number Diff line Loading @@ -32,7 +32,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.times; Loading @@ -52,6 +51,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.NotificationInteractionTracker; 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.ShadeListBuilder.OnRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.NotifSection; 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.OnBeforeFinalizeFilterListener; Loading Loading @@ -96,7 +96,9 @@ public class ShadeListBuilderTest extends SysuiTestCase { private ShadeListBuilder mListBuilder; private ShadeListBuilder mListBuilder; private FakeSystemClock mSystemClock = new FakeSystemClock(); private FakeSystemClock mSystemClock = new FakeSystemClock(); @Mock private NotifPipelineFlags mNotifPipelineFlags; @Mock private ShadeListBuilderLogger mLogger; @Mock private ShadeListBuilderLogger mLogger; @Mock private DumpManager mDumpManager; @Mock private NotifCollection mNotifCollection; @Mock private NotifCollection mNotifCollection; @Mock private NotificationInteractionTracker mInteractionTracker; @Mock private NotificationInteractionTracker mInteractionTracker; @Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener; @Spy private OnBeforeTransformGroupsListener mOnBeforeTransformGroupsListener; Loading @@ -122,7 +124,12 @@ public class ShadeListBuilderTest extends SysuiTestCase { allowTestableLooperAsMainThread(); allowTestableLooperAsMainThread(); mListBuilder = new ShadeListBuilder( mListBuilder = new ShadeListBuilder( mSystemClock, mLogger, mock(DumpManager.class), mInteractionTracker); mSystemClock, mNotifPipelineFlags, mLogger, mDumpManager, mInteractionTracker ); mListBuilder.setOnRenderListListener(mOnRenderListListener); mListBuilder.setOnRenderListListener(mOnRenderListListener); mListBuilder.attach(mNotifCollection); mListBuilder.attach(mNotifCollection); Loading