diff options
| author | 2023-04-26 13:42:07 +0000 | |
|---|---|---|
| committer | 2023-04-26 13:42:07 +0000 | |
| commit | 1db1e6d04d50f1e64b07aa85775dd8b84f4bce5d (patch) | |
| tree | fbcca44d9433bd8149aaeea1f98b4359a0c97567 | |
| parent | b0ed44a81ee0821f067f2ba4a191511926c1b6bb (diff) | |
| parent | e6ab21a3ab50c3e411dbada23f343142bf27cd07 (diff) | |
Merge changes Ie75ef932,I424f96e2,Ieed66079,Ieee4b442,I3c94c963 into udc-dev
* changes:
[Central Surfaces] Make ShadeHeaderController a singleton.
[Central Surfaces] Make shade privacy chip & status icons singletons.
[Central Surfaces] Make shade BatteryMeterView(&Controller) a singleton.
[Central Surfaces] Make CombinedShadeHeadersConstraintManager singleton.
[Central Surfaces] Make the shade header view a singleton.
5 files changed, 96 insertions, 93 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/HeaderPrivacyIconsController.kt b/packages/SystemUI/src/com/android/systemui/qs/HeaderPrivacyIconsController.kt index 6f645b562008..995c6a476f0d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/HeaderPrivacyIconsController.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/HeaderPrivacyIconsController.kt @@ -26,7 +26,9 @@ import java.util.concurrent.Executor import javax.inject.Inject import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.shade.ShadeModule.Companion.SHADE_HEADER import com.android.systemui.statusbar.policy.DeviceProvisionedController +import javax.inject.Named interface ChipVisibilityListener { fun onChipVisibilityRefreshed(visible: Boolean) @@ -45,10 +47,10 @@ interface ChipVisibilityListener { class HeaderPrivacyIconsController @Inject constructor( private val privacyItemController: PrivacyItemController, private val uiEventLogger: UiEventLogger, - private val privacyChip: OngoingPrivacyChip, + @Named(SHADE_HEADER) private val privacyChip: OngoingPrivacyChip, private val privacyDialogController: PrivacyDialogController, private val privacyLogger: PrivacyLogger, - private val iconContainer: StatusIconContainer, + @Named(SHADE_HEADER) private val iconContainer: StatusIconContainer, private val permissionManager: PermissionManager, @Background private val backgroundExecutor: Executor, @Main private val uiExecutor: Executor, diff --git a/packages/SystemUI/src/com/android/systemui/shade/CombinedShadeHeadersConstraintManagerImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/CombinedShadeHeadersConstraintManagerImpl.kt index b3d31f2986d1..7e0f50400299 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/CombinedShadeHeadersConstraintManagerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/CombinedShadeHeadersConstraintManagerImpl.kt @@ -19,12 +19,12 @@ package com.android.systemui.shade import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintSet import com.android.systemui.R -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent +import com.android.systemui.dagger.SysUISingleton /** * Standard implementation of [CombinedShadeHeadersConstraintManager]. */ -@CentralSurfacesComponent.CentralSurfacesScope +@SysUISingleton object CombinedShadeHeadersConstraintManagerImpl : CombinedShadeHeadersConstraintManager { override fun privacyChipVisibilityConstraints(visible: Boolean): ConstraintsChanges { diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt index f0815e93dccd..86ae4ecf6e70 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt @@ -41,6 +41,7 @@ import com.android.systemui.animation.Interpolators import com.android.systemui.animation.ShadeInterpolation import com.android.systemui.battery.BatteryMeterView import com.android.systemui.battery.BatteryMeterViewController +import com.android.systemui.dagger.SysUISingleton import com.android.systemui.demomode.DemoMode import com.android.systemui.demomode.DemoModeController import com.android.systemui.dump.DumpManager @@ -52,14 +53,13 @@ import com.android.systemui.shade.ShadeHeaderController.Companion.LARGE_SCREEN_H import com.android.systemui.shade.ShadeHeaderController.Companion.LARGE_SCREEN_HEADER_TRANSITION_ID import com.android.systemui.shade.ShadeHeaderController.Companion.QQS_HEADER_CONSTRAINT import com.android.systemui.shade.ShadeHeaderController.Companion.QS_HEADER_CONSTRAINT +import com.android.systemui.shade.ShadeModule.Companion.SHADE_HEADER import com.android.systemui.shade.carrier.ShadeCarrierGroup import com.android.systemui.shade.carrier.ShadeCarrierGroupController import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider import com.android.systemui.statusbar.phone.StatusBarIconController import com.android.systemui.statusbar.phone.StatusBarLocation import com.android.systemui.statusbar.phone.StatusIconContainer -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope -import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.SHADE_HEADER import com.android.systemui.statusbar.policy.Clock import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.NextAlarmController @@ -79,7 +79,7 @@ import javax.inject.Named * * [LARGE_SCREEN_HEADER_TRANSITION_ID]: [LARGE_SCREEN_HEADER_CONSTRAINT] for all other * configurations */ -@CentralSurfacesScope +@SysUISingleton class ShadeHeaderController @Inject constructor( diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt index 9cd8c547d1c1..b7551cf3408e 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt @@ -16,21 +16,36 @@ package com.android.systemui.shade +import android.content.ContentResolver +import android.os.Handler import android.view.LayoutInflater +import android.view.ViewStub +import androidx.constraintlayout.motion.widget.MotionLayout import com.android.keyguard.LockIconView import com.android.systemui.CoreStartable import com.android.systemui.R +import com.android.systemui.battery.BatteryMeterView +import com.android.systemui.battery.BatteryMeterViewController import com.android.systemui.biometrics.AuthRippleController import com.android.systemui.biometrics.AuthRippleView import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.flags.FeatureFlags +import com.android.systemui.privacy.OngoingPrivacyChip +import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.LightRevealScrim import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout +import com.android.systemui.statusbar.phone.StatusIconContainer import com.android.systemui.statusbar.phone.TapAgainView +import com.android.systemui.statusbar.policy.BatteryController +import com.android.systemui.statusbar.policy.ConfigurationController +import com.android.systemui.tuner.TunerService import dagger.Binds import dagger.Module import dagger.Provides import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap +import javax.inject.Named /** Module for classes related to the notification shade. */ @Module @@ -42,6 +57,8 @@ abstract class ShadeModule { abstract fun bindAuthRippleController(controller: AuthRippleController): CoreStartable companion object { + const val SHADE_HEADER = "large_screen_shade_header" + @Provides @SysUISingleton // TODO(b/277762009): Do something similar to @@ -109,5 +126,75 @@ abstract class ShadeModule { ): TapAgainView { return notificationPanelView.findViewById(R.id.shade_falsing_tap_again) } + + // TODO(b/277762009): Only allow this view's controller to inject the view. See above. + @Provides + @SysUISingleton + @Named(SHADE_HEADER) + fun providesShadeHeaderView( + notificationShadeWindowView: NotificationShadeWindowView, + ): MotionLayout { + val stub = notificationShadeWindowView.findViewById<ViewStub>(R.id.qs_header_stub) + val layoutId = R.layout.combined_qs_header + stub.layoutResource = layoutId + return stub.inflate() as MotionLayout + } + + @Provides + @SysUISingleton + fun providesCombinedShadeHeadersConstraintManager(): CombinedShadeHeadersConstraintManager { + return CombinedShadeHeadersConstraintManagerImpl + } + + // TODO(b/277762009): Only allow this view's controller to inject the view. See above. + @Provides + @SysUISingleton + @Named(SHADE_HEADER) + fun providesBatteryMeterView(@Named(SHADE_HEADER) view: MotionLayout): BatteryMeterView { + return view.findViewById(R.id.batteryRemainingIcon) + } + + @Provides + @SysUISingleton + @Named(SHADE_HEADER) + fun providesBatteryMeterViewController( + @Named(SHADE_HEADER) batteryMeterView: BatteryMeterView, + userTracker: UserTracker, + configurationController: ConfigurationController, + tunerService: TunerService, + @Main mainHandler: Handler, + contentResolver: ContentResolver, + featureFlags: FeatureFlags, + batteryController: BatteryController, + ): BatteryMeterViewController { + return BatteryMeterViewController( + batteryMeterView, + userTracker, + configurationController, + tunerService, + mainHandler, + contentResolver, + featureFlags, + batteryController, + ) + } + + @Provides + @SysUISingleton + @Named(SHADE_HEADER) + fun providesOngoingPrivacyChip( + @Named(SHADE_HEADER) header: MotionLayout, + ): OngoingPrivacyChip { + return header.findViewById(R.id.privacy_chip) + } + + @Provides + @SysUISingleton + @Named(SHADE_HEADER) + fun providesStatusIconContainer( + @Named(SHADE_HEADER) header: MotionLayout, + ): StatusIconContainer { + return header.findViewById(R.id.statusIcons) + } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java index 2c57a268f6b8..67243b6aed00 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java @@ -16,26 +16,15 @@ package com.android.systemui.statusbar.phone.dagger; -import android.content.ContentResolver; -import android.os.Handler; import android.view.LayoutInflater; -import android.view.ViewStub; - -import androidx.constraintlayout.motion.widget.MotionLayout; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.R; -import com.android.systemui.battery.BatteryMeterView; -import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.privacy.OngoingPrivacyChip; -import com.android.systemui.settings.UserTracker; -import com.android.systemui.shade.CombinedShadeHeadersConstraintManager; -import com.android.systemui.shade.CombinedShadeHeadersConstraintManagerImpl; import com.android.systemui.shade.NotificationPanelView; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; @@ -59,17 +48,13 @@ import com.android.systemui.statusbar.phone.StatusBarBoundsProvider; import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarLocationPublisher; -import com.android.systemui.statusbar.phone.StatusIconContainer; import com.android.systemui.statusbar.phone.SystemBarAttributesListener; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragmentLogger; import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; -import com.android.systemui.statusbar.policy.BatteryController; -import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.window.StatusBarWindowStateController; -import com.android.systemui.tuner.TunerService; import com.android.systemui.util.CarrierConfigTracker; import com.android.systemui.util.settings.SecureSettings; @@ -90,7 +75,6 @@ import javax.inject.Provider; }) public abstract class StatusBarViewModule { - public static final String SHADE_HEADER = "large_screen_shade_header"; public static final String STATUS_BAR_FRAGMENT = "status_bar_fragment"; /** */ @@ -136,76 +120,6 @@ public abstract class StatusBarViewModule { abstract ShadeViewController bindsShadeViewController( NotificationPanelViewController notificationPanelViewController); - @Provides - @Named(SHADE_HEADER) - @CentralSurfacesComponent.CentralSurfacesScope - public static MotionLayout getLargeScreenShadeHeaderBarView( - NotificationShadeWindowView notificationShadeWindowView, - FeatureFlags featureFlags) { - ViewStub stub = notificationShadeWindowView.findViewById(R.id.qs_header_stub); - int layoutId = R.layout.combined_qs_header; - stub.setLayoutResource(layoutId); - MotionLayout v = (MotionLayout) stub.inflate(); - return v; - } - - /** */ - @Provides - @CentralSurfacesComponent.CentralSurfacesScope - public static CombinedShadeHeadersConstraintManager - provideCombinedShadeHeadersConstraintManager() { - return CombinedShadeHeadersConstraintManagerImpl.INSTANCE; - } - - /** */ - @Provides - @CentralSurfacesComponent.CentralSurfacesScope - public static OngoingPrivacyChip getSplitShadeOngoingPrivacyChip( - @Named(SHADE_HEADER) MotionLayout header) { - return header.findViewById(R.id.privacy_chip); - } - - /** */ - @Provides - @CentralSurfacesComponent.CentralSurfacesScope - static StatusIconContainer providesStatusIconContainer( - @Named(SHADE_HEADER) MotionLayout header) { - return header.findViewById(R.id.statusIcons); - } - - /** */ - @Provides - @CentralSurfacesComponent.CentralSurfacesScope - @Named(SHADE_HEADER) - static BatteryMeterView getBatteryMeterView(@Named(SHADE_HEADER) MotionLayout view) { - return view.findViewById(R.id.batteryRemainingIcon); - } - - @Provides - @CentralSurfacesComponent.CentralSurfacesScope - @Named(SHADE_HEADER) - static BatteryMeterViewController getBatteryMeterViewController( - @Named(SHADE_HEADER) BatteryMeterView batteryMeterView, - UserTracker userTracker, - ConfigurationController configurationController, - TunerService tunerService, - @Main Handler mainHandler, - ContentResolver contentResolver, - FeatureFlags featureFlags, - BatteryController batteryController - ) { - return new BatteryMeterViewController( - batteryMeterView, - userTracker, - configurationController, - tunerService, - mainHandler, - contentResolver, - featureFlags, - batteryController); - - } - /** */ @Provides @CentralSurfacesComponent.CentralSurfacesScope |