Merge "SysUI: Protect against crash in BatteryController" into nyc-mr1-dev

This commit is contained in:
Jason Monk
2016-07-12 19:18:50 +00:00
committed by Android (Google) Code Review

View File

@@ -89,14 +89,18 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
@Override @Override
public void addStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) { public void addStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) {
mChangeCallbacks.add(cb); synchronized (mChangeCallbacks) {
mChangeCallbacks.add(cb);
}
cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); cb.onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
cb.onPowerSaveChanged(mPowerSave); cb.onPowerSaveChanged(mPowerSave);
} }
@Override @Override
public void removeStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) { public void removeStateChangedCallback(BatteryController.BatteryStateChangeCallback cb) {
mChangeCallbacks.remove(cb); synchronized (mChangeCallbacks) {
mChangeCallbacks.remove(cb);
}
} }
@Override @Override
@@ -171,16 +175,20 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
} }
protected void fireBatteryLevelChanged() { protected void fireBatteryLevelChanged() {
final int N = mChangeCallbacks.size(); synchronized (mChangeCallbacks) {
for (int i = 0; i < N; i++) { final int N = mChangeCallbacks.size();
mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging); for (int i = 0; i < N; i++) {
mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
}
} }
} }
private void firePowerSaveChanged() { private void firePowerSaveChanged() {
final int N = mChangeCallbacks.size(); synchronized (mChangeCallbacks) {
for (int i = 0; i < N; i++) { final int N = mChangeCallbacks.size();
mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave); for (int i = 0; i < N; i++) {
mChangeCallbacks.get(i).onPowerSaveChanged(mPowerSave);
}
} }
} }