diff options
author | 2023-08-25 15:14:40 +0000 | |
---|---|---|
committer | 2023-08-25 15:14:40 +0000 | |
commit | f353aecc0b09770a24b4ddeb1d1e6d61815a1f78 (patch) | |
tree | f91be49fbdaf5efa4df3cbf27aaf4e2cddfaba96 | |
parent | c752d0815e870a9874346c5076cd475bfe71466e (diff) | |
parent | 0199760a105eb81160c92aba860d259d89bcc9a0 (diff) |
Merge changes from topics "caitlinshk-csc-notifanim", "caitlinshk-cscqc-inject" into main
* changes:
[CS] Make the notification activity animators singletons.
[CS] Inject CentralSurfacesCommandQueueCallbacks directly into CS.
8 files changed, 49 insertions, 63 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/CentralSurfacesCommandQueueCallbacks.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java index 2bc7b996ffb3..0a57046638e8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java @@ -51,6 +51,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.R; import com.android.systemui.assist.AssistManager; import com.android.systemui.camera.CameraIntents; +import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; @@ -67,7 +68,6 @@ import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.disableflags.DisableFlagsLogger; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -80,7 +80,7 @@ import java.util.Optional; import javax.inject.Inject; /** */ -@CentralSurfacesComponent.CentralSurfacesScope +@SysUISingleton public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callbacks { private final CentralSurfaces mCentralSurfaces; private final Context mContext; 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 b2714bfea42e..6a3ebe63da08 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -308,6 +308,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { private final Context mContext; private final LockscreenShadeTransitionController mLockscreenShadeTransitionController; private final DeviceStateManager mDeviceStateManager; + private final Lazy<CentralSurfacesCommandQueueCallbacks> mCommandQueueCallbacksLazy; private CentralSurfacesCommandQueueCallbacks mCommandQueueCallbacks; private float mTransitionToFullShadeProgress = 0f; private final NotificationListContainer mNotifListContainer; @@ -622,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; @@ -725,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, @@ -739,6 +742,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { VolumeComponent volumeComponent, CommandQueue commandQueue, CentralSurfacesComponent.Factory centralSurfacesComponentFactory, + Lazy<CentralSurfacesCommandQueueCallbacks> commandQueueCallbacksLazy, PluginManager pluginManager, ShadeController shadeController, StatusBarKeyguardViewManager statusBarKeyguardViewManager, @@ -833,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; @@ -847,6 +853,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mVolumeComponent = volumeComponent; mCommandQueue = commandQueue; mCentralSurfacesComponentFactory = centralSurfacesComponentFactory; + mCommandQueueCallbacksLazy = commandQueueCallbacksLazy; mPluginManager = pluginManager; mShadeController = shadeController; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; @@ -1547,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); @@ -1608,17 +1610,11 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mShadeController.setNotificationShadeWindowViewController( getNotificationShadeWindowViewController()); mBackActionInteractor.setup(mQsController, mShadeSurface); - mNotificationActivityStarter = mCentralSurfacesComponent.getNotificationActivityStarter(); // Listen for demo mode changes mDemoModeController.addCallback(mDemoModeCallback); - if (mCommandQueueCallbacks != null) { - mCommandQueue.removeCallback(mCommandQueueCallbacks); - } - mCommandQueueCallbacks = - mCentralSurfacesComponent.getCentralSurfacesCommandQueueCallbacks(); - // Connect in to the status bar manager service + mCommandQueueCallbacks = mCommandQueueCallbacksLazy.get(); mCommandQueue.addCallback(mCommandQueueCallbacks); } 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 016c7387e04f..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,10 +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.CentralSurfacesCommandQueueCallbacks; 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; @@ -46,7 +43,6 @@ import javax.inject.Scope; */ @Subcomponent(modules = { StatusBarViewModule.class, - StatusBarNotificationActivityStarterModule.class, }) @CentralSurfacesComponent.CentralSurfacesScope public interface CentralSurfacesComponent { @@ -67,11 +63,6 @@ public interface CentralSurfacesComponent { @interface CentralSurfacesScope {} /** - * Creates a CentralSurfacesCommandQueueCallbacks. - */ - CentralSurfacesCommandQueueCallbacks getCentralSurfacesCommandQueueCallbacks(); - - /** * Creates a {@link ShadeHeaderController}. */ ShadeHeaderController getLargeScreenShadeHeaderController(); @@ -82,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 39b294879450..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; @@ -289,6 +293,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase { @Mock private CommandQueue mCommandQueue; @Mock private CentralSurfacesComponent.Factory mStatusBarComponentFactory; @Mock private CentralSurfacesComponent mCentralSurfacesComponent; + @Mock private CentralSurfacesCommandQueueCallbacks mCentralSurfacesCommandQueueCallbacks; @Mock private PluginManager mPluginManager; @Mock private ViewMediatorCallback mViewMediatorCallback; @Mock private StatusBarTouchableRegionManager mStatusBarTouchableRegionManager; @@ -517,6 +522,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mNotificationShelfController, mStackScrollerController, mNotificationPresenter, + mNotificationActivityStarter, + mNotifLaunchAnimControllerProvider, new NotificationExpansionRepository(), mDozeParameters, mScrimController, @@ -531,6 +538,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mVolumeComponent, mCommandQueue, mStatusBarComponentFactory, + () -> mCentralSurfacesCommandQueueCallbacks, mPluginManager, mShadeController, mStatusBarKeyguardViewManager, |