diff options
7 files changed, 41 insertions, 49 deletions
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 c1b905aacb76..31980295f294 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationLaunchAnimatorController.kt @@ -24,15 +24,12 @@ import com.android.systemui.statusbar.notification.data.repository.NotificationE 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.dagger.CentralSurfacesComponent import com.android.systemui.statusbar.policy.HeadsUpUtil -import javax.inject.Inject import kotlin.math.ceil import kotlin.math.max /** A provider of [NotificationLaunchAnimatorController]. */ -@CentralSurfacesComponent.CentralSurfacesScope -class NotificationLaunchAnimatorControllerProvider @Inject constructor( +class NotificationLaunchAnimatorControllerProvider( private val notificationExpansionRepository: NotificationExpansionRepository, 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 ea3a8f59d85b..637637d39957 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 @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.notification.dagger; import android.content.Context; +import com.android.internal.jank.InteractionJankMonitor; import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.UiBackground; @@ -25,6 +26,8 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shade.ShadeEventsModule; import com.android.systemui.shade.ShadeExpansionStateManager; import com.android.systemui.statusbar.NotificationListener; +import com.android.systemui.statusbar.notification.NotificationActivityStarter; +import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider; import com.android.systemui.statusbar.notification.VisibilityLocationProvider; import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl; import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore; @@ -50,6 +53,7 @@ import com.android.systemui.statusbar.notification.collection.render.GroupMember import com.android.systemui.statusbar.notification.collection.render.NotifGutsViewManager; import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource; import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider; +import com.android.systemui.statusbar.notification.data.repository.NotificationExpansionRepository; import com.android.systemui.statusbar.notification.icon.ConversationIconManager; import com.android.systemui.statusbar.notification.icon.IconManager; import com.android.systemui.statusbar.notification.init.NotificationsController; @@ -69,7 +73,9 @@ import com.android.systemui.statusbar.notification.stack.NotificationSectionsMan import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; import com.android.systemui.statusbar.notification.stack.StackScrollAlgorithm; import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationListViewModelModule; +import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.KeyguardBypassController; +import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; import dagger.Binds; import dagger.Module; @@ -152,6 +158,10 @@ public interface NotificationsModule { @Binds GroupExpansionManager provideGroupExpansionManager(GroupExpansionManagerImpl impl); + /** Provides an instance of {@link NotificationActivityStarter}. */ + @Binds + NotificationActivityStarter bindActivityStarter(StatusBarNotificationActivityStarter impl); + /** Initializes the notification data pipeline (can be disabled via config). */ @SysUISingleton @Provides @@ -174,6 +184,21 @@ public interface NotificationsModule { return nsslController.getNotificationListContainer(); } + /** Provides notification launch animator. */ + @Provides + @SysUISingleton + static NotificationLaunchAnimatorControllerProvider provideNotifLaunchAnimControllerProvider( + NotificationExpansionRepository notificationExpansionRepository, + NotificationListContainer notificationListContainer, + HeadsUpManagerPhone headsUpManager, + InteractionJankMonitor jankMonitor) { + return new NotificationLaunchAnimatorControllerProvider( + notificationExpansionRepository, + notificationListContainer, + headsUpManager, + jankMonitor); + } + /** * Provide the active notification collection managing the notifications to render. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 8c0b15636b3c..4ee62d99bcf7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -623,9 +623,9 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { private final SysuiStatusBarStateController mStatusBarStateController; private final ActivityLaunchAnimator mActivityLaunchAnimator; - private NotificationLaunchAnimatorControllerProvider mNotificationAnimationProvider; + private final NotificationLaunchAnimatorControllerProvider mNotificationAnimationProvider; private final NotificationPresenter mPresenter; - private NotificationActivityStarter mNotificationActivityStarter; + private final NotificationActivityStarter mNotificationActivityStarter; private final Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy; private final Optional<Bubbles> mBubblesOptional; private final Lazy<NoteTaskController> mNoteTaskControllerLazy; @@ -726,6 +726,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { NotificationShelfController notificationShelfController, NotificationStackScrollLayoutController notificationStackScrollLayoutController, NotificationPresenter notificationPresenter, + NotificationActivityStarter notificationActivityStarter, + NotificationLaunchAnimatorControllerProvider notifLaunchAnimatorControllerProvider, NotificationExpansionRepository notificationExpansionRepository, DozeParameters dozeParameters, ScrimController scrimController, @@ -835,6 +837,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mStackScroller = mStackScrollerController.getView(); mNotifListContainer = mStackScrollerController.getNotificationListContainer(); mPresenter = notificationPresenter; + mNotificationActivityStarter = notificationActivityStarter; + mNotificationAnimationProvider = notifLaunchAnimatorControllerProvider; mNotificationExpansionRepository = notificationExpansionRepository; mDozeServiceHost = dozeServiceHost; mPowerManager = powerManager; @@ -1550,11 +1554,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { // Set up the initial notification state. mActivityLaunchAnimator.setCallback(mActivityLaunchAnimatorCallback); mActivityLaunchAnimator.addListener(mActivityLaunchAnimatorListener); - mNotificationAnimationProvider = new NotificationLaunchAnimatorControllerProvider( - mNotificationExpansionRepository, - mNotifListContainer, - mHeadsUpManager, - mJankMonitor); mRemoteInputManager.addControllerCallback(mNotificationShadeWindowController); mStackScrollerController.setNotificationActivityStarter(mNotificationActivityStarter); mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter); @@ -1611,7 +1610,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mShadeController.setNotificationShadeWindowViewController( getNotificationShadeWindowViewController()); mBackActionInteractor.setup(mQsController, mShadeSurface); - mNotificationActivityStarter = mCentralSurfacesComponent.getNotificationActivityStarter(); // Listen for demo mode changes mDemoModeController.addCallback(mDemoModeCallback); 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 8de213f262c2..053c27ccae3f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java @@ -54,6 +54,7 @@ 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.DisplayId; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.plugins.ActivityStarter; @@ -75,7 +76,6 @@ 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.CentralSurfacesComponent; import com.android.systemui.statusbar.policy.HeadsUpUtil; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.wmshell.BubblesManager; @@ -92,8 +92,8 @@ import javax.inject.Inject; /** * Status bar implementation of {@link NotificationActivityStarter}. */ -@CentralSurfacesComponent.CentralSurfacesScope -class StatusBarNotificationActivityStarter implements NotificationActivityStarter { +@SysUISingleton +public class StatusBarNotificationActivityStarter implements NotificationActivityStarter { private final Context mContext; private final int mDisplayId; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java deleted file mode 100644 index caa149e61921..000000000000 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterModule.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * 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/dagger/CentralSurfacesComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java index 4fd3ae298395..1a04b913f3e6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java @@ -21,9 +21,7 @@ import static com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.ST import static java.lang.annotation.RetentionPolicy.RUNTIME; import com.android.systemui.shade.ShadeHeaderController; -import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.phone.CentralSurfacesImpl; -import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarterModule; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; import dagger.Subcomponent; @@ -45,7 +43,6 @@ import javax.inject.Scope; */ @Subcomponent(modules = { StatusBarViewModule.class, - StatusBarNotificationActivityStarterModule.class, }) @CentralSurfacesComponent.CentralSurfacesScope public interface CentralSurfacesComponent { @@ -76,6 +73,4 @@ public interface CentralSurfacesComponent { */ @Named(STATUS_BAR_FRAGMENT) CollapsedStatusBarFragment createCollapsedStatusBarFragment(); - - NotificationActivityStarter getNotificationActivityStarter(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java index 37db5ee1f3c6..f47efe3f79c4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java @@ -154,6 +154,8 @@ import com.android.systemui.statusbar.StatusBarStateControllerImpl; import com.android.systemui.statusbar.core.StatusBarInitializer; import com.android.systemui.statusbar.notification.DynamicPrivacyController; import com.android.systemui.statusbar.notification.NotifPipelineFlags; +import com.android.systemui.statusbar.notification.NotificationActivityStarter; +import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore; import com.android.systemui.statusbar.notification.collection.NotifPipeline; @@ -248,7 +250,9 @@ public class CentralSurfacesImplTest extends SysuiTestCase { @Mock private ShadeExpansionStateManager mShadeExpansionStateManager; @Mock private BatteryController mBatteryController; @Mock private DeviceProvisionedController mDeviceProvisionedController; + @Mock private NotificationLaunchAnimatorControllerProvider mNotifLaunchAnimControllerProvider; @Mock private StatusBarNotificationPresenter mNotificationPresenter; + @Mock private NotificationActivityStarter mNotificationActivityStarter; @Mock private AmbientDisplayConfiguration mAmbientDisplayConfiguration; @Mock private NotificationLogger.ExpansionStateLogger mExpansionStateLogger; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; @@ -518,6 +522,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mNotificationShelfController, mStackScrollerController, mNotificationPresenter, + mNotificationActivityStarter, + mNotifLaunchAnimControllerProvider, new NotificationExpansionRepository(), mDozeParameters, mScrimController, |