Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1495)

Unified Diff: device/battery/android/java/src/org/chromium/device/battery/BatteryMonitorImpl.java

Issue 833983002: Stop using [Client=...] feature of Mojom for BatteryMonitor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixup per review feedback Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..364e21a88f8381ecab2d123c400e73d14ac428d8 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 mHasStatusToReport;
private boolean mSubscribed;
- private BatteryStatusObserver mClient;
-
public BatteryMonitorImpl(BatteryMonitorFactory batteryMonitorFactory) {
mFactory = batteryMonitorFactory;
+ mCallbacks = new ArrayList<QueryNextStatusResponse>();
+ mHasStatusToReport = 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,29 @@ 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 (mHasStatusToReport) {
+ reportStatus();
+ }
+ }
+
void didChange(BatteryStatus batteryStatus) {
- if (mClient != null) {
- mClient.didChange(batteryStatus);
+ mStatus = batteryStatus;
+ mHasStatusToReport = true;
+
+ if (!mCallbacks.isEmpty()) {
+ reportStatus();
}
- };
+ }
+
+ void reportStatus() {
+ for (QueryNextStatusResponse callback : mCallbacks) {
+ callback.call(mStatus);
+ }
+ mCallbacks.clear();
+ mHasStatusToReport = false;
+ }
}
« no previous file with comments | « content/renderer/battery_status/battery_status_dispatcher_unittest.cc ('k') | device/battery/battery_monitor.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698