Merge "Move SystemServicesModule to Global Scope."

This commit is contained in:
Dave Mankoff
2020-08-24 18:23:21 +00:00
committed by Android (Google) Code Review
9 changed files with 75 additions and 108 deletions

View File

@@ -16,7 +16,9 @@
package com.android.systemui;
import com.android.systemui.dagger.GlobalModule;
import com.android.systemui.dagger.GlobalRootComponent;
import com.android.systemui.dagger.WMModule;
import javax.inject.Singleton;
@@ -26,7 +28,9 @@ import dagger.Component;
@Singleton
@Component(
modules = {
CarSysUIComponentModule.class
GlobalModule.class,
CarSysUIComponentModule.class,
WMModule.class
})
public interface CarGlobalRootComponent extends GlobalRootComponent {
/**

View File

@@ -20,7 +20,6 @@ import com.android.systemui.dagger.DependencyBinder;
import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SystemServicesModule;
import com.android.systemui.dagger.SystemUIModule;
import com.android.systemui.pip.phone.dagger.PipModule;
@@ -35,7 +34,6 @@ import dagger.Subcomponent;
DependencyProvider.class,
DependencyBinder.class,
PipModule.class,
SystemServicesModule.class,
SystemUIModule.class,
CarSystemUIModule.class,
CarSystemUIBinder.class})

View File

@@ -18,6 +18,8 @@ package com.android.systemui.dagger;
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.INotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
@@ -26,6 +28,7 @@ import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.DisplayMetrics;
import android.view.Choreographer;
import android.view.IWindowManager;
@@ -39,6 +42,7 @@ import com.android.internal.logging.UiEventLoggerImpl;
import com.android.internal.util.NotificationMessagingUtil;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.Prefs;
import com.android.systemui.accessibility.ModeSwitchesController;
import com.android.systemui.accessibility.SystemActions;
@@ -88,7 +92,7 @@ import dagger.Provides;
* Provides dependencies for the root component of sysui injection.
*
* Only SystemUI owned classes and instances should go in here. Other, framework-owned classes
* should go in {@link SystemServicesModule}.
* should go in {@link FrameworkServicesModule}.
*
* See SystemUI/docs/dagger.md
*/
@@ -163,6 +167,15 @@ public class DependencyProvider {
}
@SuppressLint("MissingPermission")
@SysUISingleton
@Provides
@Nullable
static LocalBluetoothManager provideLocalBluetoothController(Context context,
@Background Handler bgHandler) {
return LocalBluetoothManager.create(context, bgHandler, UserHandle.ALL);
}
/** */
@Provides
@SysUISingleton

View File

@@ -17,7 +17,6 @@
package com.android.systemui.dagger;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.AlarmManager;
@@ -49,10 +48,8 @@ import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.os.BatteryStats;
import android.os.Handler;
import android.os.PowerManager;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.Vibrator;
import android.service.dreams.DreamService;
@@ -68,12 +65,12 @@ import android.view.accessibility.AccessibilityManager;
import com.android.internal.app.IBatteryStats;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.LatencyTracker;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.DisplayId;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shared.system.PackageManagerWrapper;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@@ -81,51 +78,51 @@ import dagger.Provides;
* Provides Non-SystemUI, Framework-Owned instances to the dependency graph.
*/
@Module
public class SystemServicesModule {
public class FrameworkServicesModule {
@Provides
@SysUISingleton
@Singleton
static AccessibilityManager provideAccessibilityManager(Context context) {
return context.getSystemService(AccessibilityManager.class);
}
@Provides
@SysUISingleton
@Singleton
static ActivityManager provideActivityManager(Context context) {
return context.getSystemService(ActivityManager.class);
}
@SysUISingleton
@Provides
@Singleton
static AlarmManager provideAlarmManager(Context context) {
return context.getSystemService(AlarmManager.class);
}
@Provides
@SysUISingleton
@Singleton
static AudioManager provideAudioManager(Context context) {
return context.getSystemService(AudioManager.class);
}
@Provides
@SysUISingleton
@Singleton
static ColorDisplayManager provideColorDisplayManager(Context context) {
return context.getSystemService(ColorDisplayManager.class);
}
@Provides
@SysUISingleton
@Singleton
static ConnectivityManager provideConnectivityManagager(Context context) {
return context.getSystemService(ConnectivityManager.class);
}
@Provides
@SysUISingleton
@Singleton
static ContentResolver provideContentResolver(Context context) {
return context.getContentResolver();
}
@Provides
@SysUISingleton
@Singleton
static DevicePolicyManager provideDevicePolicyManager(Context context) {
return context.getSystemService(DevicePolicyManager.class);
}
@@ -137,39 +134,39 @@ public class SystemServicesModule {
}
@Provides
@SysUISingleton
@Singleton
static DisplayManager provideDisplayManager(Context context) {
return context.getSystemService(DisplayManager.class);
}
@SysUISingleton
@Provides
@Singleton
static IActivityManager provideIActivityManager() {
return ActivityManager.getService();
}
@SysUISingleton
@Provides
@Singleton
static IActivityTaskManager provideIActivityTaskManager() {
return ActivityTaskManager.getService();
}
@Provides
@SysUISingleton
@Singleton
static IBatteryStats provideIBatteryStats() {
return IBatteryStats.Stub.asInterface(
ServiceManager.getService(BatteryStats.SERVICE_NAME));
}
@Provides
@SysUISingleton
@Singleton
static IDreamManager provideIDreamManager() {
return IDreamManager.Stub.asInterface(
ServiceManager.checkService(DreamService.DREAM_SERVICE));
}
@Provides
@SysUISingleton
@Singleton
@Nullable
static FaceManager provideFaceManager(Context context) {
return context.getSystemService(FaceManager.class);
@@ -177,13 +174,13 @@ public class SystemServicesModule {
}
@Provides
@SysUISingleton
@Singleton
static IPackageManager provideIPackageManager() {
return IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
}
@SysUISingleton
@Provides
@Singleton
static IStatusBarService provideIStatusBarService() {
return IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));
@@ -196,39 +193,30 @@ public class SystemServicesModule {
ServiceManager.getService(Context.WALLPAPER_SERVICE));
}
@SysUISingleton
@Provides
@Singleton
static IWindowManager provideIWindowManager() {
return WindowManagerGlobal.getWindowManagerService();
}
@SysUISingleton
@Provides
@Singleton
static KeyguardManager provideKeyguardManager(Context context) {
return context.getSystemService(KeyguardManager.class);
}
@SysUISingleton
@Provides
@Singleton
static LatencyTracker provideLatencyTracker(Context context) {
return LatencyTracker.getInstance(context);
}
@SysUISingleton
@Provides
@Singleton
static LauncherApps provideLauncherApps(Context context) {
return context.getSystemService(LauncherApps.class);
}
@SuppressLint("MissingPermission")
@SysUISingleton
@Provides
@Nullable
static LocalBluetoothManager provideLocalBluetoothController(Context context,
@Background Handler bgHandler) {
return LocalBluetoothManager.create(context, bgHandler, UserHandle.ALL);
}
@Provides
static MediaRouter2Manager provideMediaRouter2Manager(Context context) {
return MediaRouter2Manager.getInstance(context);
@@ -240,32 +228,32 @@ public class SystemServicesModule {
}
@Provides
@SysUISingleton
@Singleton
static NetworkScoreManager provideNetworkScoreManager(Context context) {
return context.getSystemService(NetworkScoreManager.class);
}
@SysUISingleton
@Provides
@Singleton
static NotificationManager provideNotificationManager(Context context) {
return context.getSystemService(NotificationManager.class);
}
@SysUISingleton
@Provides
@Singleton
static PackageManager providePackageManager(Context context) {
return context.getPackageManager();
}
@SysUISingleton
@Provides
@Singleton
static PackageManagerWrapper providePackageManagerWrapper() {
return PackageManagerWrapper.getInstance();
}
/** */
@SysUISingleton
@Provides
@Singleton
static PowerManager providePowerManager(Context context) {
return context.getSystemService(PowerManager.class);
}
@@ -277,57 +265,63 @@ public class SystemServicesModule {
}
@Provides
@SysUISingleton
@Singleton
static RoleManager provideRoleManager(Context context) {
return context.getSystemService(RoleManager.class);
}
@Provides
@Singleton
static SensorManager providesSensorManager(Context context) {
return context.getSystemService(SensorManager.class);
}
@SysUISingleton
@Provides
@Singleton
static SensorPrivacyManager provideSensorPrivacyManager(Context context) {
return context.getSystemService(SensorPrivacyManager.class);
}
@SysUISingleton
@Provides
@Singleton
static ShortcutManager provideShortcutManager(Context context) {
return context.getSystemService(ShortcutManager.class);
}
@Provides
@SysUISingleton
@Singleton
@Nullable
static TelecomManager provideTelecomManager(Context context) {
return context.getSystemService(TelecomManager.class);
}
@Provides
@SysUISingleton
@Singleton
static TelephonyManager provideTelephonyManager(Context context) {
return context.getSystemService(TelephonyManager.class);
}
@Provides
@SysUISingleton
@Singleton
static TrustManager provideTrustManager(Context context) {
return context.getSystemService(TrustManager.class);
}
@Provides
@SysUISingleton
@Singleton
@Nullable
static Vibrator provideVibrator(Context context) {
return context.getSystemService(Vibrator.class);
}
@Provides
@SysUISingleton
@Singleton
static ViewConfiguration provideViewConfiguration(Context context) {
return ViewConfiguration.get(context);
}
@Provides
@SysUISingleton
@Singleton
static UserManager provideUserManager(Context context) {
return context.getSystemService(UserManager.class);
}
@@ -338,21 +332,15 @@ public class SystemServicesModule {
}
@Provides
@SysUISingleton
@Singleton
@Nullable
static WifiManager provideWifiManager(Context context) {
return context.getSystemService(WifiManager.class);
}
@SysUISingleton
@Provides
@Singleton
static WindowManager provideWindowManager(Context context) {
return context.getSystemService(WindowManager.class);
}
@Provides
@SysUISingleton
static RoleManager provideRoleManager(Context context) {
return context.getSystemService(RoleManager.class);
}
}

View File

@@ -16,63 +16,23 @@
package com.android.systemui.dagger;
import android.content.Context;
import android.content.SharedPreferences;
import android.hardware.display.AmbientDisplayConfiguration;
import android.util.DisplayMetrics;
import android.view.Choreographer;
import com.android.systemui.Prefs;
import com.android.systemui.dagger.qualifiers.Main;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
/**
* Supplies globally scoped instances.
* Supplies globally scoped instances that should be available in all versions of SystemUI
*
* Providers in this module will be accessible to both WMComponent and SysUIComponent scoped
* classes. They are in here because they are either needed globally or are inherently universal
* to the application.
*
* Note that just because a class might be used by both WM and SysUI does not necessarily mean that
* it should got into this module. If WM and SysUI might need the class for different purposes
* it should go into this module. If WM and SysUI might need the class for different purposes
* or different semantics, it may make sense to ask them to supply their own. Something like
* threading and concurrency provide a good example. Both components need
* Threads/Handlers/Executors, but they need separate instances of them in many cases.
*
* Please use discretion when adding things to the global scope.
*/
@Module
@Module(includes = {FrameworkServicesModule.class})
public class GlobalModule {
/** */
@Provides
@Main
public SharedPreferences provideSharePreferences(Context context) {
return Prefs.get(context);
}
/** */
@Provides
public AmbientDisplayConfiguration provideAmbientDisplayConfiguration(Context context) {
return new AmbientDisplayConfiguration(context);
}
/** */
@Provides
@Singleton
public Choreographer providesChoreographer() {
return Choreographer.getInstance();
}
/** */
@Provides
@Singleton
public DisplayMetrics provideDisplayMetrics(Context context) {
DisplayMetrics displayMetrics = new DisplayMetrics();
context.getDisplay().getMetrics(displayMetrics);
return displayMetrics;
}
}

View File

@@ -28,6 +28,7 @@ import dagger.Component;
*/
@Singleton
@Component(modules = {
GlobalModule.class,
SysUISubcomponentModule.class,
WMModule.class})
public interface GlobalRootComponent {

View File

@@ -37,7 +37,6 @@ import dagger.Subcomponent;
DependencyProvider.class,
DependencyBinder.class,
PipModule.class,
SystemServicesModule.class,
SystemUIBinder.class,
SystemUIModule.class,
SystemUIDefaultModule.class})

View File

@@ -16,7 +16,9 @@
package com.android.systemui.tv;
import com.android.systemui.dagger.GlobalModule;
import com.android.systemui.dagger.GlobalRootComponent;
import com.android.systemui.dagger.WMModule;
import javax.inject.Singleton;
@@ -26,7 +28,11 @@ import dagger.Component;
* Root component for Dagger injection.
*/
@Singleton
@Component(modules = {TvSysUIComponentModule.class})
@Component(modules = {
GlobalModule.class,
TvSysUIComponentModule.class,
WMModule.class
})
public interface TvGlobalRootComponent extends GlobalRootComponent {
/**
* Component Builder interface. This allows to bind Context instance in the component

View File

@@ -21,7 +21,6 @@ import com.android.systemui.dagger.DependencyBinder;
import com.android.systemui.dagger.DependencyProvider;
import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SystemServicesModule;
import com.android.systemui.dagger.SystemUIBinder;
import com.android.systemui.dagger.SystemUIModule;
@@ -35,7 +34,6 @@ import dagger.Subcomponent;
DefaultComponentBinder.class,
DependencyProvider.class,
DependencyBinder.class,
SystemServicesModule.class,
SystemUIBinder.class,
SystemUIModule.class,
TvSystemUIModule.class,