Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b9de2e6 authored by Lucas Silva's avatar Lucas Silva
Browse files

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
parent 485a8116
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -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;
    }

    /**
+30 −2
Original line number Diff line number Diff line
@@ -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<Integer> 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<Integer> 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<Integer> 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);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -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);
    }