Merge "Inline notif pipeline flag into NSSLController" into tm-qpr-dev

This commit is contained in:
Steve Elliott
2022-07-13 18:05:48 +00:00
committed by Android (Google) Code Review
3 changed files with 17 additions and 89 deletions

View File

@@ -28,7 +28,6 @@ import static com.android.systemui.statusbar.notification.stack.NotificationStac
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_GENTLE; import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_GENTLE;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_HIGH_PRIORITY; import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.ROWS_HIGH_PRIORITY;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.SelectedRows; import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.SelectedRows;
import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.canChildBeCleared;
import static com.android.systemui.statusbar.phone.NotificationIconAreaController.HIGH_PRIORITY; import static com.android.systemui.statusbar.phone.NotificationIconAreaController.HIGH_PRIORITY;
import android.content.res.Configuration; import android.content.res.Configuration;
@@ -38,12 +37,10 @@ import android.graphics.PointF;
import android.os.Trace; import android.os.Trace;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.service.notification.NotificationListenerService;
import android.service.notification.StatusBarNotification; import android.service.notification.StatusBarNotification;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
import android.view.Display; import android.view.Display;
import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -53,20 +50,17 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.colorextraction.ColorExtractor;
import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.jank.InteractionJankMonitor;
import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.ExpandHelper; import com.android.systemui.ExpandHelper;
import com.android.systemui.Gefingerpoken; import com.android.systemui.Gefingerpoken;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SwipeHelper; import com.android.systemui.SwipeHelper;
import com.android.systemui.classifier.Classifier; import com.android.systemui.classifier.Classifier;
import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.media.KeyguardMediaController; import com.android.systemui.media.KeyguardMediaController;
@@ -85,9 +79,7 @@ import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.notification.DynamicPrivacyController; import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.LaunchAnimationParameters; import com.android.systemui.statusbar.notification.LaunchAnimationParameters;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotifCollection; import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -163,13 +155,10 @@ public class NotificationStackScrollLayoutController {
private final Resources mResources; private final Resources mResources;
private final NotificationSwipeHelper.Builder mNotificationSwipeHelperBuilder; private final NotificationSwipeHelper.Builder mNotificationSwipeHelperBuilder;
private final ScrimController mScrimController; private final ScrimController mScrimController;
private final NotifPipelineFlags mNotifPipelineFlags;
private final NotifPipeline mNotifPipeline; private final NotifPipeline mNotifPipeline;
private final NotifCollection mNotifCollection; private final NotifCollection mNotifCollection;
private final NotificationEntryManager mNotificationEntryManager; private final NotificationEntryManager mNotificationEntryManager;
private final IStatusBarService mIStatusBarService;
private final UiEventLogger mUiEventLogger; private final UiEventLogger mUiEventLogger;
private final LayoutInflater mLayoutInflater;
private final NotificationRemoteInputManager mRemoteInputManager; private final NotificationRemoteInputManager mRemoteInputManager;
private final VisualStabilityManager mVisualStabilityManager; private final VisualStabilityManager mVisualStabilityManager;
private final ShadeController mShadeController; private final ShadeController mShadeController;
@@ -206,8 +195,6 @@ public class NotificationStackScrollLayoutController {
@Nullable @Nullable
private NotificationActivityStarter mNotificationActivityStarter; private NotificationActivityStarter mNotificationActivityStarter;
private ColorExtractor.OnColorsChangedListener mOnColorsChangedListener;
@VisibleForTesting @VisibleForTesting
final View.OnAttachStateChangeListener mOnAttachStateChangeListener = final View.OnAttachStateChangeListener mOnAttachStateChangeListener =
new View.OnAttachStateChangeListener() { new View.OnAttachStateChangeListener() {
@@ -256,10 +243,7 @@ public class NotificationStackScrollLayoutController {
mView.setAnimateBottomOnLayout(true); mView.setAnimateBottomOnLayout(true);
} }
// Let's update the footer once the notifications have been updated (in the next frame) // Let's update the footer once the notifications have been updated (in the next frame)
mView.post(() -> { mView.post(this::updateFooter);
updateFooter();
updateSectionBoundaries("dynamic privacy changed");
});
}; };
@VisibleForTesting @VisibleForTesting
@@ -634,7 +618,6 @@ public class NotificationStackScrollLayoutController {
KeyguardMediaController keyguardMediaController, KeyguardMediaController keyguardMediaController,
KeyguardBypassController keyguardBypassController, KeyguardBypassController keyguardBypassController,
ZenModeController zenModeController, ZenModeController zenModeController,
SysuiColorExtractor colorExtractor,
NotificationLockscreenUserManager lockscreenUserManager, NotificationLockscreenUserManager lockscreenUserManager,
MetricsLogger metricsLogger, MetricsLogger metricsLogger,
DumpManager dumpManager, DumpManager dumpManager,
@@ -647,15 +630,12 @@ public class NotificationStackScrollLayoutController {
NotificationGroupManagerLegacy legacyGroupManager, NotificationGroupManagerLegacy legacyGroupManager,
GroupExpansionManager groupManager, GroupExpansionManager groupManager,
@SilentHeader SectionHeaderController silentHeaderController, @SilentHeader SectionHeaderController silentHeaderController,
NotifPipelineFlags notifPipelineFlags,
NotifPipeline notifPipeline, NotifPipeline notifPipeline,
NotifCollection notifCollection, NotifCollection notifCollection,
NotificationEntryManager notificationEntryManager, NotificationEntryManager notificationEntryManager,
LockscreenShadeTransitionController lockscreenShadeTransitionController, LockscreenShadeTransitionController lockscreenShadeTransitionController,
ShadeTransitionController shadeTransitionController, ShadeTransitionController shadeTransitionController,
IStatusBarService iStatusBarService,
UiEventLogger uiEventLogger, UiEventLogger uiEventLogger,
LayoutInflater layoutInflater,
NotificationRemoteInputManager remoteInputManager, NotificationRemoteInputManager remoteInputManager,
VisualStabilityManager visualStabilityManager, VisualStabilityManager visualStabilityManager,
ShadeController shadeController, ShadeController shadeController,
@@ -698,14 +678,11 @@ public class NotificationStackScrollLayoutController {
mCentralSurfaces.requestNotificationUpdate("onGroupsChanged"); mCentralSurfaces.requestNotificationUpdate("onGroupsChanged");
} }
}); });
mNotifPipelineFlags = notifPipelineFlags;
mSilentHeaderController = silentHeaderController; mSilentHeaderController = silentHeaderController;
mNotifPipeline = notifPipeline; mNotifPipeline = notifPipeline;
mNotifCollection = notifCollection; mNotifCollection = notifCollection;
mNotificationEntryManager = notificationEntryManager; mNotificationEntryManager = notificationEntryManager;
mIStatusBarService = iStatusBarService;
mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger;
mLayoutInflater = layoutInflater;
mRemoteInputManager = remoteInputManager; mRemoteInputManager = remoteInputManager;
mVisualStabilityManager = visualStabilityManager; mVisualStabilityManager = visualStabilityManager;
mShadeController = shadeController; mShadeController = shadeController;
@@ -745,21 +722,12 @@ public class NotificationStackScrollLayoutController {
.setOnMenuEventListener(mMenuEventListener) .setOnMenuEventListener(mMenuEventListener)
.build(); .build();
if (mNotifPipelineFlags.isNewPipelineEnabled()) {
mNotifPipeline.addCollectionListener(new NotifCollectionListener() { mNotifPipeline.addCollectionListener(new NotifCollectionListener() {
@Override @Override
public void onEntryUpdated(NotificationEntry entry) { public void onEntryUpdated(NotificationEntry entry) {
mView.onEntryUpdated(entry); mView.onEntryUpdated(entry);
} }
}); });
} else {
mNotificationEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
@Override
public void onPreEntryUpdated(NotificationEntry entry) {
mView.onEntryUpdated(entry);
}
});
}
mView.initView(mView.getContext(), mSwipeHelper, mNotificationStackSizeCalculator); mView.initView(mView.getContext(), mSwipeHelper, mNotificationStackSizeCalculator);
mView.setKeyguardBypassEnabled(mKeyguardBypassController.getBypassEnabled()); mView.setKeyguardBypassEnabled(mKeyguardBypassController.getBypassEnabled());
@@ -1231,10 +1199,6 @@ public class NotificationStackScrollLayoutController {
Trace.endSection(); Trace.endSection();
} }
public boolean areNotificationsHiddenInShade() {
return mZenModeController.areNotificationsHiddenInShade();
}
public boolean isShowingEmptyShadeView() { public boolean isShowingEmptyShadeView() {
return mShowEmptyShadeView; return mShowEmptyShadeView;
} }
@@ -1339,15 +1303,6 @@ public class NotificationStackScrollLayoutController {
}; };
} }
public void updateSectionBoundaries(String reason) {
if (mNotifPipelineFlags.isNewPipelineEnabled()) {
return;
}
Trace.beginSection("NSSLC.updateSectionBoundaries");
mView.updateSectionBoundaries(reason);
Trace.endSection();
}
public void updateFooter() { public void updateFooter() {
Trace.beginSection("NSSLC.updateFooter"); Trace.beginSection("NSSLC.updateFooter");
mView.updateFooter(); mView.updateFooter();
@@ -1463,7 +1418,6 @@ public class NotificationStackScrollLayoutController {
private void onAnimationEnd(List<ExpandableNotificationRow> viewsToRemove, private void onAnimationEnd(List<ExpandableNotificationRow> viewsToRemove,
@SelectedRows int selectedRows) { @SelectedRows int selectedRows) {
if (mNotifPipelineFlags.isNewPipelineEnabled()) {
if (selectedRows == ROWS_ALL) { if (selectedRows == ROWS_ALL) {
mNotifCollection.dismissAllNotifications( mNotifCollection.dismissAllNotifications(
mLockscreenUserManager.getCurrentUserId()); mLockscreenUserManager.getCurrentUserId());
@@ -1477,26 +1431,6 @@ public class NotificationStackScrollLayoutController {
} }
mNotifCollection.dismissNotifications(entriesWithRowsDismissedFromShade); mNotifCollection.dismissNotifications(entriesWithRowsDismissedFromShade);
} }
} else {
for (ExpandableNotificationRow rowToRemove : viewsToRemove) {
if (canChildBeCleared(rowToRemove)) {
mNotificationEntryManager.performRemoveNotification(
rowToRemove.getEntry().getSbn(),
getDismissedByUserStats(rowToRemove.getEntry()),
NotificationListenerService.REASON_CANCEL_ALL);
} else {
rowToRemove.resetTranslation();
}
}
if (selectedRows == ROWS_ALL) {
try {
// TODO(b/169585328): Do not clear media player notifications
mIStatusBarService.onClearAllNotifications(
mLockscreenUserManager.getCurrentUserId());
} catch (Exception ignored) {
}
}
}
} }
/** /**

View File

@@ -3918,7 +3918,6 @@ public final class NotificationPanelViewController extends PanelViewController {
* {@link ShadeViewManager}. * {@link ShadeViewManager}.
*/ */
public void updateNotificationViews(String reason) { public void updateNotificationViews(String reason) {
mNotificationStackScrollLayoutController.updateSectionBoundaries(reason);
mNotificationStackScrollLayoutController.updateFooter(); mNotificationStackScrollLayoutController.updateFooter();
mNotificationIconAreaController.updateNotificationIcons(createVisibleEntriesList()); mNotificationIconAreaController.updateNotificationIcons(createVisibleEntriesList());

View File

@@ -150,7 +150,6 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
when(mNotificationSwipeHelperBuilder.build()).thenReturn(mNotificationSwipeHelper); when(mNotificationSwipeHelperBuilder.build()).thenReturn(mNotificationSwipeHelper);
when(mNotifPipelineFlags.isNewPipelineEnabled()).thenReturn(false);
mController = new NotificationStackScrollLayoutController( mController = new NotificationStackScrollLayoutController(
true, true,
@@ -166,7 +165,6 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
mKeyguardMediaController, mKeyguardMediaController,
mKeyguardBypassController, mKeyguardBypassController,
mZenModeController, mZenModeController,
mColorExtractor,
mNotificationLockscreenUserManager, mNotificationLockscreenUserManager,
mMetricsLogger, mMetricsLogger,
mDumpManager, mDumpManager,
@@ -179,15 +177,12 @@ public class NotificationStackScrollLayoutControllerTest extends SysuiTestCase {
mLegacyGroupManager, mLegacyGroupManager,
mLegacyGroupManager, mLegacyGroupManager,
mSilentHeaderController, mSilentHeaderController,
mNotifPipelineFlags,
mNotifPipeline, mNotifPipeline,
mNotifCollection, mNotifCollection,
mEntryManager, mEntryManager,
mLockscreenShadeTransitionController, mLockscreenShadeTransitionController,
mShadeTransitionController, mShadeTransitionController,
mIStatusBarService,
mUiEventLogger, mUiEventLogger,
mLayoutInflater,
mRemoteInputManager, mRemoteInputManager,
mVisualStabilityManager, mVisualStabilityManager,
mShadeController, mShadeController,