diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index 04d97fe56d958..6d013f527aee7 100644 --- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java +++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java @@ -20,8 +20,11 @@ import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.content.Context; +import android.os.Handler; +import android.os.PowerManager; import com.android.keyguard.KeyguardViewController; +import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.car.CarDeviceProvisionedController; import com.android.systemui.car.CarDeviceProvisionedControllerImpl; import com.android.systemui.car.keyguard.CarKeyguardViewController; @@ -30,6 +33,8 @@ import com.android.systemui.car.statusbar.CarStatusBarKeyguardViewManager; import com.android.systemui.car.statusbar.DummyNotificationShadeWindowController; import com.android.systemui.car.volume.CarVolumeDialogComponent; import com.android.systemui.dagger.SystemUIRootComponent; +import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.plugins.qs.QSFactory; @@ -113,9 +118,17 @@ public abstract class CarSystemUIModule { abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); - @Binds + @Provides @Singleton - public abstract BatteryController bindBatteryController(BatteryControllerImpl controllerImpl); + static BatteryController provideBatteryController(Context context, + EnhancedEstimates enhancedEstimates, PowerManager powerManager, + BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler, + @Background Handler bgHandler) { + BatteryController bC = new BatteryControllerImpl(context, enhancedEstimates, powerManager, + broadcastDispatcher, mainHandler, bgHandler); + bC.init(); + return bC; + } @Binds @Singleton diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java index 7e5a3ae839287..3d2ae64345000 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java @@ -20,10 +20,15 @@ import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME; import android.content.Context; +import android.os.Handler; +import android.os.PowerManager; import androidx.annotation.Nullable; import com.android.keyguard.KeyguardViewController; +import com.android.systemui.broadcast.BroadcastDispatcher; +import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.plugins.qs.QSFactory; @@ -81,9 +86,17 @@ public abstract class SystemUIDefaultModule { abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); - @Binds + @Provides @Singleton - public abstract BatteryController bindBatteryController(BatteryControllerImpl controllerImpl); + static BatteryController provideBatteryController(Context context, + EnhancedEstimates enhancedEstimates, PowerManager powerManager, + BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler, + @Background Handler bgHandler) { + BatteryController bC = new BatteryControllerImpl(context, enhancedEstimates, powerManager, + broadcastDispatcher, mainHandler, bgHandler); + bC.init(); + return bC; + } @Binds @Singleton diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java index 21e2e580df4a4..673549ab589ff 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java @@ -52,6 +52,11 @@ public interface BatteryController extends DemoMode, Dumpable, */ boolean isAodPowerSave(); + /** + * Initializes the class. + */ + default void init() { } + /** * Returns {@code true} if the device is currently in wireless charging mode. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 98d01464debd9..5bf4b465fa48e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -81,7 +81,7 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC @VisibleForTesting @Inject - protected BatteryControllerImpl(Context context, EnhancedEstimates enhancedEstimates, + public BatteryControllerImpl(Context context, EnhancedEstimates enhancedEstimates, PowerManager powerManager, BroadcastDispatcher broadcastDispatcher, @Main Handler mainHandler, @Background Handler bgHandler) { mContext = context; @@ -90,10 +90,6 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC mPowerManager = powerManager; mEstimates = enhancedEstimates; mBroadcastDispatcher = broadcastDispatcher; - - registerReceiver(); - updatePowerSave(); - updateEstimate(); } private void registerReceiver() { @@ -104,6 +100,13 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC mBroadcastDispatcher.registerReceiver(this, filter); } + @Override + public void init() { + registerReceiver(); + updatePowerSave(); + updateEstimate(); + } + @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("BatteryController state:"); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java index 05a48678c8d7c..f83fbd478bf31 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BatteryControllerTest.java @@ -55,6 +55,7 @@ public class BatteryControllerTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mBatteryController = new BatteryControllerImpl(getContext(), mock(EnhancedEstimates.class), mPowerManager, mBroadcastDispatcher, new Handler(), new Handler()); + mBatteryController.init(); } @Test