1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.tv.dagger 18 19 import com.android.systemui.CoreStartable 20 import com.android.systemui.SliceBroadcastRelayHandler 21 import com.android.systemui.accessibility.Magnification 22 import com.android.systemui.dagger.qualifiers.PerUser 23 import com.android.systemui.globalactions.GlobalActionsComponent 24 import com.android.systemui.keyboard.KeyboardUI 25 import com.android.systemui.media.RingtonePlayer 26 import com.android.systemui.media.dialog.MediaOutputSwitcherDialogUI 27 import com.android.systemui.media.systemsounds.HomeSoundEffectController 28 import com.android.systemui.shortcut.ShortcutKeyDispatcher 29 import com.android.systemui.statusbar.notification.InstantAppNotifier 30 import com.android.systemui.theme.ThemeOverlayController 31 import com.android.systemui.toast.ToastUI 32 import com.android.systemui.tv.notifications.TvNotificationHandler 33 import com.android.systemui.tv.notifications.TvNotificationPanel 34 import com.android.systemui.tv.statusbar.TvStatusBar 35 import com.android.systemui.tv.vpn.VpnStatusObserver 36 import com.android.systemui.usb.StorageNotification 37 import com.android.systemui.util.NotificationChannels 38 import com.android.systemui.wmshell.WMShell 39 import dagger.Binds 40 import dagger.Module 41 import dagger.multibindings.ClassKey 42 import dagger.multibindings.IntoMap 43 44 /** 45 * DEPRECATED: DO NOT ADD THINGS TO THIS FILE. 46 * 47 * Add a feature specific dagger module for what you are working on. Bind your CoreStartable there. 48 * Include that module where it is needed. 49 * 50 * @deprecated 51 */ 52 @Module 53 abstract class TVSystemUICoreStartableModule { 54 /** Inject into GlobalActionsComponent. */ 55 @Binds 56 @IntoMap 57 @ClassKey(GlobalActionsComponent::class) bindGlobalActionsComponentnull58 abstract fun bindGlobalActionsComponent(sysui: GlobalActionsComponent): CoreStartable 59 60 /** Inject into HomeSoundEffectController. */ 61 @Binds 62 @IntoMap 63 @ClassKey(HomeSoundEffectController::class) 64 abstract fun bindHomeSoundEffectController(sysui: HomeSoundEffectController): CoreStartable 65 66 /** Inject into InstantAppNotifier. */ 67 @Binds 68 @IntoMap 69 @ClassKey(InstantAppNotifier::class) 70 abstract fun bindInstantAppNotifier(sysui: InstantAppNotifier): CoreStartable 71 72 /** Inject into KeyboardUI. */ 73 @Binds 74 @IntoMap 75 @ClassKey(KeyboardUI::class) 76 abstract fun bindKeyboardUI(sysui: KeyboardUI): CoreStartable 77 78 /** Inject into MediaOutputSwitcherDialogUI. */ 79 @Binds 80 @IntoMap 81 @ClassKey(MediaOutputSwitcherDialogUI::class) 82 abstract fun bindMediaOutputSwitcherDialogUI(sysui: MediaOutputSwitcherDialogUI): CoreStartable 83 84 /** Inject into NotificationChannels. */ 85 @Binds 86 @IntoMap 87 @ClassKey(NotificationChannels::class) 88 @PerUser 89 abstract fun bindNotificationChannels(sysui: NotificationChannels): CoreStartable 90 91 /** Inject into RingtonePlayer. */ 92 @Binds 93 @IntoMap 94 @ClassKey(RingtonePlayer::class) 95 abstract fun bind(sysui: RingtonePlayer): CoreStartable 96 97 /** Inject into ShortcutKeyDispatcher. */ 98 @Binds 99 @IntoMap 100 @ClassKey(ShortcutKeyDispatcher::class) 101 abstract fun bindShortcutKeyDispatcher(sysui: ShortcutKeyDispatcher): CoreStartable 102 103 /** Inject into SliceBroadcastRelayHandler. */ 104 @Binds 105 @IntoMap 106 @ClassKey(SliceBroadcastRelayHandler::class) 107 abstract fun bindSliceBroadcastRelayHandler(sysui: SliceBroadcastRelayHandler): CoreStartable 108 109 /** Inject into StorageNotification. */ 110 @Binds 111 @IntoMap 112 @ClassKey(StorageNotification::class) 113 abstract fun bindStorageNotification(sysui: StorageNotification): CoreStartable 114 115 /** Inject into ThemeOverlayController. */ 116 @Binds 117 @IntoMap 118 @ClassKey(ThemeOverlayController::class) 119 abstract fun bindThemeOverlayController(sysui: ThemeOverlayController): CoreStartable 120 121 /** Inject into ToastUI. */ 122 @Binds 123 @IntoMap 124 @ClassKey(ToastUI::class) 125 abstract fun bindToastUI(service: ToastUI): CoreStartable 126 127 /** Inject into TvNotificationHandler. */ 128 @Binds 129 @IntoMap 130 @ClassKey(TvNotificationHandler::class) 131 abstract fun bindTvNotificationHandler(sysui: TvNotificationHandler): CoreStartable 132 133 /** Inject into TvNotificationPanel. */ 134 @Binds 135 @IntoMap 136 @ClassKey(TvNotificationPanel::class) 137 abstract fun bindTvNotificationPanel(sysui: TvNotificationPanel): CoreStartable 138 139 /** Inject into TvStatusBar. */ 140 @Binds 141 @IntoMap 142 @ClassKey(TvStatusBar::class) 143 abstract fun bindTvStatusBar(sysui: TvStatusBar): CoreStartable 144 145 /** Inject into VpnStatusObserver. */ 146 @Binds 147 @IntoMap 148 @ClassKey(VpnStatusObserver::class) 149 abstract fun bindVpnStatusObserver(sysui: VpnStatusObserver): CoreStartable 150 151 /** Inject into Magnification. */ 152 @Binds 153 @IntoMap 154 @ClassKey(Magnification::class) 155 abstract fun bindMagnification(sysui: Magnification): CoreStartable 156 157 /** Inject into WMShell. */ 158 @Binds 159 @IntoMap 160 @ClassKey(WMShell::class) 161 abstract fun bindWMShell(sysui: WMShell): CoreStartable 162 } 163