diff --git a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java index 552cadfe967ef..b17ad0febb90b 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java @@ -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 { /** diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java index 24d9d09d2ca99..90396717de9f9 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java @@ -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}) diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java index 8a67e968ae134..0dd9488f1d3ed 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java similarity index 88% rename from packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java rename to packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java index ceb9aeee1d3b2..66063a87a70d4 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java @@ -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); - } } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java b/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java index 553655bf672ca..fd4a4093110f4 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/GlobalModule.java @@ -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; - } } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java index 3d7c8ad4c43ee..36fd3373290de 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/GlobalRootComponent.java @@ -28,6 +28,7 @@ import dagger.Component; */ @Singleton @Component(modules = { + GlobalModule.class, SysUISubcomponentModule.class, WMModule.class}) public interface GlobalRootComponent { diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java index b606201cc8038..e4e3d7aacdf06 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java @@ -37,7 +37,6 @@ import dagger.Subcomponent; DependencyProvider.class, DependencyBinder.class, PipModule.class, - SystemServicesModule.class, SystemUIBinder.class, SystemUIModule.class, SystemUIDefaultModule.class}) diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java index 37aac11240480..df741a0e98fff 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java @@ -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 diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java index 302301d79c3ac..3577bc05d1c47 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java @@ -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,