Merge "Initialize values from sticy ACTION_BATTERY_CHANGED" into rvc-dev

This commit is contained in:
Fabian Kozynski
2020-06-26 19:53:14 +00:00
committed by Android (Google) Code Review
6 changed files with 63 additions and 6 deletions

View File

@@ -251,7 +251,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
private boolean mDeviceProvisioned;
// Battery status
private BatteryStatus mBatteryStatus;
@VisibleForTesting
BatteryStatus mBatteryStatus;
private StrongAuthTracker mStrongAuthTracker;
@@ -1698,6 +1699,17 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
.getServiceStateForSubscriber(subId);
mHandler.sendMessage(
mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState));
// Get initial state. Relying on Sticky behavior until API for getting info.
if (mBatteryStatus == null) {
Intent intent = mContext.registerReceiver(
null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)
);
if (intent != null && mBatteryStatus == null) {
mBroadcastReceiver.onReceive(mContext, intent);
}
}
});
mHandler.post(this::registerRingerTracker);

View File

@@ -225,6 +225,8 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
@VisibleForTesting
final class Receiver extends BroadcastReceiver {
private boolean mHasReceivedBattery = false;
public void init() {
// Register for Intent broadcasts for...
IntentFilter filter = new IntentFilter();
@@ -234,6 +236,17 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_USER_SWITCHED);
mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mHandler);
// Force get initial values. Relying on Sticky behavior until API for getting info.
if (!mHasReceivedBattery) {
// Get initial state
Intent intent = mContext.registerReceiver(
null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)
);
if (intent != null) {
onReceive(mContext, intent);
}
}
}
@Override
@@ -246,6 +259,7 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
}
});
} else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
mHasReceivedBattery = true;
final int oldBatteryLevel = mBatteryLevel;
mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100);
final int oldBatteryStatus = mBatteryStatus;

View File

@@ -74,7 +74,8 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
protected boolean mPowerSave;
private boolean mAodPowerSave;
private boolean mTestmode = false;
private boolean mHasReceivedBattery = false;
@VisibleForTesting
boolean mHasReceivedBattery = false;
private Estimate mEstimate;
private boolean mFetchingEstimate = false;
@@ -102,6 +103,16 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
@Override
public void init() {
registerReceiver();
if (!mHasReceivedBattery) {
// Get initial state. Relying on Sticky behavior until API for getting info.
Intent intent = mContext.registerReceiver(
null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)
);
if (intent != null && !mHasReceivedBattery) {
onReceive(mContext, intent);
}
}
updatePowerSave();
updateEstimate();
}

View File

@@ -210,6 +210,13 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
mKeyguardUpdateMonitor.destroy();
}
@Test
public void testInitialBatteryLevelRequested() {
mTestableLooper.processAllMessages();
assertThat(mKeyguardUpdateMonitor.mBatteryStatus).isNotNull();
}
@Test
public void testReceiversRegistered() {
verify(mBroadcastDispatcher, atLeastOnce()).registerReceiverWithHandler(

View File

@@ -67,27 +67,35 @@ public class SysuiTestableContext extends TestableContext {
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
mRegisteredReceivers.add(receiver);
if (receiver != null) {
mRegisteredReceivers.add(receiver);
}
return super.registerReceiver(receiver, filter);
}
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler) {
mRegisteredReceivers.add(receiver);
if (receiver != null) {
mRegisteredReceivers.add(receiver);
}
return super.registerReceiver(receiver, filter, broadcastPermission, scheduler);
}
@Override
public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user,
IntentFilter filter, String broadcastPermission, Handler scheduler) {
mRegisteredReceivers.add(receiver);
if (receiver != null) {
mRegisteredReceivers.add(receiver);
}
return super.registerReceiverAsUser(receiver, user, filter, broadcastPermission, scheduler);
}
@Override
public void unregisterReceiver(BroadcastReceiver receiver) {
mRegisteredReceivers.remove(receiver);
if (receiver != null) {
mRegisteredReceivers.remove(receiver);
}
super.unregisterReceiver(receiver);
}
}

View File

@@ -58,6 +58,11 @@ public class BatteryControllerTest extends SysuiTestCase {
mBatteryController.init();
}
@Test
public void testBatteryInitialized() {
Assert.assertTrue(mBatteryController.mHasReceivedBattery);
}
@Test
public void testIndependentAODBatterySaver_true() {
PowerSaveState state = new PowerSaveState.Builder()