diff --git a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalConditionsMonitor.java b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalConditionsMonitor.java index 4f772da487687..1197816e24d29 100644 --- a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalConditionsMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalConditionsMonitor.java @@ -16,139 +16,27 @@ package com.android.systemui.communal.conditions; + import static com.android.systemui.communal.dagger.CommunalModule.COMMUNAL_CONDITIONS; -import android.util.Log; - -import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.dagger.SysUISingleton; -import com.android.systemui.statusbar.policy.CallbackController; +import com.android.systemui.util.condition.Condition; +import com.android.systemui.util.condition.Monitor; -import org.jetbrains.annotations.NotNull; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; import java.util.Set; import javax.inject.Inject; import javax.inject.Named; /** - * {@link CommunalConditionsMonitor} takes in a set of conditions, monitors whether all of them have - * been fulfilled, and informs any registered listeners. + * A concrete implementation of {@Monitor} with conditions for monitoring when communal mode should + * be enabled. */ @SysUISingleton -public class CommunalConditionsMonitor implements - CallbackController { - private final String mTag = getClass().getSimpleName(); - - private final ArrayList> mCallbacks = new ArrayList<>(); - - // Set of all conditions that need to be monitored. - private final Set mConditions; - - // Map of values of each condition. - private final HashMap mConditionsMap = new HashMap<>(); - - // Whether all conditions have been met. - private boolean mAllConditionsMet = false; - - // Whether the monitor has started listening for all the conditions. - private boolean mHaveConditionsStarted = false; - - // Callback for when each condition has been updated. - private final CommunalCondition.Callback mConditionCallback = (condition, isConditionMet) -> { - mConditionsMap.put(condition, isConditionMet); - - final boolean newAllConditionsMet = !mConditionsMap.containsValue(false); - - if (newAllConditionsMet == mAllConditionsMet) { - return; - } - - if (shouldLog()) Log.d(mTag, "all conditions met: " + newAllConditionsMet); - mAllConditionsMet = newAllConditionsMet; - - // Updates all callbacks. - final Iterator> iterator = mCallbacks.iterator(); - while (iterator.hasNext()) { - final Callback callback = iterator.next().get(); - if (callback == null) { - iterator.remove(); - } else { - callback.onConditionsChanged(mAllConditionsMet); - } - } - }; - +public class CommunalConditionsMonitor extends Monitor { @Inject public CommunalConditionsMonitor( - @Named(COMMUNAL_CONDITIONS) Set communalConditions) { - mConditions = communalConditions; - - // Initializes the conditions map and registers a callback for each condition. - mConditions.forEach((condition -> mConditionsMap.put(condition, false))); - } - - @Override - public void addCallback(@NotNull Callback callback) { - if (shouldLog()) Log.d(mTag, "adding callback"); - mCallbacks.add(new WeakReference<>(callback)); - - // Updates the callback immediately. - callback.onConditionsChanged(mAllConditionsMet); - - if (!mHaveConditionsStarted) { - if (shouldLog()) Log.d(mTag, "starting all conditions"); - mConditions.forEach(condition -> condition.addCallback(mConditionCallback)); - mHaveConditionsStarted = true; - } - } - - @Override - public void removeCallback(@NotNull Callback callback) { - if (shouldLog()) Log.d(mTag, "removing callback"); - final Iterator> iterator = mCallbacks.iterator(); - while (iterator.hasNext()) { - final Callback cb = iterator.next().get(); - if (cb == null || cb == callback) { - iterator.remove(); - } - } - - if (mCallbacks.isEmpty() && mHaveConditionsStarted) { - if (shouldLog()) Log.d(mTag, "stopping all conditions"); - mConditions.forEach(condition -> condition.removeCallback(mConditionCallback)); - - mAllConditionsMet = false; - mHaveConditionsStarted = false; - } - } - - /** - * Force updates each condition to the value provided. - */ - @VisibleForTesting - public void overrideAllConditionsMet(boolean value) { - mConditions.forEach(condition -> condition.updateCondition(value)); - } - - private boolean shouldLog() { - return Log.isLoggable(mTag, Log.DEBUG); - } - - /** - * Callback that receives updates of whether all conditions have been fulfilled. - */ - public interface Callback { - /** - * Triggered when the fulfillment of all conditions have been met. - * - * @param allConditionsMet True if all conditions have been fulfilled. False if none or - * only partial conditions have been fulfilled. - */ - void onConditionsChanged(boolean allConditionsMet); + @Named(COMMUNAL_CONDITIONS) Set communalConditions) { + super(communalConditions); } } diff --git a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalSettingCondition.java b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalSettingCondition.java index 1616b18172a9d..25519d0f96c75 100644 --- a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalSettingCondition.java +++ b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalSettingCondition.java @@ -23,6 +23,7 @@ import android.provider.Settings; import androidx.annotation.MainThread; +import com.android.systemui.util.condition.Condition; import com.android.systemui.util.settings.SecureSettings; import javax.inject.Inject; @@ -30,7 +31,7 @@ import javax.inject.Inject; /** * Monitors the communal setting, and informs any listeners with updates. */ -public class CommunalSettingCondition extends CommunalCondition { +public class CommunalSettingCondition extends Condition { private final SecureSettings mSecureSettings; private final ContentObserver mCommunalSettingContentObserver; diff --git a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalTrustedNetworkCondition.java b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalTrustedNetworkCondition.java index e4692dbba1ca6..2d59e13900837 100644 --- a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalTrustedNetworkCondition.java +++ b/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalTrustedNetworkCondition.java @@ -31,6 +31,7 @@ import android.util.Log; import androidx.annotation.NonNull; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.util.condition.Condition; import com.android.systemui.util.settings.SecureSettings; import java.util.Arrays; @@ -42,7 +43,7 @@ import javax.inject.Inject; * Monitors Wi-Fi connections and triggers callback, if any, when the device is connected to and * disconnected from a trusted network. */ -public class CommunalTrustedNetworkCondition extends CommunalCondition { +public class CommunalTrustedNetworkCondition extends Condition { private final String mTag = getClass().getSimpleName(); private final ConnectivityManager mConnectivityManager; private final ContentObserver mTrustedNetworksObserver; diff --git a/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.java b/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.java index a0986660ebdca..f27ae344eb24d 100644 --- a/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.java +++ b/packages/SystemUI/src/com/android/systemui/communal/dagger/CommunalModule.java @@ -28,12 +28,12 @@ import androidx.annotation.Nullable; import com.android.systemui.R; import com.android.systemui.communal.CommunalSource; import com.android.systemui.communal.PackageObserver; -import com.android.systemui.communal.conditions.CommunalCondition; import com.android.systemui.communal.conditions.CommunalSettingCondition; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.idle.AmbientLightModeMonitor; import com.android.systemui.idle.LightSensorEventsDebounceAlgorithm; import com.android.systemui.idle.dagger.IdleViewComponent; +import com.android.systemui.util.condition.Condition; import java.util.Collections; import java.util.HashSet; @@ -99,7 +99,7 @@ public interface CommunalModule { @Provides @ElementsIntoSet @Named(COMMUNAL_CONDITIONS) - static Set provideCommunalConditions( + static Set provideCommunalConditions( CommunalSettingCondition communalSettingCondition) { return new HashSet<>(Collections.singletonList(communalSettingCondition)); } diff --git a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalCondition.java b/packages/SystemUI/src/com/android/systemui/util/condition/Condition.java similarity index 93% rename from packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalCondition.java rename to packages/SystemUI/src/com/android/systemui/util/condition/Condition.java index 734ab6323ca05..0bbf56caaaf1c 100644 --- a/packages/SystemUI/src/com/android/systemui/communal/conditions/CommunalCondition.java +++ b/packages/SystemUI/src/com/android/systemui/util/condition/Condition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.communal.conditions; +package com.android.systemui.util.condition; import android.util.Log; @@ -27,9 +27,10 @@ import java.util.ArrayList; import java.util.Iterator; /** - * Base class for a condition that needs to be fulfilled in order for Communal Mode to display. + * Base class for a condition that needs to be fulfilled in order for {@link Monitor} to inform + * its callbacks. */ -public abstract class CommunalCondition implements CallbackController { +public abstract class Condition implements CallbackController { private final String mTag = getClass().getSimpleName(); private final ArrayList> mCallbacks = new ArrayList<>(); @@ -125,6 +126,6 @@ public abstract class CommunalCondition implements CallbackController { + private final String mTag = getClass().getSimpleName(); + + private final ArrayList> mCallbacks = new ArrayList<>(); + + // Set of all conditions that need to be monitored. + private final Set mConditions; + + // Map of values of each condition. + private final HashMap mConditionsMap = new HashMap<>(); + + // Whether all conditions have been met. + private boolean mAllConditionsMet = false; + + // Whether the monitor has started listening for all the conditions. + private boolean mHaveConditionsStarted = false; + + // Callback for when each condition has been updated. + private final Condition.Callback mConditionCallback = (condition, isConditionMet) -> { + mConditionsMap.put(condition, isConditionMet); + + final boolean newAllConditionsMet = !mConditionsMap.containsValue(false); + + if (newAllConditionsMet == mAllConditionsMet) { + return; + } + + if (shouldLog()) Log.d(mTag, "all conditions met: " + newAllConditionsMet); + mAllConditionsMet = newAllConditionsMet; + + // Updates all callbacks. + final Iterator> iterator = mCallbacks.iterator(); + while (iterator.hasNext()) { + final Callback callback = iterator.next().get(); + if (callback == null) { + iterator.remove(); + } else { + callback.onConditionsChanged(mAllConditionsMet); + } + } + }; + + @Inject + public Monitor(Set conditions) { + mConditions = conditions; + + // Initializes the conditions map and registers a callback for each condition. + mConditions.forEach((condition -> mConditionsMap.put(condition, false))); + } + + @Override + public void addCallback(@NotNull Callback callback) { + if (shouldLog()) Log.d(mTag, "adding callback"); + mCallbacks.add(new WeakReference<>(callback)); + + // Updates the callback immediately. + callback.onConditionsChanged(mAllConditionsMet); + + if (!mHaveConditionsStarted) { + if (shouldLog()) Log.d(mTag, "starting all conditions"); + mConditions.forEach(condition -> condition.addCallback(mConditionCallback)); + mHaveConditionsStarted = true; + } + } + + @Override + public void removeCallback(@NotNull Callback callback) { + if (shouldLog()) Log.d(mTag, "removing callback"); + final Iterator> iterator = mCallbacks.iterator(); + while (iterator.hasNext()) { + final Callback cb = iterator.next().get(); + if (cb == null || cb == callback) { + iterator.remove(); + } + } + + if (mCallbacks.isEmpty() && mHaveConditionsStarted) { + if (shouldLog()) Log.d(mTag, "stopping all conditions"); + mConditions.forEach(condition -> condition.removeCallback(mConditionCallback)); + + mAllConditionsMet = false; + mHaveConditionsStarted = false; + } + } + + /** + * Force updates each condition to the value provided. + */ + @VisibleForTesting + public void overrideAllConditionsMet(boolean value) { + mConditions.forEach(condition -> condition.updateCondition(value)); + } + + private boolean shouldLog() { + return Log.isLoggable(mTag, Log.DEBUG); + } + + /** + * Callback that receives updates of whether all conditions have been fulfilled. + */ + public interface Callback { + /** + * Triggered when the fulfillment of all conditions have been met. + * + * @param allConditionsMet True if all conditions have been fulfilled. False if none or + * only partial conditions have been fulfilled. + */ + void onConditionsChanged(boolean allConditionsMet); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalSettingConditionTest.java b/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalSettingConditionTest.java index cf147f06979fa..2d52c42fa75fd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalSettingConditionTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalSettingConditionTest.java @@ -31,8 +31,8 @@ import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.communal.conditions.CommunalCondition; import com.android.systemui.communal.conditions.CommunalSettingCondition; +import com.android.systemui.util.condition.Condition; import com.android.systemui.util.settings.FakeSettings; import com.android.systemui.utils.os.FakeHandler; @@ -57,7 +57,7 @@ public class CommunalSettingConditionTest extends SysuiTestCase { public void addCallback_communalSettingEnabled_immediatelyReportsTrue() { updateCommunalSetting(true); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); verify(callback).onConditionChanged(mCondition, true); } @@ -66,7 +66,7 @@ public class CommunalSettingConditionTest extends SysuiTestCase { public void addCallback_communalSettingDisabled_noReport() { updateCommunalSetting(false); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); verify(callback, never()).onConditionChanged(eq(mCondition), anyBoolean()); } @@ -75,7 +75,7 @@ public class CommunalSettingConditionTest extends SysuiTestCase { public void updateCallback_communalSettingEnabled_reportsTrue() { updateCommunalSetting(false); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); clearInvocations(callback); @@ -87,7 +87,7 @@ public class CommunalSettingConditionTest extends SysuiTestCase { public void updateCallback_communalSettingDisabled_reportsFalse() { updateCommunalSetting(true); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); clearInvocations(callback); @@ -99,7 +99,7 @@ public class CommunalSettingConditionTest extends SysuiTestCase { public void updateCallback_communalSettingDidNotChange_neverReportDup() { updateCommunalSetting(true); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); clearInvocations(callback); diff --git a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionsMonitorTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionMonitorTest.java similarity index 54% rename from packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionsMonitorTest.java rename to packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionMonitorTest.java index 59ddba1b45977..f08ee73ae9b69 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionsMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionMonitorTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.communal; +package com.android.systemui.util.condition; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.anyBoolean; @@ -30,8 +30,6 @@ import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.communal.conditions.CommunalCondition; -import com.android.systemui.communal.conditions.CommunalConditionsMonitor; import org.junit.Before; import org.junit.Test; @@ -43,97 +41,97 @@ import java.util.HashSet; @SmallTest @RunWith(AndroidTestingRunner.class) -public class CommunalConditionsMonitorTest extends SysuiTestCase { - private FakeCommunalCondition mCondition1; - private FakeCommunalCondition mCondition2; - private FakeCommunalCondition mCondition3; - private HashSet mConditions; +public class ConditionMonitorTest extends SysuiTestCase { + private FakeCondition mCondition1; + private FakeCondition mCondition2; + private FakeCondition mCondition3; + private HashSet mConditions; - private CommunalConditionsMonitor mCommunalConditionsMonitor; + private Monitor mConditionMonitor; @Before public void setup() { MockitoAnnotations.initMocks(this); - mCondition1 = spy(new FakeCommunalCondition()); - mCondition2 = spy(new FakeCommunalCondition()); - mCondition3 = spy(new FakeCommunalCondition()); + mCondition1 = spy(new FakeCondition()); + mCondition2 = spy(new FakeCondition()); + mCondition3 = spy(new FakeCondition()); mConditions = new HashSet<>(Arrays.asList(mCondition1, mCondition2, mCondition3)); - mCommunalConditionsMonitor = new CommunalConditionsMonitor(mConditions); + mConditionMonitor = new Monitor(mConditions); } @Test public void addCallback_addFirstCallback_addCallbackToAllConditions() { - final CommunalConditionsMonitor.Callback callback1 = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback1); + final Monitor.Callback callback1 = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback1); mConditions.forEach(condition -> verify(condition).addCallback(any())); - final CommunalConditionsMonitor.Callback callback2 = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback2); + final Monitor.Callback callback2 = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback2); mConditions.forEach(condition -> verify(condition, times(1)).addCallback(any())); } @Test public void addCallback_addFirstCallback_reportWithDefaultValue() { - final CommunalConditionsMonitor.Callback callback = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback); + final Monitor.Callback callback = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback); verify(callback).onConditionsChanged(false); } @Test public void addCallback_addSecondCallback_reportWithExistingValue() { - final CommunalConditionsMonitor.Callback callback1 = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback1); + final Monitor.Callback callback1 = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback1); - mCommunalConditionsMonitor.overrideAllConditionsMet(true); + mConditionMonitor.overrideAllConditionsMet(true); - final CommunalConditionsMonitor.Callback callback2 = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback2); + final Monitor.Callback callback2 = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback2); verify(callback2).onConditionsChanged(true); } @Test public void removeCallback_shouldNoLongerReceiveUpdate() { - final CommunalConditionsMonitor.Callback callback = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback); + final Monitor.Callback callback = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback); clearInvocations(callback); - mCommunalConditionsMonitor.removeCallback(callback); + mConditionMonitor.removeCallback(callback); - mCommunalConditionsMonitor.overrideAllConditionsMet(true); + mConditionMonitor.overrideAllConditionsMet(true); verify(callback, never()).onConditionsChanged(true); - mCommunalConditionsMonitor.overrideAllConditionsMet(false); + mConditionMonitor.overrideAllConditionsMet(false); verify(callback, never()).onConditionsChanged(false); } @Test public void removeCallback_removeLastCallback_removeCallbackFromAllConditions() { - final CommunalConditionsMonitor.Callback callback1 = - mock(CommunalConditionsMonitor.Callback.class); - final CommunalConditionsMonitor.Callback callback2 = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback1); - mCommunalConditionsMonitor.addCallback(callback2); + final Monitor.Callback callback1 = + mock(Monitor.Callback.class); + final Monitor.Callback callback2 = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback1); + mConditionMonitor.addCallback(callback2); - mCommunalConditionsMonitor.removeCallback(callback1); + mConditionMonitor.removeCallback(callback1); mConditions.forEach(condition -> verify(condition, never()).removeCallback(any())); - mCommunalConditionsMonitor.removeCallback(callback2); + mConditionMonitor.removeCallback(callback2); mConditions.forEach(condition -> verify(condition).removeCallback(any())); } @Test public void updateCallbacks_allConditionsMet_reportTrue() { - final CommunalConditionsMonitor.Callback callback = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback); + final Monitor.Callback callback = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback); clearInvocations(callback); mCondition1.fakeUpdateCondition(true); @@ -145,9 +143,9 @@ public class CommunalConditionsMonitorTest extends SysuiTestCase { @Test public void updateCallbacks_oneConditionStoppedMeeting_reportFalse() { - final CommunalConditionsMonitor.Callback callback = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback); + final Monitor.Callback callback = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback); mCondition1.fakeUpdateCondition(true); mCondition2.fakeUpdateCondition(true); @@ -160,9 +158,9 @@ public class CommunalConditionsMonitorTest extends SysuiTestCase { @Test public void updateCallbacks_shouldOnlyUpdateWhenValueChanges() { - final CommunalConditionsMonitor.Callback callback = - mock(CommunalConditionsMonitor.Callback.class); - mCommunalConditionsMonitor.addCallback(callback); + final Monitor.Callback callback = + mock(Monitor.Callback.class); + mConditionMonitor.addCallback(callback); verify(callback).onConditionsChanged(false); clearInvocations(callback); diff --git a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionTest.java similarity index 72% rename from packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionTest.java rename to packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionTest.java index 9d7ef0f68bd69..7fc6b51bf2a66 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/communal/CommunalConditionTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/condition/ConditionTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.communal; +package com.android.systemui.util.condition; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; @@ -29,7 +29,6 @@ import android.testing.AndroidTestingRunner; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; -import com.android.systemui.communal.conditions.CommunalCondition; import org.junit.Before; import org.junit.Test; @@ -37,26 +36,26 @@ import org.junit.runner.RunWith; @SmallTest @RunWith(AndroidTestingRunner.class) -public class CommunalConditionTest extends SysuiTestCase { - private FakeCommunalCondition mCondition; +public class ConditionTest extends SysuiTestCase { + private FakeCondition mCondition; @Before public void setup() { - mCondition = spy(new FakeCommunalCondition()); + mCondition = spy(new FakeCondition()); } @Test public void addCallback_addFirstCallback_triggerStart() { - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); verify(mCondition).start(); } @Test public void addCallback_addMultipleCallbacks_triggerStartOnlyOnce() { - final CommunalCondition.Callback callback1 = mock(CommunalCondition.Callback.class); - final CommunalCondition.Callback callback2 = mock(CommunalCondition.Callback.class); - final CommunalCondition.Callback callback3 = mock(CommunalCondition.Callback.class); + final Condition.Callback callback1 = mock(Condition.Callback.class); + final Condition.Callback callback2 = mock(Condition.Callback.class); + final Condition.Callback callback3 = mock(Condition.Callback.class); mCondition.addCallback(callback1); mCondition.addCallback(callback2); @@ -67,19 +66,19 @@ public class CommunalConditionTest extends SysuiTestCase { @Test public void addCallback_alreadyStarted_triggerUpdate() { - final CommunalCondition.Callback callback1 = mock(CommunalCondition.Callback.class); + final Condition.Callback callback1 = mock(Condition.Callback.class); mCondition.addCallback(callback1); mCondition.fakeUpdateCondition(true); - final CommunalCondition.Callback callback2 = mock(CommunalCondition.Callback.class); + final Condition.Callback callback2 = mock(Condition.Callback.class); mCondition.addCallback(callback2); verify(callback2).onConditionChanged(mCondition, true); } @Test public void removeCallback_removeLastCallback_triggerStop() { - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); verify(mCondition, never()).stop(); @@ -91,7 +90,7 @@ public class CommunalConditionTest extends SysuiTestCase { public void updateCondition_falseToTrue_reportTrue() { mCondition.fakeUpdateCondition(false); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); mCondition.fakeUpdateCondition(true); @@ -102,7 +101,7 @@ public class CommunalConditionTest extends SysuiTestCase { public void updateCondition_trueToFalse_reportFalse() { mCondition.fakeUpdateCondition(true); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); mCondition.fakeUpdateCondition(false); @@ -113,7 +112,7 @@ public class CommunalConditionTest extends SysuiTestCase { public void updateCondition_trueToTrue_reportNothing() { mCondition.fakeUpdateCondition(true); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); mCondition.fakeUpdateCondition(true); @@ -124,7 +123,7 @@ public class CommunalConditionTest extends SysuiTestCase { public void updateCondition_falseToFalse_reportNothing() { mCondition.fakeUpdateCondition(false); - final CommunalCondition.Callback callback = mock(CommunalCondition.Callback.class); + final Condition.Callback callback = mock(Condition.Callback.class); mCondition.addCallback(callback); mCondition.fakeUpdateCondition(false); diff --git a/packages/SystemUI/tests/src/com/android/systemui/communal/FakeCommunalCondition.java b/packages/SystemUI/tests/src/com/android/systemui/util/condition/FakeCondition.java similarity index 76% rename from packages/SystemUI/tests/src/com/android/systemui/communal/FakeCommunalCondition.java rename to packages/SystemUI/tests/src/com/android/systemui/util/condition/FakeCondition.java index 882effd8f1f25..9d5ccbec87ead 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/communal/FakeCommunalCondition.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/condition/FakeCondition.java @@ -14,15 +14,13 @@ * limitations under the License. */ -package com.android.systemui.communal; - -import com.android.systemui.communal.conditions.CommunalCondition; +package com.android.systemui.util.condition; /** - * Fake implementation of {@link CommunalCondition}, and provides a way for tests to update + * Fake implementation of {@link Condition}, and provides a way for tests to update * condition fulfillment. */ -public class FakeCommunalCondition extends CommunalCondition { +public class FakeCondition extends Condition { @Override public void start() {}