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; |
+ } |
} |