| Index: components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
|
| diff --git a/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java b/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
|
| index 1a63a26a87b00b84882735e5daf7f8ba319c9236..8027a3f2aa605477a88a638189c040f04f41a3d1 100644
|
| --- a/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
|
| +++ b/components/precache/android/java/src/org/chromium/components/precache/DeviceState.java
|
| @@ -17,6 +17,9 @@ import org.chromium.base.VisibleForTesting;
|
| public class DeviceState {
|
| private static DeviceState sDeviceState = null;
|
|
|
| + // Saved battery level percentage.
|
| + private int mSavedBatteryPercentage = 0;
|
| +
|
| /** Disallow Construction of DeviceState objects. Use {@link #getInstance()} instead to create
|
| * a singleton instance.
|
| */
|
| @@ -58,6 +61,36 @@ public class DeviceState {
|
| || status == BatteryManager.BATTERY_STATUS_FULL;
|
| }
|
|
|
| + /**
|
| + * @return the previously saved battery level percentage.
|
| + * @param context the application context
|
| + */
|
| + public int getSavedBatteryPercentage() {
|
| + return mSavedBatteryPercentage;
|
| + }
|
| +
|
| + /**
|
| + * Saves the current battery level percentage to be retrieved later.
|
| + */
|
| + public void saveCurrentBatteryPercentage(Context context) {
|
| + mSavedBatteryPercentage = getCurrentBatteryPercentage(context);
|
| + }
|
| +
|
| + /**
|
| + * @return the current battery level as percentage.
|
| + * @param context the application context
|
| + */
|
| + public int getCurrentBatteryPercentage(Context context) {
|
| + IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
|
| + Intent batteryStatus = context.registerReceiver(null, iFilter);
|
| + if (batteryStatus == null) return 0;
|
| + int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
| + int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
| + if (scale == 0) return 0;
|
| +
|
| + return Math.round(100 * level / (float) scale);
|
| + }
|
| +
|
| /** @return whether the currently active network is unmetered. */
|
| public boolean isUnmeteredNetworkAvailable(Context context) {
|
| NetworkInfoDelegate networkInfo =
|
|
|