[Central Surfaces] Make shade BatteryMeterView(&Controller) a singleton.

Bug: 277762009
Test: manual: verify battery icon in shade responds to battery changes
like plug & unplug

Change-Id: Ieed660792f474c2fb01fe3ddb60b0a26847f442b
This commit is contained in:
Caitlin Shkuratov
2023-04-25 14:30:54 +00:00
parent 26d95db9db
commit 1a04915ca6
2 changed files with 43 additions and 41 deletions

View File

@@ -16,18 +16,28 @@
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.settings.UserTracker
import com.android.systemui.statusbar.LightRevealScrim
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
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
@@ -133,5 +143,38 @@ abstract class ShadeModule {
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,
)
}
}
}

View File

@@ -18,23 +18,18 @@ 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 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.NotificationPanelView;
import com.android.systemui.shade.NotificationPanelViewController;
import com.android.systemui.shade.NotificationShadeWindowView;
@@ -64,11 +59,8 @@ 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;
@@ -150,39 +142,6 @@ public abstract class StatusBarViewModule {
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