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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
227
packages/SystemUI/src/com/android/systemui/DependencyBinder.java
Normal file
227
packages/SystemUI/src/com/android/systemui/DependencyBinder.java
Normal file
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
@@ -163,256 +95,12 @@ public class DependencyProvider {
|
||||
return new Handler(Looper.getMainLooper());
|
||||
}
|
||||
|
||||
@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
|
||||
@@ -422,74 +110,10 @@ public class DependencyProvider {
|
||||
UserHandle.ALL);
|
||||
}
|
||||
|
||||
@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
|
||||
@@ -498,19 +122,6 @@ public class DependencyProvider {
|
||||
return WindowManagerGlobal.getWindowManagerService();
|
||||
}
|
||||
|
||||
@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() {
|
||||
@@ -521,16 +132,9 @@ 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();
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@@ -539,32 +143,34 @@ public class DependencyProvider {
|
||||
return SysUiServiceProvider.getComponent(context, StatusBar.class);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public NotificationRemoteInputManager.Callback provideNotificationRemoteInputManager(
|
||||
Context context) {
|
||||
return new StatusBarRemoteInputCallback(context);
|
||||
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public AppOpsController provideAppOpsController(Context context,
|
||||
@Named(BG_LOOPER_NAME) Looper bgLooper) {
|
||||
return new AppOpsControllerImpl(context, bgLooper);
|
||||
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public DisplayNavigationBarController provideDisplayNavigationBarController(Context context,
|
||||
@Named(MAIN_HANDLER_NAME) Handler mainHandler) {
|
||||
return new DisplayNavigationBarController(context, mainHandler);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public SensorPrivacyManager provideSensorPrivacyManager(Context context) {
|
||||
return context.getSystemService(SensorPrivacyManager.class);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public LeakDetector provideLeakDetector() {
|
||||
return LeakDetector.create();
|
||||
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public ColorDisplayController provideColorDisplayController(Context context) {
|
||||
return new ColorDisplayController(context);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public PluginManager providePluginManager(Context context) {
|
||||
return new PluginManagerImpl(context, new PluginInitializerImpl());
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public ConfigurationController provideConfigurationController(Context context) {
|
||||
return new ConfigurationControllerImpl(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user