diff options
6 files changed, 257 insertions, 4 deletions
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java index 36692df5240c..fde0b1a97e46 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarGlobalRootComponent.java @@ -50,4 +50,7 @@ public interface CarGlobalRootComponent extends GlobalRootComponent { interface Builder extends GlobalRootComponent.Builder { CarGlobalRootComponent build(); } + + @Override + CarSysUIComponent.Builder getSysUIComponent(); } diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java new file mode 100644 index 000000000000..d19f368f22b6 --- /dev/null +++ b/packages/CarSystemUI/src/com/android/systemui/CarSysUIComponent.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2019 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.dagger.SysUIComponent; +import com.android.systemui.dagger.SysUISingleton; + +import dagger.Subcomponent; + +/** + * Dagger Subcomponent for Core SysUI. + */ +@SysUISingleton +@Subcomponent(modules = {}) +public interface CarSysUIComponent extends SysUIComponent { + + /** + * Builder for a CarSysUIComponent. + */ + @Subcomponent.Builder + interface Builder extends SysUIComponent.Builder { + CarSysUIComponent build(); + } +} diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index 8b747feb8487..53dd947a7eff 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -79,8 +79,15 @@ import dagger.Binds; import dagger.Module; import dagger.Provides; -@Module(includes = {DividerModule.class, QSModule.class}) -public abstract class CarSystemUIModule { +@Module( + includes = { + DividerModule.class, + QSModule.class + }, + subcomponents = { + CarSysUIComponent.class + }) +abstract class CarSystemUIModule { @Singleton @Provides diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java index af218010089f..fd6ba1a6af0e 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvGlobalRootComponent.java @@ -22,7 +22,6 @@ import com.android.systemui.dagger.DependencyProvider; import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SystemServicesModule; import com.android.systemui.dagger.SystemUIBinder; -import com.android.systemui.dagger.SystemUIDefaultModule; import com.android.systemui.dagger.SystemUIModule; import com.android.systemui.onehanded.dagger.OneHandedModule; @@ -42,7 +41,7 @@ import dagger.Component; SystemServicesModule.class, SystemUIBinder.class, SystemUIModule.class, - SystemUIDefaultModule.class, + TvSystemUIModule.class, TvSystemUIBinder.class}) public interface TvGlobalRootComponent extends GlobalRootComponent { /** @@ -52,4 +51,7 @@ public interface TvGlobalRootComponent extends GlobalRootComponent { interface Builder extends GlobalRootComponent.Builder { TvGlobalRootComponent build(); } + + @Override + TvSysUIComponent.Builder getSysUIComponent(); } diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java new file mode 100644 index 000000000000..bc0cb51c64a3 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.tv; + +import com.android.systemui.dagger.SysUIComponent; +import com.android.systemui.dagger.SysUISingleton; + +import dagger.Subcomponent; + +/** + * Dagger Subcomponent for Core SysUI. + */ +@SysUISingleton +@Subcomponent(modules = {}) +public interface TvSysUIComponent extends SysUIComponent { + + /** + * Builder for a SysUIComponent. + */ + @Subcomponent.Builder + interface Builder extends SysUIComponent.Builder { + TvSysUIComponent build(); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java new file mode 100644 index 000000000000..3f7350639fd3 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.tv; + +import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME; +import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; + +import android.content.Context; +import android.os.Handler; +import android.os.PowerManager; + +import androidx.annotation.Nullable; + +import com.android.keyguard.KeyguardViewController; +import com.android.systemui.broadcast.BroadcastDispatcher; +import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.dock.DockManager; +import com.android.systemui.dock.DockManagerImpl; +import com.android.systemui.doze.DozeHost; +import com.android.systemui.plugins.qs.QSFactory; +import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.power.EnhancedEstimates; +import com.android.systemui.power.EnhancedEstimatesImpl; +import com.android.systemui.qs.dagger.QSModule; +import com.android.systemui.qs.tileimpl.QSFactoryImpl; +import com.android.systemui.recents.Recents; +import com.android.systemui.recents.RecentsImplementation; +import com.android.systemui.stackdivider.DividerModule; +import com.android.systemui.statusbar.CommandQueue; +import com.android.systemui.statusbar.NotificationLockscreenUserManager; +import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl; +import com.android.systemui.statusbar.notification.NotificationEntryManager; +import com.android.systemui.statusbar.phone.DozeServiceHost; +import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; +import com.android.systemui.statusbar.phone.KeyguardBypassController; +import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl; +import com.android.systemui.statusbar.phone.NotificationGroupManager; +import com.android.systemui.statusbar.phone.ShadeController; +import com.android.systemui.statusbar.phone.ShadeControllerImpl; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; +import com.android.systemui.statusbar.policy.BatteryController; +import com.android.systemui.statusbar.policy.BatteryControllerImpl; +import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.DeviceProvisionedController; +import com.android.systemui.statusbar.policy.DeviceProvisionedControllerImpl; +import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.wmshell.WindowManagerShellModule; + +import javax.inject.Named; +import javax.inject.Singleton; + +import dagger.Binds; +import dagger.Module; +import dagger.Provides; + +/** + * A dagger module for injecting default implementations of components of System UI that may be + * overridden by the System UI implementation. + */ +@Module(includes = { + DividerModule.class, + QSModule.class, + WindowManagerShellModule.class + }, + subcomponents = { + TvSysUIComponent.class + }) +public abstract class TvSystemUIModule { + + @Singleton + @Provides + @Named(LEAK_REPORT_EMAIL_NAME) + @Nullable + static String provideLeakReportEmail() { + return null; + } + + @Binds + abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates); + + @Binds + abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( + NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); + + @Provides + @Singleton + static BatteryController provideBatteryController(Context context, + EnhancedEstimates enhancedEstimates, PowerManager powerManager, + BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler, + @Background Handler bgHandler) { + BatteryController bC = new BatteryControllerImpl(context, enhancedEstimates, powerManager, + broadcastDispatcher, mainHandler, bgHandler); + bC.init(); + return bC; + } + + @Binds + @Singleton + abstract QSFactory bindQSFactory(QSFactoryImpl qsFactoryImpl); + + @Binds + abstract DockManager bindDockManager(DockManagerImpl dockManager); + + @Binds + abstract NotificationEntryManager.KeyguardEnvironment bindKeyguardEnvironment( + KeyguardEnvironmentImpl keyguardEnvironment); + + @Binds + abstract ShadeController provideShadeController(ShadeControllerImpl shadeController); + + @Singleton + @Provides + @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) + static boolean provideAllowNotificationLongPress() { + return true; + } + + @Singleton + @Provides + static HeadsUpManagerPhone provideHeadsUpManagerPhone( + Context context, + StatusBarStateController statusBarStateController, + KeyguardBypassController bypassController, + NotificationGroupManager groupManager, + ConfigurationController configurationController) { + return new HeadsUpManagerPhone(context, statusBarStateController, bypassController, + groupManager, configurationController); + } + + @Binds + abstract HeadsUpManager bindHeadsUpManagerPhone(HeadsUpManagerPhone headsUpManagerPhone); + + @Provides + @Singleton + static Recents provideRecents(Context context, RecentsImplementation recentsImplementation, + CommandQueue commandQueue) { + return new Recents(context, recentsImplementation, commandQueue); + } + + @Binds + abstract DeviceProvisionedController bindDeviceProvisionedController( + DeviceProvisionedControllerImpl deviceProvisionedController); + + @Binds + abstract KeyguardViewController bindKeyguardViewController( + StatusBarKeyguardViewManager statusBarKeyguardViewManager); + + @Binds + abstract DozeHost provideDozeHost(DozeServiceHost dozeServiceHost); +} |