Always have ConditionalCoreStartable subscribe to monitor. am: daed6675fc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21380128 Change-Id: Id9a948a6fa4717047cb1459f773eecf49e9f3650 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -43,11 +43,6 @@ public abstract class ConditionalCoreStartable implements CoreStartable {
|
||||
|
||||
@Override
|
||||
public final void start() {
|
||||
if (mConditionSet == null || mConditionSet.isEmpty()) {
|
||||
onStart();
|
||||
return;
|
||||
}
|
||||
|
||||
mStartToken = mMonitor.addSubscription(
|
||||
new Monitor.Subscription.Builder(allConditionsMet -> {
|
||||
if (allConditionsMet) {
|
||||
@@ -63,11 +58,6 @@ public abstract class ConditionalCoreStartable implements CoreStartable {
|
||||
|
||||
@Override
|
||||
public final void onBootCompleted() {
|
||||
if (mConditionSet == null || mConditionSet.isEmpty()) {
|
||||
bootCompleted();
|
||||
return;
|
||||
}
|
||||
|
||||
mBootCompletedToken = mMonitor.addSubscription(
|
||||
new Monitor.Subscription.Builder(allConditionsMet -> {
|
||||
if (allConditionsMet) {
|
||||
|
||||
@@ -248,6 +248,21 @@ public class ConditionMonitorTest extends SysuiTestCase {
|
||||
verify(callback).onConditionsChanged(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addCallback_preCondition_noConditions_reportAllConditionsMet() {
|
||||
final Monitor
|
||||
monitor = new Monitor(mExecutor, new HashSet<>(Arrays.asList(mCondition1)));
|
||||
final Monitor.Callback callback = mock(
|
||||
Monitor.Callback.class);
|
||||
|
||||
monitor.addSubscription(new Monitor.Subscription.Builder(callback).build());
|
||||
mExecutor.runAllReady();
|
||||
verify(callback, never()).onConditionsChanged(true);
|
||||
mCondition1.fakeUpdateCondition(true);
|
||||
mExecutor.runAllReady();
|
||||
verify(callback).onConditionsChanged(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removeCallback_noFailureOnDoubleRemove() {
|
||||
final Condition condition = mock(
|
||||
|
||||
@@ -60,6 +60,11 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
public FakeConditionalCoreStartable(Monitor monitor, Callback callback) {
|
||||
super(monitor);
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
mCallback.onStart();
|
||||
@@ -122,6 +127,31 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
|
||||
verify(mMonitor).removeSubscription(mSubscriptionToken);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnStartCallbackWithNoConditions() {
|
||||
final CoreStartable coreStartable =
|
||||
new FakeConditionalCoreStartable(mMonitor,
|
||||
mCallback);
|
||||
|
||||
when(mMonitor.addSubscription(any())).thenReturn(mSubscriptionToken);
|
||||
coreStartable.start();
|
||||
|
||||
final ArgumentCaptor<Monitor.Subscription> subscriptionCaptor = ArgumentCaptor.forClass(
|
||||
Monitor.Subscription.class);
|
||||
verify(mMonitor).addSubscription(subscriptionCaptor.capture());
|
||||
|
||||
final Monitor.Subscription subscription = subscriptionCaptor.getValue();
|
||||
|
||||
assertThat(subscription.getConditions()).isEmpty();
|
||||
|
||||
verify(mCallback, never()).onStart();
|
||||
|
||||
subscription.getCallback().onConditionsChanged(true);
|
||||
|
||||
verify(mCallback).onStart();
|
||||
verify(mMonitor).removeSubscription(mSubscriptionToken);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verifies that {@link ConditionalCoreStartable#bootCompleted()} ()} is predicated on
|
||||
|
||||
Reference in New Issue
Block a user