diff options
23 files changed, 227 insertions, 340 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java index 4f70fdb0d978..3b1fa1779c17 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelfController.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import android.view.View; +import com.android.systemui.statusbar.notification.row.ActivatableNotificationView; import com.android.systemui.statusbar.notification.row.ActivatableNotificationViewController; import com.android.systemui.statusbar.notification.row.dagger.NotificationRowScope; import com.android.systemui.statusbar.notification.stack.AmbientState; @@ -25,7 +26,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.NotificationIconContainer; -import com.android.systemui.statusbar.phone.StatusBarNotificationPresenter; import javax.inject.Inject; @@ -114,8 +114,8 @@ public class NotificationShelfController { return mView.getIntrinsicHeight(); } - public void setOnActivatedListener(StatusBarNotificationPresenter presenter) { - mView.setOnActivatedListener(presenter); + public void setOnActivatedListener(ActivatableNotificationView.OnActivatedListener listener) { + mView.setOnActivatedListener(listener); } public void setOnClickListener(View.OnClickListener onClickListener) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt index 9da7d21886ab..92073669e1b5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt @@ -8,12 +8,15 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.stack.NotificationListContainer import com.android.systemui.statusbar.phone.HeadsUpManagerPhone import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent import com.android.systemui.statusbar.policy.HeadsUpUtil +import javax.inject.Inject import kotlin.math.ceil import kotlin.math.max /** A provider of [NotificationLaunchAnimatorController]. */ -class NotificationLaunchAnimatorControllerProvider( +@StatusBarComponent.StatusBarScope +class NotificationLaunchAnimatorControllerProvider @Inject constructor( private val notificationShadeWindowViewController: NotificationShadeWindowViewController, private val notificationListContainer: NotificationListContainer, private val headsUpManager: HeadsUpManagerPhone, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index 53889f431ffe..1576f96debc6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -94,6 +94,8 @@ import com.android.systemui.wmshell.BubblesManager; import java.util.Optional; import java.util.concurrent.Executor; +import javax.inject.Provider; + import dagger.Binds; import dagger.Lazy; import dagger.Module; @@ -276,8 +278,8 @@ public interface NotificationsModule { @Provides static NotificationsController provideNotificationsController( Context context, - Lazy<NotificationsControllerImpl> realController, - Lazy<NotificationsControllerStub> stubController) { + Provider<NotificationsControllerImpl> realController, + Provider<NotificationsControllerStub> stubController) { if (context.getResources().getBoolean(R.bool.config_renderNotifications)) { return realController.get(); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt index a59d4211e68a..18abfcaab0e0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt @@ -23,11 +23,8 @@ import com.android.systemui.statusbar.notification.NotificationActivityStarter import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl import com.android.systemui.statusbar.notification.collection.render.NotifStackController import com.android.systemui.statusbar.notification.stack.NotificationListContainer -import com.android.systemui.statusbar.phone.StatusBar -import com.android.wm.shell.bubbles.Bubbles import java.io.FileDescriptor import java.io.PrintWriter -import java.util.Optional /** * The master controller for all notifications-related work @@ -37,8 +34,6 @@ import java.util.Optional */ interface NotificationsController { fun initialize( - statusBar: StatusBar, - bubblesOptional: Optional<Bubbles>, presenter: NotificationPresenter, listContainer: NotificationListContainer, stackController: NotifStackController, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt index 48f2dafedcbb..5926cf05f880 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt @@ -64,6 +64,7 @@ import javax.inject.Inject */ @SysUISingleton class NotificationsControllerImpl @Inject constructor( + private val statusBar: Lazy<StatusBar>, private val notifPipelineFlags: NotifPipelineFlags, private val notificationListener: NotificationListener, private val entryManager: NotificationEntryManager, @@ -86,12 +87,11 @@ class NotificationsControllerImpl @Inject constructor( private val headsUpViewBinder: HeadsUpViewBinder, private val clickerBuilder: NotificationClicker.Builder, private val animatedImageNotificationManager: AnimatedImageNotificationManager, - private val peopleSpaceWidgetManager: PeopleSpaceWidgetManager + private val peopleSpaceWidgetManager: PeopleSpaceWidgetManager, + private val bubblesOptional: Optional<Bubbles>, ) : NotificationsController { override fun initialize( - statusBar: StatusBar, - bubblesOptional: Optional<Bubbles>, presenter: NotificationPresenter, listContainer: NotificationListContainer, stackController: NotifStackController, @@ -109,7 +109,7 @@ class NotificationsControllerImpl @Inject constructor( notificationRowBinder.setNotificationClicker( clickerBuilder.build( - Optional.of(statusBar), bubblesOptional, notificationActivityStarter)) + Optional.of(statusBar.get()), bubblesOptional, notificationActivityStarter)) notificationRowBinder.setUpWithPresenter( presenter, listContainer, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt index 1c9af11b7816..66701d1e37f1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt @@ -24,11 +24,8 @@ import com.android.systemui.statusbar.notification.NotificationActivityStarter import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl import com.android.systemui.statusbar.notification.collection.render.NotifStackController import com.android.systemui.statusbar.notification.stack.NotificationListContainer -import com.android.systemui.statusbar.phone.StatusBar -import com.android.wm.shell.bubbles.Bubbles import java.io.FileDescriptor import java.io.PrintWriter -import java.util.Optional import javax.inject.Inject /** @@ -39,8 +36,6 @@ class NotificationsControllerStub @Inject constructor( ) : NotificationsController { override fun initialize( - statusBar: StatusBar, - bubblesOptional: Optional<Bubbles>, presenter: NotificationPresenter, listContainer: NotificationListContainer, stackController: NotifStackController, @@ -75,4 +70,4 @@ class NotificationsControllerStub @Inject constructor( pw.println("Notification handling disabled") pw.println() } -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index 9b4f8b86cf03..a352859eb216 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -1406,7 +1406,7 @@ public class NotificationStackScrollLayoutController { return mNotificationRoundnessManager; } - public NotificationListContainer getNotificationListContainer() { + NotificationListContainer getNotificationListContainer() { return mNotificationListContainer; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutListContainerModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutListContainerModule.java new file mode 100644 index 000000000000..ef5b7269f785 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutListContainerModule.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.stack; + +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; + +import dagger.Module; +import dagger.Provides; + +@Module +public abstract class NotificationStackScrollLayoutListContainerModule { + @Provides + @StatusBarComponent.StatusBarScope + static NotificationListContainer provideListContainer( + NotificationStackScrollLayoutController nsslController) { + return nsslController.getNotificationListContainer(); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 94d6e0b3ad7d..25f727f25791 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -184,6 +184,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableView; import com.android.systemui.statusbar.notification.stack.AmbientState; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.MediaContainerView; +import com.android.systemui.statusbar.notification.stack.NotificationListContainer; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; @@ -665,6 +666,8 @@ public class NotificationPanelViewController extends PanelViewController private final ListenerSet<Callbacks> mNotifEventSourceCallbacks = new ListenerSet<>(); + private final NotificationListContainer mNotificationListContainer; + private View.AccessibilityDelegate mAccessibilityDelegate = new View.AccessibilityDelegate() { @Override public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { @@ -792,7 +795,8 @@ public class NotificationPanelViewController extends PanelViewController InteractionJankMonitor interactionJankMonitor, QsFrameTranslateController qsFrameTranslateController, SysUiState sysUiState, - KeyguardUnlockAnimationController keyguardUnlockAnimationController) { + KeyguardUnlockAnimationController keyguardUnlockAnimationController, + NotificationListContainer notificationListContainer) { super(view, falsingManager, dozeLog, @@ -823,6 +827,7 @@ public class NotificationPanelViewController extends PanelViewController mMediaHierarchyManager = mediaHierarchyManager; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mNotificationsQSContainerController = notificationsQSContainerController; + mNotificationListContainer = notificationListContainer; mNotificationsQSContainerController.init(); mNotificationStackScrollLayoutController = notificationStackScrollLayoutController; mGroupManager = groupManager; @@ -4046,8 +4051,7 @@ public class NotificationPanelViewController extends PanelViewController } public boolean hasPulsingNotifications() { - return mNotificationStackScrollLayoutController - .getNotificationListContainer().hasPulsingNotifications(); + return mNotificationListContainer.hasPulsingNotifications(); } public ActivatableNotificationView getActivatedChild() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java index 396703b11a42..8a191f1614c3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java @@ -44,6 +44,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; import com.android.systemui.statusbar.window.StatusBarWindowStateController; import com.android.systemui.tuner.TunerService; @@ -57,6 +58,7 @@ import javax.inject.Inject; /** * Controller for {@link NotificationShadeWindowView}. */ +@StatusBarComponent.StatusBarScope public class NotificationShadeWindowViewController { private static final String TAG = "NotifShadeWindowVC"; private final FalsingCollector mFalsingCollector; @@ -77,8 +79,8 @@ public class NotificationShadeWindowViewController { private boolean mExpandAnimationRunning; private NotificationStackScrollLayout mStackScrollLayout; private PhoneStatusBarViewController mStatusBarViewController; - private StatusBar mService; - private NotificationShadeWindowController mNotificationShadeWindowController; + private final StatusBar mService; + private final NotificationShadeWindowController mNotificationShadeWindowController; private DragDownHelper mDragDownHelper; private boolean mDoubleTapEnabled; private boolean mSingleTapEnabled; @@ -105,7 +107,9 @@ public class NotificationShadeWindowViewController { StatusBarKeyguardViewManager statusBarKeyguardViewManager, StatusBarWindowStateController statusBarWindowStateController, LockIconViewController lockIconViewController, - Optional<LowLightClockController> lowLightClockController) { + Optional<LowLightClockController> lowLightClockController, + StatusBar statusBar, + NotificationShadeWindowController controller) { mLockscreenShadeTransitionController = transitionController; mFalsingCollector = falsingCollector; mTunerService = tunerService; @@ -120,6 +124,8 @@ public class NotificationShadeWindowViewController { mStatusBarWindowStateController = statusBarWindowStateController; mLockIconViewController = lockIconViewController; mLowLightClockController = lowLightClockController; + mService = statusBar; + mNotificationShadeWindowController = controller; // This view is not part of the newly inflated expanded status bar. mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container); @@ -452,11 +458,6 @@ public class NotificationShadeWindowViewController { mStatusBarViewController = statusBarViewController; } - public void setService(StatusBar statusBar, NotificationShadeWindowController controller) { - mService = statusBar; - mNotificationShadeWindowController = controller; - } - /** * Tell the controller that dozing has begun or ended. * @param dozing True if dozing has begun. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 66b6eaf9c1fb..b767e17fe861 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -345,6 +345,7 @@ public class StatusBar extends CoreStartable implements private final DreamOverlayStateController mDreamOverlayStateController; private StatusBarCommandQueueCallbacks mCommandQueueCallbacks; private float mTransitionToFullShadeProgress = 0f; + private NotificationListContainer mNotifListContainer; void onStatusBarWindowStateChanged(@WindowVisibleState int state) { updateBubblesVisibility(); @@ -468,7 +469,7 @@ public class StatusBar extends CoreStartable implements private PhoneStatusBarTransitions mStatusBarTransitions; private AuthRippleController mAuthRippleController; @WindowVisibleState private int mStatusBarWindowState = WINDOW_STATE_SHOWING; - protected NotificationShadeWindowController mNotificationShadeWindowController; + protected final NotificationShadeWindowController mNotificationShadeWindowController; private final StatusBarWindowController mStatusBarWindowController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @VisibleForTesting @@ -496,8 +497,6 @@ public class StatusBar extends CoreStartable implements private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy; private final StatusBarComponent.Factory mStatusBarComponentFactory; private final PluginManager mPluginManager; - private final StatusBarNotificationActivityStarter.Builder - mStatusBarNotificationActivityStarterBuilder; private final ShadeController mShadeController; private final InitController mInitController; @@ -665,7 +664,7 @@ public class StatusBar extends CoreStartable implements private final ActivityLaunchAnimator mActivityLaunchAnimator; private NotificationLaunchAnimatorControllerProvider mNotificationAnimationProvider; - protected StatusBarNotificationPresenter mPresenter; + protected NotificationPresenter mPresenter; private NotificationActivityStarter mNotificationActivityStarter; private final Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy; private final Optional<BubblesManager> mBubblesManagerOptional; @@ -752,8 +751,6 @@ public class StatusBar extends CoreStartable implements CommandQueue commandQueue, StatusBarComponent.Factory statusBarComponentFactory, PluginManager pluginManager, - StatusBarNotificationActivityStarter.Builder - statusBarNotificationActivityStarterBuilder, ShadeController shadeController, StatusBarKeyguardViewManager statusBarKeyguardViewManager, ViewMediatorCallback viewMediatorCallback, @@ -850,7 +847,6 @@ public class StatusBar extends CoreStartable implements mCommandQueue = commandQueue; mStatusBarComponentFactory = statusBarComponentFactory; mPluginManager = pluginManager; - mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder; mShadeController = shadeController; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mKeyguardViewMediatorCallback = viewMediatorCallback; @@ -1155,19 +1151,14 @@ public class StatusBar extends CoreStartable implements updateTheme(); inflateStatusBarWindow(); - mNotificationShadeWindowViewController.setService(this, mNotificationShadeWindowController); mNotificationShadeWindowView.setOnTouchListener(getStatusBarWindowTouchListener()); mWallpaperController.setRootView(mNotificationShadeWindowView); // TODO: Deal with the ugliness that comes from having some of the statusbar broken out // into fragments, but the rest here, it leaves some awkward lifecycle and whatnot. - NotificationListContainer notifListContainer = - mStackScrollerController.getNotificationListContainer(); - mNotificationLogger.setUpWithContainer(notifListContainer); - + mNotificationLogger.setUpWithContainer(mNotifListContainer); mNotificationIconAreaController.setupShelf(mNotificationShelfController); mPanelExpansionStateManager.addExpansionListener(mWakeUpCoordinator); - mUserSwitcherController.init(mNotificationShadeWindowView); // Allow plugins to reference DarkIconDispatcher and StatusBarStateController @@ -1442,65 +1433,19 @@ public class StatusBar extends CoreStartable implements mActivityLaunchAnimator.addListener(mActivityLaunchAnimatorListener); mNotificationAnimationProvider = new NotificationLaunchAnimatorControllerProvider( mNotificationShadeWindowViewController, - mStackScrollerController.getNotificationListContainer(), - mHeadsUpManager, - mJankMonitor - ); - - // TODO: inject this. - mPresenter = new StatusBarNotificationPresenter( - mContext, - mNotificationPanelViewController, + mNotifListContainer, mHeadsUpManager, - mNotificationShadeWindowView, - mStackScrollerController, - mDozeScrimController, - mScrimController, - mNotificationShadeWindowController, - mDynamicPrivacyController, - mKeyguardStateController, - mKeyguardIndicationController, - this /* statusBar */, - mShadeController, - mLockscreenShadeTransitionController, - mCommandQueue, - mViewHierarchyManager, - mLockscreenUserManager, - mStatusBarStateController, - mNotifShadeEventSource, - mEntryManager, - mMediaManager, - mGutsManager, - mKeyguardUpdateMonitor, - mLockscreenGestureLogger, - mInitController, - mNotificationInterruptStateProvider, - mRemoteInputManager, - mConfigurationController, - mNotifPipelineFlags); - + mJankMonitor); mNotificationShelfController.setOnActivatedListener(mPresenter); mRemoteInputManager.addControllerCallback(mNotificationShadeWindowController); - - mNotificationActivityStarter = - mStatusBarNotificationActivityStarterBuilder - .setStatusBar(this) - .setActivityLaunchAnimator(mActivityLaunchAnimator) - .setNotificationAnimatorControllerProvider(mNotificationAnimationProvider) - .setNotificationPresenter(mPresenter) - .setNotificationPanelViewController(mNotificationPanelViewController) - .build(); mStackScrollerController.setNotificationActivityStarter(mNotificationActivityStarter); mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter); - mNotificationsController.initialize( - this, - mBubblesOptional, mPresenter, - mStackScrollerController.getNotificationListContainer(), + mNotifListContainer, mStackScrollerController.getNotifStackController(), mNotificationActivityStarter, - mPresenter); + mStatusBarComponent.getBindRowCallback()); } /** @@ -1576,9 +1521,12 @@ public class StatusBar extends CoreStartable implements mStatusBarComponent.getLockIconViewController().init(); mStackScrollerController = mStatusBarComponent.getNotificationStackScrollLayoutController(); mStackScroller = mStackScrollerController.getView(); - + mNotifListContainer = mStatusBarComponent.getNotificationListContainer(); + mPresenter = mStatusBarComponent.getNotificationPresenter(); + mNotificationActivityStarter = mStatusBarComponent.getNotificationActivityStarter(); mNotificationShelfController = mStatusBarComponent.getNotificationShelfController(); mAuthRippleController = mStatusBarComponent.getAuthRippleController(); + mAuthRippleController.init(); mHeadsUpManager.addListener(mStatusBarComponent.getStatusBarHeadsUpChangeListener()); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java index ff86d74a86eb..74a1565df3fe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java @@ -51,9 +51,6 @@ import com.android.systemui.ActivityIntentHelper; import com.android.systemui.EventLogTags; import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.assist.AssistManager; -import com.android.systemui.dagger.SysUISingleton; -import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.CommandQueue; @@ -75,6 +72,7 @@ import com.android.systemui.statusbar.notification.interruption.NotificationInte import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowDragController; import com.android.systemui.statusbar.notification.row.OnUserInteractionCallback; +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.policy.HeadsUpUtil; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.wmshell.BubblesManager; @@ -89,7 +87,8 @@ import dagger.Lazy; /** * Status bar implementation of {@link NotificationActivityStarter}. */ -public class StatusBarNotificationActivityStarter implements NotificationActivityStarter { +@StatusBarComponent.StatusBarScope +class StatusBarNotificationActivityStarter implements NotificationActivityStarter { private final Context mContext; @@ -132,7 +131,8 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit private boolean mIsCollapsingToShowActivityOverLockscreen; - private StatusBarNotificationActivityStarter( + @Inject + StatusBarNotificationActivityStarter( Context context, CommandQueue commandQueue, Handler mainThreadHandler, @@ -657,180 +657,4 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit return entry.shouldSuppressFullScreenIntent(); } - - // --------------------- NotificationEntryManager/NotifPipeline methods ------------------------ - - /** - * Public builder for {@link StatusBarNotificationActivityStarter}. - */ - @SysUISingleton - public static class Builder { - private final Context mContext; - private final CommandQueue mCommandQueue; - private final Handler mMainThreadHandler; - - private final Executor mUiBgExecutor; - private final NotificationEntryManager mEntryManager; - private final NotifPipeline mNotifPipeline; - private final NotificationVisibilityProvider mVisibilityProvider; - private final HeadsUpManagerPhone mHeadsUpManager; - private final ActivityStarter mActivityStarter; - private final NotificationClickNotifier mClickNotifier; - private final StatusBarStateController mStatusBarStateController; - private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; - private final KeyguardManager mKeyguardManager; - private final IDreamManager mDreamManager; - private final Optional<BubblesManager> mBubblesManagerOptional; - private final Lazy<AssistManager> mAssistManagerLazy; - private final NotificationRemoteInputManager mRemoteInputManager; - private final GroupMembershipManager mGroupMembershipManager; - private final NotificationLockscreenUserManager mLockscreenUserManager; - private final ShadeController mShadeController; - private final KeyguardStateController mKeyguardStateController; - private final NotificationInterruptStateProvider mNotificationInterruptStateProvider; - private final LockPatternUtils mLockPatternUtils; - private final StatusBarRemoteInputCallback mRemoteInputCallback; - private final ActivityIntentHelper mActivityIntentHelper;; - private final MetricsLogger mMetricsLogger; - private final StatusBarNotificationActivityStarterLogger mLogger; - private final OnUserInteractionCallback mOnUserInteractionCallback; - private final NotifPipelineFlags mNotifPipelineFlags; - private StatusBar mStatusBar; - private NotificationPresenter mNotificationPresenter; - private NotificationPanelViewController mNotificationPanelViewController; - private ActivityLaunchAnimator mActivityLaunchAnimator; - private NotificationLaunchAnimatorControllerProvider mNotificationAnimationProvider; - - @Inject - public Builder( - Context context, - CommandQueue commandQueue, - @Main Handler mainThreadHandler, - @UiBackground Executor uiBgExecutor, - NotificationEntryManager entryManager, - NotifPipeline notifPipeline, - NotificationVisibilityProvider visibilityProvider, - HeadsUpManagerPhone headsUpManager, - ActivityStarter activityStarter, - NotificationClickNotifier clickNotifier, - StatusBarStateController statusBarStateController, - StatusBarKeyguardViewManager statusBarKeyguardViewManager, - KeyguardManager keyguardManager, - IDreamManager dreamManager, - Optional<BubblesManager> bubblesManager, - Lazy<AssistManager> assistManagerLazy, - NotificationRemoteInputManager remoteInputManager, - GroupMembershipManager groupMembershipManager, - NotificationLockscreenUserManager lockscreenUserManager, - ShadeController shadeController, - KeyguardStateController keyguardStateController, - NotificationInterruptStateProvider notificationInterruptStateProvider, - LockPatternUtils lockPatternUtils, - StatusBarRemoteInputCallback remoteInputCallback, - ActivityIntentHelper activityIntentHelper, - NotifPipelineFlags notifPipelineFlags, - MetricsLogger metricsLogger, - StatusBarNotificationActivityStarterLogger logger, - OnUserInteractionCallback onUserInteractionCallback) { - - mContext = context; - mCommandQueue = commandQueue; - mMainThreadHandler = mainThreadHandler; - mUiBgExecutor = uiBgExecutor; - mEntryManager = entryManager; - mNotifPipeline = notifPipeline; - mVisibilityProvider = visibilityProvider; - mHeadsUpManager = headsUpManager; - mActivityStarter = activityStarter; - mClickNotifier = clickNotifier; - mStatusBarStateController = statusBarStateController; - mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; - mKeyguardManager = keyguardManager; - mDreamManager = dreamManager; - mBubblesManagerOptional = bubblesManager; - mAssistManagerLazy = assistManagerLazy; - mRemoteInputManager = remoteInputManager; - mGroupMembershipManager = groupMembershipManager; - mLockscreenUserManager = lockscreenUserManager; - mShadeController = shadeController; - mKeyguardStateController = keyguardStateController; - mNotificationInterruptStateProvider = notificationInterruptStateProvider; - mLockPatternUtils = lockPatternUtils; - mRemoteInputCallback = remoteInputCallback; - mActivityIntentHelper = activityIntentHelper; - mNotifPipelineFlags = notifPipelineFlags; - mMetricsLogger = metricsLogger; - mLogger = logger; - mOnUserInteractionCallback = onUserInteractionCallback; - } - - /** Sets the status bar to use as {@link StatusBar}. */ - public Builder setStatusBar(StatusBar statusBar) { - mStatusBar = statusBar; - return this; - } - - public Builder setNotificationPresenter(NotificationPresenter notificationPresenter) { - mNotificationPresenter = notificationPresenter; - return this; - } - - /** Set the ActivityLaunchAnimator. */ - public Builder setActivityLaunchAnimator(ActivityLaunchAnimator activityLaunchAnimator) { - mActivityLaunchAnimator = activityLaunchAnimator; - return this; - } - - /** Set the NotificationLaunchAnimatorControllerProvider. */ - public Builder setNotificationAnimatorControllerProvider( - NotificationLaunchAnimatorControllerProvider notificationAnimationProvider) { - mNotificationAnimationProvider = notificationAnimationProvider; - return this; - } - - /** Set the NotificationPanelViewController. */ - public Builder setNotificationPanelViewController( - NotificationPanelViewController notificationPanelViewController) { - mNotificationPanelViewController = notificationPanelViewController; - return this; - } - - public StatusBarNotificationActivityStarter build() { - return new StatusBarNotificationActivityStarter( - mContext, - mCommandQueue, - mMainThreadHandler, - mUiBgExecutor, - mEntryManager, - mNotifPipeline, - mVisibilityProvider, - mHeadsUpManager, - mActivityStarter, - mClickNotifier, - mStatusBarStateController, - mStatusBarKeyguardViewManager, - mKeyguardManager, - mDreamManager, - mBubblesManagerOptional, - mAssistManagerLazy, - mRemoteInputManager, - mGroupMembershipManager, - mLockscreenUserManager, - mShadeController, - mKeyguardStateController, - mNotificationInterruptStateProvider, - mLockPatternUtils, - mRemoteInputCallback, - mActivityIntentHelper, - mNotifPipelineFlags, - mMetricsLogger, - mLogger, - mOnUserInteractionCallback, - mStatusBar, - mNotificationPresenter, - mNotificationPanelViewController, - mActivityLaunchAnimator, - mNotificationAnimationProvider); - } - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java new file mode 100644 index 000000000000..caa149e61921 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.phone; + +import com.android.systemui.statusbar.notification.NotificationActivityStarter; + +import dagger.Binds; +import dagger.Module; + +@Module +public abstract class StatusBarNotificationActivityStarterModule { + @Binds + abstract NotificationActivityStarter bindActivityStarter( + StatusBarNotificationActivityStarter impl); +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java index c8e1cdc75242..de66bb09ccf8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java @@ -68,20 +68,25 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow import com.android.systemui.statusbar.notification.row.NotificationGutsManager; import com.android.systemui.statusbar.notification.row.NotificationGutsManager.OnSettingsClickListener; import com.android.systemui.statusbar.notification.row.NotificationInfo.CheckSaveListener; +import com.android.systemui.statusbar.notification.stack.NotificationListContainer; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; import com.android.systemui.statusbar.phone.LockscreenGestureLogger.LockscreenUiEvent; +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import java.util.List; -public class StatusBarNotificationPresenter implements NotificationPresenter, +import javax.inject.Inject; + +@StatusBarComponent.StatusBarScope +class StatusBarNotificationPresenter implements NotificationPresenter, ConfigurationController.ConfigurationListener, NotificationRowBinderImpl.BindRowCallback, CommandQueue.Callbacks { private static final String TAG = "StatusBarNotificationPresenter"; - private final ActivityStarter mActivityStarter = Dependency.get(ActivityStarter.class); + private final ActivityStarter mActivityStarter; private final KeyguardStateController mKeyguardStateController; private final NotificationViewHierarchyManager mViewHierarchyManager; private final NotificationLockscreenUserManager mLockscreenUserManager; @@ -110,16 +115,19 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, private final NotifPipelineFlags mNotifPipelineFlags; private final IStatusBarService mBarService; private final DynamicPrivacyController mDynamicPrivacyController; + private final NotificationListContainer mNotifListContainer; private boolean mReinflateNotificationsOnUserSwitched; private boolean mDispatchUiModeChangeOnUserSwitched; private TextView mNotificationPanelDebugText; protected boolean mVrMode; - public StatusBarNotificationPresenter(Context context, + @Inject + StatusBarNotificationPresenter(Context context, NotificationPanelViewController panel, HeadsUpManagerPhone headsUp, NotificationShadeWindowView statusBarWindow, + ActivityStarter activityStarter, NotificationStackScrollLayoutController stackScrollerController, DozeScrimController dozeScrimController, ScrimController scrimController, @@ -144,7 +152,10 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, NotificationInterruptStateProvider notificationInterruptStateProvider, NotificationRemoteInputManager remoteInputManager, ConfigurationController configurationController, - NotifPipelineFlags notifPipelineFlags) { + NotifPipelineFlags notifPipelineFlags, + NotificationRemoteInputManager.Callback remoteInputManagerCallback, + NotificationListContainer notificationListContainer) { + mActivityStarter = activityStarter; mKeyguardStateController = keyguardStateController; mNotificationPanel = panel; mHeadsUpManager = headsUp; @@ -175,6 +186,7 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, mKeyguardManager = context.getSystemService(KeyguardManager.class); mBarService = IStatusBarService.Stub.asInterface( ServiceManager.getService(Context.STATUS_BAR_SERVICE)); + mNotifListContainer = notificationListContainer; IVrManager vrManager = IVrManager.Stub.asInterface(ServiceManager.getService( Context.VR_SERVICE)); @@ -186,14 +198,14 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, } } remoteInputManager.setUpWithCallback( - Dependency.get(NotificationRemoteInputManager.Callback.class), + remoteInputManagerCallback, mNotificationPanel.createRemoteInputDelegate()); initController.addPostInitTask(() -> { mKeyguardIndicationController.init(); mViewHierarchyManager.setUpWithPresenter(this, stackScrollerController.getNotifStackController(), - stackScrollerController.getNotificationListContainer()); + mNotifListContainer); mNotifShadeEventSource.setShadeEmptiedCallback(this::maybeClosePanelForShadeEmptied); mNotifShadeEventSource.setNotifRemovedByUserCallback(this::maybeEndAmbientPulse); if (!mNotifPipelineFlags.isNewPipelineEnabled()) { @@ -206,9 +218,8 @@ public class StatusBarNotificationPresenter implements NotificationPresenter, notificationInterruptStateProvider.addSuppressor(mInterruptSuppressor); mLockscreenUserManager.setUpWithPresenter(this); mMediaManager.setUpWithPresenter(this); - mGutsManager.setUpWithPresenter(this, - stackScrollerController.getNotificationListContainer(), mCheckSaveListener, - mOnSettingsClickListener); + mGutsManager.setUpWithPresenter( + this, mNotifListContainer, mCheckSaveListener, mOnSettingsClickListener); // ForegroundServiceNotificationListener adds its listener in its constructor // but we need to request it here in order for it to be instantiated. // TODO: figure out how to do this correctly once Dependency.get() is gone. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterModule.java new file mode 100644 index 000000000000..26c483ce18fa --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterModule.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.phone; + +import com.android.systemui.statusbar.NotificationPresenter; +import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; + +import dagger.Binds; +import dagger.Module; + +@Module +public abstract class StatusBarNotificationPresenterModule { + @Binds + abstract NotificationPresenter bindPresenter(StatusBarNotificationPresenter impl); + + @Binds + abstract NotificationRowBinderImpl.BindRowCallback bindBindRowCallback( + StatusBarNotificationPresenter impl); +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarComponent.java index ad8e79e36661..75461883fa5e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarComponent.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarComponent.java @@ -22,16 +22,23 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; import com.android.keyguard.LockIconViewController; import com.android.systemui.biometrics.AuthRippleController; +import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.core.StatusBarInitializer; +import com.android.systemui.statusbar.notification.NotificationActivityStarter; +import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; import com.android.systemui.statusbar.notification.collection.render.StatusBarNotifPanelEventSourceModule; +import com.android.systemui.statusbar.notification.stack.NotificationListContainer; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; +import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutListContainerModule; import com.android.systemui.statusbar.phone.NotificationPanelViewController; import com.android.systemui.statusbar.phone.NotificationShadeWindowView; import com.android.systemui.statusbar.phone.NotificationShadeWindowViewController; import com.android.systemui.statusbar.phone.SplitShadeHeaderController; import com.android.systemui.statusbar.phone.StatusBarCommandQueueCallbacks; import com.android.systemui.statusbar.phone.StatusBarHeadsUpChangeListener; +import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarterModule; +import com.android.systemui.statusbar.phone.StatusBarNotificationPresenterModule; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; import java.lang.annotation.Documented; @@ -53,11 +60,15 @@ import dagger.Subcomponent; * outside the component. Should more items be moved *into* this component to avoid so many getters? */ @Subcomponent(modules = { + NotificationStackScrollLayoutListContainerModule.class, StatusBarNotifPanelEventSourceModule.class, - StatusBarViewModule.class + StatusBarViewModule.class, + StatusBarNotificationActivityStarterModule.class, + StatusBarNotificationPresenterModule.class, }) @StatusBarComponent.StatusBarScope public interface StatusBarComponent { + /** * Builder for {@link StatusBarComponent}. */ @@ -75,59 +86,57 @@ public interface StatusBarComponent { @interface StatusBarScope {} /** + * Performs initialization logic after {@link StatusBarComponent} has been constructed. + */ + interface Startable { + void start(); + void stop(); + } + + /** * Creates a {@link NotificationShadeWindowView}. */ - @StatusBarScope NotificationShadeWindowView getNotificationShadeWindowView(); /** */ - @StatusBarScope NotificationShelfController getNotificationShelfController(); /** */ - @StatusBarScope NotificationStackScrollLayoutController getNotificationStackScrollLayoutController(); /** * Creates a NotificationShadeWindowViewController. */ - @StatusBarScope NotificationShadeWindowViewController getNotificationShadeWindowViewController(); /** * Creates a NotificationPanelViewController. */ - @StatusBarScope NotificationPanelViewController getNotificationPanelViewController(); /** * Creates a LockIconViewController. Must be init after creation. */ - @StatusBarScope LockIconViewController getLockIconViewController(); /** * Creates an AuthRippleViewController. Must be init after creation. */ - @StatusBarScope AuthRippleController getAuthRippleController(); /** * Creates a StatusBarHeadsUpChangeListener. */ - @StatusBarScope StatusBarHeadsUpChangeListener getStatusBarHeadsUpChangeListener(); /** * Creates a StatusBarCommandQueueCallbacks. */ - @StatusBarScope StatusBarCommandQueueCallbacks getStatusBarCommandQueueCallbacks(); /** * Creates a SplitShadeHeaderController. */ - @StatusBarScope SplitShadeHeaderController getSplitShadeHeaderController(); /** @@ -140,20 +149,18 @@ public interface StatusBarComponent { /** * Creates a StatusBarInitializer */ - @StatusBarScope StatusBarInitializer getStatusBarInitializer(); /** * Set of startables to be run after a StatusBarComponent has been constructed. */ - @StatusBarScope Set<Startable> getStartables(); - /** - * Performs initialization logic after {@link StatusBarComponent} has been constructed. - */ - interface Startable { - void start(); - void stop(); - } + NotificationActivityStarter getNotificationActivityStarter(); + + NotificationPresenter getNotificationPresenter(); + + NotificationRowBinderImpl.BindRowCallback getBindRowCallback(); + + NotificationListContainer getNotificationListContainer(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java index e6c239ff9a04..6bfafac10e9f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java @@ -95,7 +95,6 @@ import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; -import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; import com.android.systemui.statusbar.phone.StatusBarSignalPolicy; import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; @@ -198,8 +197,6 @@ public interface StatusBarPhoneModule { CommandQueue commandQueue, StatusBarComponent.Factory statusBarComponentFactory, PluginManager pluginManager, - StatusBarNotificationActivityStarter.Builder - statusBarNotificationActivityStarterBuilder, ShadeController shadeController, StatusBarKeyguardViewManager statusBarKeyguardViewManager, ViewMediatorCallback viewMediatorCallback, @@ -296,7 +293,6 @@ public interface StatusBarPhoneModule { commandQueue, statusBarComponentFactory, pluginManager, - statusBarNotificationActivityStarterBuilder, shadeController, statusBarKeyguardViewManager, viewMediatorCallback, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java index 9245c2ca9b67..b44eb65ca83c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewControllerTest.java @@ -130,6 +130,7 @@ import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy; import com.android.systemui.statusbar.notification.stack.AmbientState; +import com.android.systemui.statusbar.notification.stack.NotificationListContainer; import com.android.systemui.statusbar.notification.stack.NotificationRoundnessManager; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; @@ -358,6 +359,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { private NotificationShadeWindowController mNotificationShadeWindowController; @Mock private SysUiState mSysUiState; + @Mock + private NotificationListContainer mNotificationListContainer; private Optional<SysUIUnfoldComponent> mSysUIUnfoldComponent = Optional.empty(); private SysuiStatusBarStateController mStatusBarStateController; private NotificationPanelViewController mNotificationPanelViewController; @@ -542,7 +545,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { mInteractionJankMonitor, mQsFrameTranslateController, mSysUiState, - mKeyguardUnlockAnimationController); + mKeyguardUnlockAnimationController, + mNotificationListContainer); mNotificationPanelViewController.initDependencies( mStatusBar, () -> {}, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt index 34a5d4b03dbb..26fafdf3982a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewControllerTest.kt @@ -107,10 +107,11 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { mStatusBarKeyguardViewManager, mStatusBarWindowStateController, mLockIconViewController, - Optional.of(mLowLightClockController) + Optional.of(mLowLightClockController), + mStatusBar, + mNotificationShadeWindowController ) mController.setupExpandedStatusBar() - mController.setService(mStatusBar, mNotificationShadeWindowController) mInteractionEventHandlerCaptor = ArgumentCaptor.forClass(InteractionEventHandler::class.java) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java index 6c33113ae58b..f9a1bdd09f7b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java @@ -115,9 +115,10 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase { mStatusBarKeyguardViewManager, mStatusBarWindowStateController, mLockIconViewController, - Optional.of(mLowLightClockController)); + Optional.of(mLowLightClockController), + mStatusBar, + mNotificationShadeWindowController); mController.setupExpandedStatusBar(); - mController.setService(mStatusBar, mNotificationShadeWindowController); mController.setDragDownHelper(mDragDownHelper); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java index 743311f99ca2..107c46f09fac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java @@ -203,7 +203,7 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase { mJankMonitor); mNotificationActivityStarter = - new StatusBarNotificationActivityStarter.Builder( + new StatusBarNotificationActivityStarter( getContext(), mock(CommandQueue.class), mHandler, @@ -229,18 +229,16 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase { mock(LockPatternUtils.class), mock(StatusBarRemoteInputCallback.class), mActivityIntentHelper, - mNotifPipelineFlags, mock(MetricsLogger.class), mock(StatusBarNotificationActivityStarterLogger.class), - mOnUserInteractionCallback) - .setStatusBar(mStatusBar) - .setNotificationPresenter(mock(NotificationPresenter.class)) - .setNotificationPanelViewController( - mock(NotificationPanelViewController.class)) - .setActivityLaunchAnimator(mActivityLaunchAnimator) - .setNotificationAnimatorControllerProvider(notificationAnimationProvider) - .build(); + mOnUserInteractionCallback, + mStatusBar, + mock(NotificationPresenter.class), + mock(NotificationPanelViewController.class), + mActivityLaunchAnimator, + notificationAnimationProvider + ); // set up dismissKeyguardThenExecute to synchronously invoke the OnDismissAction arg doAnswer(mCallOnDismiss).when(mActivityStarter).dismissKeyguardThenExecute( diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java index 7d9e6b4c1620..b7a5490527f9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java @@ -37,6 +37,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.ForegroundServiceNotificationListener; import com.android.systemui.InitController; import com.android.systemui.SysuiTestCase; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.KeyguardIndicationController; @@ -101,19 +102,24 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mock(NotificationStackScrollLayoutController.class); when(stackScrollLayoutController.getView()).thenReturn( mock(NotificationStackScrollLayout.class)); - when(stackScrollLayoutController.getNotificationListContainer()).thenReturn( - mock(NotificationListContainer.class)); when(notificationShadeWindowView.getResources()).thenReturn(mContext.getResources()); - mStatusBarNotificationPresenter = new StatusBarNotificationPresenter(mContext, - mock(NotificationPanelViewController.class), mock(HeadsUpManagerPhone.class), - notificationShadeWindowView, stackScrollLayoutController, - mock(DozeScrimController.class), mock(ScrimController.class), - mock(NotificationShadeWindowController.class), mock(DynamicPrivacyController.class), + mStatusBarNotificationPresenter = new StatusBarNotificationPresenter( + mContext, + mock(NotificationPanelViewController.class), + mock(HeadsUpManagerPhone.class), + notificationShadeWindowView, + mock(ActivityStarter.class), + stackScrollLayoutController, + mock(DozeScrimController.class), + mock(ScrimController.class), + mock(NotificationShadeWindowController.class), + mock(DynamicPrivacyController.class), mock(KeyguardStateController.class), mock(KeyguardIndicationController.class), mStatusBar, - mock(ShadeControllerImpl.class), mock(LockscreenShadeTransitionController.class), + mock(ShadeControllerImpl.class), + mock(LockscreenShadeTransitionController.class), mCommandQueue, mock(NotificationViewHierarchyManager.class), mock(NotificationLockscreenUserManager.class), @@ -128,7 +134,9 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mNotificationInterruptStateProvider, mock(NotificationRemoteInputManager.class), mock(ConfigurationController.class), - mock(NotifPipelineFlags.class)); + mock(NotifPipelineFlags.class), + mock(NotificationRemoteInputManager.Callback.class), + mock(NotificationListContainer.class)); mInitController.executePostInitTasks(); ArgumentCaptor<NotificationInterruptSuppressor> suppressorCaptor = ArgumentCaptor.forClass(NotificationInterruptSuppressor.class); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index 09794397c31e..b5210b937ce1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -258,8 +258,6 @@ public class StatusBarTest extends SysuiTestCase { @Mock private ViewMediatorCallback mViewMediatorCallback; @Mock private StatusBarTouchableRegionManager mStatusBarTouchableRegionManager; @Mock private ScreenPinningRequest mScreenPinningRequest; - @Mock private StatusBarNotificationActivityStarter.Builder - mStatusBarNotificationActivityStarterBuilder; @Mock private PluginDependencyProvider mPluginDependencyProvider; @Mock private KeyguardDismissUtil mKeyguardDismissUtil; @Mock private ExtensionController mExtensionController; @@ -336,8 +334,6 @@ public class StatusBarTest extends SysuiTestCase { mContext.setTheme(R.style.Theme_SystemUI_LightWallpaper); when(mStackScrollerController.getView()).thenReturn(mStackScroller); - when(mStackScrollerController.getNotificationListContainer()).thenReturn( - mNotificationListContainer); when(mStackScroller.generateLayoutParams(any())).thenReturn(new LayoutParams(0, 0)); when(mNotificationPanelViewController.getView()).thenReturn(mNotificationPanelView); when(mNotificationPanelView.getLayoutParams()).thenReturn(new LayoutParams(0, 0)); @@ -445,7 +441,6 @@ public class StatusBarTest extends SysuiTestCase { mCommandQueue, mStatusBarComponentFactory, mPluginManager, - mStatusBarNotificationActivityStarterBuilder, mShadeController, mStatusBarKeyguardViewManager, mViewMediatorCallback, |