From 67fde31e1b700c4acf5485433abd7c068b222433 Mon Sep 17 00:00:00 2001 From: John Li Date: Fri, 8 May 2020 20:06:45 +0800 Subject: [PATCH] Provide BatteryControllerImpl - move the initialization methods out of the constructor and into an init method - @Provides that ensures the init method gets called Bug: 155685169 Test: atest SystemUITests:BatteryControllerTest Merged-In: I064442fcf56397ba6394ee98ccf9cc82e589a0e3 Change-Id: Ifd7a3e41714b488ed7144f2344f7488184d48951 --- .../android/systemui/CarSystemUIModule.java | 18 +++++++++++++++--- .../systemui/dagger/SystemUIDefaultModule.java | 18 +++++++++++++++--- .../statusbar/policy/BatteryController.java | 5 +++++ .../policy/BatteryControllerImpl.java | 13 ++++++++----- .../policy/BatteryControllerTest.java | 1 + 5 files changed, 44 insertions(+), 11 deletions(-) diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java index ab7bf5e2eac0c..f8729c301c324 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,10 +118,17 @@ public abstract class CarSystemUIModule { abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); - @Binds + @Provides @Singleton - public abstract BatteryController provideBatteryController( - 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 8c572fe8f8426..6d1bf72f49134 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,10 +86,17 @@ public abstract class SystemUIDefaultModule { abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager( NotificationLockscreenUserManagerImpl notificationLockscreenUserManager); - @Binds + @Provides @Singleton - public abstract BatteryController provideBatteryController( - 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 a81189eaeaf8f..b9168e3c22236 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 reverse is supported. */ 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 95b41a141244a..00419e671814c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -80,7 +80,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; @@ -89,10 +89,6 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC mPowerManager = powerManager; mEstimates = enhancedEstimates; mBroadcastDispatcher = broadcastDispatcher; - - registerReceiver(); - updatePowerSave(); - updateEstimate(); } private void registerReceiver() { @@ -103,6 +99,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