6/N Move everything into SysUIComponent.
It is far easier to move _everything_ into SysUIComponent, and then
selectively promote things back to GlobalScope and/or WMScope than
it is to try to do it one at a time. With this change, though lots
of files are touched, very little actually changes structurally.
After this change goes in, folks should stop using @Singleton quite
so freely. Most things should live in @SysuiSingleton. @Singleton
is due to quickly be replaced by @GlobalScope.
Bug: 162923491
Test: atest SystemUITests && manual
Change-Id: Idc31d3d83b030581fb1fa869f7fafc4f2d3a8828
diff --git a/packages/CarSystemUI/proguard.flags b/packages/CarSystemUI/proguard.flags
index 516e70f..f0b20c1 100644
--- a/packages/CarSystemUI/proguard.flags
+++ b/packages/CarSystemUI/proguard.flags
@@ -1,6 +1,7 @@
-keep class com.android.systemui.CarSystemUIFactory
-keep class com.android.car.notification.headsup.animationhelper.**
--keep class com.android.systemui.CarGlobalRootComponent { *; }
+-keep class com.android.systemui.DaggerCarGlobalRootComponent { *; }
+-keep class com.android.systemui.DaggerCarGlobalRootComponent$CarSysUIComponentImpl { *; }
-include ../SystemUI/proguard.flags
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java
index fde0b1a..552cadf 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java
@@ -16,13 +16,7 @@
package com.android.systemui;
-import com.android.systemui.dagger.DependencyBinder;
-import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.GlobalRootComponent;
-import com.android.systemui.dagger.SystemServicesModule;
-import com.android.systemui.dagger.SystemUIModule;
-import com.android.systemui.onehanded.dagger.OneHandedModule;
-import com.android.systemui.pip.phone.dagger.PipModule;
import javax.inject.Singleton;
@@ -32,15 +26,7 @@
@Singleton
@Component(
modules = {
- CarComponentBinder.class,
- DependencyProvider.class,
- DependencyBinder.class,
- PipModule.class,
- OneHandedModule.class,
- SystemServicesModule.class,
- SystemUIModule.class,
- CarSystemUIModule.class,
- CarSystemUIBinder.class
+ CarSysUIComponentModule.class
})
public interface CarGlobalRootComponent extends GlobalRootComponent {
/**
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java
index d19f368..b2f98ec 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java
@@ -16,8 +16,14 @@
package com.android.systemui;
+import com.android.systemui.dagger.DependencyBinder;
+import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.SystemServicesModule;
+import com.android.systemui.dagger.SystemUIModule;
+import com.android.systemui.onehanded.dagger.OneHandedModule;
+import com.android.systemui.pip.phone.dagger.PipModule;
import dagger.Subcomponent;
@@ -25,7 +31,16 @@
* Dagger Subcomponent for Core SysUI.
*/
@SysUISingleton
-@Subcomponent(modules = {})
+@Subcomponent(modules = {
+ CarComponentBinder.class,
+ DependencyProvider.class,
+ DependencyBinder.class,
+ PipModule.class,
+ OneHandedModule.class,
+ SystemServicesModule.class,
+ SystemUIModule.class,
+ CarSystemUIModule.class,
+ CarSystemUIBinder.class})
public interface CarSysUIComponent extends SysUIComponent {
/**
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponentModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponentModule.java
new file mode 100644
index 0000000..4de3166
--- /dev/null
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponentModule.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2020 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;
+
+import dagger.Module;
+
+/**
+ * Dagger module for including the CarSysUIComponent.
+ *
+ * TODO(b/162923491): Remove or otherwise refactor this module. This is a stop gap.
+ */
+@Module(subcomponents = {CarSysUIComponent.class})
+public abstract class CarSysUIComponentModule {
+}
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
index 51ad286..adc8b4d2 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
@@ -33,6 +33,7 @@
import com.android.systemui.car.statusbar.DozeServiceHost;
import com.android.systemui.car.volume.CarVolumeDialogComponent;
import com.android.systemui.dagger.GlobalRootComponent;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoModeController;
@@ -74,7 +75,6 @@
import com.android.wm.shell.common.TransactionPool;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Binds;
import dagger.Module;
@@ -84,20 +84,17 @@
includes = {
DividerModule.class,
QSModule.class
- },
- subcomponents = {
- CarSysUIComponent.class
})
abstract class CarSystemUIModule {
- @Singleton
+ @SysUISingleton
@Provides
@Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
static boolean provideAllowNotificationLongPress() {
return false;
}
- @Singleton
+ @SysUISingleton
@Provides
static HeadsUpManagerPhone provideHeadsUpManagerPhone(
Context context,
@@ -109,7 +106,7 @@
groupManager, configurationController);
}
- @Singleton
+ @SysUISingleton
@Provides
@Named(LEAK_REPORT_EMAIL_NAME)
static String provideLeakReportEmail() {
@@ -117,33 +114,33 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
CommandQueue commandQueue) {
return new Recents(context, recentsImplementation, commandQueue);
}
- @Singleton
+ @SysUISingleton
@Provides
static TransactionPool provideTransactionPool() {
return new TransactionPool();
}
- @Singleton
+ @SysUISingleton
@Provides
static DisplayController providerDisplayController(Context context, @Main Handler handler,
IWindowManager wmService) {
return new DisplayController(context, handler, wmService);
}
- @Singleton
+ @SysUISingleton
@Provides
static SystemWindows provideSystemWindows(DisplayController displayController,
IWindowManager wmService) {
return new SystemWindows(displayController, wmService);
}
- @Singleton
+ @SysUISingleton
@Provides
static DisplayImeController provideDisplayImeController(Context context,
IWindowManager wmService, DisplayController displayController,
@@ -152,7 +149,7 @@
mainHandler, transactionPool).build();
}
- @Singleton
+ @SysUISingleton
@PipMenuActivityClass
@Provides
static Class<?> providePipMenuActivityClass() {
@@ -170,7 +167,7 @@
NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
@Provides
- @Singleton
+ @SysUISingleton
static BatteryController provideBatteryController(Context context,
EnhancedEstimates enhancedEstimates, PowerManager powerManager,
BroadcastDispatcher broadcastDispatcher, DemoModeController demoModeController,
@@ -183,7 +180,7 @@
}
@Binds
- @Singleton
+ @SysUISingleton
public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
@Binds
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedControllerImpl.java b/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedControllerImpl.java
index 09e62d2..a2ba880 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedControllerImpl.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/CarDeviceProvisionedControllerImpl.java
@@ -27,17 +27,17 @@
import com.android.systemui.Dependency;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A controller that monitors the status of SUW progress for each user in addition to the
* functionality provided by {@link DeviceProvisionedControllerImpl}.
*/
-@Singleton
+@SysUISingleton
public class CarDeviceProvisionedControllerImpl extends DeviceProvisionedControllerImpl implements
CarDeviceProvisionedController {
private static final Uri USER_SETUP_IN_PROGRESS_URI = Settings.Secure.getUriFor(
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarServiceProvider.java b/packages/CarSystemUI/src/com/android/systemui/car/CarServiceProvider.java
index 80ee371..5778d66 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/CarServiceProvider.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/CarServiceProvider.java
@@ -21,14 +21,15 @@
import androidx.annotation.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Provides a common connection to the car service that can be shared. */
-@Singleton
+@SysUISingleton
public class CarServiceProvider {
private final Context mContext;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/hvac/HvacController.java b/packages/CarSystemUI/src/com/android/systemui/car/hvac/HvacController.java
index 236a6a4..a4b6bfc 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/hvac/HvacController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/hvac/HvacController.java
@@ -29,6 +29,7 @@
import android.view.ViewGroup;
import com.android.systemui.car.CarServiceProvider;
+import com.android.systemui.dagger.SysUISingleton;
import java.util.ArrayList;
import java.util.HashMap;
@@ -40,13 +41,12 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the connection to the Car service and delegates value changes to the registered
* {@link TemperatureView}s
*/
-@Singleton
+@SysUISingleton
public class HvacController {
public static final String TAG = "HvacController";
private static final boolean DEBUG = true;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
index 51a7245..276ddfb 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewController.java
@@ -38,6 +38,7 @@
import com.android.systemui.car.navigationbar.CarNavigationBarController;
import com.android.systemui.car.window.OverlayViewController;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.plugins.FalsingManager;
@@ -49,7 +50,6 @@
import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -57,7 +57,7 @@
* Automotive implementation of the {@link KeyguardViewController}. It controls the Keyguard View
* that is mounted to the SystemUIOverlayWindow.
*/
-@Singleton
+@SysUISingleton
public class CarKeyguardViewController extends OverlayViewController implements
KeyguardViewController {
private static final String TAG = "CarKeyguardViewController";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewMediator.java
index 5a35c48..155b73e 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewMediator.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/keyguard/CarKeyguardViewMediator.java
@@ -18,15 +18,15 @@
import com.android.systemui.car.userswitcher.FullScreenUserSwitcherViewController;
import com.android.systemui.car.window.OverlayViewMediator;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages events originating from the Keyguard service that cause Keyguard or other OverlayWindow
* Components to appear or disappear.
*/
-@Singleton
+@SysUISingleton
public class CarKeyguardViewMediator implements OverlayViewMediator {
private final CarKeyguardViewController mCarKeyguardViewController;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonRoleHolderController.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonRoleHolderController.java
index 5c83c02..f8cd20f 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonRoleHolderController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonRoleHolderController.java
@@ -30,13 +30,13 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.car.CarDeviceProvisionedController;
+import com.android.systemui.dagger.SysUISingleton;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Some CarNavigationButtons can be associated to a {@link RoleManager} role. When they are, it is
@@ -46,7 +46,7 @@
* This class monitors the current role holders for each role type and updates the button icon for
* this buttons with have this feature enabled.
*/
-@Singleton
+@SysUISingleton
public class ButtonRoleHolderController {
private static final String TAG = "ButtonRoleHolderController";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateController.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateController.java
index eedcfa5..aa6da89 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateController.java
@@ -26,13 +26,14 @@
import android.view.View;
import android.view.ViewGroup;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* CarNavigationButtons can optionally have selection state that toggles certain visual indications
@@ -42,7 +43,7 @@
* This class controls the selection state of CarNavigationButtons that have opted in to have such
* selection state-dependent visual indications.
*/
-@Singleton
+@SysUISingleton
public class ButtonSelectionStateController {
private final Set<CarNavigationButton> mRegisteredViews = new HashSet<>();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateListener.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateListener.java
index 1361798..d6216ba 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateListener.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/ButtonSelectionStateListener.java
@@ -19,16 +19,16 @@
import android.app.ActivityTaskManager;
import android.util.Log;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.TaskStackChangeListener;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* An implementation of TaskStackChangeListener, that listens for changes in the system
* task stack and notifies the navigation bar.
*/
-@Singleton
+@SysUISingleton
class ButtonSelectionStateListener extends TaskStackChangeListener {
private static final String TAG = ButtonSelectionStateListener.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
index fe26040..51a8838 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/CarNavigationBarController.java
@@ -23,14 +23,14 @@
import androidx.annotation.Nullable;
import com.android.systemui.car.hvac.HvacController;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/** A single class which controls the navigation bar views. */
-@Singleton
+@SysUISingleton
public class CarNavigationBarController {
private final Context mContext;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/NavigationBarViewFactory.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/NavigationBarViewFactory.java
index adf8d4d..a473bb7 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/NavigationBarViewFactory.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/NavigationBarViewFactory.java
@@ -26,12 +26,12 @@
import com.android.car.ui.FocusParkingView;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** A factory that creates and caches views for navigation bars. */
-@Singleton
+@SysUISingleton
public class NavigationBarViewFactory {
private static final String TAG = NavigationBarViewFactory.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java
index 3527bf9..143c444f 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java
@@ -29,6 +29,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import java.lang.annotation.ElementType;
@@ -40,13 +41,12 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Reads configs for system bars for each side (TOP, BOTTOM, LEFT, and RIGHT) and returns the
* corresponding {@link android.view.WindowManager.LayoutParams} per the configuration.
*/
-@Singleton
+@SysUISingleton
public class SystemBarConfigs {
private static final String TAG = SystemBarConfigs.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/BottomNotificationPanelViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/BottomNotificationPanelViewMediator.java
index 7d353f5a..8468bef 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/BottomNotificationPanelViewMediator.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/BottomNotificationPanelViewMediator.java
@@ -20,16 +20,16 @@
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.navigationbar.CarNavigationBarController;
import com.android.systemui.car.window.OverlayPanelViewController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Implementation of NotificationPanelViewMediator that sets the notification panel to be opened
* from the top navigation bar.
*/
-@Singleton
+@SysUISingleton
public class BottomNotificationPanelViewMediator extends NotificationPanelViewMediator {
@Inject
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/CarHeadsUpNotificationSystemContainer.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/CarHeadsUpNotificationSystemContainer.java
index d4f72071..3b22a30 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/CarHeadsUpNotificationSystemContainer.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/CarHeadsUpNotificationSystemContainer.java
@@ -29,15 +29,15 @@
import com.android.car.notification.headsup.CarHeadsUpNotificationContainer;
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A controller for SysUI's HUN display.
*/
-@Singleton
+@SysUISingleton
public class CarHeadsUpNotificationSystemContainer implements CarHeadsUpNotificationContainer {
private final CarDeviceProvisionedController mCarDeviceProvisionedController;
private final OverlayViewGlobalStateController mOverlayViewGlobalStateController;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/CarNotificationModule.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/CarNotificationModule.java
index b7bc631..8a3bcfc 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/CarNotificationModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/CarNotificationModule.java
@@ -25,8 +25,7 @@
import com.android.car.notification.NotificationDataManager;
import com.android.car.notification.headsup.CarHeadsUpNotificationContainer;
import com.android.internal.statusbar.IStatusBarService;
-
-import javax.inject.Singleton;
+import com.android.systemui.dagger.SysUISingleton;
import dagger.Binds;
import dagger.Module;
@@ -38,26 +37,26 @@
@Module
public abstract class CarNotificationModule {
@Provides
- @Singleton
+ @SysUISingleton
static NotificationClickHandlerFactory provideNotificationClickHandlerFactory(
IStatusBarService barService) {
return new NotificationClickHandlerFactory(barService);
}
@Provides
- @Singleton
+ @SysUISingleton
static NotificationDataManager provideNotificationDataManager() {
return new NotificationDataManager();
}
@Provides
- @Singleton
+ @SysUISingleton
static CarUxRestrictionManagerWrapper provideCarUxRestrictionManagerWrapper() {
return new CarUxRestrictionManagerWrapper();
}
@Provides
- @Singleton
+ @SysUISingleton
static CarNotificationListener provideCarNotificationListener(Context context,
CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper,
CarHeadsUpNotificationManager carHeadsUpNotificationManager,
@@ -69,7 +68,7 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static CarHeadsUpNotificationManager provideCarHeadsUpNotificationManager(Context context,
NotificationClickHandlerFactory notificationClickHandlerFactory,
NotificationDataManager notificationDataManager,
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java
index 8d58436..3b22fdb 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java
@@ -49,6 +49,7 @@
import com.android.systemui.car.CarServiceProvider;
import com.android.systemui.car.window.OverlayPanelViewController;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+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.statusbar.StatusBarStateController;
@@ -59,10 +60,9 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** View controller for the notification panel. */
-@Singleton
+@SysUISingleton
public class NotificationPanelViewController extends OverlayPanelViewController
implements CommandQueue.Callbacks {
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java
index 0c185ba..17b6b74 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewMediator.java
@@ -31,16 +31,16 @@
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.navigationbar.CarNavigationBarController;
import com.android.systemui.car.window.OverlayViewMediator;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* The view mediator which attaches the view controller to other elements of the system ui. Disables
* drag open behavior of the notification panel from any navigation bar.
*/
-@Singleton
+@SysUISingleton
public class NotificationPanelViewMediator implements OverlayViewMediator,
ConfigurationController.ConfigurationListener {
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationShadeWindowControllerImpl.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationShadeWindowControllerImpl.java
index 0c064bd..1a1da89 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationShadeWindowControllerImpl.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationShadeWindowControllerImpl.java
@@ -17,13 +17,13 @@
package com.android.systemui.car.notification;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** The automotive version of the notification shade window controller. */
-@Singleton
+@SysUISingleton
public class NotificationShadeWindowControllerImpl implements
NotificationShadeWindowController {
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationVisibilityLogger.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationVisibilityLogger.java
index 44c8197..b263f72 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationVisibilityLogger.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationVisibilityLogger.java
@@ -24,19 +24,19 @@
import com.android.car.notification.NotificationDataManager;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import java.util.Set;
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles notification logging, in particular, logging which notifications are visible and which
* are not.
*/
-@Singleton
+@SysUISingleton
public class NotificationVisibilityLogger {
private static final String TAG = "NotificationVisibilityLogger";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/PowerManagerHelper.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/PowerManagerHelper.java
index 92a11d8..da43c54 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/PowerManagerHelper.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/PowerManagerHelper.java
@@ -23,14 +23,14 @@
import android.util.Log;
import com.android.systemui.car.CarServiceProvider;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Helper class for connecting to the {@link CarPowerManager} and listening for power state changes.
*/
-@Singleton
+@SysUISingleton
public class PowerManagerHelper {
public static final String TAG = "PowerManagerHelper";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/TopNotificationPanelViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/TopNotificationPanelViewMediator.java
index 89c9931..9bc5b74c 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/notification/TopNotificationPanelViewMediator.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/TopNotificationPanelViewMediator.java
@@ -20,16 +20,16 @@
import com.android.systemui.car.CarDeviceProvisionedController;
import com.android.systemui.car.navigationbar.CarNavigationBarController;
import com.android.systemui.car.window.OverlayPanelViewController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Implementation of NotificationPanelViewMediator that sets the notification panel to be opened
* from the top navigation bar.
*/
-@Singleton
+@SysUISingleton
public class TopNotificationPanelViewMediator extends NotificationPanelViewMediator {
@Inject
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppController.java b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppController.java
index 6b41b35..b8d6964 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppController.java
@@ -22,14 +22,14 @@
import android.util.Log;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller responsible for detecting unsafe apps.
*/
-@Singleton
+@SysUISingleton
public class SideLoadedAppController extends SystemUI {
private static final String TAG = SideLoadedAppController.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppDetector.java b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppDetector.java
index a2cd044..eb32edb 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppDetector.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppDetector.java
@@ -29,19 +29,19 @@
import com.android.systemui.R;
import com.android.systemui.car.CarDeviceProvisionedController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import java.util.Arrays;
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A class that detects unsafe apps.
* An app is considered safe if is a system app or installed through allowed sources.
*/
-@Singleton
+@SysUISingleton
public class SideLoadedAppDetector {
private static final String TAG = SideLoadedAppDetector.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppStateController.java b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppStateController.java
index 1d66dda..5b4faa1 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppStateController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/sideloaded/SideLoadedAppStateController.java
@@ -19,13 +19,14 @@
import android.util.Log;
import android.view.Display;
+import com.android.systemui.dagger.SysUISingleton;
+
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manager responsible for displaying proper UI when an unsafe app is detected.
*/
-@Singleton
+@SysUISingleton
public class SideLoadedAppStateController {
private static final String TAG = SideLoadedAppStateController.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/statusbar/DozeServiceHost.java b/packages/CarSystemUI/src/com/android/systemui/car/statusbar/DozeServiceHost.java
index d23660c..3fb3cd8 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/statusbar/DozeServiceHost.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/statusbar/DozeServiceHost.java
@@ -16,13 +16,13 @@
package com.android.systemui.car.statusbar;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.doze.DozeHost;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** No-op implementation of {@link DozeHost} for use by car sysui, which does not support dozing. */
-@Singleton
+@SysUISingleton
public class DozeServiceHost implements DozeHost {
@Inject
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullScreenUserSwitcherViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullScreenUserSwitcherViewController.java
index 1a8f19e..66bfb2d 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullScreenUserSwitcherViewController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullScreenUserSwitcherViewController.java
@@ -30,15 +30,15 @@
import com.android.systemui.car.CarServiceProvider;
import com.android.systemui.car.window.OverlayViewController;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller for {@link R.layout#car_fullscreen_user_switcher}.
*/
-@Singleton
+@SysUISingleton
public class FullScreenUserSwitcherViewController extends OverlayViewController {
private final Context mContext;
private final Resources mResources;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullscreenUserSwitcherViewMediator.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullscreenUserSwitcherViewMediator.java
index 8b399f8..165fe63 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullscreenUserSwitcherViewMediator.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/FullscreenUserSwitcherViewMediator.java
@@ -18,16 +18,16 @@
import com.android.systemui.car.keyguard.CarKeyguardViewController;
import com.android.systemui.car.window.OverlayViewMediator;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the fullscreen user switcher and it's interactions with the keyguard.
*/
-@Singleton
+@SysUISingleton
public class FullscreenUserSwitcherViewMediator implements OverlayViewMediator {
private static final String TAG = FullscreenUserSwitcherViewMediator.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewController.java
index 0d77c13..6178cbd 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserSwitchTransitionViewController.java
@@ -38,15 +38,15 @@
import com.android.systemui.R;
import com.android.systemui.car.window.OverlayViewController;
import com.android.systemui.car.window.OverlayViewGlobalStateController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles showing and hiding UserSwitchTransitionView that is mounted to SystemUiOverlayWindow.
*/
-@Singleton
+@SysUISingleton
public class UserSwitchTransitionViewController extends OverlayViewController {
private static final String TAG = "UserSwitchTransition";
private static final String ENABLE_DEVELOPER_MESSAGE_TRUE = "true";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/volume/CarVolumeDialogComponent.java b/packages/CarSystemUI/src/com/android/systemui/car/volume/CarVolumeDialogComponent.java
index d453957..4cdbfa3 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/volume/CarVolumeDialogComponent.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/volume/CarVolumeDialogComponent.java
@@ -19,6 +19,7 @@
import android.content.Context;
import com.android.systemui.car.CarServiceProvider;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.VolumeDialog;
@@ -26,12 +27,11 @@
import com.android.systemui.volume.VolumeDialogControllerImpl;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Allows for adding car specific dialog when the volume dialog is created.
*/
-@Singleton
+@SysUISingleton
public class CarVolumeDialogComponent extends VolumeDialogComponent {
private CarVolumeDialogImpl mCarVolumeDialog;
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/volume/VolumeUI.java b/packages/CarSystemUI/src/com/android/systemui/car/volume/VolumeUI.java
index 03b61e0..b0321ab 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/volume/VolumeUI.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/volume/VolumeUI.java
@@ -27,6 +27,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.car.CarServiceProvider;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.volume.VolumeDialogComponent;
@@ -34,12 +35,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/** The entry point for controlling the volume ui in cars. */
-@Singleton
+@SysUISingleton
public class VolumeUI extends SystemUI {
private static final String TAG = "VolumeUI";
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/window/OverlayViewGlobalStateController.java b/packages/CarSystemUI/src/com/android/systemui/car/window/OverlayViewGlobalStateController.java
index 2494242..22b6455 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/window/OverlayViewGlobalStateController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/window/OverlayViewGlobalStateController.java
@@ -27,6 +27,8 @@
import androidx.annotation.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -35,7 +37,6 @@
import java.util.TreeMap;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* This controller is responsible for the following:
@@ -46,7 +47,7 @@
* global state of SystemUIOverlayWindow.
* </ul>
*/
-@Singleton
+@SysUISingleton
public class OverlayViewGlobalStateController {
private static final boolean DEBUG = false;
private static final String TAG = OverlayViewGlobalStateController.class.getSimpleName();
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowController.java b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowController.java
index 029bd37..81b1bf9 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowController.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowController.java
@@ -29,17 +29,17 @@
import android.view.WindowManager;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls the expansion state of the primary window which will contain all of the fullscreen sysui
* behavior. This window still has a collapsed state in order to watch for swipe events to expand
* this window for the notification panel.
*/
-@Singleton
+@SysUISingleton
public class SystemUIOverlayWindowController implements
ConfigurationController.ConfigurationListener {
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
index 8cca0ed..6395ebf 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/window/SystemUIOverlayWindowManager.java
@@ -21,6 +21,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
@@ -28,13 +29,12 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
/**
* Registers {@link OverlayViewMediator}(s) and synchronizes their calls to hide/show {@link
* OverlayViewController}(s) to allow for the correct visibility of system bars.
*/
-@Singleton
+@SysUISingleton
public class SystemUIOverlayWindowManager extends SystemUI {
private static final String TAG = "SystemUIOverlayWM";
private final Map<Class<?>, Provider<OverlayViewMediator>>
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index 92e7d88..887384d 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -43,4 +43,5 @@
-keep class com.android.wm.shell.*
--keep class com.android.systemui.dagger.GlobalRootComponent { *; }
\ No newline at end of file
+-keep class com.android.systemui.dagger.GlobalRootComponent { *; }
+-keep class com.android.systemui.dagger.GlobalRootComponent$SysUIComponentImpl { *; }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index 5f00a59..b048333 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -256,7 +256,7 @@
mUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y);
mInjectionInflationController = new InjectionInflationController(
- SystemUIFactory.getInstance().getRootComponent().createViewInstanceCreatorFactory());
+ SystemUIFactory.getInstance().getSysUIComponent().createViewInstanceCreatorFactory());
mViewConfiguration = ViewConfiguration.get(context);
mKeyguardStateController = Dependency.get(KeyguardStateController.class);
mSecondaryLockScreenController = new AdminSecondaryLockScreenController(context, this,
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java
index 17abfae..ac2160e 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityModel.java
@@ -24,11 +24,11 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
-@Singleton
+@SysUISingleton
public class KeyguardSecurityModel {
/**
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 878947f..c354241 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -94,6 +94,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
@@ -124,14 +125,13 @@
import java.util.function.Consumer;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Watches for updates that may be interesting to the keyguard, and provides
* the up to date information as well as a registration for callbacks that care
* to be updated.
*/
-@Singleton
+@SysUISingleton
public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpable {
private static final String TAG = "KeyguardUpdateMonitor";
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
index 2200b22..3775628 100644
--- a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
+++ b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java
@@ -34,6 +34,7 @@
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager.DockEventListener;
import com.android.systemui.plugins.ClockPlugin;
@@ -50,12 +51,11 @@
import java.util.function.Supplier;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages custom clock faces for AOD and lock screen.
*/
-@Singleton
+@SysUISingleton
public final class ClockManager {
private static final String TAG = "ClockOptsProvider";
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
index 63840bc..43b3929 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
@@ -22,15 +22,16 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Contains useful methods for querying properties of an Activity Intent.
*/
-@Singleton
+@SysUISingleton
public class ActivityIntentHelper {
private final Context mContext;
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
index 47a10af..3d6d381 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
@@ -18,13 +18,13 @@
import android.content.Intent;
import android.view.View;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.phone.StatusBar;
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -33,7 +33,7 @@
* delegates to an actual implementation (StatusBar).
*/
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
-@Singleton
+@SysUISingleton
public class ActivityStarterDelegate implements ActivityStarter {
private Optional<Lazy<StatusBar>> mActualStarter;
diff --git a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
index aef1872..9eaf4c9 100644
--- a/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/BootCompleteCacheImpl.kt
@@ -18,13 +18,13 @@
import android.util.Log
import com.android.internal.annotations.GuardedBy
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import java.io.FileDescriptor
import java.io.PrintWriter
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Caches whether the device has reached [SystemService.PHASE_BOOT_COMPLETED].
@@ -32,7 +32,7 @@
* This class is constructed and set by [SystemUIApplication] and will notify all listeners when
* boot is completed.
*/
-@Singleton
+@SysUISingleton
class BootCompleteCacheImpl @Inject constructor(dumpManager: DumpManager) :
BootCompleteCache, Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java
index c04775a..de47c68 100644
--- a/packages/SystemUI/src/com/android/systemui/Dependency.java
+++ b/packages/SystemUI/src/com/android/systemui/Dependency.java
@@ -39,6 +39,7 @@
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
@@ -131,7 +132,6 @@
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -150,7 +150,7 @@
* they have no clients they should not have any registered resources like bound
* services, registered receivers, etc.
*/
-@Singleton
+@SysUISingleton
public class Dependency {
/**
* Key for getting a the main looper.
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
index 5f88156..d859a63 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceController.java
@@ -24,20 +24,16 @@
import com.android.internal.messages.nano.SystemMessageProto;
import com.android.systemui.appops.AppOpsController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
-import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.util.Assert;
-import java.util.Set;
-
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Tracks state of foreground services and notifications related to foreground services per user.
*/
-@Singleton
+@SysUISingleton
public class ForegroundServiceController {
public static final int[] APP_OPS = new int[] {AppOpsManager.OP_SYSTEM_ALERT_WINDOW};
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
index 1515272..d6cb114 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
@@ -21,10 +21,10 @@
import android.content.Context;
import android.os.Bundle;
import android.service.notification.StatusBarNotification;
-import android.util.ArraySet;
import android.util.Log;
import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -33,10 +33,9 @@
import com.android.systemui.util.time.SystemClock;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Updates foreground service notification state in response to notification data events. */
-@Singleton
+@SysUISingleton
public class ForegroundServiceNotificationListener {
private static final String TAG = "FgServiceController";
diff --git a/packages/SystemUI/src/com/android/systemui/InitController.java b/packages/SystemUI/src/com/android/systemui/InitController.java
index a2dd123..9bb576b 100644
--- a/packages/SystemUI/src/com/android/systemui/InitController.java
+++ b/packages/SystemUI/src/com/android/systemui/InitController.java
@@ -14,16 +14,17 @@
package com.android.systemui;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Created by {@link Dependency} on SystemUI startup. Add tasks which need to be executed only
* after all other dependencies have been created.
*/
-@Singleton
+@SysUISingleton
public class InitController {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/LatencyTester.java b/packages/SystemUI/src/com/android/systemui/LatencyTester.java
index dc0cb03..9c5a40c 100644
--- a/packages/SystemUI/src/com/android/systemui/LatencyTester.java
+++ b/packages/SystemUI/src/com/android/systemui/LatencyTester.java
@@ -30,16 +30,16 @@
import com.android.internal.util.LatencyTracker;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Class that only runs on debuggable builds that listens to broadcasts that simulate actions in the
* system that are used for testing the latency.
*/
-@Singleton
+@SysUISingleton
public class LatencyTester extends SystemUI {
private static final String
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index ad11d71..f663d1a 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -83,6 +83,7 @@
import com.android.internal.util.Preconditions;
import com.android.systemui.RegionInterceptingFrameLayout.RegionInterceptableView;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.qs.SecureSetting;
import com.android.systemui.tuner.TunerService;
@@ -92,13 +93,12 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* An overlay that draws screen decorations in software (e.g for rounded corners or display cutout)
* for antialiasing and emulation purposes.
*/
-@Singleton
+@SysUISingleton
public class ScreenDecorations extends SystemUI implements Tunable {
private static final boolean DEBUG = false;
private static final String TAG = "ScreenDecorations";
diff --git a/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java b/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java
index 73295a3..34efa35 100644
--- a/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java
+++ b/packages/SystemUI/src/com/android/systemui/SizeCompatModeActivityController.java
@@ -41,6 +41,7 @@
import android.widget.PopupWindow;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.statusbar.CommandQueue;
@@ -48,10 +49,9 @@
import java.lang.ref.WeakReference;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Shows a restart-activity button when the foreground activity is in size compatibility mode. */
-@Singleton
+@SysUISingleton
public class SizeCompatModeActivityController extends SystemUI implements CommandQueue.Callbacks {
private static final String TAG = "SizeCompatMode";
diff --git a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java
index 7a4ef2b..0b997d0 100644
--- a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java
@@ -29,15 +29,15 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.SliceBroadcastRelay;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Allows settings to register certain broadcasts to launch the settings app for pinned slices.
* @see SliceBroadcastRelay
*/
-@Singleton
+@SysUISingleton
public class SliceBroadcastRelayHandler extends SystemUI {
private static final String TAG = "SliceBroadcastRelay";
private static final boolean DEBUG = false;
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
index 627f559..bb7906e 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
@@ -29,7 +29,7 @@
import androidx.core.app.AppComponentFactory;
import com.android.systemui.dagger.ContextComponentHelper;
-import com.android.systemui.dagger.GlobalRootComponent;
+import com.android.systemui.dagger.SysUIComponent;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -65,7 +65,7 @@
((ContextInitializer) app).setContextAvailableCallback(
context -> {
SystemUIFactory.createFromConfig(context);
- SystemUIFactory.getInstance().getRootComponent().inject(
+ SystemUIFactory.getInstance().getSysUIComponent().inject(
SystemUIAppComponentFactory.this);
}
);
@@ -85,8 +85,8 @@
((ContextInitializer) contentProvider).setContextAvailableCallback(
context -> {
SystemUIFactory.createFromConfig(context);
- GlobalRootComponent rootComponent =
- SystemUIFactory.getInstance().getRootComponent();
+ SysUIComponent rootComponent =
+ SystemUIFactory.getInstance().getSysUIComponent();
try {
Method injectMethod = rootComponent.getClass()
.getMethod("inject", contentProvider.getClass());
@@ -111,7 +111,7 @@
if (mComponentHelper == null) {
// This shouldn't happen, but is seen on occasion.
// Bug filed against framework to take a look: http://b/141008541
- SystemUIFactory.getInstance().getRootComponent().inject(
+ SystemUIFactory.getInstance().getSysUIComponent().inject(
SystemUIAppComponentFactory.this);
}
Activity activity = mComponentHelper.resolveActivity(className);
@@ -129,7 +129,7 @@
if (mComponentHelper == null) {
// This shouldn't happen, but does when a device is freshly formatted.
// Bug filed against framework to take a look: http://b/141008541
- SystemUIFactory.getInstance().getRootComponent().inject(
+ SystemUIFactory.getInstance().getSysUIComponent().inject(
SystemUIAppComponentFactory.this);
}
Service service = mComponentHelper.resolveService(className);
@@ -147,7 +147,7 @@
if (mComponentHelper == null) {
// This shouldn't happen, but does when a device is freshly formatted.
// Bug filed against framework to take a look: http://b/141008541
- SystemUIFactory.getInstance().getRootComponent().inject(
+ SystemUIFactory.getInstance().getSysUIComponent().inject(
SystemUIAppComponentFactory.this);
}
BroadcastReceiver receiver = mComponentHelper.resolveBroadcastReceiver(className);
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
index 4f78f65..7dcec3d 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java
@@ -33,6 +33,7 @@
import com.android.systemui.dagger.ContextComponentHelper;
import com.android.systemui.dagger.GlobalRootComponent;
+import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.NotificationChannels;
@@ -58,6 +59,7 @@
private boolean mServicesStarted;
private SystemUIAppComponentFactory.ContextAvailableCallback mContextAvailableCallback;
private GlobalRootComponent mRootComponent;
+ private SysUIComponent mSysUIComponent;
public SystemUIApplication() {
super();
@@ -75,8 +77,9 @@
log.traceBegin("DependencyInjection");
mContextAvailableCallback.onContextAvailable(this);
mRootComponent = SystemUIFactory.getInstance().getRootComponent();
- mComponentHelper = mRootComponent.getContextComponentHelper();
- mBootCompleteCache = mRootComponent.provideBootCacheImpl();
+ mSysUIComponent = SystemUIFactory.getInstance().getSysUIComponent();
+ mComponentHelper = mSysUIComponent.getContextComponentHelper();
+ mBootCompleteCache = mSysUIComponent.provideBootCacheImpl();
log.traceEnd();
// Set the application theme that is inherited by all services. Note that setting the
@@ -172,7 +175,7 @@
}
}
- final DumpManager dumpManager = mRootComponent.createDumpManager();
+ final DumpManager dumpManager = mSysUIComponent.createDumpManager();
Log.v(TAG, "Starting SystemUI services for user " +
Process.myUserHandle().getIdentifier() + ".");
@@ -215,7 +218,7 @@
dumpManager.registerDumpable(mServices[i].getClass().getName(), mServices[i]);
}
- mRootComponent.getInitController().executePostInitTasks();
+ mSysUIComponent.getInitController().executePostInitTasks();
log.traceEnd();
mServicesStarted = true;
@@ -224,7 +227,7 @@
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (mServicesStarted) {
- mRootComponent.getConfigurationController().onConfigurationChanged(newConfig);
+ mSysUIComponent.getConfigurationController().onConfigurationChanged(newConfig);
int len = mServices.length;
for (int i = 0; i < len; i++) {
if (mServices[i] != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index e34a653..7023e47 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -100,7 +100,7 @@
// Every other part of our codebase currently relies on Dependency, so we
// really need to ensure the Dependency gets initialized early on.
- Dependency dependency = mRootComponent.createDependency();
+ Dependency dependency = mSysUIComponent.createDependency();
dependency.start();
}
@@ -114,6 +114,10 @@
return mRootComponent;
}
+ public SysUIComponent getSysUIComponent() {
+ return mSysUIComponent;
+ }
+
/** Returns the list of system UI components that should be started. */
public String[] getSystemUIServiceComponents(Resources resources) {
return resources.getStringArray(R.array.config_systemUIServiceComponents);
diff --git a/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java b/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
index d5a46de..e26dc7f 100644
--- a/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
+++ b/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
@@ -16,18 +16,19 @@
package com.android.systemui;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Thread that offloads work from the UI thread but that is still perceptible to the user, so the
* priority is the same as the main thread.
*/
-@Singleton
+@SysUISingleton
public class UiOffloadThread {
private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java b/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java
index fe07ab6..123d678 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/ModeSwitchesController.java
@@ -22,8 +22,7 @@
import android.view.Display;
import com.android.internal.annotations.VisibleForTesting;
-
-import javax.inject.Singleton;
+import com.android.systemui.dagger.SysUISingleton;
/**
* A class to control {@link MagnificationModeSwitch}. It should show the button UI with following
@@ -33,7 +32,7 @@
* <li> The magnification scale is changed by a user.</li>
* <ol>
*/
-@Singleton
+@SysUISingleton
public class ModeSwitchesController {
private final DisplayIdIndexSupplier<MagnificationModeSwitch> mSwitchSupplier;
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
index 1752579..e49a5be 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java
@@ -51,18 +51,18 @@
import com.android.internal.util.ScreenshotHelper;
import com.android.systemui.Dependency;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.recents.Recents;
import com.android.systemui.statusbar.phone.StatusBar;
import java.util.Locale;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Class to register system actions with accessibility framework.
*/
-@Singleton
+@SysUISingleton
public class SystemActions extends SystemUI {
private static final String TAG = "SystemActions";
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
index d5f74a8..f601c52 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
@@ -33,11 +33,11 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.CommandQueue;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Class to handle the interaction with
@@ -45,7 +45,7 @@
* {@link AccessibilityManager#setWindowMagnificationConnection(IWindowMagnificationConnection)}
* when {@code IStatusBar#requestWindowMagnificationConnection(boolean)} is called.
*/
-@Singleton
+@SysUISingleton
public class WindowMagnification extends SystemUI implements WindowMagnifierCallback,
CommandQueue.Callbacks {
private static final String TAG = "WindowMagnification";
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
index 8187a223..eeb3b28 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
@@ -33,6 +33,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.Assert;
@@ -44,7 +45,6 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller to keep track of applications that have requested access to given App Ops
@@ -52,7 +52,7 @@
* It can be subscribed to with callbacks. Additionally, it passes on the information to
* NotificationPresenter to be displayed to the user.
*/
-@Singleton
+@SysUISingleton
public class AppOpsControllerImpl implements AppOpsController,
AppOpsManager.OnOpActiveChangedInternalListener,
AppOpsManager.OnOpNotedListener, Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/appops/PermissionFlagsCache.kt b/packages/SystemUI/src/com/android/systemui/appops/PermissionFlagsCache.kt
index 45ed78f..3fd838b 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/PermissionFlagsCache.kt
+++ b/packages/SystemUI/src/com/android/systemui/appops/PermissionFlagsCache.kt
@@ -19,11 +19,11 @@
import android.content.pm.PackageManager
import android.os.UserHandle
import androidx.annotation.WorkerThread
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.util.Assert
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
private data class PermissionFlagKey(
val permission: String,
@@ -37,7 +37,7 @@
* After a specific `{permission, package, uid}` has been requested, updates to it will be tracked,
* and changes to the uid will trigger new requests (in the background).
*/
-@Singleton
+@SysUISingleton
class PermissionFlagsCache @Inject constructor(
private val packageManager: PackageManager,
@Background private val executor: Executor
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
index 2df48fc..4390d51 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleBehaviorController.java
@@ -33,9 +33,10 @@
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
-import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.navigationbar.NavigationModeController;
+import com.android.systemui.shared.system.QuickStepContract;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -45,7 +46,6 @@
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -55,7 +55,7 @@
* Controls when visual handles for Assistant gesture affordance should be shown or hidden using an
* {@link AssistHandleBehavior}.
*/
-@Singleton
+@SysUISingleton
public final class AssistHandleBehaviorController implements AssistHandleCallbacks, Dumpable {
private static final String TAG = "AssistHandleBehavior";
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java
index ccca447..5d8ec4b 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleLikeHomeBehavior.java
@@ -21,6 +21,7 @@
import androidx.annotation.Nullable;
import com.android.systemui.assist.AssistHandleBehaviorController.BehaviorController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -29,7 +30,6 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -37,7 +37,7 @@
* Assistant Handle behavior that makes Assistant handles show/hide when the home handle is
* shown/hidden, respectively.
*/
-@Singleton
+@SysUISingleton
final class AssistHandleLikeHomeBehavior implements BehaviorController {
private final StatusBarStateController.StateListener mStatusBarStateListener =
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleOffBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleOffBehavior.java
index df913f9..86d3254 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleOffBehavior.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleOffBehavior.java
@@ -19,12 +19,12 @@
import android.content.Context;
import com.android.systemui.assist.AssistHandleBehaviorController.BehaviorController;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Assistant handle behavior that hides the Assistant handles. */
-@Singleton
+@SysUISingleton
final class AssistHandleOffBehavior implements BehaviorController {
@Inject
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
index 8e49d58..1b2e4c6 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistHandleReminderExpBehavior.java
@@ -36,6 +36,7 @@
import com.android.systemui.BootCompleteCache;
import com.android.systemui.assist.AssistHandleBehaviorController.BehaviorController;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -54,7 +55,6 @@
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -63,7 +63,7 @@
* shows the handles when on lockscreen, and shows the handles temporarily when changing tasks or
* entering overview.
*/
-@Singleton
+@SysUISingleton
final class AssistHandleReminderExpBehavior implements BehaviorController {
private static final String LEARNING_TIME_ELAPSED_KEY = "reminder_exp_learning_time_elapsed";
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt b/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
index 08edad3..4d0fd43 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistLogger.kt
@@ -28,11 +28,11 @@
import com.android.keyguard.KeyguardUpdateMonitor
import com.android.systemui.assist.AssistantInvocationEvent.Companion.deviceStateFromLegacyDeviceState
import com.android.systemui.assist.AssistantInvocationEvent.Companion.eventFromLegacyInvocationType
+import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject
-import javax.inject.Singleton
/** Class for reporting events related to Assistant sessions. */
-@Singleton
+@SysUISingleton
open class AssistLogger @Inject constructor(
protected val context: Context,
protected val uiEventLogger: UiEventLogger,
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index 6d179f2..e85cafa 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -46,6 +46,7 @@
import com.android.settingslib.applications.InterestingConfigChanges;
import com.android.systemui.R;
import com.android.systemui.assist.ui.DefaultUiController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.model.SysUiState;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.CommandQueue;
@@ -53,14 +54,13 @@
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/**
* Class to manage everything related to assist in SystemUI.
*/
-@Singleton
+@SysUISingleton
public class AssistManager {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistModule.java b/packages/SystemUI/src/com/android/systemui/assist/AssistModule.java
index 0dc06f2..ef43f87 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistModule.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistModule.java
@@ -25,13 +25,13 @@
import androidx.slice.Clock;
import com.android.internal.app.AssistUtils;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.navigationbar.NavigationBarController;
import java.util.EnumMap;
import java.util.Map;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@@ -44,7 +44,7 @@
static final String UPTIME_NAME = "uptime";
@Provides
- @Singleton
+ @SysUISingleton
@Named(ASSIST_HANDLE_THREAD_NAME)
static Handler provideBackgroundHandler() {
final HandlerThread backgroundHandlerThread =
@@ -54,7 +54,7 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static Map<AssistHandleBehavior, AssistHandleBehaviorController.BehaviorController>
provideAssistHandleBehaviorControllerMap(
AssistHandleOffBehavior offBehavior,
@@ -76,13 +76,13 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static AssistUtils provideAssistUtils(Context context) {
return new AssistUtils(context);
}
@Provides
- @Singleton
+ @SysUISingleton
@Named(UPTIME_NAME)
static Clock provideSystemClock() {
return SystemClock::uptimeMillis;
diff --git a/packages/SystemUI/src/com/android/systemui/assist/DeviceConfigHelper.java b/packages/SystemUI/src/com/android/systemui/assist/DeviceConfigHelper.java
index 86b7c74..4d5c44c 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/DeviceConfigHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/DeviceConfigHelper.java
@@ -22,17 +22,18 @@
import androidx.annotation.Nullable;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Wrapper class for retrieving System UI device configuration values.
*
* Can be mocked in tests for ease of testing the effects of particular values.
*/
-@Singleton
+@SysUISingleton
public class DeviceConfigHelper {
@Inject
diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
index 257ad50..50d559b 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java
@@ -30,6 +30,7 @@
import com.android.systemui.BootCompleteCache;
import com.android.systemui.Dependency;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.PackageManagerWrapper;
@@ -42,12 +43,11 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/** Class to monitor and report the state of the phone. */
-@Singleton
+@SysUISingleton
public final class PhoneStateMonitor {
public static final int PHONE_STATE_AOD1 = 1;
diff --git a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
index 722e3124..1d90096 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/ui/DefaultUiController.java
@@ -41,18 +41,18 @@
import com.android.systemui.assist.AssistLogger;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.assist.AssistantSessionEvent;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.navigationbar.NavigationBarController;
import java.util.Locale;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Default UiController implementation. Shows white edge lights along the bottom of the phone,
* expanding from the corners to meet in the center.
*/
-@Singleton
+@SysUISingleton
public class DefaultUiController implements AssistManager.UiController {
private static final String TAG = "DefaultUiController";
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
index 3cd4fca..ea18b11 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java
@@ -49,6 +49,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.SomeArgs;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.doze.DozeReceiver;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
@@ -56,13 +57,12 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Receives messages sent from {@link com.android.server.biometrics.BiometricService} and shows the
* appropriate biometric UI (e.g. BiometricDialogView).
*/
-@Singleton
+@SysUISingleton
public class AuthController extends SystemUI implements CommandQueue.Callbacks,
AuthDialogCallback, DozeReceiver {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
index 10f4385..5c6d16d 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
@@ -34,7 +34,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
import com.android.systemui.bubbles.BubbleController.DismissReason;
-import com.android.systemui.shared.system.SysUiStatsLog;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -52,12 +52,11 @@
import java.util.function.Predicate;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Keeps track of active bubbles.
*/
-@Singleton
+@SysUISingleton
public class BubbleData {
private BubbleLoggerImpl mLogger = new BubbleLoggerImpl();
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt
index db64a13..f129d31 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleDataRepository.kt
@@ -18,25 +18,24 @@
import android.annotation.SuppressLint
import android.annotation.UserIdInt
import android.content.pm.LauncherApps
+import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_CACHED
import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC
import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER
-import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_CACHED
import android.os.UserHandle
import android.util.Log
import com.android.systemui.bubbles.storage.BubbleEntity
import com.android.systemui.bubbles.storage.BubblePersistentRepository
import com.android.systemui.bubbles.storage.BubbleVolatileRepository
+import com.android.systemui.dagger.SysUISingleton
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.launch
import kotlinx.coroutines.yield
-
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
internal class BubbleDataRepository @Inject constructor(
private val volatileRepository: BubbleVolatileRepository,
private val persistentRepository: BubblePersistentRepository,
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/dagger/BubbleModule.java b/packages/SystemUI/src/com/android/systemui/bubbles/dagger/BubbleModule.java
index fcb215c..eecc41c 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/dagger/BubbleModule.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/dagger/BubbleModule.java
@@ -25,6 +25,7 @@
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.bubbles.BubbleData;
import com.android.systemui.bubbles.BubbleDataRepository;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -40,8 +41,6 @@
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.FloatingContentCoordinator;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -51,7 +50,7 @@
/**
*/
- @Singleton
+ @SysUISingleton
@Provides
static BubbleController newBubbleController(
Context context,
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt
index 5b4d8c7..f447965 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubblePersistentRepository.kt
@@ -18,13 +18,13 @@
import android.content.Context
import android.util.AtomicFile
import android.util.Log
+import com.android.systemui.dagger.SysUISingleton
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class BubblePersistentRepository @Inject constructor(
context: Context
) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt
index 894970f..c6d5732 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/storage/BubbleVolatileRepository.kt
@@ -19,8 +19,8 @@
import android.os.UserHandle
import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.bubbles.ShortcutKey
+import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject
-import javax.inject.Singleton
private const val CAPACITY = 16
@@ -28,7 +28,7 @@
* BubbleVolatileRepository holds the most updated snapshot of list of bubbles for in-memory
* manipulation.
*/
-@Singleton
+@SysUISingleton
class BubbleVolatileRepository @Inject constructor(
private val launcherApps: LauncherApps
) {
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
index f35322b..83b6df3 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
@@ -31,6 +31,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
import com.android.systemui.classifier.brightline.FalsingDataProvider;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.dock.DockManager;
@@ -48,14 +49,13 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Simple passthrough implementation of {@link FalsingManager} allowing plugins to swap in.
*
* {@link FalsingManagerImpl} is used when a Plugin is not loaded.
*/
-@Singleton
+@SysUISingleton
public class FalsingManagerProxy implements FalsingManager, Dumpable {
private static final String PROXIMITY_SENSOR_TAG = "FalsingManager";
diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
index 3ca1f59..5b33428 100644
--- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
+++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
@@ -28,6 +28,7 @@
import com.android.internal.colorextraction.types.Tonal;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import java.io.FileDescriptor;
@@ -35,12 +36,11 @@
import java.util.Arrays;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* ColorExtractor aware of wallpaper visibility
*/
-@Singleton
+@SysUISingleton
public class SysuiColorExtractor extends ColorExtractor implements Dumpable,
ConfigurationController.ConfigurationListener {
private static final String TAG = "SysuiColorExtractor";
diff --git a/packages/SystemUI/src/com/android/systemui/controls/CustomIconCache.kt b/packages/SystemUI/src/com/android/systemui/controls/CustomIconCache.kt
index cca0f16..ed60849 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/CustomIconCache.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/CustomIconCache.kt
@@ -19,8 +19,8 @@
import android.content.ComponentName
import android.graphics.drawable.Icon
import androidx.annotation.GuardedBy
+import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Icon cache for custom icons sent with controls.
@@ -28,7 +28,7 @@
* It assumes that only one component can be current at the time, to minimize the number of icons
* stored at a given time.
*/
-@Singleton
+@SysUISingleton
class CustomIconCache @Inject constructor() {
private var currentComponent: ComponentName? = null
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
index aa3e193..658f46e 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
@@ -28,14 +28,14 @@
import android.service.controls.actions.ControlAction
import android.util.Log
import com.android.internal.annotations.VisibleForTesting
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.util.concurrency.DelayableExecutor
import dagger.Lazy
import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
@VisibleForTesting
open class ControlsBindingControllerImpl @Inject constructor(
private val context: Context,
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
index 40c8c6b..495872f 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
@@ -42,6 +42,7 @@
import com.android.systemui.controls.ControlsServiceInfo
import com.android.systemui.controls.management.ControlsListingController
import com.android.systemui.controls.ui.ControlsUiController
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dump.DumpManager
import com.android.systemui.globalactions.GlobalActionsDialog
@@ -52,18 +53,17 @@
import java.util.concurrent.TimeUnit
import java.util.function.Consumer
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class ControlsControllerImpl @Inject constructor (
- private val context: Context,
- @Background private val executor: DelayableExecutor,
- private val uiController: ControlsUiController,
- private val bindingController: ControlsBindingController,
- private val listingController: ControlsListingController,
- private val broadcastDispatcher: BroadcastDispatcher,
- optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>,
- dumpManager: DumpManager
+ private val context: Context,
+ @Background private val executor: DelayableExecutor,
+ private val uiController: ControlsUiController,
+ private val bindingController: ControlsBindingController,
+ private val listingController: ControlsListingController,
+ private val broadcastDispatcher: BroadcastDispatcher,
+ optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>,
+ dumpManager: DumpManager
) : Dumpable, ControlsController {
companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
index 9a5b960..38a82f8 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
@@ -19,10 +19,10 @@
import com.android.systemui.controls.controller.ControlsController
import com.android.systemui.controls.management.ControlsListingController
import com.android.systemui.controls.ui.ControlsUiController
+import com.android.systemui.dagger.SysUISingleton
import dagger.Lazy
import java.util.Optional
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Pseudo-component to inject into classes outside `com.android.systemui.controls`.
@@ -30,7 +30,7 @@
* If `featureEnabled` is false, all the optionals should be empty. The controllers will only be
* instantiated if `featureEnabled` is true.
*/
-@Singleton
+@SysUISingleton
class ControlsComponent @Inject constructor(
@ControlsFeatureEnabled private val featureEnabled: Boolean,
private val lazyControlsController: Lazy<ControlsController>,
diff --git a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsModule.kt b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsModule.kt
index 4760d29..fbdeb30 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsModule.kt
@@ -33,13 +33,13 @@
import com.android.systemui.controls.ui.ControlActionCoordinatorImpl
import com.android.systemui.controls.ui.ControlsUiController
import com.android.systemui.controls.ui.ControlsUiControllerImpl
+import com.android.systemui.dagger.SysUISingleton
import dagger.Binds
import dagger.BindsOptionalOf
import dagger.Module
import dagger.Provides
import dagger.multibindings.ClassKey
import dagger.multibindings.IntoMap
-import javax.inject.Singleton
/**
* Module for injecting classes in `com.android.systemui.controls`-
@@ -55,7 +55,7 @@
companion object {
@JvmStatic
@Provides
- @Singleton
+ @SysUISingleton
@ControlsFeatureEnabled
fun providesControlsFeatureEnabled(pm: PackageManager): Boolean {
return pm.hasSystemFeature(PackageManager.FEATURE_CONTROLS)
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
index 1cd9712..0d4439f 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
@@ -27,11 +27,11 @@
import com.android.settingslib.applications.ServiceListing
import com.android.settingslib.widget.CandidateInfo
import com.android.systemui.controls.ControlsServiceInfo
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import java.util.concurrent.Executor
import java.util.concurrent.atomic.AtomicInteger
import javax.inject.Inject
-import javax.inject.Singleton
private fun createServiceListing(context: Context): ServiceListing {
return ServiceListing.Builder(context).apply {
@@ -52,7 +52,7 @@
* * Has an intent-filter responding to [ControlsProviderService.CONTROLS_ACTION]
* * Has the bind permission `android.permission.BIND_CONTROLS`
*/
-@Singleton
+@SysUISingleton
class ControlsListingControllerImpl @VisibleForTesting constructor(
private val context: Context,
@Background private val backgroundExecutor: Executor,
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
index e15380b..ab82225 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinatorImpl.kt
@@ -16,30 +16,29 @@
package com.android.systemui.controls.ui
+import android.annotation.MainThread
import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
-import android.annotation.MainThread
-import android.os.Vibrator
import android.os.VibrationEffect
+import android.os.Vibrator
import android.service.controls.Control
import android.service.controls.actions.BooleanAction
import android.service.controls.actions.CommandAction
import android.service.controls.actions.FloatAction
import android.util.Log
import android.view.HapticFeedbackConstants
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.globalactions.GlobalActionsComponent
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.concurrency.DelayableExecutor
-
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class ControlActionCoordinatorImpl @Inject constructor(
private val context: Context,
private val bgExecutor: DelayableExecutor,
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
index 5f75c96..3710310 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
@@ -52,6 +52,7 @@
import com.android.systemui.controls.management.ControlsFavoritingActivity
import com.android.systemui.controls.management.ControlsListingController
import com.android.systemui.controls.management.ControlsProviderSelectorActivity
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.globalactions.GlobalActionsPopupMenu
@@ -62,11 +63,10 @@
import java.text.Collator
import java.util.function.Consumer
import javax.inject.Inject
-import javax.inject.Singleton
private data class ControlKey(val componentName: ComponentName, val controlId: String)
-@Singleton
+@SysUISingleton
class ControlsUiControllerImpl @Inject constructor (
val controlsController: Lazy<ControlsController>,
val context: Context,
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java
index f91d795..b41915b 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/ContextComponentResolver.java
@@ -27,12 +27,11 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
/**
* Used during Service and Activity instantiation to make them injectable.
*/
-@Singleton
+@SysUISingleton
public class ContextComponentResolver implements ContextComponentHelper {
private final Map<Class<?>, Provider<Activity>> mActivityCreators;
private final Map<Class<?>, Provider<Service>> mServiceCreators;
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index 21bcfcd..5a77723 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -51,6 +51,7 @@
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.model.SysUiState;
+import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.PluginInitializerImpl;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -62,7 +63,6 @@
import com.android.systemui.shared.system.DevicePolicyManagerWrapper;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.navigationbar.NavigationBarController;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
@@ -79,7 +79,6 @@
import java.util.concurrent.Executor;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Lazy;
import dagger.Module;
@@ -96,8 +95,9 @@
@Module(includes = {NightDisplayListenerModule.class})
public class DependencyProvider {
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
@Named(TIME_TICK_HANDLER_NAME)
public Handler provideTimeTickHandler() {
HandlerThread thread = new HandlerThread("TimeTick");
@@ -124,14 +124,16 @@
return new Handler();
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public DataSaverController provideDataSaverController(NetworkController networkController) {
return networkController.getDataSaverController();
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public DisplayMetrics provideDisplayMetrics(Context context, WindowManager windowManager) {
DisplayMetrics displayMetrics = new DisplayMetrics();
context.getDisplay().getMetrics(displayMetrics);
@@ -139,41 +141,45 @@
}
/** */
- @Singleton
@Provides
+ @SysUISingleton
public INotificationManager provideINotificationManager() {
return INotificationManager.Stub.asInterface(
ServiceManager.getService(Context.NOTIFICATION_SERVICE));
}
/** */
- @Singleton
@Provides
+ @SysUISingleton
public LayoutInflater providerLayoutInflater(Context context) {
return LayoutInflater.from(context);
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public LeakDetector provideLeakDetector() {
return LeakDetector.create();
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public MetricsLogger provideMetricsLogger() {
return new MetricsLogger();
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public PluginManager providePluginManager(Context context) {
return new PluginManagerImpl(context, new PluginInitializerImpl());
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public NavigationBarController provideNavigationBarController(Context context,
WindowManager windowManager,
Lazy<AssistManager> assistManagerLazy,
@@ -220,29 +226,31 @@
configurationController);
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public ConfigurationController provideConfigurationController(Context context) {
return new ConfigurationControllerImpl(context);
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
public AutoHideController provideAutoHideController(Context context,
@Main Handler mainHandler, IWindowManager iWindowManager) {
return new AutoHideController(context, mainHandler, iWindowManager);
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public ActivityManagerWrapper provideActivityManagerWrapper() {
return ActivityManagerWrapper.getInstance();
}
/** Provides and initializes the {#link BroadcastDispatcher} for SystemUI */
- @Singleton
@Provides
+ @SysUISingleton
public BroadcastDispatcher providesBroadcastDispatcher(
Context context,
@Background Looper backgroundLooper,
@@ -256,8 +264,9 @@
return bD;
}
- @Singleton
+ /** */
@Provides
+ @SysUISingleton
public DevicePolicyManagerWrapper provideDevicePolicyManagerWrapper() {
return DevicePolicyManagerWrapper.getInstance();
}
@@ -293,22 +302,22 @@
}
/** */
- @Singleton
@Provides
+ @SysUISingleton
public Choreographer providesChoreographer() {
return Choreographer.getInstance();
}
/** Provides an instance of {@link com.android.internal.logging.UiEventLogger} */
- @Singleton
@Provides
+ @SysUISingleton
static UiEventLogger provideUiEventLogger() {
return new UiEventLoggerImpl();
}
/** */
- @Singleton
@Provides
+ @SysUISingleton
public ModeSwitchesController providesModeSwitchesController(Context context) {
return new ModeSwitchesController(context);
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java b/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java
new file mode 100644
index 0000000..553655b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2020 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.dagger;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.hardware.display.AmbientDisplayConfiguration;
+import android.util.DisplayMetrics;
+import android.view.Choreographer;
+
+import com.android.systemui.Prefs;
+import com.android.systemui.dagger.qualifiers.Main;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Supplies globally scoped instances.
+ *
+ * Providers in this module will be accessible to both WMComponent and SysUIComponent scoped
+ * classes. They are in here because they are either needed globally or are inherently universal
+ * to the application.
+ *
+ * Note that just because a class might be used by both WM and SysUI does not necessarily mean that
+ * it should got into this module. If WM and SysUI might need the class for different purposes
+ * or different semantics, it may make sense to ask them to supply their own. Something like
+ * threading and concurrency provide a good example. Both components need
+ * Threads/Handlers/Executors, but they need separate instances of them in many cases.
+ *
+ * Please use discretion when adding things to the global scope.
+ */
+@Module
+public class GlobalModule {
+ /** */
+ @Provides
+ @Main
+ public SharedPreferences provideSharePreferences(Context context) {
+ return Prefs.get(context);
+ }
+
+ /** */
+ @Provides
+ public AmbientDisplayConfiguration provideAmbientDisplayConfiguration(Context context) {
+ return new AmbientDisplayConfiguration(context);
+ }
+
+ /** */
+ @Provides
+ @Singleton
+ public Choreographer providesChoreographer() {
+ return Choreographer.getInstance();
+ }
+
+ /** */
+ @Provides
+ @Singleton
+ public DisplayMetrics provideDisplayMetrics(Context context) {
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ context.getDisplay().getMetrics(displayMetrics);
+ return displayMetrics;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java
index 9c55095..3d7c8ad4 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java
@@ -18,17 +18,6 @@
import android.content.Context;
-import com.android.systemui.BootCompleteCacheImpl;
-import com.android.systemui.Dependency;
-import com.android.systemui.InitController;
-import com.android.systemui.SystemUIAppComponentFactory;
-import com.android.systemui.dump.DumpManager;
-import com.android.systemui.keyguard.KeyguardSliceProvider;
-import com.android.systemui.onehanded.dagger.OneHandedModule;
-import com.android.systemui.pip.phone.dagger.PipModule;
-import com.android.systemui.statusbar.policy.ConfigurationController;
-import com.android.systemui.util.InjectionInflationController;
-
import javax.inject.Singleton;
import dagger.BindsInstance;
@@ -37,18 +26,9 @@
/**
* Root component for Dagger injection.
*/
-// TODO(b/162923491): Move most of these modules to SysUIComponent.
@Singleton
@Component(modules = {
- DefaultComponentBinder.class,
- DependencyProvider.class,
- DependencyBinder.class,
- OneHandedModule.class,
- PipModule.class,
- SystemServicesModule.class,
- SystemUIBinder.class,
- SystemUIModule.class,
- SystemUIDefaultModule.class,
+ SysUISubcomponentModule.class,
WMModule.class})
public interface GlobalRootComponent {
@@ -72,53 +52,4 @@
* Builder for a SysuiComponent.
*/
SysUIComponent.Builder getSysUIComponent();
-
- /**
- * Provides a BootCompleteCache.
- */
- @Singleton
- BootCompleteCacheImpl provideBootCacheImpl();
-
- /**
- * Creates a ContextComponentHelper.
- */
- @Singleton
- ConfigurationController getConfigurationController();
-
- /**
- * Creates a ContextComponentHelper.
- */
- @Singleton
- ContextComponentHelper getContextComponentHelper();
-
- /**
- * Main dependency providing module.
- */
- @Singleton
- Dependency createDependency();
-
- /** */
- @Singleton
- DumpManager createDumpManager();
-
- /**
- * Creates a InitController.
- */
- @Singleton
- InitController getInitController();
-
- /**
- * ViewInstanceCreator generates all Views that need injection.
- */
- InjectionInflationController.ViewInstanceCreator.Factory createViewInstanceCreatorFactory();
-
- /**
- * Member injection into the supplied argument.
- */
- void inject(SystemUIAppComponentFactory factory);
-
- /**
- * Member injection into the supplied argument.
- */
- void inject(KeyguardSliceProvider keyguardSliceProvider);
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
index 9b527bf..7281faf1 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java
@@ -16,13 +16,33 @@
package com.android.systemui.dagger;
+import com.android.systemui.BootCompleteCacheImpl;
+import com.android.systemui.Dependency;
+import com.android.systemui.InitController;
+import com.android.systemui.SystemUIAppComponentFactory;
+import com.android.systemui.dump.DumpManager;
+import com.android.systemui.keyguard.KeyguardSliceProvider;
+import com.android.systemui.onehanded.dagger.OneHandedModule;
+import com.android.systemui.pip.phone.dagger.PipModule;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.util.InjectionInflationController;
+
import dagger.Subcomponent;
/**
* Dagger Subcomponent for Core SysUI.
*/
@SysUISingleton
-@Subcomponent(modules = {})
+@Subcomponent(modules = {
+ DefaultComponentBinder.class,
+ DependencyProvider.class,
+ DependencyBinder.class,
+ OneHandedModule.class,
+ PipModule.class,
+ SystemServicesModule.class,
+ SystemUIBinder.class,
+ SystemUIModule.class,
+ SystemUIDefaultModule.class})
public interface SysUIComponent {
/**
@@ -32,4 +52,53 @@
interface Builder {
SysUIComponent build();
}
+
+ /**
+ * Provides a BootCompleteCache.
+ */
+ @SysUISingleton
+ BootCompleteCacheImpl provideBootCacheImpl();
+
+ /**
+ * Creates a ContextComponentHelper.
+ */
+ @SysUISingleton
+ ConfigurationController getConfigurationController();
+
+ /**
+ * Creates a ContextComponentHelper.
+ */
+ @SysUISingleton
+ ContextComponentHelper getContextComponentHelper();
+
+ /**
+ * Main dependency providing module.
+ */
+ @SysUISingleton
+ Dependency createDependency();
+
+ /** */
+ @SysUISingleton
+ DumpManager createDumpManager();
+
+ /**
+ * Creates a InitController.
+ */
+ @SysUISingleton
+ InitController getInitController();
+
+ /**
+ * ViewInstanceCreator generates all Views that need injection.
+ */
+ InjectionInflationController.ViewInstanceCreator.Factory createViewInstanceCreatorFactory();
+
+ /**
+ * Member injection into the supplied argument.
+ */
+ void inject(SystemUIAppComponentFactory factory);
+
+ /**
+ * Member injection into the supplied argument.
+ */
+ void inject(KeyguardSliceProvider keyguardSliceProvider);
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUISubcomponentModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUISubcomponentModule.java
new file mode 100644
index 0000000..aacc693
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUISubcomponentModule.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2020 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.dagger;
+
+import dagger.Module;
+
+/**
+ * Dagger module for including the WMComponent.
+ */
+@Module(subcomponents = {SysUIComponent.class})
+public abstract class SysUISubcomponentModule {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
index 4a5d142..7fe9faf 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
@@ -72,8 +72,6 @@
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shared.system.PackageManagerWrapper;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -83,49 +81,49 @@
@Module
public class SystemServicesModule {
@Provides
- @Singleton
+ @SysUISingleton
static AccessibilityManager provideAccessibilityManager(Context context) {
return context.getSystemService(AccessibilityManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static ActivityManager provideActivityManager(Context context) {
return context.getSystemService(ActivityManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static AlarmManager provideAlarmManager(Context context) {
return context.getSystemService(AlarmManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static AudioManager provideAudioManager(Context context) {
return context.getSystemService(AudioManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static ColorDisplayManager provideColorDisplayManager(Context context) {
return context.getSystemService(ColorDisplayManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static ConnectivityManager provideConnectivityManagager(Context context) {
return context.getSystemService(ConnectivityManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static ContentResolver provideContentResolver(Context context) {
return context.getContentResolver();
}
@Provides
- @Singleton
+ @SysUISingleton
static DevicePolicyManager provideDevicePolicyManager(Context context) {
return context.getSystemService(DevicePolicyManager.class);
}
@@ -137,44 +135,44 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static DisplayManager provideDisplayManager(Context context) {
return context.getSystemService(DisplayManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static IActivityManager provideIActivityManager() {
return ActivityManager.getService();
}
- @Singleton
+ @SysUISingleton
@Provides
static IActivityTaskManager provideIActivityTaskManager() {
return ActivityTaskManager.getService();
}
@Provides
- @Singleton
+ @SysUISingleton
static IBatteryStats provideIBatteryStats() {
return IBatteryStats.Stub.asInterface(
ServiceManager.getService(BatteryStats.SERVICE_NAME));
}
@Provides
- @Singleton
+ @SysUISingleton
static IDreamManager provideIDreamManager() {
return IDreamManager.Stub.asInterface(
ServiceManager.checkService(DreamService.DREAM_SERVICE));
}
@Provides
- @Singleton
+ @SysUISingleton
static IPackageManager provideIPackageManager() {
return IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
}
- @Singleton
+ @SysUISingleton
@Provides
static IStatusBarService provideIStatusBarService() {
return IStatusBarService.Stub.asInterface(
@@ -188,32 +186,32 @@
ServiceManager.getService(Context.WALLPAPER_SERVICE));
}
- @Singleton
+ @SysUISingleton
@Provides
static IWindowManager provideIWindowManager() {
return WindowManagerGlobal.getWindowManagerService();
}
- @Singleton
+ @SysUISingleton
@Provides
static KeyguardManager provideKeyguardManager(Context context) {
return context.getSystemService(KeyguardManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static LatencyTracker provideLatencyTracker(Context context) {
return LatencyTracker.getInstance(context);
}
- @Singleton
+ @SysUISingleton
@Provides
static LauncherApps provideLauncherApps(Context context) {
return context.getSystemService(LauncherApps.class);
}
@SuppressLint("MissingPermission")
- @Singleton
+ @SysUISingleton
@Provides
@Nullable
static LocalBluetoothManager provideLocalBluetoothController(Context context,
@@ -232,31 +230,31 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static NetworkScoreManager provideNetworkScoreManager(Context context) {
return context.getSystemService(NetworkScoreManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static NotificationManager provideNotificationManager(Context context) {
return context.getSystemService(NotificationManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static PackageManager providePackageManager(Context context) {
return context.getPackageManager();
}
- @Singleton
+ @SysUISingleton
@Provides
static PackageManagerWrapper providePackageManagerWrapper() {
return PackageManagerWrapper.getInstance();
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
static PowerManager providePowerManager(Context context) {
return context.getSystemService(PowerManager.class);
@@ -269,51 +267,51 @@
}
@Provides
- @Singleton
+ @SysUISingleton
static SensorManager providesSensorManager(Context context) {
return context.getSystemService(SensorManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static SensorPrivacyManager provideSensorPrivacyManager(Context context) {
return context.getSystemService(SensorPrivacyManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static ShortcutManager provideShortcutManager(Context context) {
return context.getSystemService(ShortcutManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
@Nullable
static TelecomManager provideTelecomManager(Context context) {
return context.getSystemService(TelecomManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static TelephonyManager provideTelephonyManager(Context context) {
return context.getSystemService(TelephonyManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static TrustManager provideTrustManager(Context context) {
return context.getSystemService(TrustManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
@Nullable
static Vibrator provideVibrator(Context context) {
return context.getSystemService(Vibrator.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static UserManager provideUserManager(Context context) {
return context.getSystemService(UserManager.class);
}
@@ -324,20 +322,20 @@
}
@Provides
- @Singleton
+ @SysUISingleton
@Nullable
static WifiManager provideWifiManager(Context context) {
return context.getSystemService(WifiManager.class);
}
- @Singleton
+ @SysUISingleton
@Provides
static WindowManager provideWindowManager(Context context) {
return context.getSystemService(WindowManager.class);
}
@Provides
- @Singleton
+ @SysUISingleton
static RoleManager provideRoleManager(Context context) {
return context.getSystemService(RoleManager.class);
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
index b4e6e0e..43d7d7f 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
@@ -65,7 +65,6 @@
import com.android.systemui.wmshell.WindowManagerShellModule;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Binds;
import dagger.Module;
@@ -79,13 +78,10 @@
DividerModule.class,
QSModule.class,
WindowManagerShellModule.class
- },
- subcomponents = {
- SysUIComponent.class
})
public abstract class SystemUIDefaultModule {
- @Singleton
+ @SysUISingleton
@Provides
@Named(LEAK_REPORT_EMAIL_NAME)
@Nullable
@@ -101,7 +97,7 @@
NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
@Provides
- @Singleton
+ @SysUISingleton
static BatteryController provideBatteryController(
Context context,
EnhancedEstimates enhancedEstimates,
@@ -123,7 +119,7 @@
}
@Binds
- @Singleton
+ @SysUISingleton
public abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
@Binds
@@ -136,14 +132,14 @@
@Binds
abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
- @Singleton
+ @SysUISingleton
@Provides
@Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
static boolean provideAllowNotificationLongPress() {
return true;
}
- @Singleton
+ @SysUISingleton
@Provides
static HeadsUpManagerPhone provideHeadsUpManagerPhone(
Context context,
@@ -159,7 +155,7 @@
abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
@Provides
- @Singleton
+ @SysUISingleton
static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
CommandQueue commandQueue) {
return new Recents(context, recentsImplementation, commandQueue);
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index a46e182..abfc2ab 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -52,8 +52,6 @@
import com.android.systemui.util.time.SystemClock;
import com.android.systemui.util.time.SystemClockImpl;
-import javax.inject.Singleton;
-
import dagger.Binds;
import dagger.BindsOptionalOf;
import dagger.Module;
@@ -89,7 +87,7 @@
public abstract ContextComponentHelper bindComponentHelper(
ContextComponentResolver componentHelper);
- @Singleton
+ @SysUISingleton
@Provides
@Nullable
static KeyguardLiftController provideKeyguardLiftController(
@@ -110,7 +108,7 @@
public abstract NotificationRowBinder bindNotificationRowBinder(
NotificationRowBinderImpl notificationRowBinder);
- @Singleton
+ @SysUISingleton
@Provides
static SysUiState provideSysUiState() {
return new SysUiState();
@@ -131,7 +129,7 @@
@BindsOptionalOf
abstract StatusBar optionalStatusBar();
- @Singleton
+ @SysUISingleton
@Binds
abstract SystemClock bindSystemClock(SystemClockImpl systemClock);
}
diff --git a/packages/SystemUI/src/com/android/systemui/demomode/dagger/DemoModeModule.java b/packages/SystemUI/src/com/android/systemui/demomode/dagger/DemoModeModule.java
index 9270b88..de9affb 100644
--- a/packages/SystemUI/src/com/android/systemui/demomode/dagger/DemoModeModule.java
+++ b/packages/SystemUI/src/com/android/systemui/demomode/dagger/DemoModeModule.java
@@ -18,12 +18,11 @@
import android.content.Context;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.settings.GlobalSettings;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -34,7 +33,7 @@
public abstract class DemoModeModule {
/** Provides DemoModeController */
@Provides
- @Singleton
+ @SysUISingleton
static DemoModeController provideDemoModeController(
Context context,
DumpManager dumpManager,
diff --git a/packages/SystemUI/src/com/android/systemui/dock/DockManagerImpl.java b/packages/SystemUI/src/com/android/systemui/dock/DockManagerImpl.java
index efc3905..8f39975 100644
--- a/packages/SystemUI/src/com/android/systemui/dock/DockManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/dock/DockManagerImpl.java
@@ -16,10 +16,11 @@
package com.android.systemui.dock;
-import javax.inject.Inject;
-import javax.inject.Singleton;
+import com.android.systemui.dagger.SysUISingleton;
-@Singleton
+import javax.inject.Inject;
+
+@SysUISingleton
public class DockManagerImpl implements DockManager {
@Inject
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index a311a45..99d2651 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -24,6 +24,7 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import java.io.FileDescriptor;
@@ -32,14 +33,13 @@
import java.lang.annotation.RetentionPolicy;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Logs doze events for debugging and triaging purposes. Logs are dumped in bugreports or on demand:
* adb shell dumpsys activity service com.android.systemui/.SystemUIService \
* dependency DumpController DozeLog,DozeStats
*/
-@Singleton
+@SysUISingleton
public class DozeLog implements Dumpable {
private final DozeLogger mLogger;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 19b0ea1..1a1cc07 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -33,6 +33,9 @@
import javax.inject.Inject;
+import dagger.Reusable;
+
+@Reusable // Don't create multiple DozeServices.
public class DozeService extends DreamService
implements DozeMachine.Service, RequestDoze, PluginListener<DozeServicePlugin> {
private static final String TAG = "DozeService";
@@ -57,7 +60,7 @@
setWindowless(true);
mPluginManager.addPluginListener(this, DozeServicePlugin.class, false /* allowMultiple */);
- DozeComponent dozeComponent = mDozeComponentBuilder.build(this);
+ DozeComponent dozeComponent = mDozeComponentBuilder.build();
mDozeMachine = dozeComponent.getDozeMachine();
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java
index e925927..2472854 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java
@@ -19,7 +19,6 @@
import com.android.systemui.doze.DozeMachine;
import com.android.systemui.doze.DozeService;
-import dagger.BindsInstance;
import dagger.Subcomponent;
/**
@@ -31,7 +30,7 @@
/** Simple Builder for {@link DozeComponent}. */
@Subcomponent.Factory
interface Builder {
- DozeComponent build(@BindsInstance DozeService dozeService);
+ DozeComponent build();
}
/** Supply a {@link DozeMachine}. */
diff --git a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
index bbb7750..bfa4780 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/dump/DumpManager.kt
@@ -18,11 +18,11 @@
import android.util.ArrayMap
import com.android.systemui.Dumpable
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Maintains a registry of things that should be dumped when a bug report is taken
@@ -33,7 +33,7 @@
*
* See [DumpHandler] for more information on how and when this information is dumped.
*/
-@Singleton
+@SysUISingleton
class DumpManager @Inject constructor() {
private val dumpables: MutableMap<String, RegisteredDumpable<Dumpable>> = ArrayMap()
private val buffers: MutableMap<String, RegisteredDumpable<LogBuffer>> = ArrayMap()
diff --git a/packages/SystemUI/src/com/android/systemui/dump/LogBufferEulogizer.kt b/packages/SystemUI/src/com/android/systemui/dump/LogBufferEulogizer.kt
index 603cb67..0eab1af 100644
--- a/packages/SystemUI/src/com/android/systemui/dump/LogBufferEulogizer.kt
+++ b/packages/SystemUI/src/com/android/systemui/dump/LogBufferEulogizer.kt
@@ -18,6 +18,7 @@
import android.content.Context
import android.util.Log
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.util.io.Files
import com.android.systemui.util.time.SystemClock
@@ -33,7 +34,6 @@
import java.util.Locale
import java.util.concurrent.TimeUnit
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Dumps all [LogBuffer]s to a file
@@ -41,7 +41,7 @@
* Intended for emergencies, i.e. we're about to crash. This file can then be read at a later date
* (usually in a bug report).
*/
-@Singleton
+@SysUISingleton
class LogBufferEulogizer(
private val dumpManager: DumpManager,
private val systemClock: SystemClock,
diff --git a/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java b/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
index e888869..0673879 100644
--- a/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
+++ b/packages/SystemUI/src/com/android/systemui/fragments/FragmentService.java
@@ -21,6 +21,7 @@
import android.view.View;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -30,7 +31,6 @@
import java.lang.reflect.Modifier;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Subcomponent;
@@ -38,7 +38,7 @@
* Holds a map of root views to FragmentHostStates and generates them as needed.
* Also dispatches the configuration changes to all current FragmentHostStates.
*/
-@Singleton
+@SysUISingleton
public class FragmentService implements Dumpable {
private static final String TAG = "FragmentService";
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java
index b29c5b0..86c8565 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsComponent.java
@@ -20,6 +20,7 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.statusbar.CommandQueue;
@@ -30,12 +31,11 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
/**
* Manages power menu plugins and communicates power menu actions to the StatusBar.
*/
-@Singleton
+@SysUISingleton
public class GlobalActionsComponent extends SystemUI implements Callbacks, GlobalActionsManager {
private final CommandQueue mCommandQueue;
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/DismissCallbackRegistry.java b/packages/SystemUI/src/com/android/systemui/keyguard/DismissCallbackRegistry.java
index f6f3b99..d1bbc33 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/DismissCallbackRegistry.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/DismissCallbackRegistry.java
@@ -17,18 +17,18 @@
package com.android.systemui.keyguard;
import com.android.internal.policy.IKeyguardDismissCallback;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import java.util.ArrayList;
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Registry holding the current set of {@link IKeyguardDismissCallback}s.
*/
-@Singleton
+@SysUISingleton
public class DismissCallbackRegistry {
private final ArrayList<DismissCallbackWrapper> mDismissCallbacks = new ArrayList<>();
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardLifecyclesDispatcher.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardLifecyclesDispatcher.java
index 4a33590..f527775 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardLifecyclesDispatcher.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardLifecyclesDispatcher.java
@@ -19,13 +19,14 @@
import android.os.Handler;
import android.os.Message;
+import com.android.systemui.dagger.SysUISingleton;
+
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Dispatches the lifecycles keyguard gets from WindowManager on the main thread.
*/
-@Singleton
+@SysUISingleton
public class KeyguardLifecyclesDispatcher {
static final int SCREEN_TURNING_ON = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
index 834bca5..084e84a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
@@ -19,17 +19,17 @@
import android.os.Trace;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Tracks the screen lifecycle.
*/
-@Singleton
+@SysUISingleton
public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> implements Dumpable {
public static final int SCREEN_OFF = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
index d17f2f6..5161deb 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
@@ -20,6 +20,7 @@
import android.os.Trace;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -27,12 +28,11 @@
import java.lang.annotation.RetentionPolicy;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Tracks the wakefulness lifecycle.
*/
-@Singleton
+@SysUISingleton
public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observer> implements
Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index fc789a6..7c5dcd8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -24,20 +24,19 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardViewController;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.keyguard.KeyguardViewMediator;
-import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.navigationbar.NavigationModeController;
+import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.InjectionInflationController;
import java.util.concurrent.Executor;
-import javax.inject.Singleton;
-
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
@@ -51,7 +50,7 @@
* Provides our instance of KeyguardViewMediator which is considered optional.
*/
@Provides
- @Singleton
+ @SysUISingleton
public static KeyguardViewMediator newKeyguardViewMediator(
Context context,
FalsingManager falsingManager,
diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
index 16f76de..6db4086 100644
--- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
+++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
@@ -20,6 +20,7 @@
import android.os.Build;
import android.os.Looper;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.log.LogBuffer;
@@ -27,8 +28,6 @@
import com.android.systemui.log.LogcatEchoTrackerDebug;
import com.android.systemui.log.LogcatEchoTrackerProd;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -39,7 +38,7 @@
public class LogModule {
/** Provides a logging buffer for doze-related logs. */
@Provides
- @Singleton
+ @SysUISingleton
@DozeLog
public static LogBuffer provideDozeLogBuffer(
LogcatEchoTracker bufferFilter,
@@ -51,7 +50,7 @@
/** Provides a logging buffer for all logs related to the data layer of notifications. */
@Provides
- @Singleton
+ @SysUISingleton
@NotificationLog
public static LogBuffer provideNotificationsLogBuffer(
LogcatEchoTracker bufferFilter,
@@ -63,7 +62,7 @@
/** Provides a logging buffer for all logs related to managing notification sections. */
@Provides
- @Singleton
+ @SysUISingleton
@NotificationSectionLog
public static LogBuffer provideNotificationSectionLogBuffer(
LogcatEchoTracker bufferFilter,
@@ -75,7 +74,7 @@
/** Provides a logging buffer for all logs related to the data layer of notifications. */
@Provides
- @Singleton
+ @SysUISingleton
@NotifInteractionLog
public static LogBuffer provideNotifInteractionLogBuffer(
LogcatEchoTracker echoTracker,
@@ -87,7 +86,7 @@
/** Provides a logging buffer for all logs related to Quick Settings. */
@Provides
- @Singleton
+ @SysUISingleton
@QSLog
public static LogBuffer provideQuickSettingsLogBuffer(
LogcatEchoTracker bufferFilter,
@@ -99,7 +98,7 @@
/** Provides a logging buffer for {@link com.android.systemui.broadcast.BroadcastDispatcher} */
@Provides
- @Singleton
+ @SysUISingleton
@BroadcastDispatcherLog
public static LogBuffer provideBroadcastDispatcherLogBuffer(
LogcatEchoTracker bufferFilter,
@@ -111,7 +110,7 @@
/** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
@Provides
- @Singleton
+ @SysUISingleton
public static LogcatEchoTracker provideLogcatEchoTracker(
ContentResolver contentResolver,
@Main Looper looper) {
diff --git a/packages/SystemUI/src/com/android/systemui/media/KeyguardMediaController.kt b/packages/SystemUI/src/com/android/systemui/media/KeyguardMediaController.kt
index f9c6307..094ece2 100644
--- a/packages/SystemUI/src/com/android/systemui/media/KeyguardMediaController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/KeyguardMediaController.kt
@@ -17,6 +17,7 @@
package com.android.systemui.media
import android.view.View
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.StatusBarState
@@ -24,13 +25,12 @@
import com.android.systemui.statusbar.notification.stack.MediaHeaderView
import com.android.systemui.statusbar.phone.KeyguardBypassController
import javax.inject.Inject
-import javax.inject.Singleton
/**
* A class that controls the media notifications on the lock screen, handles its visibility and
* is responsible for the embedding of he media experience.
*/
-@Singleton
+@SysUISingleton
class KeyguardMediaController @Inject constructor(
private val mediaHost: MediaHost,
private val bypassController: KeyguardBypassController,
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
index b13be7b..b2e8cb0 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt
@@ -12,6 +12,7 @@
import android.widget.LinearLayout
import androidx.annotation.VisibleForTesting
import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.plugins.FalsingManager
@@ -25,7 +26,6 @@
import java.util.TreeMap
import javax.inject.Inject
import javax.inject.Provider
-import javax.inject.Singleton
private const val TAG = "MediaCarouselController"
private val settingsIntent = Intent().setAction(ACTION_MEDIA_CONTROLS_SETTINGS)
@@ -34,7 +34,7 @@
* Class that is responsible for keeping the view carousel up to date.
* This also handles changes in state and applies them to the media carousel like the expansion.
*/
-@Singleton
+@SysUISingleton
class MediaCarouselController @Inject constructor(
private val context: Context,
private val mediaControlPanelFactory: Provider<MediaControlPanel>,
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
index e239ba9..686531a 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt
@@ -42,6 +42,7 @@
import com.android.systemui.Dumpable
import com.android.systemui.R
import com.android.systemui.broadcast.BroadcastDispatcher
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
@@ -56,9 +57,6 @@
import java.io.PrintWriter
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
-import kotlin.collections.ArrayList
-import kotlin.collections.LinkedHashMap
// URI fields to try loading album art from
private val ART_URIS = arrayOf(
@@ -91,7 +89,7 @@
/**
* A class that facilitates management and loading of Media Data, ready for binding.
*/
-@Singleton
+@SysUISingleton
class MediaDataManager(
private val context: Context,
@Background private val backgroundExecutor: Executor,
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
index 102a484..2bc908b 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt
@@ -24,9 +24,10 @@
import androidx.annotation.WorkerThread
import com.android.settingslib.media.LocalMediaManager
import com.android.settingslib.media.MediaDevice
+import com.android.systemui.Dumpable
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.Dumpable
import com.android.systemui.dump.DumpManager
import java.io.FileDescriptor
import java.io.PrintWriter
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
index b31390c..5475a00 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt
@@ -27,6 +27,7 @@
import android.view.ViewGroup
import android.view.ViewGroupOverlay
import com.android.systemui.Interpolators
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.NotificationLockscreenUserManager
@@ -37,7 +38,6 @@
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.animation.UniqueObjectHostView
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Similarly to isShown but also excludes views that have 0 alpha
@@ -65,7 +65,7 @@
* This manager is responsible for placement of the unique media view between the different hosts
* and animate the positions of the views to achieve seamless transitions.
*/
-@Singleton
+@SysUISingleton
class MediaHierarchyManager @Inject constructor(
private val context: Context,
private val statusBarStateController: SysuiStatusBarStateController,
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt
index d3954b7..ba7c167 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt
@@ -16,16 +16,16 @@
package com.android.systemui.media
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.util.animation.MeasurementOutput
import javax.inject.Inject
-import javax.inject.Singleton
/**
* A class responsible for managing all media host states of the various host locations and
* coordinating the heights among different players. This class can be used to get the most up to
* date state for any location.
*/
-@Singleton
+@SysUISingleton
class MediaHostStatesManager @Inject constructor() {
private val callbacks: MutableSet<Callback> = mutableSetOf()
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
index c41712c..c00b5e9 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt
@@ -29,20 +29,20 @@
import android.service.media.MediaBrowserService
import android.util.Log
import com.android.systemui.broadcast.BroadcastDispatcher
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.tuner.TunerService
import com.android.systemui.util.Utils
import java.util.concurrent.ConcurrentLinkedQueue
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
private const val TAG = "MediaResumeListener"
private const val MEDIA_PREFERENCES = "media_control_prefs"
private const val MEDIA_PREFERENCE_KEY = "browser_components_"
-@Singleton
+@SysUISingleton
class MediaResumeListener @Inject constructor(
private val context: Context,
private val broadcastDispatcher: BroadcastDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt
index 8662aac..fdbff98 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt
@@ -20,12 +20,12 @@
import android.media.session.PlaybackState
import android.os.SystemProperties
import android.util.Log
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.NotificationMediaManager.isPlayingState
import com.android.systemui.util.concurrency.DelayableExecutor
import java.util.concurrent.TimeUnit
import javax.inject.Inject
-import javax.inject.Singleton
private const val DEBUG = true
private const val TAG = "MediaTimeout"
@@ -35,7 +35,7 @@
/**
* Controller responsible for keeping track of playback states and expiring inactive streams.
*/
-@Singleton
+@SysUISingleton
class MediaTimeoutListener @Inject constructor(
private val mediaControllerFactory: MediaControllerFactory,
@Main private val mainExecutor: DelayableExecutor
diff --git a/packages/SystemUI/src/com/android/systemui/model/SysUiState.java b/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
index ccf58ba..5dce093 100644
--- a/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
+++ b/packages/SystemUI/src/com/android/systemui/model/SysUiState.java
@@ -22,6 +22,7 @@
import android.util.Log;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.QuickStepContract;
import java.io.FileDescriptor;
@@ -29,13 +30,11 @@
import java.util.ArrayList;
import java.util.List;
-import javax.inject.Singleton;
-
/**
* Contains sysUi state flags and notifies registered
* listeners whenever changes happen.
*/
-@Singleton
+@SysUISingleton
public class SysUiState implements Dumpable {
private static final String TAG = SysUiState.class.getSimpleName();
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
index 73cdde8..fd157c6 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
@@ -48,6 +48,7 @@
import com.android.systemui.assist.AssistHandleViewController;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.model.SysUiState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -70,13 +71,12 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/** A controller to handle navigation bars. */
-@Singleton
+@SysUISingleton
public class NavigationBarController implements Callbacks,
ConfigurationController.ConfigurationListener,
NavigationModeController.ModeChangedListener, Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
index 6e301c9..c704d32 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java
@@ -37,6 +37,7 @@
import android.util.Log;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -48,12 +49,11 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller for tracking the current navigation bar mode.
*/
-@Singleton
+@SysUISingleton
public class NavigationModeController implements Dumpable {
private static final String TAG = NavigationModeController.class.getSimpleName();
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java
index ba50db1..7002778 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedGestureHandler.java
@@ -40,18 +40,18 @@
import androidx.annotation.VisibleForTesting;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.wm.shell.common.DisplayChangeController;
import com.android.wm.shell.common.DisplayController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* The class manage swipe up and down gesture for 3-Button mode navigation,
* others(e.g, 2-button, full gesture mode) are handled by Launcher quick steps.
*/
-@Singleton
+@SysUISingleton
public class OneHandedGestureHandler implements OneHandedTransitionCallback,
NavigationModeController.ModeChangedListener,
DisplayChangeController.OnDisplayChangingListener {
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java
index 42524bb..9cb9412 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedManagerImpl.java
@@ -31,6 +31,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.model.SysUiState;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
@@ -42,12 +43,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages and manipulates the one handed states, transitions, and gesture for phones.
*/
-@Singleton
+@SysUISingleton
public class OneHandedManagerImpl implements OneHandedManager, Dumpable {
private static final String TAG = "OneHandedManager";
private static final String ONE_HANDED_MODE_OFFSET_PERCENTAGE =
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedSettingsUtil.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedSettingsUtil.java
index 279bbc8..0598f32 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedSettingsUtil.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedSettingsUtil.java
@@ -22,6 +22,8 @@
import android.net.Uri;
import android.provider.Settings;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -29,6 +31,7 @@
/**
* APIs for querying or updating one handed settings .
*/
+@SysUISingleton
public final class OneHandedSettingsUtil {
private static final String TAG = "OneHandedSettingsUtil";
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTimeoutHandler.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTimeoutHandler.java
index 194b24f..a91b999 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTimeoutHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTimeoutHandler.java
@@ -26,6 +26,7 @@
import androidx.annotation.VisibleForTesting;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -33,12 +34,10 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-import javax.inject.Singleton;
-
/**
* Timeout handler for stop one handed mode operations.
*/
-@Singleton
+@SysUISingleton
public class OneHandedTimeoutHandler implements Dumpable {
private static final String TAG = "OneHandedTimeoutHandler";
private static boolean sIsDragging = false;
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTouchHandler.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTouchHandler.java
index 1446e5a..15fe55f 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTouchHandler.java
@@ -31,19 +31,19 @@
import androidx.annotation.VisibleForTesting;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages all the touch handling for One Handed on the Phone, including user tap outside region
* to exit, reset timer when user is in one-handed mode.
* Refer {@link OneHandedGestureHandler} to see start and stop one handed gesture
*/
-@Singleton
+@SysUISingleton
public class OneHandedTouchHandler implements OneHandedTransitionCallback, Dumpable {
private static final String TAG = "OneHandedTouchHandler";
private final Rect mLastUpdatedBounds = new Rect();
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTutorialHandler.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTutorialHandler.java
index de34b2e..5ffbfab 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTutorialHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedTutorialHandler.java
@@ -35,12 +35,12 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the user tutorial handling for One Handed operations, including animations synchronized
@@ -48,7 +48,7 @@
* Refer {@link OneHandedGestureHandler} and {@link OneHandedTouchHandler} to see start and stop
* one handed gesture
*/
-@Singleton
+@SysUISingleton
public class OneHandedTutorialHandler implements OneHandedTransitionCallback, Dumpable {
private static final String TAG = "OneHandedTutorialHandler";
private static final String ONE_HANDED_MODE_OFFSET_PERCENTAGE =
diff --git a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedUI.java b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedUI.java
index 2767a8d..cebcd4c 100644
--- a/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedUI.java
+++ b/packages/SystemUI/src/com/android/systemui/onehanded/OneHandedUI.java
@@ -40,6 +40,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.statusbar.CommandQueue;
@@ -47,12 +48,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A service that controls UI of the one handed mode function.
*/
-@Singleton
+@SysUISingleton
public class OneHandedUI extends SystemUI implements CommandQueue.Callbacks, Dumpable {
private static final String TAG = "OneHandedUI";
private static final String ONE_HANDED_MODE_GESTURAL_OVERLAY =
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
index df3aead..d6aa61b 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
@@ -39,19 +39,19 @@
import android.view.Gravity;
import android.window.WindowContainerTransaction;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles bounds calculation for PIP on Phone and other form factors, it keeps tracking variant
* state changes originated from Window Manager and is the source of truth for PiP window bounds.
*/
-@Singleton
+@SysUISingleton
public class PipBoundsHandler {
private static final String TAG = PipBoundsHandler.class.getSimpleName();
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipSurfaceTransactionHelper.java b/packages/SystemUI/src/com/android/systemui/pip/PipSurfaceTransactionHelper.java
index 2c7ec48..e88451c 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipSurfaceTransactionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipSurfaceTransactionHelper.java
@@ -23,16 +23,16 @@
import android.graphics.RectF;
import android.view.SurfaceControl;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.wm.shell.R;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Abstracts the common operations on {@link SurfaceControl.Transaction} for PiP transition.
*/
-@Singleton
+@SysUISingleton
public class PipSurfaceTransactionHelper implements ConfigurationController.ConfigurationListener {
private final Context mContext;
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
index 025341c..0e60c83 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java
@@ -56,6 +56,7 @@
import android.window.WindowOrganizer;
import com.android.internal.os.SomeArgs;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.pip.phone.PipUpdateThread;
import com.android.systemui.stackdivider.Divider;
import com.android.wm.shell.R;
@@ -70,7 +71,6 @@
import java.util.function.Consumer;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages PiP tasks such as resize and offset.
@@ -83,7 +83,7 @@
* This class is also responsible for general resize/offset PiP operations within SysUI component,
* see also {@link com.android.systemui.pip.phone.PipMotionHelper}.
*/
-@Singleton
+@SysUISingleton
public class PipTaskOrganizer extends TaskOrganizer implements
DisplayController.OnDisplaysChangedListener {
private static final String TAG = PipTaskOrganizer.class.getSimpleName();
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipUI.java b/packages/SystemUI/src/com/android/systemui/pip/PipUI.java
index 4fb675e..2cd1e20 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipUI.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipUI.java
@@ -25,6 +25,7 @@
import android.os.UserManager;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.recents.IPinnedStackAnimationListener;
import com.android.systemui.statusbar.CommandQueue;
@@ -32,12 +33,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls the picture-in-picture window.
*/
-@Singleton
+@SysUISingleton
public class PipUI extends SystemUI implements CommandQueue.Callbacks {
private final CommandQueue mCommandQueue;
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipUiEventLogger.java b/packages/SystemUI/src/com/android/systemui/pip/PipUiEventLogger.java
index 5e2cd9c..7ce2028 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipUiEventLogger.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipUiEventLogger.java
@@ -20,15 +20,15 @@
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Helper class that ends PiP log to UiEvent, see also go/uievent
*/
-@Singleton
+@SysUISingleton
public class PipUiEventLogger {
private final UiEventLogger mUiEventLogger;
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
index 9dfa864..e2aa09c 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java
@@ -42,6 +42,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.model.SysUiState;
import com.android.systemui.pip.BasePipManager;
import com.android.systemui.pip.PipBoundsHandler;
@@ -64,12 +65,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the picture-in-picture (PIP) UI and states for Phones.
*/
-@Singleton
+@SysUISingleton
public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitionCallback {
private static final String TAG = "PipManager";
diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
index f1c8b0c..74dc003 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
@@ -49,6 +49,7 @@
import com.android.systemui.R;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.pip.BasePipManager;
import com.android.systemui.pip.PipBoundsHandler;
import com.android.systemui.pip.PipSurfaceTransactionHelper;
@@ -63,12 +64,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the picture-in-picture (PIP) UI and states.
*/
-@Singleton
+@SysUISingleton
public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitionCallback {
private static final String TAG = "PipManager";
static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
index 6949531..ad1e21d 100644
--- a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
@@ -17,15 +17,15 @@
import android.util.ArrayMap;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.PluginDependency.DependencyProvider;
import com.android.systemui.shared.plugins.PluginManager;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class PluginDependencyProvider extends DependencyProvider {
private final ArrayMap<Class<?>, Object> mDependencies = new ArrayMap<>();
diff --git a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java
index 7d54c21..90da891 100644
--- a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java
@@ -2,11 +2,11 @@
import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.fuelgauge.EstimateKt;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
-@Singleton
+@SysUISingleton
public class EnhancedEstimatesImpl implements EnhancedEstimates {
@Inject
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index 6abbbbe..a27e9ac 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -59,6 +59,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.util.NotificationChannels;
@@ -70,11 +71,10 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class PowerNotificationWarnings implements PowerUI.WarningsUI {
private static final String TAG = PowerUI.TAG + ".Notification";
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
index 66804be..a888305 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
@@ -46,6 +46,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;
@@ -56,11 +57,10 @@
import java.util.concurrent.Future;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
-@Singleton
+@SysUISingleton
public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
static final String TAG = "PowerUI";
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
index affc5ee..255ba1b 100644
--- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
+++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt
@@ -31,6 +31,7 @@
import com.android.systemui.appops.AppOpItem
import com.android.systemui.appops.AppOpsController
import com.android.systemui.broadcast.BroadcastDispatcher
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
@@ -41,9 +42,8 @@
import java.lang.ref.WeakReference
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class PrivacyItemController @Inject constructor(
private val appOpsController: AppOpsController,
@Main uiExecutor: DelayableExecutor,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
index 3b16a4e..9a63a56 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
@@ -37,6 +37,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
@@ -69,10 +70,9 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
/** Platform implementation of the quick settings tile host **/
-@Singleton
+@SysUISingleton
public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, Dumpable {
private static final String TAG = "QSTileHost";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
index 69a6fe1..8e33496 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
@@ -20,6 +20,7 @@
import android.view.ContextThemeWrapper;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.qs.QSFactory;
import com.android.systemui.plugins.qs.QSIconView;
import com.android.systemui.plugins.qs.QSTile;
@@ -49,11 +50,10 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
import dagger.Lazy;
-@Singleton
+@SysUISingleton
public class QSFactoryImpl implements QSFactory {
private static final String TAG = "QSFactory";
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java
index f89185e..0347867 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java
@@ -35,6 +35,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.stackdivider.Divider;
@@ -43,14 +44,13 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/**
* An implementation of the Recents interface which proxies to the OverviewProxyService.
*/
-@Singleton
+@SysUISingleton
public class OverviewProxyRecentsImpl implements RecentsImplementation {
private final static String TAG = "OverviewProxyRecentsImpl";
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
index d222489..e931a6b 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
@@ -68,6 +68,7 @@
import com.android.internal.util.ScreenshotHelper;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationBar;
import com.android.systemui.navigationbar.NavigationBarController;
@@ -99,14 +100,13 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/**
* Class to send information from overview to launcher with a binder.
*/
-@Singleton
+@SysUISingleton
public class OverviewProxyService extends CurrentUserTracker implements
CallbackController<OverviewProxyListener>, NavigationModeController.ModeChangedListener,
Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
index 4da2bb6..10a44dd 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java
@@ -30,17 +30,17 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.policy.CallbackController;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Helper class to initiate a screen recording
*/
-@Singleton
+@SysUISingleton
public class RecordingController
implements CallbackController<RecordingController.RecordingStateChangeCallback> {
private static final String TAG = "RecordingController";
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 6747281..e24fbc6 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -81,6 +81,7 @@
import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shared.system.QuickStepContract;
@@ -89,12 +90,11 @@
import java.util.function.Consumer;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Class for handling device screen shots
*/
-@Singleton
+@SysUISingleton
public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInsetsListener {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
index 633cdd6..468602a 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java
@@ -31,6 +31,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.SystemUIFactory;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import java.util.Collections;
@@ -40,12 +41,11 @@
import java.util.concurrent.TimeoutException;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Collects the static functions for retrieving and acting on smart actions.
*/
-@Singleton
+@SysUISingleton
public class ScreenshotSmartActions {
private static final String TAG = "ScreenshotSmartActions";
diff --git a/packages/SystemUI/src/com/android/systemui/settings/dagger/SettingsModule.java b/packages/SystemUI/src/com/android/systemui/settings/dagger/SettingsModule.java
index eb5bd5c..b1ed772 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/dagger/SettingsModule.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/dagger/SettingsModule.java
@@ -19,11 +19,10 @@
import android.content.Context;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.settings.CurrentUserContentResolverProvider;
import com.android.systemui.settings.CurrentUserContextTracker;
-import javax.inject.Singleton;
-
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
@@ -37,7 +36,7 @@
/**
* Provides and initializes a CurrentUserContextTracker
*/
- @Singleton
+ @SysUISingleton
@Provides
static CurrentUserContextTracker provideCurrentUserContextTracker(
Context context,
@@ -49,7 +48,7 @@
}
@Binds
- @Singleton
+ @SysUISingleton
abstract CurrentUserContentResolverProvider bindCurrentUserContentResolverTracker(
CurrentUserContextTracker tracker);
}
diff --git a/packages/SystemUI/src/com/android/systemui/shortcut/ShortcutKeyDispatcher.java b/packages/SystemUI/src/com/android/systemui/shortcut/ShortcutKeyDispatcher.java
index f7f1223..ee3303b 100644
--- a/packages/SystemUI/src/com/android/systemui/shortcut/ShortcutKeyDispatcher.java
+++ b/packages/SystemUI/src/com/android/systemui/shortcut/ShortcutKeyDispatcher.java
@@ -28,17 +28,17 @@
import com.android.internal.policy.DividerSnapAlgorithm;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.recents.Recents;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.stackdivider.DividerView;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Dispatches shortcut to System UI components
*/
-@Singleton
+@SysUISingleton
public class ShortcutKeyDispatcher extends SystemUI
implements ShortcutKeyServiceProxy.Callbacks {
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
index d40b666..e9c880e 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java
@@ -23,6 +23,7 @@
import android.window.WindowContainerToken;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.TaskStackChangeListener;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -31,12 +32,10 @@
import java.io.PrintWriter;
import java.util.function.Consumer;
-import javax.inject.Singleton;
-
/**
* Controls the docked stack divider.
*/
-@Singleton
+@SysUISingleton
public class Divider extends SystemUI {
private final KeyguardStateController mKeyguardStateController;
private final DividerController mDividerController;
diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java
index db0aef8..9c21397 100644
--- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java
+++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerModule.java
@@ -19,6 +19,7 @@
import android.content.Context;
import android.os.Handler;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.wm.shell.common.DisplayController;
@@ -26,8 +27,6 @@
import com.android.wm.shell.common.SystemWindows;
import com.android.wm.shell.common.TransactionPool;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -36,7 +35,7 @@
*/
@Module
public class DividerModule {
- @Singleton
+ @SysUISingleton
@Provides
static Divider provideDivider(Context context, DisplayController displayController,
SystemWindows systemWindows, DisplayImeController imeController, @Main Handler handler,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
index c70d3847..f758db8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BlurUtils.kt
@@ -26,14 +26,14 @@
import com.android.internal.util.IndentingPrintWriter
import com.android.systemui.Dumpable
import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
open class BlurUtils @Inject constructor(
@Main private val resources: Resources,
dumpManager: DumpManager
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
index 6839921..3811ca9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/FeatureFlags.java
@@ -20,13 +20,13 @@
import android.provider.DeviceConfig;
import android.util.ArrayMap;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import java.util.Map;
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Class to manage simple DeviceConfig-based feature flags.
@@ -43,7 +43,7 @@
* $ adb shell am restart com.android.systemui
* }
*/
-@Singleton
+@SysUISingleton
public class FeatureFlags {
private final Map<String, Boolean> mCachedDeviceConfigFlags = new ArrayMap<>();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 7e1dc66..a59ff38 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -55,6 +55,7 @@
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
@@ -71,12 +72,11 @@
import java.util.IllegalFormatConversionException;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls the indications and error messages shown on the Keyguard
*/
-@Singleton
+@SysUISingleton
public class KeyguardIndicationController implements StateListener,
KeyguardStateController.Callback {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
index 326757e..750272d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
@@ -28,17 +28,16 @@
import android.util.Log
import android.util.MathUtils
import com.android.internal.graphics.ColorUtils
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.MediaNotificationProcessor
-
import javax.inject.Inject
-import javax.inject.Singleton
private const val TAG = "MediaArtworkProcessor"
private const val COLOR_ALPHA = (255 * 0.7f).toInt()
private const val BLUR_RADIUS = 25f
private const val DOWNSAMPLE = 6
-@Singleton
+@SysUISingleton
class MediaArtworkProcessor @Inject constructor() {
private val mTmpSize = Point()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationClickNotifier.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationClickNotifier.kt
index 8248fc9..abf81c5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationClickNotifier.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationClickNotifier.kt
@@ -4,11 +4,11 @@
import android.os.RemoteException
import com.android.internal.statusbar.IStatusBarService
import com.android.internal.statusbar.NotificationVisibility
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.util.Assert
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Class to shim calls to IStatusBarManager#onNotificationClick/#onNotificationActionClick that
@@ -18,7 +18,7 @@
* NOTE: this class eats exceptions from system server, as no current client of these APIs cares
* about errors
*/
-@Singleton
+@SysUISingleton
public class NotificationClickNotifier @Inject constructor(
val barService: IStatusBarService,
@Main val mainExecutor: Executor
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInteractionTracker.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInteractionTracker.kt
index 9dbec10..2ca1beb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInteractionTracker.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationInteractionTracker.kt
@@ -1,16 +1,16 @@
package com.android.systemui.statusbar
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.NotificationEntryManager
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Class to track user interaction with notifications. It's a glorified map of key : bool that can
* merge multiple "user interacted with notification" signals into a single place.
*/
-@Singleton
+@SysUISingleton
class NotificationInteractionTracker @Inject constructor(
private val clicker: NotificationClickNotifier,
private val entryManager: NotificationEntryManager
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 03424c4..8d82270 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -48,6 +48,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
@@ -65,13 +66,12 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles keeping track of the current user, profiles, and various things related to hiding
* contents, redacting notifications, and the lockscreen.
*/
-@Singleton
+@SysUISingleton
public class NotificationLockscreenUserManagerImpl implements
Dumpable, NotificationLockscreenUserManager, StateListener {
private static final String TAG = "LockscreenUserManager";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index cdf1f10..c1196d6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -32,6 +32,7 @@
import com.android.internal.util.IndentingPrintWriter
import com.android.systemui.Dumpable
import com.android.systemui.Interpolators
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator
@@ -44,14 +45,13 @@
import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
-import javax.inject.Singleton
import kotlin.math.max
import kotlin.math.sign
/**
* Controller responsible for statusbar window blur.
*/
-@Singleton
+@SysUISingleton
class NotificationShadeDepthController @Inject constructor(
private val statusBarStateController: StatusBarStateController,
private val blurUtils: BlurUtils,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
index ff13c4e..ba54d1b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
@@ -30,6 +30,7 @@
import com.android.systemui.Gefingerpoken
import com.android.systemui.Interpolators
import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator
@@ -41,13 +42,12 @@
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.phone.ShadeController
import javax.inject.Inject
-import javax.inject.Singleton
import kotlin.math.max
/**
* A utility class to enable the downward swipe on when pulsing.
*/
-@Singleton
+@SysUISingleton
class PulseExpansionHandler @Inject
constructor(
context: Context,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
index f93078f..e035267 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarStateControllerImpl.java
@@ -30,6 +30,7 @@
import com.android.systemui.DejankUtils;
import com.android.systemui.Dumpable;
import com.android.systemui.Interpolators;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.policy.CallbackController;
@@ -40,12 +41,11 @@
import java.util.Comparator;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Tracks and reports on {@link StatusBarState}.
*/
-@Singleton
+@SysUISingleton
public class StatusBarStateControllerImpl implements SysuiStatusBarStateController,
CallbackController<StateListener>, Dumpable {
private static final String TAG = "SbStateController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
index 27e4ade..1ec043c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
@@ -21,6 +21,7 @@
import android.view.ViewGroup;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent;
import com.android.systemui.statusbar.phone.LockIcon;
import com.android.systemui.statusbar.phone.LockscreenLockIconController;
@@ -30,13 +31,12 @@
import com.android.systemui.util.InjectionInflationController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Creates a single instance of super_status_bar and super_notification_shade that can be shared
* across various system ui objects.
*/
-@Singleton
+@SysUISingleton
public class SuperStatusBarViewFactory {
private final Context mContext;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
index 442416f..ea90bdd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
@@ -26,12 +26,13 @@
import android.os.Vibrator;
import android.provider.Settings;
+import com.android.systemui.dagger.SysUISingleton;
+
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class VibratorHelper {
private final Vibrator mVibrator;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
index 991b79a..5b073ce 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java
@@ -22,6 +22,7 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.media.MediaDataManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -51,8 +52,6 @@
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.concurrency.DelayableExecutor;
-import javax.inject.Singleton;
-
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
@@ -65,7 +64,7 @@
@Module
public interface StatusBarDependenciesModule {
/** */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationRemoteInputManager provideNotificationRemoteInputManager(
Context context,
@@ -92,7 +91,7 @@
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationMediaManager provideNotificationMediaManager(
Context context,
@@ -117,7 +116,7 @@
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationListener provideNotificationListener(
Context context,
@@ -128,7 +127,7 @@
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
static SmartReplyController provideSmartReplyController(
NotificationEntryManager entryManager,
@@ -138,7 +137,7 @@
}
/** */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationViewHierarchyManager provideNotificationViewHierarchyManager(
Context context,
@@ -176,7 +175,7 @@
* Provides our instance of CommandQueue which is considered optional.
*/
@Provides
- @Singleton
+ @SysUISingleton
static CommandQueue provideCommandQueue(Context context, ProtoTracer protoTracer) {
return new CommandQueue(context, protoTracer);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/AssistantFeedbackController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/AssistantFeedbackController.java
index b813b62..87a3f07 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/AssistantFeedbackController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/AssistantFeedbackController.java
@@ -30,10 +30,10 @@
import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Determines whether to show any indicators or controls related to notification assistant.
@@ -41,7 +41,7 @@
* Flags protect any changes from being shown. Notifications that are adjusted by the assistant
* should show an indicator.
*/
-@Singleton
+@SysUISingleton
public class AssistantFeedbackController extends ContentObserver {
private final Uri FEEDBACK_URI
= Settings.Global.getUriFor(Settings.Global.NOTIFICATION_FEEDBACK_ENABLED);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
index 1972b86..c68625c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ConversationNotifications.kt
@@ -24,6 +24,7 @@
import android.service.notification.NotificationListenerService.RankingMap
import com.android.internal.statusbar.NotificationVisibility
import com.android.internal.widget.ConversationLayout
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
@@ -32,7 +33,6 @@
import com.android.systemui.statusbar.phone.NotificationGroupManager
import java.util.concurrent.ConcurrentHashMap
import javax.inject.Inject
-import javax.inject.Singleton
/** Populates additional information in conversation notifications */
class ConversationNotificationProcessor @Inject constructor(
@@ -61,7 +61,7 @@
* Tracks state related to conversation notifications, and updates the UI of existing notifications
* when necessary.
*/
-@Singleton
+@SysUISingleton
class ConversationNotificationManager @Inject constructor(
private val notificationEntryManager: NotificationEntryManager,
private val notificationGroupManager: NotificationGroupManager,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java
index 2ab329e..19637bb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/DynamicPrivacyController.java
@@ -18,6 +18,7 @@
import android.util.ArraySet;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.StatusBarState;
@@ -25,12 +26,11 @@
import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A controller which dynamically controls the visibility of Notification content
*/
-@Singleton
+@SysUISingleton
public class DynamicPrivacyController implements KeyguardStateController.Callback {
private final KeyguardStateController mKeyguardStateController;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt
index dfc2fc1..314051c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt
@@ -19,9 +19,9 @@
import android.content.Context
import android.provider.DeviceConfig
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NOTIFICATIONS_ALLOW_FGS_DISMISSAL
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.util.DeviceConfigProxy
import javax.inject.Inject
-import javax.inject.Singleton
private var sIsEnabled: Boolean? = null
@@ -29,7 +29,7 @@
* Feature controller for NOTIFICATIONS_ALLOW_FGS_DISMISSAL config.
*/
// TODO: this is really boilerplatey, make a base class that just wraps the device config
-@Singleton
+@SysUISingleton
class ForegroundServiceDismissalFeatureController @Inject constructor(
val proxy: DeviceConfigProxy,
val context: Context
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
index 312b2c5..ea614fb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/InstantAppNotifier.java
@@ -53,6 +53,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.statusbar.CommandQueue;
@@ -63,12 +64,11 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** The class to show notification(s) of instant apps. This may show multiple notifications on
* splitted screen.
*/
-@Singleton
+@SysUISingleton
public class InstantAppNotifier extends SystemUI
implements CommandQueue.Callbacks, KeyguardStateController.Callback {
private static final String TAG = "InstantAppNotifier";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
index 6335a09..590ccf83 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationFilter.java
@@ -29,6 +29,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dependency;
import com.android.systemui.ForegroundServiceController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.media.MediaFeatureFlag;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -37,13 +38,12 @@
import com.android.systemui.statusbar.phone.ShadeController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Component which manages the various reasons a notification might be filtered out.*/
// TODO: delete NotificationFilter.java after migrating to new NotifPipeline b/145659174.
// Notification filtering is taken care of across the different Coordinators (mostly
// KeyguardCoordinator.java)
-@Singleton
+@SysUISingleton
public class NotificationFilter {
private final NotificationGroupManager mGroupManager = Dependency.get(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
index 0469176..54e5453 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
@@ -19,6 +19,7 @@
import android.animation.ObjectAnimator
import android.util.FloatProperty
import com.android.systemui.Interpolators
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.notification.collection.NotificationEntry
@@ -30,12 +31,10 @@
import com.android.systemui.statusbar.phone.PanelExpansionListener
import com.android.systemui.statusbar.policy.HeadsUpManager
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener
-
import javax.inject.Inject
-import javax.inject.Singleton
import kotlin.math.min
-@Singleton
+@SysUISingleton
class NotificationWakeUpCoordinator @Inject constructor(
private val mHeadsUpManager: HeadsUpManager,
private val statusBarStateController: StatusBarStateController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
index 285cf7a..90492b5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
@@ -59,6 +59,7 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.dump.LogBufferEulogizer;
import com.android.systemui.statusbar.FeatureFlags;
@@ -98,7 +99,6 @@
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Keeps a record of all of the "active" notifications, i.e. the notifications that are currently
@@ -123,7 +123,7 @@
* events occur.
*/
@MainThread
-@Singleton
+@SysUISingleton
public class NotifCollection implements Dumpable {
private final IStatusBarService mStatusBarService;
private final SystemClock mClock;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
index aaf5c4d..8562a2e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.collection;
import com.android.internal.statusbar.IStatusBarService;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.InflationException;
import com.android.systemui.statusbar.notification.collection.inflation.NotifInflater;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
@@ -24,14 +25,13 @@
import com.android.systemui.statusbar.notification.row.NotificationContentInflater;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles notification inflating, rebinding, and inflation aborting.
*
* Currently a wrapper for NotificationRowBinderImpl.
*/
-@Singleton
+@SysUISingleton
public class NotifInflaterImpl implements NotifInflater {
private final IStatusBarService mStatusBarService;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
index 17899e9..7d26917 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.collection;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeSortListener;
@@ -33,7 +34,6 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* The system that constructs the "shade list", the filtered, grouped, and sorted list of
@@ -68,7 +68,7 @@
* 9. OnBeforeRenderListListeners are fired ({@link #addOnBeforeRenderListListener})
* 9. The list is handed off to the view layer to be rendered
*/
-@Singleton
+@SysUISingleton
public class NotifPipeline implements CommonNotifCollection {
private final NotifCollection mNotifCollection;
private final ShadeListBuilder mShadeListBuilder;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
index d45f89c..c3ed5b9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
@@ -35,6 +35,7 @@
import androidx.annotation.NonNull;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.NotificationInteractionTracker;
import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeFinalizeFilterListener;
@@ -63,7 +64,6 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* The second half of {@link NotifPipeline}. Sits downstream of the NotifCollection and transforms
@@ -71,7 +71,7 @@
* notifications that are currently present in the notification shade.
*/
@MainThread
-@Singleton
+@SysUISingleton
public class ShadeListBuilder implements Dumpable {
private final SystemClock mSystemClock;
private final ShadeListBuilderLogger mLogger;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/TargetSdkResolver.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/TargetSdkResolver.kt
index a0f9dc9..5dc0dcc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/TargetSdkResolver.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/TargetSdkResolver.kt
@@ -20,13 +20,13 @@
import android.content.pm.PackageManager
import android.service.notification.StatusBarNotification
import android.util.Log
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener
import com.android.systemui.statusbar.phone.StatusBar
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class TargetSdkResolver @Inject constructor(
private val context: Context
) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/AppOpsCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/AppOpsCoordinator.java
index 2f12088..0b9bded 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/AppOpsCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/AppOpsCoordinator.java
@@ -19,28 +19,24 @@
import static android.app.NotificationManager.IMPORTANCE_MIN;
import android.app.Notification;
-import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
-import android.util.ArraySet;
import com.android.systemui.ForegroundServiceController;
import com.android.systemui.appops.AppOpsController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSection;
-import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
-import com.android.systemui.util.Assert;
import com.android.systemui.util.concurrency.DelayableExecutor;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles ForegroundService and AppOp interactions with notifications.
@@ -55,7 +51,7 @@
* frameworks/base/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener
* frameworks/base/packages/SystemUI/src/com/android/systemui/ForegroundServiceLifetimeExtender
*/
-@Singleton
+@SysUISingleton
public class AppOpsCoordinator implements Coordinator {
private static final String TAG = "AppOpsCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java
index 08462c1..4ddc1dc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.NotifCollection;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -28,7 +29,6 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Coordinates hiding, intercepting (the dismissal), and deletion of bubbled notifications.
@@ -50,7 +50,7 @@
* respond to app-cancellations (ie: remove the bubble if the app cancels the notification).
*
*/
-@Singleton
+@SysUISingleton
public class BubbleCoordinator implements Coordinator {
private static final String TAG = "BubbleCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
index 1a9de88..c8e859f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/ConversationCoordinator.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.collection.NotifPipeline
import com.android.systemui.statusbar.notification.collection.NotificationEntry
@@ -24,14 +25,13 @@
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_NON_PERSON
import javax.inject.Inject
-import javax.inject.Singleton
/**
* A Conversation/People Coordinator that:
* - Elevates important conversation notifications
* - Puts conversations into its own people section. @see [NotifCoordinators] for section ordering.
*/
-@Singleton
+@SysUISingleton
class ConversationCoordinator @Inject constructor(
private val peopleNotificationIdentifier: PeopleNotificationIdentifier
) : Coordinator {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java
index 625d1b9..47928b4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/DeviceProvisionedCoordinator.java
@@ -23,20 +23,20 @@
import android.os.RemoteException;
import android.service.notification.StatusBarNotification;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Filters out most notifications when the device is unprovisioned.
* Special notifications with extra permissions and tags won't be filtered out even when the
* device is unprovisioned.
*/
-@Singleton
+@SysUISingleton
public class DeviceProvisionedCoordinator implements Coordinator {
private static final String TAG = "DeviceProvisionedCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.java
index 72597af..6e6ceca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.java
@@ -21,6 +21,7 @@
import android.annotation.Nullable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -37,7 +38,6 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Coordinates heads up notification (HUN) interactions with the notification pipeline based on
@@ -53,7 +53,7 @@
*
* Note: The inflation callback in {@link PreparationCoordinator} handles showing HUNs.
*/
-@Singleton
+@SysUISingleton
public class HeadsUpCoordinator implements Coordinator {
private static final String TAG = "HeadsUpCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java
index 95ba759..318cdb1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/KeyguardCoordinator.java
@@ -34,6 +34,7 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.notification.NotificationUtils;
@@ -46,12 +47,11 @@
import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Filters low priority and privacy-sensitive notifications from the lockscreen.
*/
-@Singleton
+@SysUISingleton
public class KeyguardCoordinator implements Coordinator {
private static final String TAG = "KeyguardCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
index a09c650..f2444d5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -31,13 +32,12 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles the attachment of {@link Coordinator}s to the {@link NotifPipeline} so that the
* Coordinators can register their respective callbacks.
*/
-@Singleton
+@SysUISingleton
public class NotifCoordinators implements Dumpable {
private static final String TAG = "NotifCoordinators";
private final List<Coordinator> mCoordinators = new ArrayList<>();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
index 3e11067..31826c7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
@@ -28,6 +28,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.IStatusBarService;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -48,7 +49,6 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Kicks off core notification inflation and view rebinding when a notification is added or updated.
@@ -57,7 +57,7 @@
* If a notification was uninflated, this coordinator will filter the notification out from the
* {@link ShadeListBuilder} until it is inflated.
*/
-@Singleton
+@SysUISingleton
public class PreparationCoordinator implements Coordinator {
private static final String TAG = "PreparationCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
index 0d2f9da..a32b163 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/RankingCoordinator.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.collection.coordinator;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotifPipeline;
@@ -25,7 +26,6 @@
import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Filters out NotificationEntries based on its Ranking and dozing state.
@@ -34,7 +34,7 @@
* - whether the notification's app is suspended or hiding its notifications
* - whether DND settings are hiding notifications from ambient display or the notification list
*/
-@Singleton
+@SysUISingleton
public class RankingCoordinator implements Coordinator {
private static final String TAG = "RankingNotificationCoordinator";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/LowPriorityInflationHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/LowPriorityInflationHelper.java
index 73c0fdc..6089aa2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/LowPriorityInflationHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/LowPriorityInflationHelper.java
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.notification.collection.inflation;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -25,13 +26,12 @@
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Helper class that provide methods to help check when we need to inflate a low priority version
* ot notification content.
*/
-@Singleton
+@SysUISingleton
public class LowPriorityInflationHelper {
private final FeatureFlags mFeatureFlags;
private final NotificationGroupManager mGroupManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
index f90ec0b..7c061aa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
@@ -24,6 +24,7 @@
import android.view.ViewGroup;
import com.android.internal.util.NotificationMessagingUtil;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -44,10 +45,9 @@
import javax.inject.Inject;
import javax.inject.Provider;
-import javax.inject.Singleton;
/** Handles inflating and updating views for notifications. */
-@Singleton
+@SysUISingleton
public class NotificationRowBinderImpl implements NotificationRowBinder {
private static final String TAG = "NotificationViewManager";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
index 1c02c62..db49e44 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/init/NotifPipelineInitializer.java
@@ -19,6 +19,7 @@
import android.util.Log;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.NotificationListener;
@@ -36,12 +37,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Initialization code for the new notification pipeline.
*/
-@Singleton
+@SysUISingleton
public class NotifPipelineInitializer implements Dumpable {
private final NotifPipeline mPipelineWrapper;
private final GroupCoalescer mGroupCoalescer;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
index 1c076c4..8b803b5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/provider/HighPriorityProvider.java
@@ -19,6 +19,7 @@
import android.app.Notification;
import android.app.NotificationManager;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.GroupEntry;
import com.android.systemui.statusbar.notification.collection.ListEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -28,7 +29,6 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Determines whether a notification is considered 'high priority'.
@@ -36,7 +36,7 @@
* Notifications that are high priority are visible on the lock screen/status bar and in the top
* section in the shade.
*/
-@Singleton
+@SysUISingleton
public class HighPriorityProvider {
private final PeopleNotificationIdentifier mPeopleNotificationIdentifier;
private final NotificationGroupManager mGroupManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
index 00fd09d..79bc3d7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/render/NotifViewBarn.kt
@@ -17,16 +17,16 @@
package com.android.systemui.statusbar.notification.collection.render
import android.view.textclassifier.Log
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.collection.ListEntry
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController
import javax.inject.Inject
-import javax.inject.Singleton
/**
* The ViewBarn is just a map from [ListEntry] to an instance of an
* [ExpandableNotificationRowController].
*/
-@Singleton
+@SysUISingleton
class NotifViewBarn @Inject constructor() {
private val rowMap = mutableMapOf<String, ExpandableNotificationRowController>()
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 046dc3c8..0573156 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
@@ -28,6 +28,7 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.R;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground;
@@ -71,7 +72,6 @@
import java.util.concurrent.Executor;
import javax.inject.Provider;
-import javax.inject.Singleton;
import dagger.Binds;
import dagger.Lazy;
@@ -84,7 +84,7 @@
@Module
public interface NotificationsModule {
/** Provides an instance of {@link NotificationEntryManager} */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationEntryManager provideNotificationEntryManager(
NotificationEntryManagerLogger logger,
@@ -111,7 +111,7 @@
}
/** Provides an instance of {@link NotificationGutsManager} */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationGutsManager provideNotificationGutsManager(
Context context,
@@ -150,7 +150,7 @@
}
/** Provides an instance of {@link VisualStabilityManager} */
- @Singleton
+ @SysUISingleton
@Provides
static VisualStabilityManager provideVisualStabilityManager(
NotificationEntryManager notificationEntryManager, Handler handler) {
@@ -158,7 +158,7 @@
}
/** Provides an instance of {@link NotificationLogger} */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationLogger provideNotificationLogger(
NotificationListener notificationListener,
@@ -177,14 +177,14 @@
}
/** Provides an instance of {@link NotificationPanelLogger} */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationPanelLogger provideNotificationPanelLogger() {
return new NotificationPanelLoggerImpl();
}
/** Provides an instance of {@link NotificationBlockingHelperManager} */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationBlockingHelperManager provideNotificationBlockingHelperManager(
Context context,
@@ -196,7 +196,7 @@
}
/** Initializes the notification data pipeline (can be disabled via config). */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationsController provideNotificationsController(
Context context,
@@ -213,7 +213,7 @@
* Provide the active notification collection managing the notifications to render.
*/
@Provides
- @Singleton
+ @SysUISingleton
static CommonNotifCollection provideCommonNotifCollection(
FeatureFlags featureFlags,
Lazy<NotifPipeline> pipeline,
@@ -226,7 +226,7 @@
* from the notification shade or it gets auto-cancelled by click.
*/
@Provides
- @Singleton
+ @SysUISingleton
static OnDismissCallback provideOnDismissCallback(
FeatureFlags featureFlags,
HeadsUpManager headsUpManager,
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 6e4fcd5..6460892 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
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.notification.init
import android.service.notification.StatusBarNotification
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption
import com.android.systemui.statusbar.FeatureFlags
import com.android.systemui.statusbar.NotificationListener
@@ -26,10 +27,11 @@
import com.android.systemui.statusbar.notification.NotificationEntryManager
import com.android.systemui.statusbar.notification.NotificationListController
import com.android.systemui.statusbar.notification.collection.NotifPipeline
+import com.android.systemui.statusbar.notification.collection.TargetSdkResolver
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer
-import com.android.systemui.statusbar.notification.collection.TargetSdkResolver
import com.android.systemui.statusbar.notification.interruption.HeadsUpController
+import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder
import com.android.systemui.statusbar.notification.row.NotifBindPipelineInitializer
import com.android.systemui.statusbar.notification.stack.NotificationListContainer
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper
@@ -37,14 +39,12 @@
import com.android.systemui.statusbar.phone.StatusBar
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.HeadsUpManager
-import com.android.systemui.statusbar.notification.interruption.HeadsUpViewBinder
import com.android.systemui.statusbar.policy.RemoteInputUriController
import dagger.Lazy
import java.io.FileDescriptor
import java.io.PrintWriter
import java.util.Optional
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Master controller for all notifications-related work
@@ -53,7 +53,7 @@
* Once we migrate away from the need for such things, this class becomes primarily a place to do
* any initialization work that notifications require.
*/
-@Singleton
+@SysUISingleton
class NotificationsControllerImpl @Inject constructor(
private val featureFlags: FeatureFlags,
private val notificationListener: NotificationListener,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/BypassHeadsUpNotifier.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/BypassHeadsUpNotifier.kt
index 0fd865b..f8d6c6d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/BypassHeadsUpNotifier.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/BypassHeadsUpNotifier.kt
@@ -20,6 +20,7 @@
import android.media.MediaMetadata
import android.provider.Settings
import com.android.keyguard.KeyguardUpdateMonitor
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.NotificationLockscreenUserManager
import com.android.systemui.statusbar.NotificationMediaManager
@@ -30,13 +31,12 @@
import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.tuner.TunerService
import javax.inject.Inject
-import javax.inject.Singleton
/**
* A class that automatically creates heads up for important notification when bypassing the
* lockscreen
*/
-@Singleton
+@SysUISingleton
class BypassHeadsUpNotifier @Inject constructor(
private val context: Context,
private val bypassController: KeyguardBypassController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpController.java
index 9b6ae9a..dbdb422 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpController.java
@@ -24,6 +24,7 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -35,14 +36,13 @@
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller class for old pipeline heads up logic. It listens to {@link NotificationEntryManager}
* entry events and appropriately binds or unbinds the heads up view and promotes it to the top
* of the screen.
*/
-@Singleton
+@SysUISingleton
public class HeadsUpController {
private final HeadsUpViewBinder mHeadsUpViewBinder;
private final NotificationInterruptStateProvider mInterruptStateProvider;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinder.java
index ff13995..ffec367 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/HeadsUpViewBinder.java
@@ -24,6 +24,7 @@
import androidx.core.os.CancellationSignal;
import com.android.internal.util.NotificationMessagingUtil;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.coordinator.HeadsUpCoordinator;
@@ -34,7 +35,6 @@
import java.util.Map;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Wrapper around heads up view binding logic. {@link HeadsUpViewBinder} is responsible for
@@ -44,7 +44,7 @@
* TODO: This should be moved into {@link HeadsUpCoordinator} when the old pipeline is deprecated
* (i.e. when {@link HeadsUpController} is removed).
*/
-@Singleton
+@SysUISingleton
public class HeadsUpViewBinder {
private final RowContentBindStage mStage;
private final NotificationMessagingUtil mNotificationMessagingUtil;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java
index 71f6dac..433d5e1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java
@@ -32,6 +32,7 @@
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
@@ -44,12 +45,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Provides heads-up and pulsing state for notification entries.
*/
-@Singleton
+@SysUISingleton
public class NotificationInterruptStateProviderImpl implements NotificationInterruptStateProvider {
private static final String TAG = "InterruptionStateProvider";
private static final boolean DEBUG = true; //false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
index d32d09d..743bf33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
@@ -35,6 +35,7 @@
import com.android.internal.widget.MessagingGroup
import com.android.settingslib.notification.ConversationIconFactory
import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.NotificationPersonExtractorPlugin
@@ -48,7 +49,6 @@
import java.util.ArrayDeque
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
private const val MAX_STORED_INACTIVE_PEOPLE = 10
@@ -58,7 +58,7 @@
fun isPersonNotification(sbn: StatusBarNotification): Boolean
}
-@Singleton
+@SysUISingleton
class NotificationPersonExtractorPluginBoundary @Inject constructor(
extensionController: ExtensionController
) : NotificationPersonExtractor {
@@ -87,7 +87,7 @@
plugin?.isPersonNotification(sbn) ?: false
}
-@Singleton
+@SysUISingleton
class PeopleHubDataSourceImpl @Inject constructor(
private val notificationEntryManager: NotificationEntryManager,
private val extractor: NotificationPersonExtractor,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubViewController.kt
index 7f42fe0..55bd77f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubViewController.kt
@@ -23,10 +23,10 @@
import android.os.UserHandle
import android.provider.Settings
import android.view.View
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
import javax.inject.Inject
-import javax.inject.Singleton
/** Boundary between the View and PeopleHub, as seen by the View. */
interface PeopleHubViewAdapter {
@@ -68,7 +68,7 @@
*
* @param dataSource PeopleHub data pipeline.
*/
-@Singleton
+@SysUISingleton
class PeopleHubViewAdapterImpl @Inject constructor(
private val dataSource: DataSource<@JvmSuppressWildcards PeopleHubViewModelFactory>
) : PeopleHubViewAdapter {
@@ -99,7 +99,7 @@
* This class serves as the glue between the View layer (which depends on
* [PeopleHubViewBoundary]) and the Data layer (which produces [PeopleHubModel]s).
*/
-@Singleton
+@SysUISingleton
class PeopleHubViewModelFactoryDataSourceImpl @Inject constructor(
private val activityStarter: ActivityStarter,
private val dataSource: DataSource<@JvmSuppressWildcards PeopleHubModel>
@@ -151,7 +151,7 @@
}
}
-@Singleton
+@SysUISingleton
class PeopleHubSettingChangeDataSourceImpl @Inject constructor(
@Main private val handler: Handler,
context: Context
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
index d36627f..1ac2cb5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleNotificationIdentifier.kt
@@ -19,6 +19,7 @@
import android.annotation.IntDef
import android.service.notification.NotificationListenerService.Ranking
import android.service.notification.StatusBarNotification
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.PeopleNotificationType
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_FULL_PERSON
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_IMPORTANT_PERSON
@@ -26,7 +27,6 @@
import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier.Companion.TYPE_PERSON
import com.android.systemui.statusbar.phone.NotificationGroupManager
import javax.inject.Inject
-import javax.inject.Singleton
import kotlin.math.max
interface PeopleNotificationIdentifier {
@@ -59,7 +59,7 @@
}
}
-@Singleton
+@SysUISingleton
class PeopleNotificationIdentifierImpl @Inject constructor(
private val personExtractor: NotificationPersonExtractor,
private val groupManager: NotificationGroupManager
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt
index 93db9cd..9bba7ef 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ChannelEditorDialogController.kt
@@ -37,12 +37,10 @@
import android.view.WindowInsets.Type.statusBars
import android.view.WindowManager
import android.widget.TextView
-
import com.android.internal.annotations.VisibleForTesting
import com.android.systemui.R
-
+import com.android.systemui.dagger.SysUISingleton
import javax.inject.Inject
-import javax.inject.Singleton
private const val TAG = "ChannelDialogController"
@@ -58,7 +56,7 @@
* - the next 3 channels sorted alphabetically for that app <on/off>
* - <on/off>
*/
-@Singleton
+@SysUISingleton
class ChannelEditorDialogController @Inject constructor(
c: Context,
private val noMan: INotificationManager,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
index 90d30dc..f693ebb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
@@ -28,6 +28,7 @@
import androidx.annotation.Nullable;
import androidx.core.os.CancellationSignal;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
@@ -41,7 +42,6 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* {@link NotifBindPipeline} is responsible for converting notifications from their data form to
@@ -77,7 +77,7 @@
* views and assumes that a row is given to it when it's inflated.
*/
@MainThread
-@Singleton
+@SysUISingleton
public final class NotifBindPipeline {
private final Map<NotificationEntry, BindEntry> mBindEntries = new ArrayMap<>();
private final NotifBindPipelineLogger mLogger;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java
index a3ca084..51eb9f7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java
@@ -19,6 +19,7 @@
import androidx.annotation.NonNull;
import androidx.collection.ArraySet;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import java.util.ArrayList;
@@ -26,14 +27,13 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A manager handling the error state of a notification when it encounters an exception while
* inflating. We don't want to show these notifications to the user but may want to keep them
* around for logging purposes.
*/
-@Singleton
+@SysUISingleton
public class NotifInflationErrorManager {
Set<NotificationEntry> mErroredNotifs = new ArraySet<>();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index a7d83b3..9bcac11 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -36,6 +36,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.widget.ImageMessageConsumer;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.media.MediaDataManagerKt;
import com.android.systemui.media.MediaFeatureFlag;
@@ -58,7 +59,6 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -66,7 +66,7 @@
* {@link NotificationContentInflater} binds content to a {@link ExpandableNotificationRow} by
* asynchronously building the content's {@link RemoteViews} and applying it to the row.
*/
-@Singleton
+@SysUISingleton
@VisibleForTesting(visibility = PACKAGE)
public class NotificationContentInflater implements NotificationRowContentBinder {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
index df8653c..111b575 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowModule.java
@@ -16,7 +16,7 @@
package com.android.systemui.statusbar.notification.row;
-import javax.inject.Singleton;
+import com.android.systemui.dagger.SysUISingleton;
import dagger.Binds;
import dagger.Module;
@@ -30,7 +30,7 @@
* Provides notification row content binder instance.
*/
@Binds
- @Singleton
+ @SysUISingleton
public abstract NotificationRowContentBinder provideNotificationRowContentBinder(
NotificationContentInflater contentBinderImpl);
@@ -38,7 +38,7 @@
* Provides notification remote view cache instance.
*/
@Binds
- @Singleton
+ @SysUISingleton
public abstract NotifRemoteViewCache provideNotifRemoteViewCache(
NotifRemoteViewCacheImpl cacheImpl);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java
index c6f0a13..3616f8f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java
@@ -20,13 +20,13 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A stage that binds all content views for an already inflated {@link ExpandableNotificationRow}.
@@ -34,7 +34,7 @@
* In the farther future, the binder logic and consequently this stage should be broken into
* smaller stages.
*/
-@Singleton
+@SysUISingleton
public class RowContentBindStage extends BindStage<RowContentBindParams> {
private final NotificationRowContentBinder mBinder;
private final NotifInflationErrorManager mNotifInflationErrorManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt
index 5757fe8..32d41a8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt
@@ -26,23 +26,21 @@
import android.view.LayoutInflater
import android.view.View
import android.widget.LinearLayout
-
-import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.R
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.statusbar.notification.ForegroundServiceDismissalFeatureController
import com.android.systemui.statusbar.notification.NotificationEntryListener
import com.android.systemui.statusbar.notification.NotificationEntryManager
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.row.DungeonRow
import com.android.systemui.util.Assert
-
import javax.inject.Inject
-import javax.inject.Singleton
/**
* Controller for the bottom area of NotificationStackScrollLayout. It owns swiped-away foreground
* service notifications and can reinstantiate them when requested.
*/
-@Singleton
+@SysUISingleton
class ForegroundServiceSectionController @Inject constructor(
val entryManager: NotificationEntryManager,
val featureController: ForegroundServiceDismissalFeatureController
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
index 2c3239a..fe66669 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManager.java
@@ -18,6 +18,7 @@
import android.util.MathUtils;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
@@ -28,12 +29,11 @@
import java.util.HashSet;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A class that manages the roundness for notification views
*/
-@Singleton
+@SysUISingleton
public class NotificationRoundnessManager implements OnHeadsUpChangedListener {
private final ExpandableView[] mFirstInSectionViews;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsLogger.kt
index 17b4143..cb7dfe8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationSectionsLogger.kt
@@ -16,15 +16,15 @@
package com.android.systemui.statusbar.notification.stack
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogLevel
import com.android.systemui.log.dagger.NotificationSectionLog
import javax.inject.Inject
-import javax.inject.Singleton
private const val TAG = "NotifSections"
-@Singleton
+@SysUISingleton
class NotificationSectionsLogger @Inject constructor(
@NotificationSectionLog private val logBuffer: LogBuffer
) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index 9d920c3..e996378 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -40,6 +40,7 @@
import com.android.keyguard.KeyguardViewController;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -58,12 +59,11 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller which coordinates all the biometric unlocking actions with the UI.
*/
-@Singleton
+@SysUISingleton
public class BiometricUnlockController extends KeyguardUpdateMonitorCallback implements Dumpable {
private static final String TAG = "BiometricUnlockCtrl";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
index ef0f7cd..f25359e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
@@ -14,7 +14,6 @@
package com.android.systemui.statusbar.phone;
-import static com.android.systemui.plugins.DarkIconDispatcher.DEFAULT_ICON_TINT;
import static com.android.systemui.plugins.DarkIconDispatcher.getTint;
import android.animation.ArgbEvaluator;
@@ -25,18 +24,17 @@
import android.widget.ImageView;
import com.android.systemui.R;
-import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class DarkIconDispatcherImpl implements SysuiDarkIconDispatcher,
LightBarTransitionsController.DarkIntensityApplier {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index 5fab4be..6495144 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -25,6 +25,7 @@
import android.util.MathUtils;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
import com.android.systemui.doze.DozeScreenState;
@@ -34,12 +35,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Retrieve doze information
*/
-@Singleton
+@SysUISingleton
public class DozeParameters implements TunerService.Tunable,
com.android.systemui.plugins.statusbar.DozeParameters {
private static final int MAX_DURATION = 60 * 1000;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
index e7d6eba..b2cf72a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
@@ -22,18 +22,18 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller which handles all the doze animations of the scrims.
*/
-@Singleton
+@SysUISingleton
public class DozeScrimController implements StateListener {
private static final String TAG = "DozeScrimController";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 5aca0df..9525830 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -32,6 +32,7 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.biometrics.AuthController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.doze.DozeHost;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.doze.DozeReceiver;
@@ -50,14 +51,13 @@
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/**
* Implementation of DozeHost for SystemUI.
*/
-@Singleton
+@SysUISingleton
public final class DozeServiceHost implements DozeHost {
private static final String TAG = "DozeServiceHost";
private final ArrayList<Callback> mCallbacks = new ArrayList<>();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
index 0827511..242bd0a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
@@ -21,6 +21,7 @@
import android.hardware.biometrics.BiometricSourceType
import android.provider.Settings
import com.android.systemui.Dumpable
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.NotificationLockscreenUserManager
@@ -30,9 +31,8 @@
import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
open class KeyguardBypassController : Dumpable {
private val mKeyguardStateController: KeyguardStateController
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardDismissUtil.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardDismissUtil.java
index 834d2a5..c0181f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardDismissUtil.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardDismissUtil.java
@@ -18,16 +18,16 @@
import android.util.Log;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Executes actions that require the screen to be unlocked. Delegates the actual handling to an
* implementation passed via {@link #setDismissHandler}.
*/
-@Singleton
+@SysUISingleton
public class KeyguardDismissUtil implements KeyguardDismissHandler {
private static final String TAG = "KeyguardDismissUtil";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardEnvironmentImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardEnvironmentImpl.java
index e763496..817b86b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardEnvironmentImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardEnvironmentImpl.java
@@ -21,14 +21,14 @@
import android.util.Log;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager.KeyguardEnvironment;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import javax.inject.Inject;
-import javax.inject.Singleton;
-@Singleton
+@SysUISingleton
public class KeyguardEnvironmentImpl implements KeyguardEnvironment {
private static final String TAG = "KeyguardEnvironmentImpl";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
index 982773a..24c9021 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
@@ -32,6 +32,7 @@
import com.android.internal.view.AppearanceRegion;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.shared.system.QuickStepContract;
@@ -41,12 +42,11 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls how light status bar flag applies to the icons.
*/
-@Singleton
+@SysUISingleton
public class LightBarController implements BatteryController.BatteryStateChangeCallback, Dumpable {
private static final float NAV_BAR_INVERSION_SCRIM_ALPHA_THRESHOLD = 0.1f;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
index 8e192c5..d27a3d5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightsOutNotifController.java
@@ -29,13 +29,13 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.internal.view.AppearanceRegion;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Apps can request a low profile mode {@link View.SYSTEM_UI_FLAG_LOW_PROFILE}
@@ -45,7 +45,7 @@
* This controller shows and hides the notification dot in the status bar to indicate
* whether there are notifications when the device is in {@link View.SYSTEM_UI_FLAG_LOW_PROFILE}.
*/
-@Singleton
+@SysUISingleton
public class LightsOutNotifController {
private final CommandQueue mCommandQueue;
private final NotificationEntryManager mEntryManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java
index 0d6597f..094ebb9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java
@@ -27,15 +27,15 @@
import com.android.systemui.Dependency;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
+import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Wrapper that emits both new- and old-style gesture logs.
* TODO: delete this once the old logs are no longer needed.
*/
-@Singleton
+@SysUISingleton
public class LockscreenGestureLogger {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
index 1dc0f07..11ceedf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenLockIconController.java
@@ -37,6 +37,7 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -54,10 +55,9 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Controls the {@link LockIcon} in the lockscreen. */
-@Singleton
+@SysUISingleton
public class LockscreenLockIconController {
private final LockscreenGestureLogger mLockscreenGestureLogger;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
index 04211df..a6811c6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenWallpaper.java
@@ -42,6 +42,7 @@
import com.android.internal.util.IndentingPrintWriter;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.NotificationMediaManager;
@@ -53,12 +54,11 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the lockscreen wallpaper.
*/
-@Singleton
+@SysUISingleton
public class LockscreenWallpaper extends IWallpaperManagerCallback.Stub implements Runnable,
Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java
index 8e9dcb4..94d1bf4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java
@@ -27,17 +27,17 @@
import androidx.annotation.NonNull;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class ManagedProfileControllerImpl implements ManagedProfileController {
private final List<Callback> mCallbacks = new ArrayList<>();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
index 80785db..c44c59c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -23,6 +23,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
import com.android.systemui.statusbar.StatusBarState;
@@ -40,14 +41,13 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/**
* A class to handle notifications and their corresponding groups.
*/
-@Singleton
+@SysUISingleton
public class NotificationGroupManager implements OnHeadsUpChangedListener, StateListener {
private static final String TAG = "NotificationGroupManager";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
index 07b0a4b..3c43a17 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerImpl.java
@@ -43,6 +43,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -66,12 +67,11 @@
import java.util.function.Consumer;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Encapsulates all logic for the notification shade window state management.
*/
-@Singleton
+@SysUISingleton
public class NotificationShadeWindowControllerImpl implements NotificationShadeWindowController,
Dumpable, ConfigurationListener {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 686b871..11d0583 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -46,6 +46,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.ScrimView;
@@ -62,13 +63,12 @@
import java.util.function.Consumer;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls both the scrim behind the notifications and in front of the notifications (when a
* security method gets shown).
*/
-@Singleton
+@SysUISingleton
public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnColorsChangedListener,
Dumpable {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java
index 921bd4f..1ce2219 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java
@@ -23,6 +23,7 @@
import com.android.systemui.assist.AssistManager;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationPresenter;
@@ -32,12 +33,11 @@
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
/** An implementation of {@link com.android.systemui.statusbar.phone.ShadeController}. */
-@Singleton
+@SysUISingleton
public class ShadeControllerImpl implements ShadeController {
private static final String TAG = "ShadeControllerImpl";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
index 60ef523..2870152 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -29,6 +29,7 @@
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.statusbar.CommandQueue;
@@ -47,14 +48,13 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Receives the callbacks from CommandQueue related to icons and tracks the state of
* all the icons. Dispatches this state to any IconManagers that are currently
* registered with it.
*/
-@Singleton
+@SysUISingleton
public class StatusBarIconControllerImpl extends StatusBarIconList implements Tunable,
ConfigurationListener, Dumpable, CommandQueue.Callbacks, StatusBarIconController, DemoMode {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index e159fad..7ee501c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -47,6 +47,7 @@
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.systemui.DejankUtils;
import com.android.systemui.SystemUIFactory;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dock.DockManager;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.navigationbar.NavigationModeController;
@@ -69,7 +70,6 @@
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages creating, showing, hiding and resetting the keyguard within the status bar. Calls back
@@ -77,7 +77,7 @@
* which is in turn, reported to this class by the current
* {@link com.android.keyguard.KeyguardViewBase}.
*/
-@Singleton
+@SysUISingleton
public class StatusBarKeyguardViewManager implements RemoteInputController.Callback,
StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener,
PanelExpansionListener, NavigationModeController.ModeChangedListener,
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 b9f94b3..f1e2f77 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -49,6 +49,7 @@
import com.android.systemui.EventLogTags;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.bubbles.BubbleController;
+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;
@@ -79,7 +80,6 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -596,7 +596,7 @@
/**
* Public builder for {@link StatusBarNotificationActivityStarter}.
*/
- @Singleton
+ @SysUISingleton
public static class Builder {
private final Context mContext;
private final CommandQueue mCommandQueue;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
index ac69d9c..8a89429 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
@@ -34,6 +34,7 @@
import android.view.ViewParent;
import com.android.systemui.ActivityIntentHelper;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.ActionClickLogger;
@@ -49,11 +50,10 @@
import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class StatusBarRemoteInputCallback implements Callback, Callbacks,
StatusBarStateController.StateListener {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
index b79bb70..b859250 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
@@ -32,6 +32,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.ScreenDecorations;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
@@ -41,14 +42,13 @@
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages what parts of the status bar are touchable. Clients are primarily UI that display in the
* status bar even though the UI doesn't look like part of the status bar. Currently this consists
* of HeadsUpNotifications.
*/
-@Singleton
+@SysUISingleton
public final class StatusBarTouchableRegionManager implements Dumpable {
private static final String TAG = "TouchableRegionManager";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
index d4e1aa4..2f7278b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
@@ -29,16 +29,16 @@
import android.view.ViewGroup;
import android.view.WindowManager;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Encapsulates all logic for the status bar window state management.
*/
-@Singleton
+@SysUISingleton
public class StatusBarWindowController {
private static final String TAG = "StatusBarWindowController";
private static final boolean DEBUG = false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneDependenciesModule.java
index 69c6814..79d72b3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneDependenciesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneDependenciesModule.java
@@ -16,12 +16,11 @@
package com.android.systemui.statusbar.phone.dagger;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.row.RowContentBindStage;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.StatusBar;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -34,7 +33,7 @@
public interface StatusBarPhoneDependenciesModule {
/** */
- @Singleton
+ @SysUISingleton
@Provides
static NotificationGroupAlertTransferHelper provideNotificationGroupAlertTransferHelper(
RowContentBindStage bindStage) {
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 d230eca..bdf63c79 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
@@ -33,6 +33,7 @@
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.keyguard.DismissCallbackRegistry;
@@ -105,7 +106,6 @@
import javax.inject.Named;
import javax.inject.Provider;
-import javax.inject.Singleton;
import dagger.Lazy;
import dagger.Module;
@@ -120,7 +120,7 @@
* Provides our instance of StatusBar which is considered optional.
*/
@Provides
- @Singleton
+ @SysUISingleton
static StatusBar provideStatusBar(
Context context,
NotificationsController notificationsController,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java
index ebfdb3f..ad49c79 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java
@@ -19,16 +19,17 @@
import android.content.Context;
import android.view.accessibility.AccessibilityManager;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class AccessibilityController implements
AccessibilityManager.AccessibilityStateChangeListener,
AccessibilityManager.TouchExplorationStateChangeListener {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java
index c0caabd..d38284a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java
@@ -21,13 +21,14 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
+
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* For mocking because AccessibilityManager is final for some reason...
*/
-@Singleton
+@SysUISingleton
public class AccessibilityManagerWrapper implements
CallbackController<AccessibilityServicesStateChangeListener> {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
index b7dc821..57ac85e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
@@ -35,6 +35,7 @@
import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.utils.PowerUtil;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoMode;
@@ -47,13 +48,12 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Default implementation of a {@link BatteryController}. This controller monitors for battery
* level change events that are broadcasted by the system.
*/
-@Singleton
+@SysUISingleton
public class BatteryControllerImpl extends BroadcastReceiver implements BatteryController {
private static final String TAG = "BatteryController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index 8110ab4..33b1a4a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -36,6 +36,7 @@
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
@@ -48,11 +49,10 @@
import java.util.WeakHashMap;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class BluetoothControllerImpl implements BluetoothController, BluetoothCallback,
CachedBluetoothDevice.Callback, LocalBluetoothProfileManager.ServiceListener {
private static final String TAG = "BluetoothController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
index f38c731..7bde315 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
@@ -36,6 +36,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.util.Utils;
@@ -47,11 +48,10 @@
import java.util.UUID;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Platform implementation of the cast controller. **/
-@Singleton
+@SysUISingleton
public class CastControllerImpl implements CastController {
private static final String TAG = "CastController";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java
index 071f05a..9b4e165 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java
@@ -27,17 +27,17 @@
import androidx.annotation.NonNull;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.settings.CurrentUserTracker;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class DeviceProvisionedControllerImpl extends CurrentUserTracker implements
DeviceProvisionedController {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java
index eeef726..5011d96 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java
@@ -19,6 +19,7 @@
import android.os.Handler;
import android.util.ArrayMap;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.Plugin;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.shared.plugins.PluginManager;
@@ -34,11 +35,10 @@
import java.util.function.Supplier;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class ExtensionControllerImpl implements ExtensionController {
public static final int SORT_ORDER_PLUGIN = 0;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
index 659212c..d7c2b96 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
@@ -32,18 +32,19 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Manages the flashlight.
*/
-@Singleton
+@SysUISingleton
public class FlashlightControllerImpl implements FlashlightController {
private static final String TAG = "FlashlightController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
index 1baed09..99feb18 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
@@ -33,6 +33,7 @@
import androidx.annotation.NonNull;
import com.android.internal.util.ConcurrentUtils;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
@@ -42,12 +43,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller used to retrieve information related to a hotspot.
*/
-@Singleton
+@SysUISingleton
public class HotspotControllerImpl implements HotspotController, WifiManager.SoftApCallback {
private static final String TAG = "HotspotController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
index a7f60d6..7f4eec7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardStateControllerImpl.java
@@ -31,6 +31,7 @@
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -38,11 +39,10 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class KeyguardStateControllerImpl implements KeyguardStateController, Dumpable {
private static final boolean DEBUG_AUTH_WITH_ADB = false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
index a995ade..0fdc80b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
@@ -40,6 +40,7 @@
import com.android.systemui.appops.AppOpItem;
import com.android.systemui.appops.AppOpsController;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.util.Utils;
@@ -48,12 +49,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* A controller to manage changes of location related states and update the views accordingly.
*/
-@Singleton
+@SysUISingleton
public class LocationControllerImpl extends BroadcastReceiver implements LocationController,
AppOpsController.Callback {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 7a0f690..2253ce7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -63,6 +63,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
@@ -79,10 +80,9 @@
import java.util.Locale;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Platform implementation of the network controller. **/
-@Singleton
+@SysUISingleton
public class NetworkControllerImpl extends BroadcastReceiver
implements NetworkController, DemoMode, DataUsageController.NetworkNameProvider, Dumpable {
// debug
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
index 604e76e..272c494 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
@@ -25,17 +25,18 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Implementation of {@link NextAlarmController}
*/
-@Singleton
+@SysUISingleton
public class NextAlarmControllerImpl extends BroadcastReceiver
implements NextAlarmController {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.java
index 7ef9945..ac8b47d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputQuickSettingsDisabler.java
@@ -21,17 +21,17 @@
import android.content.res.Configuration;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.qs.QSFragment;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.StatusBar;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Let {@link RemoteInputView} to control the visibility of QuickSetting.
*/
-@Singleton
+@SysUISingleton
public class RemoteInputQuickSettingsDisabler
implements ConfigurationController.ConfigurationListener {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputUriController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputUriController.java
index b503183..03b6122 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputUriController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputUriController.java
@@ -23,17 +23,17 @@
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Handles granting and revoking inline URI grants associated with RemoteInputs.
*/
-@Singleton
+@SysUISingleton
public class RemoteInputUriController {
private final IStatusBarService mStatusBarManagerService;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
index 58bb64b..53d68d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
@@ -22,14 +22,14 @@
import androidx.annotation.NonNull;
import com.android.internal.view.RotationPolicy;
+import com.android.systemui.dagger.SysUISingleton;
import java.util.concurrent.CopyOnWriteArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Platform implementation of the rotation lock controller. **/
-@Singleton
+@SysUISingleton
public final class RotationLockControllerImpl implements RotationLockController {
private final Context mContext;
private final CopyOnWriteArrayList<RotationLockControllerCallback> mCallbacks =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
index d1a7a7b..7e54e8d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
@@ -49,6 +49,7 @@
import com.android.internal.net.VpnConfig;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.settings.CurrentUserTracker;
@@ -58,11 +59,10 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class SecurityControllerImpl extends CurrentUserTracker implements SecurityController {
private static final String TAG = "SecurityController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensorPrivacyControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensorPrivacyControllerImpl.java
index cbafedc..20cc46f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensorPrivacyControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensorPrivacyControllerImpl.java
@@ -21,16 +21,17 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls sensor privacy state and notification.
*/
-@Singleton
+@SysUISingleton
public class SensorPrivacyControllerImpl implements SensorPrivacyController,
SensorPrivacyManager.OnSensorPrivacyChangedListener {
private SensorPrivacyManager mSensorPrivacyManager;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
index 311e8738..52a6bca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java
@@ -27,13 +27,13 @@
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.util.DeviceConfigProxy;
import javax.inject.Inject;
-import javax.inject.Singleton;
-@Singleton
+@SysUISingleton
public final class SmartReplyConstants {
private static final String TAG = "SmartReplyConstants";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java
index 6b2820d..9eaee22 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java
@@ -39,15 +39,15 @@
import com.android.internal.util.UserIcons;
import com.android.settingslib.drawable.UserIconDrawable;
import com.android.systemui.R;
+import com.android.systemui.dagger.SysUISingleton;
import java.util.ArrayList;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class UserInfoControllerImpl implements UserInfoController {
private static final String TAG = "UserInfoController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index ce5bb05..f9ac760 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -62,6 +62,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUISecondaryUserService;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.DetailAdapter;
@@ -76,12 +77,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Keeps a list of all users on the device for user switching.
*/
-@Singleton
+@SysUISingleton
public class UserSwitcherController implements Dumpable {
public static final float USER_SWITCH_ENABLED_ALPHA = 1.0f;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
index 75c1e33..897a3b8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
@@ -42,6 +42,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.qs.GlobalSetting;
import com.android.systemui.settings.CurrentUserTracker;
@@ -53,10 +54,9 @@
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/** Platform implementation of the zen mode controller. **/
-@Singleton
+@SysUISingleton
public class ZenModeControllerImpl extends CurrentUserTracker
implements ZenModeController, Dumpable {
private static final String TAG = "ZenModeController";
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
index c0602762..bcfff60 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java
@@ -29,11 +29,11 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.assist.AssistManager;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.tv.micdisclosure.AudioRecordingDisclosureBar;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -46,7 +46,7 @@
* recording, discloses the responsible applications </li>
* </ul>
*/
-@Singleton
+@SysUISingleton
public class TvStatusBar extends SystemUI implements CommandQueue.Callbacks {
private static final String ACTION_OPEN_TV_NOTIFICATIONS_PANEL =
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index f31f8eb..132e092 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -36,6 +36,7 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.google.android.collect.Sets;
@@ -48,7 +49,6 @@
import java.util.Set;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls the application of theme overlays across the system for all users.
@@ -59,7 +59,7 @@
* - Observing work profile changes and applying overlays from the primary user to their
* associated work profiles
*/
-@Singleton
+@SysUISingleton
public class ThemeOverlayController extends SystemUI {
private static final String TAG = "ThemeOverlayController";
private static final boolean DEBUG = false;
diff --git a/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java b/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
index 9b465ae..a220373 100644
--- a/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
+++ b/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
@@ -33,17 +33,17 @@
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.statusbar.CommandQueue;
import java.util.Objects;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controls display of text toasts.
*/
-@Singleton
+@SysUISingleton
public class ToastUI extends SystemUI implements CommandQueue.Callbacks {
private static final String TAG = "ToastUI";
diff --git a/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java b/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
index 25ae098..8a8f92b 100644
--- a/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
+++ b/packages/SystemUI/src/com/android/systemui/tracing/ProtoTracer.java
@@ -25,6 +25,7 @@
import androidx.annotation.NonNull;
import com.android.systemui.Dumpable;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.shared.tracing.FrameProtoTracer;
import com.android.systemui.shared.tracing.FrameProtoTracer.ProtoTraceParams;
@@ -42,12 +43,11 @@
import java.util.Queue;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Controller for coordinating winscope proto tracing.
*/
-@Singleton
+@SysUISingleton
public class ProtoTracer implements Dumpable, ProtoTraceParams<MessageNano, SystemUiTraceFileProto,
SystemUiTraceEntryProto, SystemUiTraceProto> {
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java b/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
index 8f3a8f6..d54c07c 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
@@ -19,10 +19,10 @@
import android.view.WindowManager;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.tuner.TunerService.Tunable;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Version of Space that can be resized by a tunable setting.
@@ -77,7 +77,7 @@
/**
* Exists for easy injecting in tests.
*/
- @Singleton
+ @SysUISingleton
public static class TunablePaddingService {
private final TunerService mTunerService;
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
index 12dced7..d9727a7 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
@@ -33,6 +33,7 @@
import com.android.internal.util.ArrayUtils;
import com.android.systemui.DejankUtils;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.qs.QSTileHost;
@@ -45,12 +46,11 @@
import java.util.concurrent.ConcurrentHashMap;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
*/
-@Singleton
+@SysUISingleton
public class TunerServiceImpl extends TunerService {
private static final String TAG = "TunerService";
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java
index fd6ba1a..37aac11 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java
@@ -16,14 +16,7 @@
package com.android.systemui.tv;
-import com.android.systemui.dagger.DefaultComponentBinder;
-import com.android.systemui.dagger.DependencyBinder;
-import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.GlobalRootComponent;
-import com.android.systemui.dagger.SystemServicesModule;
-import com.android.systemui.dagger.SystemUIBinder;
-import com.android.systemui.dagger.SystemUIModule;
-import com.android.systemui.onehanded.dagger.OneHandedModule;
import javax.inject.Singleton;
@@ -33,16 +26,7 @@
* Root component for Dagger injection.
*/
@Singleton
-@Component(modules = {
- DefaultComponentBinder.class,
- DependencyProvider.class,
- DependencyBinder.class,
- OneHandedModule.class,
- SystemServicesModule.class,
- SystemUIBinder.class,
- SystemUIModule.class,
- TvSystemUIModule.class,
- TvSystemUIBinder.class})
+@Component(modules = {TvSysUIComponentModule.class})
public interface TvGlobalRootComponent extends GlobalRootComponent {
/**
* Component Builder interface. This allows to bind Context instance in the component
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java
index bc0cb51..b7bc8c8 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java
@@ -16,8 +16,15 @@
package com.android.systemui.tv;
+import com.android.systemui.dagger.DefaultComponentBinder;
+import com.android.systemui.dagger.DependencyBinder;
+import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.SystemServicesModule;
+import com.android.systemui.dagger.SystemUIBinder;
+import com.android.systemui.dagger.SystemUIModule;
+import com.android.systemui.onehanded.dagger.OneHandedModule;
import dagger.Subcomponent;
@@ -25,7 +32,16 @@
* Dagger Subcomponent for Core SysUI.
*/
@SysUISingleton
-@Subcomponent(modules = {})
+@Subcomponent(modules = {
+ DefaultComponentBinder.class,
+ DependencyProvider.class,
+ DependencyBinder.class,
+ OneHandedModule.class,
+ SystemServicesModule.class,
+ SystemUIBinder.class,
+ SystemUIModule.class,
+ TvSystemUIModule.class,
+ TvSystemUIBinder.class})
public interface TvSysUIComponent extends SysUIComponent {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponentModule.java b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponentModule.java
new file mode 100644
index 0000000..334bb01
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponentModule.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2020 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.tv;
+
+import dagger.Module;
+
+/**
+ * Dagger module for including the WMComponent.
+ */
+@Module(subcomponents = {TvSysUIComponent.class})
+public abstract class TvSysUIComponentModule {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java
index 228b2ea..e10225c 100644
--- a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java
@@ -27,6 +27,7 @@
import com.android.keyguard.KeyguardViewController;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.demomode.DemoModeController;
@@ -65,7 +66,6 @@
import com.android.systemui.wmshell.WindowManagerShellModule;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.Binds;
import dagger.Module;
@@ -81,11 +81,10 @@
WindowManagerShellModule.class
},
subcomponents = {
- TvSysUIComponent.class
})
public abstract class TvSystemUIModule {
- @Singleton
+ @SysUISingleton
@Provides
@Named(LEAK_REPORT_EMAIL_NAME)
@Nullable
@@ -101,7 +100,7 @@
NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
@Provides
- @Singleton
+ @SysUISingleton
static BatteryController provideBatteryController(Context context,
EnhancedEstimates enhancedEstimates, PowerManager powerManager,
BroadcastDispatcher broadcastDispatcher, DemoModeController demoModeController,
@@ -113,7 +112,7 @@
}
@Binds
- @Singleton
+ @SysUISingleton
abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl);
@Binds
@@ -126,14 +125,14 @@
@Binds
abstract ShadeController provideShadeController(ShadeControllerImpl shadeController);
- @Singleton
+ @SysUISingleton
@Provides
@Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
static boolean provideAllowNotificationLongPress() {
return true;
}
- @Singleton
+ @SysUISingleton
@Provides
static HeadsUpManagerPhone provideHeadsUpManagerPhone(
Context context,
@@ -149,7 +148,7 @@
abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone);
@Provides
- @Singleton
+ @SysUISingleton
static Recents provideRecents(Context context, RecentsImplementation recentsImplementation,
CommandQueue commandQueue) {
return new Recents(context, recentsImplementation, commandQueue);
diff --git a/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt b/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt
index 242f7cd..f22f59b 100644
--- a/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt
@@ -2,10 +2,10 @@
import android.graphics.Rect
import android.util.Log
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.util.FloatingContentCoordinator.FloatingContent
-import java.util.HashMap
+import java.util.*
import javax.inject.Inject
-import javax.inject.Singleton
/** Tag for debug logging. */
private const val TAG = "FloatingCoordinator"
@@ -20,7 +20,7 @@
* other content out of the way. [onContentRemoved] should be called when the content is removed or
* no longer visible.
*/
-@Singleton
+@SysUISingleton
class FloatingContentCoordinator @Inject constructor() {
/**
diff --git a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java
index c82b39a..d278905 100644
--- a/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java
+++ b/packages/SystemUI/src/com/android/systemui/util/InjectionInflationController.java
@@ -25,6 +25,7 @@
import com.android.keyguard.KeyguardMessageArea;
import com.android.keyguard.KeyguardSliceView;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.qs.QSFooterImpl;
import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QuickQSPanel;
@@ -38,7 +39,6 @@
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Singleton;
import dagger.BindsInstance;
import dagger.Subcomponent;
@@ -47,7 +47,7 @@
* Manages inflation that requires dagger injection.
* See docs/dagger.md for details.
*/
-@Singleton
+@SysUISingleton
public class InjectionInflationController {
public static final String VIEW_CONTEXT = "view_context";
diff --git a/packages/SystemUI/src/com/android/systemui/util/RingerModeTrackerImpl.kt b/packages/SystemUI/src/com/android/systemui/util/RingerModeTrackerImpl.kt
index 58684c3..7513241 100644
--- a/packages/SystemUI/src/com/android/systemui/util/RingerModeTrackerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/RingerModeTrackerImpl.kt
@@ -25,12 +25,12 @@
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.android.systemui.broadcast.BroadcastDispatcher
+import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import java.util.concurrent.Executor
import javax.inject.Inject
-import javax.inject.Singleton
-@Singleton
+@SysUISingleton
class RingerModeTrackerImpl @Inject constructor(
audioManager: AudioManager,
broadcastDispatcher: BroadcastDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/ConcurrencyModule.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/ConcurrencyModule.java
index bf22a98..628c808 100644
--- a/packages/SystemUI/src/com/android/systemui/util/concurrency/ConcurrencyModule.java
+++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/ConcurrencyModule.java
@@ -22,6 +22,7 @@
import android.os.Looper;
import android.os.Process;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.LongRunning;
import com.android.systemui.dagger.qualifiers.Main;
@@ -30,8 +31,6 @@
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
-import javax.inject.Singleton;
-
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
@@ -43,7 +42,7 @@
public abstract class ConcurrencyModule {
/** Background Looper */
@Provides
- @Singleton
+ @SysUISingleton
@Background
public static Looper provideBgLooper() {
HandlerThread thread = new HandlerThread("SysUiBg",
@@ -54,7 +53,7 @@
/** Long running tasks Looper */
@Provides
- @Singleton
+ @SysUISingleton
@LongRunning
public static Looper provideLongRunningLooper() {
HandlerThread thread = new HandlerThread("SysUiLng",
@@ -96,7 +95,7 @@
* Provide a Background-Thread Executor by default.
*/
@Provides
- @Singleton
+ @SysUISingleton
public static Executor provideExecutor(@Background Looper looper) {
return new ExecutorImpl(looper);
}
@@ -105,7 +104,7 @@
* Provide a Long running Executor by default.
*/
@Provides
- @Singleton
+ @SysUISingleton
@LongRunning
public static Executor provideLongRunningExecutor(@LongRunning Looper looper) {
return new ExecutorImpl(looper);
@@ -115,7 +114,7 @@
* Provide a Background-Thread Executor.
*/
@Provides
- @Singleton
+ @SysUISingleton
@Background
public static Executor provideBackgroundExecutor(@Background Looper looper) {
return new ExecutorImpl(looper);
@@ -134,7 +133,7 @@
* Provide a Background-Thread Executor by default.
*/
@Provides
- @Singleton
+ @SysUISingleton
public static DelayableExecutor provideDelayableExecutor(@Background Looper looper) {
return new ExecutorImpl(looper);
}
@@ -143,7 +142,7 @@
* Provide a Background-Thread Executor.
*/
@Provides
- @Singleton
+ @SysUISingleton
@Background
public static DelayableExecutor provideBackgroundDelayableExecutor(@Background Looper looper) {
return new ExecutorImpl(looper);
@@ -153,7 +152,7 @@
* Provide a Main-Thread Executor.
*/
@Provides
- @Singleton
+ @SysUISingleton
@Main
public static DelayableExecutor provideMainDelayableExecutor(@Main Looper looper) {
return new ExecutorImpl(looper);
@@ -163,7 +162,7 @@
* Provide a Background-Thread Executor by default.
*/
@Provides
- @Singleton
+ @SysUISingleton
public static RepeatableExecutor provideRepeatableExecutor(@Background DelayableExecutor exec) {
return new RepeatableExecutorImpl(exec);
}
@@ -172,7 +171,7 @@
* Provide a Background-Thread Executor.
*/
@Provides
- @Singleton
+ @SysUISingleton
@Background
public static RepeatableExecutor provideBackgroundRepeatableExecutor(
@Background DelayableExecutor exec) {
@@ -183,7 +182,7 @@
* Provide a Main-Thread Executor.
*/
@Provides
- @Singleton
+ @SysUISingleton
@Main
public static RepeatableExecutor provideMainRepeatableExecutor(@Main DelayableExecutor exec) {
return new RepeatableExecutorImpl(exec);
@@ -195,7 +194,7 @@
* Keep submitted runnables short and to the point, just as with any other UI code.
*/
@Provides
- @Singleton
+ @SysUISingleton
@UiBackground
public static Executor provideUiBackgroundExecutor() {
return Executors.newSingleThreadExecutor();
diff --git a/packages/SystemUI/src/com/android/systemui/util/io/Files.java b/packages/SystemUI/src/com/android/systemui/util/io/Files.java
index 7d633a7..a2d309c 100644
--- a/packages/SystemUI/src/com/android/systemui/util/io/Files.java
+++ b/packages/SystemUI/src/com/android/systemui/util/io/Files.java
@@ -18,6 +18,8 @@
import androidx.annotation.NonNull;
+import com.android.systemui.dagger.SysUISingleton;
+
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -28,12 +30,11 @@
import java.util.stream.Stream;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Wrapper around {@link java.nio.file.Files} that can be mocked in tests.
*/
-@Singleton
+@SysUISingleton
public class Files {
@Inject
public Files() { }
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
index d1805af..ba58ed2 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
@@ -48,6 +48,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
@@ -63,14 +64,13 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Suite of tools to periodically inspect the System UI heap and possibly prompt the user to
* capture heap dumps and report them. Includes the implementation of the "Dump SysUI Heap"
* quick settings tile.
*/
-@Singleton
+@SysUISingleton
public class GarbageMonitor implements Dumpable {
// Feature switches
// ================
@@ -552,7 +552,7 @@
}
/** */
- @Singleton
+ @SysUISingleton
public static class Service extends SystemUI implements Dumpable {
private final GarbageMonitor mGarbageMonitor;
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
index 5e72808..f0a4195 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
@@ -34,6 +34,8 @@
import androidx.core.content.FileProvider;
+import com.android.systemui.dagger.SysUISingleton;
+
import com.google.android.collect.Lists;
import java.io.File;
@@ -44,12 +46,11 @@
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Singleton;
/**
* Dumps data to debug leaks and posts a notification to share the data.
*/
-@Singleton
+@SysUISingleton
public class LeakReporter {
static final String TAG = "LeakReporter";
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/AsyncSensorManager.java b/packages/SystemUI/src/com/android/systemui/util/sensors/AsyncSensorManager.java
index ed4df17..4875982 100644
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/AsyncSensorManager.java
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/AsyncSensorManager.java
@@ -29,6 +29,7 @@
import android.util.Log;
import com.android.internal.util.Preconditions;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.SensorManagerPlugin;
import com.android.systemui.shared.plugins.PluginManager;
@@ -39,7 +40,6 @@
import java.util.concurrent.Executor;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Wrapper around sensor manager that hides potential sources of latency.
@@ -48,7 +48,7 @@
* without blocking. Note that this means registering listeners now always appears successful even
* if it is not.
*/
-@Singleton
+@SysUISingleton
public class AsyncSensorManager extends SensorManager
implements PluginListener<SensorManagerPlugin> {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
index 428751b..56f1c09 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java
@@ -27,6 +27,7 @@
import com.android.settingslib.applications.InterestingConfigChanges;
import com.android.systemui.Dependency;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.demomode.DemoMode;
import com.android.systemui.demomode.DemoModeController;
import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -44,12 +45,11 @@
import java.util.List;
import javax.inject.Inject;
-import javax.inject.Singleton;
/**
* Implementation of VolumeComponent backed by the new volume dialog.
*/
-@Singleton
+@SysUISingleton
public class VolumeDialogComponent implements VolumeComponent, TunerService.Tunable,
VolumeDialogControllerImpl.UserActivityListener{
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
index f19c49c..d8eecef 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
@@ -62,6 +62,7 @@
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.qs.tiles.DndTile;
@@ -77,7 +78,6 @@
import java.util.Optional;
import javax.inject.Inject;
-import javax.inject.Singleton;
import dagger.Lazy;
@@ -88,7 +88,7 @@
*
* Methods ending in "W" must be called on the worker thread.
*/
-@Singleton
+@SysUISingleton
public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpable {
private static final String TAG = Util.logTag(VolumeDialogControllerImpl.class);
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
index c0b8041..c378e3b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeUI.java
@@ -23,15 +23,15 @@
import com.android.systemui.R;
import com.android.systemui.SystemUI;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.qs.tiles.DndTile;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
-import javax.inject.Singleton;
-@Singleton
+@SysUISingleton
public class VolumeUI extends SystemUI {
private static final String TAG = "VolumeUI";
private static boolean LOGD = Log.isLoggable(TAG, Log.DEBUG);
diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java
index d2c61cc..821150e 100644
--- a/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java
+++ b/packages/SystemUI/src/com/android/systemui/wmshell/WindowManagerShellModule.java
@@ -20,6 +20,7 @@
import android.os.Handler;
import android.view.IWindowManager;
+import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.pip.phone.PipMenuActivity;
import com.android.systemui.pip.phone.dagger.PipMenuActivityClass;
@@ -28,8 +29,6 @@
import com.android.wm.shell.common.SystemWindows;
import com.android.wm.shell.common.TransactionPool;
-import javax.inject.Singleton;
-
import dagger.Module;
import dagger.Provides;
@@ -39,27 +38,27 @@
@Module
// TODO(b/161116823) Clean up dependencies after wm shell migration finished.
public class WindowManagerShellModule {
- @Singleton
+ @SysUISingleton
@Provides
static TransactionPool provideTransactionPool() {
return new TransactionPool();
}
- @Singleton
+ @SysUISingleton
@Provides
static DisplayController provideDisplayController(Context context, @Main Handler handler,
IWindowManager wmService) {
return new DisplayController(context, handler, wmService);
}
- @Singleton
+ @SysUISingleton
@Provides
static SystemWindows provideSystemWindows(DisplayController displayController,
IWindowManager wmService) {
return new SystemWindows(displayController, wmService);
}
- @Singleton
+ @SysUISingleton
@Provides
static DisplayImeController provideDisplayImeController(IWindowManager wmService,
DisplayController displayController, @Main Handler mainHandler,
@@ -69,7 +68,7 @@
}
/** TODO(b/150319024): PipMenuActivity will move to a Window */
- @Singleton
+ @SysUISingleton
@PipMenuActivityClass
@Provides
static Class<?> providePipMenuActivityClass() {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
index 0d52e4f..5999e2c 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
@@ -80,7 +80,7 @@
InjectionInflationController inflationController = new InjectionInflationController(
SystemUIFactory.getInstance()
- .getRootComponent()
+ .getSysUIComponent()
.createViewInstanceCreatorFactory());
LayoutInflater layoutInflater = inflationController
.injectable(LayoutInflater.from(getContext()));
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java
index aa4db32..446b122 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java
@@ -66,7 +66,7 @@
InjectionInflationController inflationController = new InjectionInflationController(
SystemUIFactory.getInstance()
- .getRootComponent()
+ .getSysUIComponent()
.createViewInstanceCreatorFactory());
mLayoutInflater = inflationController.injectable(LayoutInflater.from(mContext));
mLayoutInflater.setPrivateFactory(new LayoutInflater.Factory2() {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java
index 560d581..0bf1376 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java
@@ -52,7 +52,7 @@
mDependency.injectMockDependency(KeyguardUpdateMonitor.class);
InjectionInflationController inflationController = new InjectionInflationController(
SystemUIFactory.getInstance()
- .getRootComponent()
+ .getSysUIComponent()
.createViewInstanceCreatorFactory());
LayoutInflater layoutInflater = inflationController
.injectable(LayoutInflater.from(getContext()));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java b/packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java
index 35be496..5d8e435 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java
@@ -47,7 +47,7 @@
public void testInitDependency() {
Dependency.clearDependencies();
Dependency dependency =
- SystemUIFactory.getInstance().getRootComponent().createDependency();
+ SystemUIFactory.getInstance().getSysUIComponent().createDependency();
dependency.start();
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiBaseFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiBaseFragmentTest.java
index 3687b4c..53bae86 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/SysuiBaseFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiBaseFragmentTest.java
@@ -55,7 +55,7 @@
public void SysuiSetup() {
SystemUIFactory.createFromConfig(mContext);
mDependency = new TestableDependency(
- SystemUIFactory.getInstance().getRootComponent().createDependency());
+ SystemUIFactory.getInstance().getSysUIComponent().createDependency());
Dependency.setInstance(mDependency);
// TODO: Figure out another way to give reference to a SysuiTestableContext.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
index 08e2784..b7175ea 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java
@@ -74,7 +74,7 @@
public void SysuiSetup() throws Exception {
SystemUIFactory.createFromConfig(mContext);
mDependency = new TestableDependency(
- SystemUIFactory.getInstance().getRootComponent().createDependency());
+ SystemUIFactory.getInstance().getSysUIComponent().createDependency());
Dependency.setInstance(mDependency);
mFakeBroadcastDispatcher = new FakeBroadcastDispatcher(mContext, mock(Looper.class),
mock(Executor.class), mock(DumpManager.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java
index 3df0df6..4936360 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java
@@ -201,7 +201,7 @@
when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
mSuperStatusBarViewFactory = new SuperStatusBarViewFactory(mContext,
- new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()
+ new InjectionInflationController(SystemUIFactory.getInstance().getSysUIComponent()
.createViewInstanceCreatorFactory()),
new NotificationShelfComponent.Builder() {
@Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
index 9922d36..b46c6ef 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
@@ -152,7 +152,7 @@
commandQueue),
new InjectionInflationController(
SystemUIFactory.getInstance()
- .getRootComponent()
+ .getSysUIComponent()
.createViewInstanceCreatorFactory()),
mock(QSTileHost.class),
mock(StatusBarStateController.class),
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 ea57cc9..c1d51f3 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
@@ -102,7 +102,7 @@
mController = new NotificationShadeWindowViewController(
new InjectionInflationController(
SystemUIFactory.getInstance()
- .getRootComponent()
+ .getSysUIComponent()
.createViewInstanceCreatorFactory()),
mCoordinator,
mPulseExpansionHandler,