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.
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 c1b905a..3198029 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.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 ea3a8f5..637637d 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 @@
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.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.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.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 @@
@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 @@
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 2bc7b99..0a57046 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.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.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 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 b2714bf..6a3ebe6 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 @@
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 @@
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 @@
NotificationShelfController notificationShelfController,
NotificationStackScrollLayoutController notificationStackScrollLayoutController,
NotificationPresenter notificationPresenter,
+ NotificationActivityStarter notificationActivityStarter,
+ NotificationLaunchAnimatorControllerProvider notifLaunchAnimatorControllerProvider,
NotificationExpansionRepository notificationExpansionRepository,
DozeParameters dozeParameters,
ScrimController scrimController,
@@ -739,6 +742,7 @@
VolumeComponent volumeComponent,
CommandQueue commandQueue,
CentralSurfacesComponent.Factory centralSurfacesComponentFactory,
+ Lazy<CentralSurfacesCommandQueueCallbacks> commandQueueCallbacksLazy,
PluginManager pluginManager,
ShadeController shadeController,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
@@ -833,6 +837,8 @@
mStackScroller = mStackScrollerController.getView();
mNotifListContainer = mStackScrollerController.getNotificationListContainer();
mPresenter = notificationPresenter;
+ mNotificationActivityStarter = notificationActivityStarter;
+ mNotificationAnimationProvider = notifLaunchAnimatorControllerProvider;
mNotificationExpansionRepository = notificationExpansionRepository;
mDozeServiceHost = dozeServiceHost;
mPowerManager = powerManager;
@@ -847,6 +853,7 @@
mVolumeComponent = volumeComponent;
mCommandQueue = commandQueue;
mCentralSurfacesComponentFactory = centralSurfacesComponentFactory;
+ mCommandQueueCallbacksLazy = commandQueueCallbacksLazy;
mPluginManager = pluginManager;
mShadeController = shadeController;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
@@ -1547,11 +1554,6 @@
// 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 @@
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 8de213f..053c27c 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.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.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 @@
/**
* 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 caa149e..0000000
--- 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 016c738..1a04b91 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 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 @@
*/
@Subcomponent(modules = {
StatusBarViewModule.class,
- StatusBarNotificationActivityStarterModule.class,
})
@CentralSurfacesComponent.CentralSurfacesScope
public interface CentralSurfacesComponent {
@@ -67,11 +63,6 @@
@interface CentralSurfacesScope {}
/**
- * Creates a CentralSurfacesCommandQueueCallbacks.
- */
- CentralSurfacesCommandQueueCallbacks getCentralSurfacesCommandQueueCallbacks();
-
- /**
* Creates a {@link ShadeHeaderController}.
*/
ShadeHeaderController getLargeScreenShadeHeaderController();
@@ -82,6 +73,4 @@
*/
@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 39b2948..f47efe3 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.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 @@
@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 @@
@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 @@
mNotificationShelfController,
mStackScrollerController,
mNotificationPresenter,
+ mNotificationActivityStarter,
+ mNotifLaunchAnimControllerProvider,
new NotificationExpansionRepository(),
mDozeParameters,
mScrimController,
@@ -531,6 +538,7 @@
mVolumeComponent,
mCommandQueue,
mStatusBarComponentFactory,
+ () -> mCentralSurfacesCommandQueueCallbacks,
mPluginManager,
mShadeController,
mStatusBarKeyguardViewManager,