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
|
@Override
|
||||||
public final void start() {
|
public final void start() {
|
||||||
if (mConditionSet == null || mConditionSet.isEmpty()) {
|
|
||||||
onStart();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mStartToken = mMonitor.addSubscription(
|
mStartToken = mMonitor.addSubscription(
|
||||||
new Monitor.Subscription.Builder(allConditionsMet -> {
|
new Monitor.Subscription.Builder(allConditionsMet -> {
|
||||||
if (allConditionsMet) {
|
if (allConditionsMet) {
|
||||||
@@ -63,11 +58,6 @@ public abstract class ConditionalCoreStartable implements CoreStartable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void onBootCompleted() {
|
public final void onBootCompleted() {
|
||||||
if (mConditionSet == null || mConditionSet.isEmpty()) {
|
|
||||||
bootCompleted();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
mBootCompletedToken = mMonitor.addSubscription(
|
mBootCompletedToken = mMonitor.addSubscription(
|
||||||
new Monitor.Subscription.Builder(allConditionsMet -> {
|
new Monitor.Subscription.Builder(allConditionsMet -> {
|
||||||
if (allConditionsMet) {
|
if (allConditionsMet) {
|
||||||
|
|||||||
@@ -248,6 +248,21 @@ public class ConditionMonitorTest extends SysuiTestCase {
|
|||||||
verify(callback).onConditionsChanged(true);
|
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
|
@Test
|
||||||
public void removeCallback_noFailureOnDoubleRemove() {
|
public void removeCallback_noFailureOnDoubleRemove() {
|
||||||
final Condition condition = mock(
|
final Condition condition = mock(
|
||||||
|
|||||||
@@ -60,6 +60,11 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
|
|||||||
mCallback = callback;
|
mCallback = callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FakeConditionalCoreStartable(Monitor monitor, Callback callback) {
|
||||||
|
super(monitor);
|
||||||
|
mCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStart() {
|
protected void onStart() {
|
||||||
mCallback.onStart();
|
mCallback.onStart();
|
||||||
@@ -122,6 +127,31 @@ public class ConditionalCoreStartableTest extends SysuiTestCase {
|
|||||||
verify(mMonitor).removeSubscription(mSubscriptionToken);
|
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
|
* Verifies that {@link ConditionalCoreStartable#bootCompleted()} ()} is predicated on
|
||||||
|
|||||||
Reference in New Issue
Block a user