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; private boolean mDeviceProvisioned;
// Battery status // Battery status
private BatteryStatus mBatteryStatus; @VisibleForTesting
BatteryStatus mBatteryStatus;
private StrongAuthTracker mStrongAuthTracker; private StrongAuthTracker mStrongAuthTracker;
@@ -1698,6 +1699,17 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
.getServiceStateForSubscriber(subId); .getServiceStateForSubscriber(subId);
mHandler.sendMessage( mHandler.sendMessage(
mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState)); 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); mHandler.post(this::registerRingerTracker);

View File

@@ -225,6 +225,8 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
@VisibleForTesting @VisibleForTesting
final class Receiver extends BroadcastReceiver { final class Receiver extends BroadcastReceiver {
private boolean mHasReceivedBattery = false;
public void init() { public void init() {
// Register for Intent broadcasts for... // Register for Intent broadcasts for...
IntentFilter filter = new IntentFilter(); 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_SCREEN_ON);
filter.addAction(Intent.ACTION_USER_SWITCHED); filter.addAction(Intent.ACTION_USER_SWITCHED);
mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mHandler); 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 @Override
@@ -246,6 +259,7 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks {
} }
}); });
} else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { } else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
mHasReceivedBattery = true;
final int oldBatteryLevel = mBatteryLevel; final int oldBatteryLevel = mBatteryLevel;
mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100); mBatteryLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 100);
final int oldBatteryStatus = mBatteryStatus; final int oldBatteryStatus = mBatteryStatus;

View File

@@ -74,7 +74,8 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
protected boolean mPowerSave; protected boolean mPowerSave;
private boolean mAodPowerSave; private boolean mAodPowerSave;
private boolean mTestmode = false; private boolean mTestmode = false;
private boolean mHasReceivedBattery = false; @VisibleForTesting
boolean mHasReceivedBattery = false;
private Estimate mEstimate; private Estimate mEstimate;
private boolean mFetchingEstimate = false; private boolean mFetchingEstimate = false;
@@ -102,6 +103,16 @@ public class BatteryControllerImpl extends BroadcastReceiver implements BatteryC
@Override @Override
public void init() { public void init() {
registerReceiver(); 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(); updatePowerSave();
updateEstimate(); updateEstimate();
} }

View File

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

View File

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

View File

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