diff options
author | Lucas Silva <lusilva@google.com> | 2023-04-21 14:54:13 -0400 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-27 19:15:41 +0000 |
commit | 1dd424018a2f72446a405c86f2e39e521572bffe (patch) | |
tree | 096fae5acf631703408c88c75cc831161d3e610c | |
parent | 5d6d481084c606edf42a02a8d78a37719e34b1a1 (diff) | |
download | base-1dd424018a2f72446a405c86f2e39e521572bffe.tar.gz |
Don't show home controls complication if not available.
There is a toggle to disable home controls in Settings, and we need to
honor that toggle when determining if the complication should be shown
on the dream.
Bug: 278964460
Test: atest DreamOverlayStateControllerTest
Test: flashed device and disabled toggle in settings, verified home
controls does not show on clock dream
(cherry picked from commit 2955b163175b3dbdf69df34ea0c6f8c8c40642d3)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:f7cf03045f46a10d1cdb0f0c0134cb06ad2c44e7)
Merged-In: I4e72f4619fd0ebbf5a78620796f0114ceabc9365
Change-Id: I4e72f4619fd0ebbf5a78620796f0114ceabc9365
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStateController.java | 3 | ||||
-rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStateControllerTest.java | 28 |
2 files changed, 30 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStateController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStateController.java index b575f9a0ab8b..a2872e3c639b 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStateController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStateController.java @@ -197,7 +197,8 @@ public class DreamOverlayStateController implements if (mShouldShowComplications) { return (requiredTypes & getAvailableComplicationTypes()) == requiredTypes; } - return (requiredTypes & mSupportedTypes) == requiredTypes; + final int typesToAlwaysShow = mSupportedTypes & getAvailableComplicationTypes(); + return (requiredTypes & typesToAlwaysShow) == requiredTypes; }) .collect(Collectors.toCollection(HashSet::new)) : mComplications); diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStateControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStateControllerTest.java index 55f0a8cd3f08..d0c1c4db62d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStateControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStateControllerTest.java @@ -353,6 +353,34 @@ public class DreamOverlayStateControllerTest extends SysuiTestCase { } } + @Test + public void testHomeControlsDoNotShowIfNotAvailable_featureEnabled() { + when(mFeatureFlags.isEnabled(Flags.ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS)).thenReturn(true); + + final DreamOverlayStateController stateController = getDreamOverlayStateController(true); + stateController.setShouldShowComplications(true); + + final Complication homeControlsComplication = Mockito.mock(Complication.class); + when(homeControlsComplication.getRequiredTypeAvailability()) + .thenReturn(Complication.COMPLICATION_TYPE_HOME_CONTROLS); + + stateController.addComplication(homeControlsComplication); + + final DreamOverlayStateController.Callback callback = + Mockito.mock(DreamOverlayStateController.Callback.class); + + stateController.addCallback(callback); + mExecutor.runAllReady(); + + // No home controls since it is not available. + assertThat(stateController.getComplications()).doesNotContain(homeControlsComplication); + + stateController.setAvailableComplicationTypes(Complication.COMPLICATION_TYPE_HOME_CONTROLS + | Complication.COMPLICATION_TYPE_WEATHER); + mExecutor.runAllReady(); + assertThat(stateController.getComplications()).contains(homeControlsComplication); + } + private DreamOverlayStateController getDreamOverlayStateController(boolean overlayEnabled) { return new DreamOverlayStateController(mExecutor, overlayEnabled, mFeatureFlags); } |