Chromium Code Reviews| Index: device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java |
| diff --git a/device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java b/device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java |
| index e44158912644a43af4c2c4aaeb1f88e6cd139517..14a5d76fc740b0e875190bafde2a070661bde703 100644 |
| --- a/device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java |
| +++ b/device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java |
| @@ -7,7 +7,9 @@ package org.chromium.device.battery; |
| import org.chromium.mojo.system.MojoException; |
| import org.chromium.mojom.device.BatteryMonitor; |
| import org.chromium.mojom.device.BatteryStatus; |
| -import org.chromium.mojom.device.BatteryStatusObserver; |
| + |
| +import java.util.ArrayList; |
| +import java.util.List; |
| /** |
| * Android implementation of the battery monitor service defined in |
| @@ -16,12 +18,15 @@ import org.chromium.mojom.device.BatteryStatusObserver; |
| public class BatteryMonitorImpl implements BatteryMonitor { |
| // Factory that created this instance and notifies it about battery status changes. |
| private final BatteryMonitorFactory mFactory; |
| + private final List<QueryNextStatusResponse> mCallbacks; |
| + private BatteryStatus mStatus; |
| + private boolean mStatusToReport; |
|
ppi
2015/01/07 19:37:36
nit: maybe "mHasStatusToReport"?
|
| private boolean mSubscribed; |
| - private BatteryStatusObserver mClient; |
| - |
| public BatteryMonitorImpl(BatteryMonitorFactory batteryMonitorFactory) { |
| mFactory = batteryMonitorFactory; |
| + mCallbacks = new ArrayList<QueryNextStatusResponse>(); |
| + mStatusToReport = false; |
| mSubscribed = true; |
| } |
| @@ -33,11 +38,6 @@ public class BatteryMonitorImpl implements BatteryMonitor { |
| } |
| @Override |
| - public void setClient(BatteryStatusObserver client) { |
| - mClient = client; |
| - } |
| - |
| - @Override |
| public void close() { |
| unsubscribe(); |
| } |
| @@ -47,12 +47,26 @@ public class BatteryMonitorImpl implements BatteryMonitor { |
| unsubscribe(); |
| } |
| - /** |
| - * Notifies the client passing the given battery status information. |
| - */ |
| + @Override |
| + public void queryNextStatus(QueryNextStatusResponse callback) { |
| + mCallbacks.add(callback); |
| + |
| + if (mStatusToReport) |
|
ppi
2015/01/07 19:37:36
As per AOSP Java style guide[1], this should be ei
|
| + reportStatus(); |
| + } |
| + |
| void didChange(BatteryStatus batteryStatus) { |
| - if (mClient != null) { |
| - mClient.didChange(batteryStatus); |
| - } |
| - }; |
| + mStatus = batteryStatus; |
| + mStatusToReport = true; |
| + |
| + if (!mCallbacks.isEmpty()) |
|
ppi
2015/01/07 19:37:36
As mentioned above - for conditionals we need to a
|
| + reportStatus(); |
| + } |
| + |
| + void reportStatus() { |
| + for (QueryNextStatusResponse callback : mCallbacks) |
| + callback.call(mStatus); |
| + mCallbacks.clear(); |
| + mStatusToReport = false; |
| + } |
| } |