From 8b9de2e6b19dae6394e84aa4c5d9dca663f95629 Mon Sep 17 00:00:00 2001 From: Lucas Silva Date: Thu, 18 May 2023 14:41:23 -0400 Subject: [PATCH] Disable dreams home controls button when disabled on lockscreen Bug: 282680621 Test: flashed device, disabled/enabled home controls on lockscreen and verified that dreams home controls button was hidden/shown correctly Test: atest DreamBackendTest Change-Id: I2f5b5463612ee3558c2c4aa48f43610161d751fb --- .../settingslib/dream/DreamBackend.java | 13 ++++++-- .../settingslib/dream/DreamBackendTest.java | 32 +++++++++++++++++-- .../ComplicationTypesUpdater.java | 4 +++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java index c4f09cecfa1f1..f911d35757f61 100644 --- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java @@ -111,6 +111,9 @@ public class DreamBackend { public static final int COMPLICATION_TYPE_SMARTSPACE = 7; public static final int COMPLICATION_TYPE_MEDIA_ENTRY = 8; + private static final int SCREENSAVER_HOME_CONTROLS_ENABLED_DEFAULT = 1; + private static final int LOCKSCREEN_SHOW_CONTROLS_DEFAULT = 0; + private final Context mContext; private final IDreamManager mDreamManager; private final DreamInfoComparator mComparator; @@ -311,8 +314,14 @@ public class DreamBackend { /** Gets whether home controls button is enabled on the dream */ private boolean getHomeControlsEnabled() { - return Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.SCREENSAVER_HOME_CONTROLS_ENABLED, 1) == 1; + return Settings.Secure.getInt( + mContext.getContentResolver(), + Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, + LOCKSCREEN_SHOW_CONTROLS_DEFAULT) == 1 + && Settings.Secure.getInt( + mContext.getContentResolver(), + Settings.Secure.SCREENSAVER_HOME_CONTROLS_ENABLED, + SCREENSAVER_HOME_CONTROLS_ENABLED_DEFAULT) == 1; } /** diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java index 22ec12d44d6d9..2edf403e5c003 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/dream/DreamBackendTest.java @@ -28,6 +28,7 @@ import static org.mockito.Mockito.when; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; +import android.provider.Settings; import org.junit.After; import org.junit.Before; @@ -84,6 +85,7 @@ public final class DreamBackendTest { @Test public void testComplicationsEnabledByDefault() { + setControlsEnabledOnLockscreen(true); assertThat(mBackend.getComplicationsEnabled()).isTrue(); assertThat(mBackend.getEnabledComplications()).containsExactlyElementsIn( SUPPORTED_DREAM_COMPLICATIONS_LIST); @@ -91,6 +93,7 @@ public final class DreamBackendTest { @Test public void testEnableComplicationExplicitly() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(true); assertThat(mBackend.getEnabledComplications()).containsExactlyElementsIn( SUPPORTED_DREAM_COMPLICATIONS_LIST); @@ -99,6 +102,7 @@ public final class DreamBackendTest { @Test public void testDisableComplications() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(false); assertThat(mBackend.getEnabledComplications()) .containsExactly(COMPLICATION_TYPE_HOME_CONTROLS); @@ -107,6 +111,7 @@ public final class DreamBackendTest { @Test public void testHomeControlsDisabled_ComplicationsEnabled() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(true); mBackend.setHomeControlsEnabled(false); // Home controls should not be enabled, only date and time. @@ -118,6 +123,7 @@ public final class DreamBackendTest { @Test public void testHomeControlsDisabled_ComplicationsDisabled() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(false); mBackend.setHomeControlsEnabled(false); assertThat(mBackend.getEnabledComplications()).isEmpty(); @@ -125,9 +131,9 @@ public final class DreamBackendTest { @Test public void testHomeControlsEnabled_ComplicationsDisabled() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(false); mBackend.setHomeControlsEnabled(true); - // Home controls should not be enabled, only date and time. final List enabledComplications = Collections.singletonList(COMPLICATION_TYPE_HOME_CONTROLS); assertThat(mBackend.getEnabledComplications()) @@ -136,9 +142,9 @@ public final class DreamBackendTest { @Test public void testHomeControlsEnabled_ComplicationsEnabled() { + setControlsEnabledOnLockscreen(true); mBackend.setComplicationsEnabled(true); mBackend.setHomeControlsEnabled(true); - // Home controls should not be enabled, only date and time. final List enabledComplications = Arrays.asList( COMPLICATION_TYPE_HOME_CONTROLS, @@ -148,4 +154,26 @@ public final class DreamBackendTest { assertThat(mBackend.getEnabledComplications()) .containsExactlyElementsIn(enabledComplications); } + + @Test + public void testHomeControlsEnabled_lockscreenDisabled() { + setControlsEnabledOnLockscreen(false); + mBackend.setComplicationsEnabled(true); + mBackend.setHomeControlsEnabled(true); + // Home controls should not be enabled, only date and time. + final List enabledComplications = + Arrays.asList( + COMPLICATION_TYPE_DATE, + COMPLICATION_TYPE_TIME + ); + assertThat(mBackend.getEnabledComplications()) + .containsExactlyElementsIn(enabledComplications); + } + + private void setControlsEnabledOnLockscreen(boolean enabled) { + Settings.Secure.putInt( + mContext.getContentResolver(), + Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, + enabled ? 1 : 0); + } } diff --git a/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java b/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java index a334c1ed23384..0bdc7f1dfb967 100644 --- a/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java +++ b/packages/SystemUI/src/com/android/systemui/complication/ComplicationTypesUpdater.java @@ -77,6 +77,10 @@ public class ComplicationTypesUpdater extends ConditionalCoreStartable { Settings.Secure.SCREENSAVER_HOME_CONTROLS_ENABLED, settingsObserver, UserHandle.myUserId()); + mSecureSettings.registerContentObserverForUser( + Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, + settingsObserver, + UserHandle.myUserId()); settingsObserver.onChange(false); }