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) { |