From 1a9b9d7abbe9c644a7844e5257982fd7c9feaac1 Mon Sep 17 00:00:00 2001 From: Caitlin Shkuratov Date: Tue, 25 Apr 2023 14:19:58 +0000 Subject: [PATCH] [Central Surfaces] Make the shade header view a singleton. Bug: 277762009 Test: compiles Test: shade header shows up correctly Test: atest ShadeHeaderControllerTest Change-Id: I3c94c96388db279574f43f52426e72e682f3ccb9 --- .../systemui/shade/ShadeHeaderController.kt | 2 +- .../com/android/systemui/shade/ShadeModule.kt | 18 ++++++++++++++++++ .../phone/dagger/StatusBarViewModule.java | 17 ++--------------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt index f0815e93dccdd..d07f1d84531dc 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeHeaderController.kt @@ -52,6 +52,7 @@ 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 @@ -59,7 +60,6 @@ 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 diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt index 9cd8c547d1c1c..49e02e3b23379 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeModule.kt @@ -17,6 +17,8 @@ package com.android.systemui.shade 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 @@ -31,6 +33,7 @@ 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 +45,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 +114,18 @@ 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(R.id.qs_header_stub) + val layoutId = R.layout.combined_qs_header + stub.layoutResource = layoutId + return stub.inflate() as MotionLayout + } } } 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 2c57a268f6b8f..94414dd65fbb9 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,10 +16,11 @@ package com.android.systemui.statusbar.phone.dagger; +import static com.android.systemui.shade.ShadeModule.SHADE_HEADER; + import android.content.ContentResolver; import android.os.Handler; import android.view.LayoutInflater; -import android.view.ViewStub; import androidx.constraintlayout.motion.widget.MotionLayout; @@ -90,7 +91,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,19 +136,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