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.
This commit is contained in:
committed by
Android (Google) Code Review
commit
1db1e6d04d
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user