Merge "Monitor add callback uniqueness."

This commit is contained in:
Darrell Shi
2022-02-12 07:01:03 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 0 deletions

View File

@@ -145,6 +145,10 @@ public class Monitor implements CallbackController<Monitor.Callback> {
}
private void addCallbackLocked(@NotNull Callback callback) {
if (mCallbacks.contains(callback)) {
return;
}
if (shouldLog()) Log.d(mTag, "adding callback");
mCallbacks.add(callback);

View File

@@ -194,6 +194,21 @@ public class ConditionMonitorTest extends SysuiTestCase {
verify(callback).onConditionsChanged(true);
}
@Test
public void addCallback_withMultipleInstancesOfTheSameCallback_registerOnlyOne() {
final Monitor monitor = new Monitor(mExecutor, new HashSet<>(), null /*callbacks*/);
final Monitor.Callback callback = mock(Monitor.Callback.class);
// Adds the same instance multiple times.
monitor.addCallback(callback);
monitor.addCallback(callback);
monitor.addCallback(callback);
mExecutor.runAllReady();
// Callback should only be triggered once.
verify(callback, times(1)).onConditionsChanged(true);
}
@Test
public void removeCallback_shouldNoLongerReceiveUpdate() {
final Condition condition = mock(Condition.class);