summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Monk <jmonk@google.com> 2018-12-20 13:25:34 -0500
committer Jason Monk <jmonk@google.com> 2018-12-21 09:02:13 -0500
commit196d639875478281d6885114f8a134354a8a098b (patch)
treeb0697c13ab0e614ff4271d00eefa30206f011fc4
parentb93b626cbfaa77f6811e9fdfd3c362b45731661c (diff)
Clean up DependencyProvider a bit
Create DependencyBinder which is abstract and can tell dagger how to convert directly between interfaces and implementations without requiring code for it. Test: compile (which runs dagger) Change-Id: I7013ee12d37172441e2c70cf2fe36f707975c821
-rw-r--r--packages/SystemUI/docs/dagger.md10
-rw-r--r--packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/DependencyBinder.java227
-rw-r--r--packages/SystemUI/src/com/android/systemui/DependencyProvider.java420
-rw-r--r--packages/SystemUI/src/com/android/systemui/ForegroundServiceControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/InitController.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/SystemUIFactory.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/UiOffloadThread.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/DisplayNavigationBarController.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/IconLoggerImpl.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/AsyncSensorManager.java14
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java5
49 files changed, 608 insertions, 429 deletions
diff --git a/packages/SystemUI/docs/dagger.md b/packages/SystemUI/docs/dagger.md
index f81e8cce1f91..7751bb10c5ce 100644
--- a/packages/SystemUI/docs/dagger.md
+++ b/packages/SystemUI/docs/dagger.md
@@ -36,7 +36,8 @@ public interface SystemUIRootComponent {
The root modules are what provides the global singleton dependencies across
SystemUI. ContextHolder is just a wrapper that provides a context.
SystemUIFactory @Provide dependencies that need to be overridden by SystemUI
-variants (like other form factors). DependencyProvider provides or binds any
+variants (like other form factors). DependencyBinder creates the mapping from
+interfaces to implementation classes. DependencyProvider provides or binds any
remaining depedencies required.
### Adding injection to a new SystemUI object
@@ -195,10 +196,5 @@ public CustomView(@Named(VIEW_CONTEXT) Context themedViewContext, AttributeSet a
## TODO List
- - Eliminate usages of Depndency#get
- - Add support for Fragments to handle injection automatically
- - (this could be through dagger2-android or something custom)
- - Reduce number of things with @Provide in DependencyProvider (many can be
- @Inject instead)
- - Migrate as many remaining DependencyProvider instances to @Bind
+ - Eliminate usages of Dependency#get
- Add links in above TODO
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
index 9e7c5ba1d66c..b461f69f10d6 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java
@@ -19,14 +19,22 @@ import android.content.Intent;
import com.android.systemui.plugins.ActivityStarter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Single common instance of ActivityStarter that can be gotten and referenced from anywhere, but
* delegates to an actual implementation such as StatusBar, assuming it exists.
*/
+@Singleton
public class ActivityStarterDelegate implements ActivityStarter {
private ActivityStarter mActualStarter;
+ @Inject
+ public ActivityStarterDelegate() {
+ }
+
@Override
public void startPendingIntentDismissingKeyguard(PendingIntent intent) {
if (mActualStarter == null) {
diff --git a/packages/SystemUI/src/com/android/systemui/DependencyBinder.java b/packages/SystemUI/src/com/android/systemui/DependencyBinder.java
new file mode 100644
index 000000000000..23ef0307feb1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/DependencyBinder.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2018 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 com.android.systemui.appops.AppOpsController;
+import com.android.systemui.appops.AppOpsControllerImpl;
+import com.android.systemui.plugins.ActivityStarter;
+import com.android.systemui.plugins.VolumeDialogController;
+import com.android.systemui.power.PowerNotificationWarnings;
+import com.android.systemui.power.PowerUI;
+import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.phone.DarkIconDispatcherImpl;
+import com.android.systemui.statusbar.phone.ManagedProfileController;
+import com.android.systemui.statusbar.phone.ManagedProfileControllerImpl;
+import com.android.systemui.statusbar.phone.StatusBarIconController;
+import com.android.systemui.statusbar.phone.StatusBarIconControllerImpl;
+import com.android.systemui.statusbar.phone.StatusBarRemoteInputCallback;
+import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.BatteryControllerImpl;
+import com.android.systemui.statusbar.policy.BluetoothController;
+import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
+import com.android.systemui.statusbar.policy.CastController;
+import com.android.systemui.statusbar.policy.CastControllerImpl;
+import com.android.systemui.statusbar.policy.DarkIconDispatcher;
+import com.android.systemui.statusbar.policy.DeviceProvisionedController;
+import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
+import com.android.systemui.statusbar.policy.ExtensionController;
+import com.android.systemui.statusbar.policy.ExtensionControllerImpl;
+import com.android.systemui.statusbar.policy.FlashlightController;
+import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
+import com.android.systemui.statusbar.policy.HotspotController;
+import com.android.systemui.statusbar.policy.HotspotControllerImpl;
+import com.android.systemui.statusbar.policy.IconLogger;
+import com.android.systemui.statusbar.policy.IconLoggerImpl;
+import com.android.systemui.statusbar.policy.KeyguardMonitor;
+import com.android.systemui.statusbar.policy.KeyguardMonitorImpl;
+import com.android.systemui.statusbar.policy.LocationController;
+import com.android.systemui.statusbar.policy.LocationControllerImpl;
+import com.android.systemui.statusbar.policy.NetworkController;
+import com.android.systemui.statusbar.policy.NetworkControllerImpl;
+import com.android.systemui.statusbar.policy.NextAlarmController;
+import com.android.systemui.statusbar.policy.NextAlarmControllerImpl;
+import com.android.systemui.statusbar.policy.RotationLockController;
+import com.android.systemui.statusbar.policy.RotationLockControllerImpl;
+import com.android.systemui.statusbar.policy.SecurityController;
+import com.android.systemui.statusbar.policy.SecurityControllerImpl;
+import com.android.systemui.statusbar.policy.UserInfoController;
+import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
+import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.statusbar.policy.ZenModeControllerImpl;
+import com.android.systemui.tuner.TunerService;
+import com.android.systemui.tuner.TunerServiceImpl;
+import com.android.systemui.volume.VolumeDialogControllerImpl;
+
+import dagger.Binds;
+import dagger.Module;
+
+/**
+ * Maps interfaces to implementations for use with Dagger.
+ */
+@Module
+public abstract class DependencyBinder {
+
+ /**
+ */
+ @Binds
+ public abstract ActivityStarter provideActivityStarter(ActivityStarterDelegate delegate);
+
+ /**
+ */
+ @Binds
+ public abstract BluetoothController provideBluetoothController(
+ BluetoothControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract LocationController provideLocationController(
+ LocationControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract RotationLockController provideRotationLockController(
+ RotationLockControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract NetworkController provideNetworkController(
+ NetworkControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract ZenModeController provideZenModeController(
+ ZenModeControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract HotspotController provideHotspotController(
+ HotspotControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract AppOpsController provideAppOpsController(
+ AppOpsControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract NotificationRemoteInputManager.Callback provideNotificationRemoteInputManager(
+ StatusBarRemoteInputCallback callbackImpl);
+
+ /**
+ */
+ @Binds
+ public abstract IconLogger provideIconLogger(IconLoggerImpl loggerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract CastController provideCastController(CastControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract FlashlightController provideFlashlightController(
+ FlashlightControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract KeyguardMonitor provideKeyguardMonitor(KeyguardMonitorImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract UserInfoController provideUserInfoContrller(
+ UserInfoControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract BatteryController provideBatteryController(
+ BatteryControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract ManagedProfileController provideManagedProfileController(
+ ManagedProfileControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract NextAlarmController provideNextAlarmController(
+ NextAlarmControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract DeviceProvisionedController provideDeviceProvisionedController(
+ DeviceProvisionedControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract SecurityController provideSecurityController(
+ SecurityControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract TunerService provideTunerService(TunerServiceImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract DarkIconDispatcher provideDarkIconDispatcher(
+ DarkIconDispatcherImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract StatusBarIconController provideStatusBarIconController(
+ StatusBarIconControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract ExtensionController provideExtensionController(
+ ExtensionControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract VolumeDialogController provideVolumeDialogController(
+ VolumeDialogControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract ForegroundServiceController provideForegroundService(
+ ForegroundServiceControllerImpl controllerImpl);
+
+ /**
+ */
+ @Binds
+ public abstract PowerUI.WarningsUI provideWarningsUi(PowerNotificationWarnings controllerImpl);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/DependencyProvider.java
index 3ca7b971a468..2b521c53a1e6 100644
--- a/packages/SystemUI/src/com/android/systemui/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/DependencyProvider.java
@@ -18,13 +18,11 @@ package com.android.systemui;
import static com.android.systemui.Dependency.BG_HANDLER_NAME;
import static com.android.systemui.Dependency.BG_LOOPER_NAME;
-import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME;
import static com.android.systemui.Dependency.MAIN_HANDLER_NAME;
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
import android.annotation.Nullable;
import android.content.Context;
-import android.hardware.SensorManager;
import android.hardware.SensorPrivacyManager;
import android.os.Handler;
import android.os.HandlerThread;
@@ -40,82 +38,16 @@ import com.android.internal.app.ColorDisplayController;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.systemui.appops.AppOpsController;
-import com.android.systemui.appops.AppOpsControllerImpl;
-import com.android.systemui.colorextraction.SysuiColorExtractor;
-import com.android.systemui.keyguard.ScreenLifecycle;
-import com.android.systemui.keyguard.WakefulnessLifecycle;
-import com.android.systemui.plugins.ActivityStarter;
-import com.android.systemui.plugins.PluginDependencyProvider;
import com.android.systemui.plugins.PluginInitializerImpl;
-import com.android.systemui.plugins.VolumeDialogController;
-import com.android.systemui.power.PowerNotificationWarnings;
-import com.android.systemui.power.PowerUI;
-import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.shared.plugins.PluginManagerImpl;
-import com.android.systemui.statusbar.DisplayNavigationBarController;
-import com.android.systemui.statusbar.NotificationRemoteInputManager;
-import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
-import com.android.systemui.statusbar.phone.DarkIconDispatcherImpl;
-import com.android.systemui.statusbar.phone.LightBarController;
-import com.android.systemui.statusbar.phone.LockscreenGestureLogger;
-import com.android.systemui.statusbar.phone.ManagedProfileController;
-import com.android.systemui.statusbar.phone.ManagedProfileControllerImpl;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
-import com.android.systemui.statusbar.phone.StatusBarIconController;
-import com.android.systemui.statusbar.phone.StatusBarIconControllerImpl;
-import com.android.systemui.statusbar.phone.StatusBarRemoteInputCallback;
-import com.android.systemui.statusbar.phone.StatusBarWindowController;
-import com.android.systemui.statusbar.policy.AccessibilityController;
-import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
-import com.android.systemui.statusbar.policy.BatteryController;
-import com.android.systemui.statusbar.policy.BatteryControllerImpl;
-import com.android.systemui.statusbar.policy.BluetoothController;
-import com.android.systemui.statusbar.policy.BluetoothControllerImpl;
-import com.android.systemui.statusbar.policy.CastController;
-import com.android.systemui.statusbar.policy.CastControllerImpl;
import com.android.systemui.statusbar.policy.ConfigurationController;
-import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.DataSaverController;
-import com.android.systemui.statusbar.policy.DeviceProvisionedController;
-import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl;
-import com.android.systemui.statusbar.policy.ExtensionController;
-import com.android.systemui.statusbar.policy.ExtensionControllerImpl;
-import com.android.systemui.statusbar.policy.FlashlightController;
-import com.android.systemui.statusbar.policy.FlashlightControllerImpl;
-import com.android.systemui.statusbar.policy.HotspotController;
-import com.android.systemui.statusbar.policy.HotspotControllerImpl;
-import com.android.systemui.statusbar.policy.IconLogger;
-import com.android.systemui.statusbar.policy.IconLoggerImpl;
-import com.android.systemui.statusbar.policy.KeyguardMonitor;
-import com.android.systemui.statusbar.policy.KeyguardMonitorImpl;
-import com.android.systemui.statusbar.policy.LocationController;
-import com.android.systemui.statusbar.policy.LocationControllerImpl;
import com.android.systemui.statusbar.policy.NetworkController;
-import com.android.systemui.statusbar.policy.NetworkControllerImpl;
-import com.android.systemui.statusbar.policy.NextAlarmController;
-import com.android.systemui.statusbar.policy.NextAlarmControllerImpl;
-import com.android.systemui.statusbar.policy.RotationLockController;
-import com.android.systemui.statusbar.policy.RotationLockControllerImpl;
-import com.android.systemui.statusbar.policy.SecurityController;
-import com.android.systemui.statusbar.policy.SecurityControllerImpl;
-import com.android.systemui.statusbar.policy.UserInfoController;
-import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
-import com.android.systemui.statusbar.policy.UserSwitcherController;
-import com.android.systemui.statusbar.policy.ZenModeController;
-import com.android.systemui.statusbar.policy.ZenModeControllerImpl;
-import com.android.systemui.tuner.TunablePadding;
-import com.android.systemui.tuner.TunablePadding.TunablePaddingService;
-import com.android.systemui.tuner.TunerService;
-import com.android.systemui.tuner.TunerServiceImpl;
-import com.android.systemui.util.AsyncSensorManager;
-import com.android.systemui.util.leak.GarbageMonitor;
import com.android.systemui.util.leak.LeakDetector;
-import com.android.systemui.util.leak.LeakReporter;
-import com.android.systemui.volume.VolumeDialogControllerImpl;
import javax.inject.Named;
import javax.inject.Singleton;
@@ -165,256 +97,12 @@ public class DependencyProvider {
@Singleton
@Provides
- public ActivityStarter provideActivityStarter() {
- return new ActivityStarterDelegate();
- }
-
- @Singleton
- @Provides
- public InitController provideInitController() {
- return new InitController();
- }
-
- @Singleton
- @Provides
- public ActivityStarterDelegate provideActivityStarterDelegate(ActivityStarter starter) {
- return (ActivityStarterDelegate) starter;
- }
-
- @Singleton
- @Provides
- public AsyncSensorManager provideAsyncSensorManager(Context context, PluginManager manager) {
- return new AsyncSensorManager(context.getSystemService(SensorManager.class),
- manager);
-
- }
-
- @Singleton
- @Provides
- public BluetoothController provideBluetoothController(Context context,
- @Named(BG_LOOPER_NAME) Looper looper) {
- return new BluetoothControllerImpl(context, looper);
-
- }
-
- @Singleton
- @Provides
- public LocationController provideLocationController(Context context,
- @Named(BG_LOOPER_NAME) Looper bgLooper) {
- return new LocationControllerImpl(context, bgLooper);
-
- }
-
- @Singleton
- @Provides
- public RotationLockController provideRotationLockController(Context context) {
- return new RotationLockControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public NetworkController provideNetworkController(Context context,
- @Named(BG_LOOPER_NAME) Looper bgLooper, DeviceProvisionedController controller) {
- return new NetworkControllerImpl(context, bgLooper,
- controller);
-
- }
-
- @Singleton
- @Provides
- public ZenModeController provideZenModeController(Context context,
- @Named(MAIN_HANDLER_NAME) Handler mainHandler) {
- return new ZenModeControllerImpl(context, mainHandler);
-
- }
-
- @Singleton
- @Provides
- public HotspotController provideHotspotController(Context context) {
- return new HotspotControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public CastController provideCastController(Context context) {
- return new CastControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public FlashlightController provideFlashlightController(Context context) {
- return new FlashlightControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public KeyguardMonitor provideKeyguardMonitor(Context context) {
- return new KeyguardMonitorImpl(context);
-
- }
-
- @Singleton
- @Provides
- public UserSwitcherController provideUserSwitcherController(Context context,
- KeyguardMonitor keyguardMonitor, @Named(MAIN_HANDLER_NAME) Handler mainHandler,
- ActivityStarter activityStarter) {
- return new UserSwitcherController(context, keyguardMonitor, mainHandler, activityStarter);
- }
-
- @Singleton
- @Provides
- public UserInfoController provideUserInfoContrller(Context context) {
- return new UserInfoControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public BatteryController provideBatteryController(Context context) {
- return new BatteryControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public ColorDisplayController provideColorDisplayController(Context context) {
- return new ColorDisplayController(context);
-
- }
-
- @Singleton
- @Provides
- public ManagedProfileController provideManagedProfileController(Context context) {
- return new ManagedProfileControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public NextAlarmController provideNextAlarmController(Context context) {
- return new NextAlarmControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
public DataSaverController provideDataSaverController(NetworkController networkController) {
return networkController.getDataSaverController();
}
@Singleton
@Provides
- public AccessibilityController provideAccessibilityController(Context context) {
- return new AccessibilityController(context);
-
- }
-
- @Singleton
- @Provides
- public DeviceProvisionedController provideDeviceProvisionedController(Context context) {
- return new DeviceProvisionedControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public PluginManager providePluginManager(Context context) {
- return new PluginManagerImpl(context, new PluginInitializerImpl());
-
- }
-
- @Singleton
- @Provides
- public SecurityController provideSecurityController(Context context) {
- return new SecurityControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public LeakDetector provideLeakDetector() {
- return LeakDetector.create();
-
- }
-
- @Singleton
- @Provides
- public LeakReporter provideLeakReporter(Context context, LeakDetector detector,
- @Nullable @Named(LEAK_REPORT_EMAIL_NAME) String email) {
- return new LeakReporter(context, detector, email);
- }
-
- @Singleton
- @Provides
- public GarbageMonitor provideGarbageMonitor(Context context,
- @Named(BG_LOOPER_NAME) Looper bgLooper, LeakDetector detector, LeakReporter reporter) {
- return new GarbageMonitor(context, bgLooper, detector, reporter);
- }
-
- @Singleton
- @Provides
- public TunerService provideTunerService(Context context) {
- return new TunerServiceImpl(context);
-
- }
-
- @Singleton
- @Provides
- public StatusBarWindowController provideStatusBarWindowController(Context context) {
- return new StatusBarWindowController(context);
-
- }
-
- @Singleton
- @Provides
- public DarkIconDispatcher provideDarkIconDispatcher(Context context) {
- return new DarkIconDispatcherImpl(context);
- }
-
- @Singleton
- @Provides
- public ConfigurationController provideConfigurationController(Context context) {
- return new ConfigurationControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public StatusBarIconController provideStatusBarIconController(Context context) {
- return new StatusBarIconControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public ScreenLifecycle provideScreenLifecycle() {
- return new ScreenLifecycle();
- }
-
- @Singleton
- @Provides
- public WakefulnessLifecycle provideWakefulnessLifecycle() {
- return new WakefulnessLifecycle();
- }
-
- @Singleton
- @Provides
- public ExtensionController provideExtensionController(Context context) {
- return new ExtensionControllerImpl(context);
- }
-
- @Singleton
- @Provides
- public PluginDependencyProvider providePluginDependency(PluginManager pluginManager) {
- return new PluginDependencyProvider(pluginManager);
- }
-
- @Singleton
- @Provides
@Nullable
public LocalBluetoothManager provideLocalBluetoothController(Context context,
@Named(BG_HANDLER_NAME) Handler bgHandler) {
@@ -424,72 +112,8 @@ public class DependencyProvider {
@Singleton
@Provides
- public VolumeDialogController provideVolumeDialogController(Context context) {
- return new VolumeDialogControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
public MetricsLogger provideMetricsLogger() {
return new MetricsLogger();
-
- }
-
- @Singleton
- @Provides
- public AccessibilityManagerWrapper provideAccessibilityManagerWrapper(Context context) {
- return new AccessibilityManagerWrapper(context);
-
- }
-
- @Singleton
- @Provides
- // Creating a new instance will trigger color extraction.
- // Thankfully this only happens once - during boot - and WallpaperManagerService
- // loads colors from cache.
- public SysuiColorExtractor provideSysuiColorExtractor(Context context) {
- return new SysuiColorExtractor(context);
-
- }
-
- @Singleton
- @Provides
- public TunablePadding.TunablePaddingService provideTunablePaddingService() {
- return new TunablePaddingService();
-
- }
-
- @Singleton
- @Provides
- public ForegroundServiceController provideForegroundService(Context context) {
- return new ForegroundServiceControllerImpl(context);
-
- }
-
- @Singleton
- @Provides
- public UiOffloadThread provideUiOffloadThread() {
- return new UiOffloadThread();
- }
-
- @Singleton
- @Provides
- public PowerUI.WarningsUI provideWarningsUi(Context context) {
- return new PowerNotificationWarnings(context);
- }
-
- @Singleton
- @Provides
- public IconLogger provideIconLogger(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper,
- MetricsLogger logger) {
- return new IconLoggerImpl(context, bgLooper, logger);
- }
-
- @Singleton
- @Provides
- public LightBarController provideLightBarController(Context context) {
- return new LightBarController(context);
}
@Singleton
@@ -500,19 +124,6 @@ public class DependencyProvider {
@Singleton
@Provides
- public OverviewProxyService provideOverviewProxyService(Context context) {
- return new OverviewProxyService(context);
- }
-
- @Singleton
- @Provides
- public VibratorHelper provideVibratorHelper(Context context) {
- return new VibratorHelper(context);
-
- }
-
- @Singleton
- @Provides
public IStatusBarService provideIStatusBarService() {
return IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
@@ -521,50 +132,45 @@ public class DependencyProvider {
@Singleton
@Provides
// Single instance of DisplayMetrics, gets updated by StatusBar, but can be used
-// anywhere it is needed.
+ // anywhere it is needed.
public DisplayMetrics provideDisplayMetrics() {
return new DisplayMetrics();
-
}
@Singleton
@Provides
- public LockscreenGestureLogger provideLockscreenGestureLogger() {
- return new LockscreenGestureLogger();
+ public ShadeController provideShadeController(Context context) {
+ return SysUiServiceProvider.getComponent(context, StatusBar.class);
}
@Singleton
@Provides
- public ShadeController provideShadeController(Context context) {
- return SysUiServiceProvider.getComponent(context, StatusBar.class);
+ public SensorPrivacyManager provideSensorPrivacyManager(Context context) {
+ return context.getSystemService(SensorPrivacyManager.class);
}
@Singleton
@Provides
- public NotificationRemoteInputManager.Callback provideNotificationRemoteInputManager(
- Context context) {
- return new StatusBarRemoteInputCallback(context);
+ public LeakDetector provideLeakDetector() {
+ return LeakDetector.create();
}
@Singleton
@Provides
- public AppOpsController provideAppOpsController(Context context,
- @Named(BG_LOOPER_NAME) Looper bgLooper) {
- return new AppOpsControllerImpl(context, bgLooper);
-
+ public ColorDisplayController provideColorDisplayController(Context context) {
+ return new ColorDisplayController(context);
}
@Singleton
@Provides
- public DisplayNavigationBarController provideDisplayNavigationBarController(Context context,
- @Named(MAIN_HANDLER_NAME) Handler mainHandler) {
- return new DisplayNavigationBarController(context, mainHandler);
+ public PluginManager providePluginManager(Context context) {
+ return new PluginManagerImpl(context, new PluginInitializerImpl());
}
@Singleton
@Provides
- public SensorPrivacyManager provideSensorPrivacyManager(Context context) {
- return context.getSystemService(SensorPrivacyManager.class);
+ public ConfigurationController provideConfigurationController(Context context) {
+ return new ConfigurationControllerImpl(context);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceControllerImpl.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceControllerImpl.java
index bab472c2e687..ae446ddc91ab 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceControllerImpl.java
@@ -29,9 +29,13 @@ import com.android.internal.messages.nano.SystemMessageProto;
import java.util.Arrays;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Foreground service controller, a/k/a Dianne's Dungeon.
*/
+@Singleton
public class ForegroundServiceControllerImpl
implements ForegroundServiceController {
@@ -45,6 +49,7 @@ public class ForegroundServiceControllerImpl
private final SparseArray<UserServices> mUserServices = new SparseArray<>();
private final Object mMutex = new Object();
+ @Inject
public ForegroundServiceControllerImpl(Context context) {
mContext = context;
}
diff --git a/packages/SystemUI/src/com/android/systemui/InitController.java b/packages/SystemUI/src/com/android/systemui/InitController.java
index 81d32517b27a..a2dd12389fa9 100644
--- a/packages/SystemUI/src/com/android/systemui/InitController.java
+++ b/packages/SystemUI/src/com/android/systemui/InitController.java
@@ -16,10 +16,14 @@ package com.android.systemui;
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
public class InitController {
/**
@@ -29,6 +33,10 @@ public class InitController {
private final ArrayList<Runnable> mTasks = new ArrayList<>();
+ @Inject
+ public InitController() {
+ }
+
/**
* Add a task to be executed after {@link Dependency#start()}
* @param runnable the task to be executed
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index 384a14c70e9c..8bac7c590249 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -221,7 +221,8 @@ public class SystemUIFactory {
}
@Singleton
- @Component(modules = {SystemUIFactory.class, DependencyProvider.class, ContextHolder.class})
+ @Component(modules = {SystemUIFactory.class, DependencyProvider.class, DependencyBinder.class,
+ ContextHolder.class})
public interface SystemUIRootComponent {
@Singleton
Dependency.DependencyInjector createDependency();
diff --git a/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java b/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
index 82fd9b304195..a726b42f714f 100644
--- a/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
+++ b/packages/SystemUI/src/com/android/systemui/UiOffloadThread.java
@@ -20,14 +20,22 @@ 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
public class UiOffloadThread {
private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor();
+ @Inject
+ public UiOffloadThread() {
+ }
+
public Future<?> submit(Runnable runnable) {
return mExecutorService.submit(runnable);
}
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
index af6ee1f4179a..e3bcb37474db 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
@@ -16,6 +16,8 @@
package com.android.systemui.appops;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
+
import android.app.AppOpsManager;
import android.content.Context;
import android.os.Handler;
@@ -32,12 +34,17 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/**
* Controller to keep track of applications that have requested access to given App Ops
*
* It can be subscribed to with callbacks. Additionally, it passes on the information to
* NotificationPresenter to be displayed to the user.
*/
+@Singleton
public class AppOpsControllerImpl implements AppOpsController,
AppOpsManager.OnOpActiveChangedListener,
AppOpsManager.OnOpNotedListener {
@@ -65,7 +72,8 @@ public class AppOpsControllerImpl implements AppOpsController,
AppOpsManager.OP_FINE_LOCATION
};
- public AppOpsControllerImpl(Context context, Looper bgLooper) {
+ @Inject
+ public AppOpsControllerImpl(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper) {
mContext = context;
mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mBGHandler = new H(bgLooper);
diff --git a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
index 3c8a461d3f73..fdf18ce24f50 100644
--- a/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
+++ b/packages/SystemUI/src/com/android/systemui/colorextraction/SysuiColorExtractor.java
@@ -39,9 +39,13 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* ColorExtractor aware of wallpaper visibility
*/
+@Singleton
public class SysuiColorExtractor extends ColorExtractor implements Dumpable {
private static final String TAG = "SysuiColorExtractor";
private boolean mWallpaperVisible;
@@ -49,6 +53,7 @@ public class SysuiColorExtractor extends ColorExtractor implements Dumpable {
// Colors to return when the wallpaper isn't visible
private final GradientColors mWpHiddenColors;
+ @Inject
public SysuiColorExtractor(Context context) {
this(context, new Tonal(context), true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
index b6fce4408bcf..834bca55103a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ScreenLifecycle.java
@@ -23,9 +23,13 @@ import com.android.systemui.Dumpable;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Tracks the screen lifecycle.
*/
+@Singleton
public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> implements Dumpable {
public static final int SCREEN_OFF = 0;
@@ -35,6 +39,10 @@ public class ScreenLifecycle extends Lifecycle<ScreenLifecycle.Observer> impleme
private int mScreenState = SCREEN_OFF;
+ @Inject
+ public ScreenLifecycle() {
+ }
+
public int getScreenState() {
return mScreenState;
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
index 59c7f236caf7..52a0214c492c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java
@@ -23,9 +23,13 @@ import com.android.systemui.Dumpable;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Tracks the wakefulness lifecycle.
*/
+@Singleton
public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observer> implements
Dumpable {
@@ -36,6 +40,10 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe
private int mWakefulness = WAKEFULNESS_ASLEEP;
+ @Inject
+ public WakefulnessLifecycle() {
+ }
+
public int getWakefulness() {
return mWakefulness;
}
diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
index 03daa95567ee..69495319e060 100644
--- a/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginDependencyProvider.java
@@ -20,11 +20,20 @@ import com.android.systemui.Dependency;
import com.android.systemui.plugins.PluginDependency.DependencyProvider;
import com.android.systemui.shared.plugins.PluginManager;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class PluginDependencyProvider extends DependencyProvider {
private final ArrayMap<Class<?>, Object> mDependencies = new ArrayMap<>();
private final PluginManager mManager;
+ /**
+ */
+ @Inject
public PluginDependencyProvider(PluginManager manager) {
mManager = manager;
PluginDependency.sProvider = this;
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index b722f9f1d1c1..50dda1c1de6b 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -58,6 +58,12 @@ import java.text.NumberFormat;
import java.util.Locale;
import java.util.Objects;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class PowerNotificationWarnings implements PowerUI.WarningsUI {
private static final String TAG = PowerUI.TAG + ".Notification";
private static final boolean DEBUG = PowerUI.DEBUG;
@@ -136,6 +142,9 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI {
private SystemUIDialog mHighTempDialog;
private SystemUIDialog mThermalShutdownDialog;
+ /**
+ */
+ @Inject
public PowerNotificationWarnings(Context context) {
mContext = context;
mNoMan = mContext.getSystemService(NotificationManager.class);
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
index 12b6f673de1c..538e0f0de415 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java
@@ -63,9 +63,13 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Class to send information from overview to launcher with a binder.
*/
+@Singleton
public class OverviewProxyService implements CallbackController<OverviewProxyListener>, Dumpable {
private static final String ACTION_QUICKSTEP = "android.intent.action.QUICKSTEP_SERVICE";
@@ -338,6 +342,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
private final IBinder.DeathRecipient mOverviewServiceDeathRcpt
= this::cleanupAfterDeath;
+ @Inject
public OverviewProxyService(Context context) {
mContext = context;
mHandler = new Handler();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/DisplayNavigationBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/DisplayNavigationBarController.java
index 2f2610998b35..78172f19d291 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/DisplayNavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/DisplayNavigationBarController.java
@@ -18,6 +18,8 @@ package com.android.systemui.statusbar;
import static android.view.Display.DEFAULT_DISPLAY;
+import static com.android.systemui.Dependency.MAIN_HANDLER_NAME;
+
import android.content.Context;
import android.hardware.display.DisplayManager;
import android.hardware.display.DisplayManager.DisplayListener;
@@ -32,9 +34,14 @@ import android.view.WindowManagerGlobal;
import com.android.systemui.statusbar.phone.NavigationBarFragment;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/**
* A controller to handle external navigation bars
*/
+@Singleton
public class DisplayNavigationBarController implements DisplayListener {
private static final String TAG = DisplayNavigationBarController.class.getName();
@@ -46,7 +53,9 @@ public class DisplayNavigationBarController implements DisplayListener {
/** A displayId - nav bar mapping */
private SparseArray<NavigationBarFragment> mExternalNavigationBarMap = new SparseArray<>();
- public DisplayNavigationBarController(Context context, Handler handler) {
+ @Inject
+ public DisplayNavigationBarController(Context context,
+ @Named(MAIN_HANDLER_NAME) Handler handler) {
mContext = context;
mHandler = handler;
mDisplayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
index 6560f8f9c420..442416fd3bea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/VibratorHelper.java
@@ -26,6 +26,12 @@ import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class VibratorHelper {
private final Vibrator mVibrator;
@@ -44,6 +50,9 @@ public class VibratorHelper {
}
};
+ /**
+ */
+ @Inject
public VibratorHelper(Context context) {
mContext = context;
mVibrator = context.getSystemService(Vibrator.class);
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 5906dc29fa08..5b44a77454b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DarkIconDispatcherImpl.java
@@ -29,6 +29,12 @@ import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class DarkIconDispatcherImpl implements DarkIconDispatcher {
private final LightBarTransitionsController mTransitionsController;
@@ -40,6 +46,9 @@ public class DarkIconDispatcherImpl implements DarkIconDispatcher {
private int mDarkModeIconColorSingleTone;
private int mLightModeIconColorSingleTone;
+ /**
+ */
+ @Inject
public DarkIconDispatcherImpl(Context context) {
mDarkModeIconColorSingleTone = context.getColor(R.color.dark_mode_icon_color_single_tone);
mLightModeIconColorSingleTone = context.getColor(R.color.light_mode_icon_color_single_tone);
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 7c30e48f171a..e156e770cb72 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LightBarController.java
@@ -34,9 +34,13 @@ import com.android.systemui.statusbar.policy.DarkIconDispatcher;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Controls how light status bar flag applies to the icons.
*/
+@Singleton
public class LightBarController implements BatteryController.BatteryStateChangeCallback, Dumpable {
private static final float NAV_BAR_INVERSION_SCRIM_ALPHA_THRESHOLD = 0.1f;
@@ -78,6 +82,7 @@ public class LightBarController implements BatteryController.BatteryStateChangeC
private final Context mContext;
+ @Inject
public LightBarController(Context ctx) {
mDarkModeColor = Color.valueOf(ctx.getColor(R.color.dark_mode_icon_color_single_tone));
mStatusBarIconController = Dependency.get(DarkIconDispatcher.class);
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 7621887b4170..12819535cfb6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockscreenGestureLogger.java
@@ -25,16 +25,21 @@ import com.android.systemui.Dependency;
import com.android.systemui.EventLogConstants;
import com.android.systemui.EventLogTags;
+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
public class LockscreenGestureLogger {
private ArrayMap<Integer, Integer> mLegacyMap;
private LogMaker mLogMaker = new LogMaker(MetricsEvent.VIEW_UNKNOWN)
.setType(MetricsEvent.TYPE_ACTION);
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
+ @Inject
public LockscreenGestureLogger() {
mLegacyMap = new ArrayMap<>(EventLogConstants.METRICS_GESTURE_TYPE_MAP.length);
for (int i = 0; i < EventLogConstants.METRICS_GESTURE_TYPE_MAP.length ; i++) {
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 0f8d59b12ddb..fbd8d8a76d26 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ManagedProfileControllerImpl.java
@@ -28,6 +28,12 @@ import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class ManagedProfileControllerImpl implements ManagedProfileController {
private final List<Callback> mCallbacks = new ArrayList<>();
@@ -38,6 +44,9 @@ public class ManagedProfileControllerImpl implements ManagedProfileController {
private boolean mListening;
private int mCurrentUser;
+ /**
+ */
+ @Inject
public ManagedProfileControllerImpl(Context context) {
mContext = context;
mUserManager = UserManager.get(mContext);
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 4f25349ef7d2..db7589d0f333 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java
@@ -45,11 +45,15 @@ import java.io.PrintWriter;
import java.util.ArrayList;
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
public class StatusBarIconControllerImpl extends StatusBarIconList implements Tunable,
ConfigurationListener, Dumpable, CommandQueue.Callbacks, StatusBarIconController {
@@ -66,6 +70,7 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
private boolean mIsDark = false;
+ @Inject
public StatusBarIconControllerImpl(Context context) {
super(context.getResources().getStringArray(
com.android.internal.R.array.config_statusBarIcons));
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 78f537459d0a..116ecc8ddeb5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
@@ -47,6 +47,12 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.PreviewInflater;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class StatusBarRemoteInputCallback implements Callback, Callbacks {
private final KeyguardMonitor mKeyguardMonitor = Dependency.get(KeyguardMonitor.class);
@@ -65,6 +71,9 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks {
private int mDisabled2;
protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver();
+ /**
+ */
+ @Inject
public StatusBarRemoteInputCallback(Context context) {
mContext = context;
mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL,
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 cb6e30070fdd..88f904882c8f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
@@ -54,9 +54,13 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.reflect.Field;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Encapsulates all logic for the status bar window state management.
*/
+@Singleton
public class StatusBarWindowController implements Callback, Dumpable, ConfigurationListener {
private static final String TAG = "StatusBarWindowController";
@@ -78,6 +82,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
+ @Inject
public StatusBarWindowController(Context context) {
this(context, context.getSystemService(WindowManager.class), ActivityManager.getService(),
DozeParameters.getInstance(context));
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 cc431dd3c34a..ebfdb3f9aa76 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityController.java
@@ -23,6 +23,12 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class AccessibilityController implements
AccessibilityManager.AccessibilityStateChangeListener,
AccessibilityManager.TouchExplorationStateChangeListener {
@@ -32,6 +38,9 @@ public class AccessibilityController implements
private boolean mAccessibilityEnabled;
private boolean mTouchExplorationEnabled;
+ /**
+ */
+ @Inject
public AccessibilityController(Context context) {
AccessibilityManager am =
(AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
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 67da8a54b68a..1395e1377529 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java
@@ -19,14 +19,19 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* For mocking because AccessibilityManager is final for some reason...
*/
+@Singleton
public class AccessibilityManagerWrapper implements
CallbackController<AccessibilityServicesStateChangeListener> {
private final AccessibilityManager mAccessibilityManager;
+ @Inject
public AccessibilityManagerWrapper(Context context) {
mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
}
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 ddcfbf6f3c31..5d61f4aa7fcb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java
@@ -39,10 +39,14 @@ import java.io.PrintWriter;
import java.text.NumberFormat;
import java.util.ArrayList;
+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
public class BatteryControllerImpl extends BroadcastReceiver implements BatteryController {
private static final String TAG = "BatteryController";
@@ -68,6 +72,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
private Estimate mEstimate;
private long mLastEstimateTimestamp = -1;
+ @Inject
public BatteryControllerImpl(Context context) {
this(context, context.getSystemService(PowerManager.class));
}
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 6f64a563289e..c8550003d2f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.policy;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
+
import android.app.ActivityManager;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -42,6 +44,13 @@ import java.util.Collection;
import java.util.List;
import java.util.WeakHashMap;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class BluetoothControllerImpl implements BluetoothController, BluetoothCallback,
CachedBluetoothDevice.Callback, LocalBluetoothProfileManager.ServiceListener {
private static final String TAG = "BluetoothController";
@@ -61,7 +70,10 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
private final H mHandler = new H(Looper.getMainLooper());
private int mState;
- public BluetoothControllerImpl(Context context, Looper bgLooper) {
+ /**
+ */
+ @Inject
+ public BluetoothControllerImpl(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper) {
mLocalBluetoothManager = Dependency.get(LocalBluetoothManager.class);
mBgHandler = new Handler(bgLooper);
if (mLocalBluetoothManager != null) {
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 ccfe073d5cb8..c7d337ad46d6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CastControllerImpl.java
@@ -44,8 +44,12 @@ import java.util.Objects;
import java.util.Set;
import java.util.UUID;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/** Platform implementation of the cast controller. **/
+@Singleton
public class CastControllerImpl implements CastController {
private static final String TAG = "CastController";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -63,6 +67,7 @@ public class CastControllerImpl implements CastController {
private boolean mCallbackRegistered;
private MediaProjectionInfo mProjection;
+ @Inject
public CastControllerImpl(Context context) {
mContext = context;
mMediaRouter = (MediaRouter) context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
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 f2283a53a608..c995162c8bb1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceProvisionedControllerImpl.java
@@ -27,6 +27,12 @@ import com.android.systemui.settings.CurrentUserTracker;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class DeviceProvisionedControllerImpl extends CurrentUserTracker implements
DeviceProvisionedController {
@@ -36,6 +42,9 @@ public class DeviceProvisionedControllerImpl extends CurrentUserTracker implemen
private final Uri mDeviceProvisionedUri;
private final Uri mUserSetupUri;
+ /**
+ */
+ @Inject
public DeviceProvisionedControllerImpl(Context context) {
super(context);
mContext = context;
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 a6146a625193..2305db0dbf8d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ExtensionControllerImpl.java
@@ -34,6 +34,12 @@ import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Supplier;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class ExtensionControllerImpl implements ExtensionController {
public static final int SORT_ORDER_PLUGIN = 0;
@@ -44,6 +50,9 @@ public class ExtensionControllerImpl implements ExtensionController {
private final Context mDefaultContext;
+ /**
+ */
+ @Inject
public ExtensionControllerImpl(Context context) {
mDefaultContext = context;
}
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 e23ce2d022b3..41ff9d1029b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/FlashlightControllerImpl.java
@@ -35,9 +35,13 @@ 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
public class FlashlightControllerImpl implements FlashlightController {
private static final String TAG = "FlashlightController";
@@ -64,6 +68,7 @@ public class FlashlightControllerImpl implements FlashlightController {
private String mCameraId;
private boolean mTorchAvailable;
+ @Inject
public FlashlightControllerImpl(Context context) {
mContext = context;
mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
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 0a72c3f9e8d8..420abe88f455 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
@@ -29,6 +29,12 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class HotspotControllerImpl implements HotspotController, WifiManager.SoftApCallback {
private static final String TAG = "HotspotController";
@@ -43,6 +49,9 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof
private int mNumConnectedDevices;
private boolean mWaitingForTerminalState;
+ /**
+ */
+ @Inject
public HotspotControllerImpl(Context context) {
mContext = context;
mConnectivityManager =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IconLoggerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IconLoggerImpl.java
index aee021ce4688..ba6369e2c90e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IconLoggerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IconLoggerImpl.java
@@ -18,6 +18,7 @@ import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_STATUS_ICONS;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.STATUS_BAR_ICONS_CHANGED;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_ACTION;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
import android.content.Context;
import android.metrics.LogMaker;
@@ -32,6 +33,9 @@ import com.android.internal.logging.MetricsLogger;
import java.util.Arrays;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
+
public class IconLoggerImpl implements IconLogger {
// Minimum ms between log statements.
@@ -46,7 +50,9 @@ public class IconLoggerImpl implements IconLogger {
private final List<String> mIconIndex;
private long mLastLog = System.currentTimeMillis();
- public IconLoggerImpl(Context context, Looper bgLooper, MetricsLogger logger) {
+ @Inject
+ public IconLoggerImpl(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper,
+ MetricsLogger logger) {
mContext = context;
mHandler = new Handler(bgLooper);
mLogger = logger;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java
index 5eb0fb76794d..3c8ed6ebf279 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardMonitorImpl.java
@@ -25,6 +25,12 @@ import com.android.systemui.settings.CurrentUserTracker;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback
implements KeyguardMonitor {
@@ -47,6 +53,9 @@ public class KeyguardMonitorImpl extends KeyguardUpdateMonitorCallback
private boolean mKeyguardGoingAway;
private boolean mLaunchTransitionFadingAway;
+ /**
+ */
+ @Inject
public KeyguardMonitorImpl(Context context) {
mContext = context;
mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
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 840e77ea85a2..683cdbb326dc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/LocationControllerImpl.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.policy;
import static com.android.settingslib.Utils.updateLocationEnabled;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
import android.app.ActivityManager;
import android.app.AppOpsManager;
@@ -40,9 +41,14 @@ import com.android.systemui.util.Utils;
import java.util.ArrayList;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/**
* A controller to manage changes of location related states and update the views accordingly.
*/
+@Singleton
public class LocationControllerImpl extends BroadcastReceiver implements LocationController {
private static final int[] mHighPowerRequestAppOpArray
@@ -59,7 +65,8 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
new ArrayList<LocationChangeCallback>();
private final H mHandler = new H();
- public LocationControllerImpl(Context context, Looper bgLooper) {
+ @Inject
+ public LocationControllerImpl(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper) {
mContext = context;
// Register to listen for changes in location settings.
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 bc43120fcefa..9422101c76dd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -22,6 +22,8 @@ import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_IN
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_NONE;
import static android.net.wifi.WifiManager.TrafficStateCallback.DATA_ACTIVITY_OUT;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
+
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -65,7 +67,6 @@ import com.android.systemui.statusbar.policy.MobileSignalController.MobileIconGr
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.BitSet;
import java.util.Collections;
import java.util.Comparator;
@@ -74,7 +75,12 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/** Platform implementation of the network controller. **/
+@Singleton
public class NetworkControllerImpl extends BroadcastReceiver
implements NetworkController, DemoMode, DataUsageController.NetworkNameProvider,
ConfigurationChangedReceiver, Dumpable {
@@ -154,7 +160,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
/**
* Construct this controller object and register for updates.
*/
- public NetworkControllerImpl(Context context, Looper bgLooper,
+ @Inject
+ public NetworkControllerImpl(Context context, @Named(BG_LOOPER_NAME) Looper bgLooper,
DeviceProvisionedController deviceProvisionedController) {
this(context, (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE),
(TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE),
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 dac878c69313..288b3aff2af6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NextAlarmControllerImpl.java
@@ -27,6 +27,13 @@ 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
public class NextAlarmControllerImpl extends BroadcastReceiver
implements NextAlarmController {
@@ -35,6 +42,9 @@ public class NextAlarmControllerImpl extends BroadcastReceiver
private AlarmManager mAlarmManager;
private AlarmManager.AlarmClockInfo mNextAlarm;
+ /**
+ */
+ @Inject
public NextAlarmControllerImpl(Context context) {
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
IntentFilter filter = new IntentFilter();
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 5418dc14e0bb..1f368e164678 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java
@@ -23,7 +23,11 @@ import com.android.internal.view.RotationPolicy;
import java.util.concurrent.CopyOnWriteArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/** Platform implementation of the rotation lock controller. **/
+@Singleton
public final class RotationLockControllerImpl implements RotationLockController {
private final Context mContext;
private final CopyOnWriteArrayList<RotationLockControllerCallback> mCallbacks =
@@ -37,6 +41,7 @@ public final class RotationLockControllerImpl implements RotationLockController
}
};
+ @Inject
public RotationLockControllerImpl(Context context) {
mContext = context;
setListening(true);
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 29a6b956ed1e..e0259c9f5af7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
@@ -55,6 +55,12 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class SecurityControllerImpl extends CurrentUserTracker implements SecurityController {
private static final String TAG = "SecurityController";
@@ -90,6 +96,9 @@ public class SecurityControllerImpl extends CurrentUserTracker implements Securi
// Needs to be cached here since the query has to be asynchronous
private ArrayMap<Integer, Boolean> mHasCACerts = new ArrayMap<Integer, Boolean>();
+ /**
+ */
+ @Inject
public SecurityControllerImpl(Context context) {
this(context, null);
}
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 fed803217568..0ca6ff6ec66e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserInfoControllerImpl.java
@@ -40,6 +40,12 @@ import com.android.systemui.R;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class UserInfoControllerImpl implements UserInfoController {
private static final String TAG = "UserInfoController";
@@ -53,6 +59,9 @@ public class UserInfoControllerImpl implements UserInfoController {
private Drawable mUserDrawable;
private String mUserAccount;
+ /**
+ */
+ @Inject
public UserInfoControllerImpl(Context context) {
mContext = context;
IntentFilter filter = new IntentFilter();
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 15b2f2bcb755..e412e09fe519 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.policy;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+import static com.android.systemui.Dependency.MAIN_HANDLER_NAME;
import android.app.ActivityManager;
import android.app.Dialog;
@@ -68,9 +69,14 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/**
* Keeps a list of all users on the device for user switching.
*/
+@Singleton
public class UserSwitcherController implements Dumpable {
private static final String TAG = "UserSwitcherController";
@@ -102,8 +108,9 @@ public class UserSwitcherController implements Dumpable {
private Intent mSecondaryUserServiceIntent;
private SparseBooleanArray mForcePictureLoadForUserId = new SparseBooleanArray(2);
+ @Inject
public UserSwitcherController(Context context, KeyguardMonitor keyguardMonitor,
- Handler handler, ActivityStarter activityStarter) {
+ @Named(MAIN_HANDLER_NAME) Handler handler, ActivityStarter activityStarter) {
mContext = context;
mGuestResumeSessionReceiver.register(context);
mKeyguardMonitor = keyguardMonitor;
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 89ccff03133d..7198165456c3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.policy;
+import static com.android.systemui.Dependency.MAIN_HANDLER_NAME;
+
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.NotificationManager;
@@ -48,7 +50,12 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Objects;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
/** Platform implementation of the zen mode controller. **/
+@Singleton
public class ZenModeControllerImpl extends CurrentUserTracker
implements ZenModeController, Dumpable {
private static final String TAG = "ZenModeController";
@@ -71,7 +78,8 @@ public class ZenModeControllerImpl extends CurrentUserTracker
private long mZenUpdateTime;
private NotificationManager.Policy mConsolidatedNotificationPolicy;
- public ZenModeControllerImpl(Context context, Handler handler) {
+ @Inject
+ public ZenModeControllerImpl(Context context, @Named(MAIN_HANDLER_NAME) Handler handler) {
super(context);
mContext = context;
mModeSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE) {
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java b/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
index e85dee841715..81d77a64c1f0 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunablePadding.java
@@ -21,6 +21,9 @@ import android.view.WindowManager;
import com.android.systemui.Dependency;
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.
*/
@@ -69,8 +72,18 @@ public class TunablePadding implements Tunable {
Dependency.get(TunerService.class).removeTunable(this);
}
- // Exists for easy injecting in tests.
+ /**
+ * Exists for easy injecting in tests.
+ */
+ @Singleton
public static class TunablePaddingService {
+
+ /**
+ */
+ @Inject
+ public TunablePaddingService() {
+ }
+
public TunablePadding add(View view, String key, int defaultSize, int flags) {
if (view == null) {
throw new IllegalArgumentException();
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
index 196d9bc32e75..0a47f19ac2f5 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java
@@ -43,7 +43,13 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class TunerServiceImpl extends TunerService {
private static final String TUNER_VERSION = "sysui_tuner_version";
@@ -70,6 +76,9 @@ public class TunerServiceImpl extends TunerService {
private int mCurrentUser;
private CurrentUserTracker mUserTracker;
+ /**
+ */
+ @Inject
public TunerServiceImpl(Context context) {
mContext = context;
mContentResolver = mContext.getContentResolver();
diff --git a/packages/SystemUI/src/com/android/systemui/util/AsyncSensorManager.java b/packages/SystemUI/src/com/android/systemui/util/AsyncSensorManager.java
index 88cbbb574aff..31f4991a82b5 100644
--- a/packages/SystemUI/src/com/android/systemui/util/AsyncSensorManager.java
+++ b/packages/SystemUI/src/com/android/systemui/util/AsyncSensorManager.java
@@ -38,6 +38,9 @@ import com.android.systemui.shared.plugins.PluginManager;
import java.util.ArrayList;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Wrapper around sensor manager that hides potential sources of latency.
*
@@ -45,6 +48,7 @@ import java.util.List;
* without blocking. Note that this means registering listeners now always appears successful even
* if it is not.
*/
+@Singleton
public class AsyncSensorManager extends SensorManager
implements PluginListener<SensorManagerPlugin> {
@@ -56,8 +60,14 @@ public class AsyncSensorManager extends SensorManager
@VisibleForTesting final Handler mHandler;
private final List<SensorManagerPlugin> mPlugins;
- public AsyncSensorManager(SensorManager inner, PluginManager pluginManager) {
- mInner = inner;
+ @Inject
+ public AsyncSensorManager(Context context, PluginManager pluginManager) {
+ this(context.getSystemService(SensorManager.class), pluginManager);
+ }
+
+ @VisibleForTesting
+ AsyncSensorManager(SensorManager sensorManager, PluginManager pluginManager) {
+ mInner = sensorManager;
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
mSensorCache = mInner.getSensorList(Sensor.TYPE_ALL);
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 b2cc2694916e..7bc96261782d 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
@@ -17,6 +17,7 @@
package com.android.systemui.util.leak;
import static com.android.internal.logging.MetricsLogger.VIEW_UNKNOWN;
+import static com.android.systemui.Dependency.BG_LOOPER_NAME;
import android.app.ActivityManager;
import android.content.Context;
@@ -51,6 +52,13 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+/**
+ */
+@Singleton
public class GarbageMonitor {
private static final boolean LEAK_REPORTING_ENABLED =
Build.IS_DEBUGGABLE
@@ -85,9 +93,12 @@ public class GarbageMonitor {
private long mHeapLimit;
+ /**
+ */
+ @Inject
public GarbageMonitor(
Context context,
- Looper bgLooper,
+ @Named(BG_LOOPER_NAME) Looper bgLooper,
LeakDetector leakDetector,
LeakReporter leakReporter) {
mContext = context.getApplicationContext();
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 a47e99d1e84d..b25df5f9c07f 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/LeakReporter.java
@@ -16,6 +16,9 @@
package com.android.systemui.util.leak;
+import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME;
+
+import android.annotation.Nullable;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -39,9 +42,14 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
+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
public class LeakReporter {
static final String TAG = "LeakReporter";
@@ -56,7 +64,9 @@ public class LeakReporter {
private final LeakDetector mLeakDetector;
private final String mLeakReportEmail;
- public LeakReporter(Context context, LeakDetector leakDetector, String leakReportEmail) {
+ @Inject
+ public LeakReporter(Context context, LeakDetector leakDetector,
+ @Nullable @Named(LEAK_REPORT_EMAIL_NAME) String leakReportEmail) {
mContext = context;
mLeakDetector = leakDetector;
mLeakReportEmail = leakReportEmail;
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
index e20e267336ea..a86970b90bff 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java
@@ -67,6 +67,9 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Source of truth for all state / events related to the volume dialog. No presentation.
*
@@ -74,6 +77,7 @@ import java.util.Objects;
*
* Methods ending in "W" must be called on the worker thread.
*/
+@Singleton
public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpable {
private static final String TAG = Util.logTag(VolumeDialogControllerImpl.class);
@@ -131,6 +135,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
protected final VC mVolumeController = new VC();
+ @Inject
public VolumeDialogControllerImpl(Context context) {
mContext = context.getApplicationContext();
mNotificationManager = (NotificationManager) mContext.getSystemService(