| Index: device/battery/android/java/src/org/chromium/device/battery/BatteryStatusManager.java
|
| diff --git a/device/battery/android/java/src/org/chromium/device/battery/BatteryStatusManager.java b/device/battery/android/java/src/org/chromium/device/battery/BatteryStatusManager.java
|
| index 10a9fc9f818624f71e00539d93c6787d9cd8ad99..09baef9f755d6cf8e9ffbcb9973a3634f95361cb 100644
|
| --- a/device/battery/android/java/src/org/chromium/device/battery/BatteryStatusManager.java
|
| +++ b/device/battery/android/java/src/org/chromium/device/battery/BatteryStatusManager.java
|
| @@ -45,18 +45,31 @@ class BatteryStatusManager {
|
| // This is to workaround a Galaxy Nexus bug, see the comment in the constructor.
|
| private final boolean mIgnoreBatteryPresentState;
|
|
|
| - // Only used in L (API level 21 and higher).
|
| - private BatteryManager mLollipopBatteryManager;
|
| + // Only used in L (API level 21) and higher.
|
| + private AndroidBatteryManagerWrapper mAndroidBatteryManager;
|
|
|
| private boolean mEnabled = false;
|
|
|
| - private BatteryStatusManager(
|
| - Context context, BatteryStatusCallback callback, boolean ignoreBatteryPresentState,
|
| - @Nullable BatteryManager batteryManager) {
|
| + @VisibleForTesting
|
| + static class AndroidBatteryManagerWrapper {
|
| + private final BatteryManager mBatteryManager;
|
| +
|
| + protected AndroidBatteryManagerWrapper(BatteryManager batteryManager) {
|
| + mBatteryManager = batteryManager;
|
| + }
|
| +
|
| + public int getIntProperty(int id) {
|
| + return mBatteryManager.getIntProperty(id);
|
| + }
|
| + }
|
| +
|
| + private BatteryStatusManager(Context context, BatteryStatusCallback callback,
|
| + boolean ignoreBatteryPresentState,
|
| + @Nullable AndroidBatteryManagerWrapper batteryManager) {
|
| mAppContext = context.getApplicationContext();
|
| mCallback = callback;
|
| mIgnoreBatteryPresentState = ignoreBatteryPresentState;
|
| - mLollipopBatteryManager = batteryManager;
|
| + mAndroidBatteryManager = batteryManager;
|
| }
|
|
|
| BatteryStatusManager(Context context, BatteryStatusCallback callback) {
|
| @@ -64,7 +77,8 @@ class BatteryStatusManager {
|
| // Android 4.2.1, it always reports false. See http://crbug.com/384348.
|
| this(context, callback, Build.MODEL.equals("Galaxy Nexus"),
|
| Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
|
| - ? (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE)
|
| + ? new AndroidBatteryManagerWrapper(
|
| + (BatteryManager) context.getSystemService(Context.BATTERY_SERVICE))
|
| : null);
|
| }
|
|
|
| @@ -72,10 +86,8 @@ class BatteryStatusManager {
|
| * Creates a BatteryStatusManager without the Galaxy Nexus workaround for consistency in
|
| * testing.
|
| */
|
| - static BatteryStatusManager createBatteryStatusManagerForTesting(
|
| - Context context,
|
| - BatteryStatusCallback callback,
|
| - @Nullable BatteryManager batteryManager) {
|
| + static BatteryStatusManager createBatteryStatusManagerForTesting(Context context,
|
| + BatteryStatusCallback callback, @Nullable AndroidBatteryManagerWrapper batteryManager) {
|
| return new BatteryStatusManager(context, callback, false, batteryManager);
|
| }
|
|
|
| @@ -143,7 +155,7 @@ class BatteryStatusManager {
|
| batteryStatus.dischargingTime = dischargingTimeSeconds;
|
| batteryStatus.level = level;
|
|
|
| - if (mLollipopBatteryManager != null) {
|
| + if (mAndroidBatteryManager != null) {
|
| updateBatteryStatusForLollipop(batteryStatus);
|
| }
|
|
|
| @@ -152,14 +164,14 @@ class BatteryStatusManager {
|
|
|
| @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
| private void updateBatteryStatusForLollipop(BatteryStatus batteryStatus) {
|
| - assert mLollipopBatteryManager != null;
|
| + assert mAndroidBatteryManager != null;
|
|
|
| // On Lollipop we can provide a better estimate for chargingTime and dischargingTime.
|
| - double remainingCapacityRatio = mLollipopBatteryManager.getIntProperty(
|
| + double remainingCapacityRatio = mAndroidBatteryManager.getIntProperty(
|
| BatteryManager.BATTERY_PROPERTY_CAPACITY) / 100.0;
|
| - double batteryCapacityMicroAh = mLollipopBatteryManager.getIntProperty(
|
| + double batteryCapacityMicroAh = mAndroidBatteryManager.getIntProperty(
|
| BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER);
|
| - double averageCurrentMicroA = mLollipopBatteryManager.getIntProperty(
|
| + double averageCurrentMicroA = mAndroidBatteryManager.getIntProperty(
|
| BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE);
|
|
|
| if (batteryStatus.charging) {
|
|
|