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

Commit 9872f432 authored by Lucas Silva's avatar Lucas Silva
Browse files

Disable dreams home controls button when disabled on lockscreen.

When home controls are disable on lockscreen, we should also disable
them on dreams.

Bug: 282680621
Test: flashed device, disabled/enabled home controls on lockscreen and
verified that dreams home controls button was hidden/shown correctly
Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.dream.DreamHomeControlsPreferenceControllerTest"

Change-Id: I535b079cabc2838e77f3afc74bb8f8730b850653
parent ef7a75c3
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
package com.android.settings.dream;

import android.content.Context;
import android.provider.Settings;

import androidx.preference.Preference;

import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
@@ -46,12 +49,21 @@ public class DreamHomeControlsPreferenceController extends TogglePreferenceContr
        final boolean supported =
                mBackend.getSupportedComplications()
                        .contains(DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS);
        return supported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;

        return controlsEnabledOnLockscreen() ? (supported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE)
                : DISABLED_DEPENDENT_SETTING;
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        preference.setEnabled(getAvailabilityStatus() == AVAILABLE);
        refreshSummary(preference);
    }

    @Override
    public boolean isChecked() {
        return mBackend.getEnabledComplications().contains(
        return controlsEnabledOnLockscreen() && mBackend.getEnabledComplications().contains(
                DreamBackend.COMPLICATION_TYPE_HOME_CONTROLS);
    }

@@ -61,6 +73,12 @@ public class DreamHomeControlsPreferenceController extends TogglePreferenceContr
        return true;
    }

    private boolean controlsEnabledOnLockscreen() {
        return Settings.Secure.getInt(
                mContext.getContentResolver(),
                Settings.Secure.LOCKSCREEN_SHOW_CONTROLS, 0) != 0;
    }

    @Override
    public int getSliceHighlightMenuRes() {
        return R.string.menu_key_display;
+21 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.provider.Settings;
import android.util.ArraySet;

import androidx.preference.PreferenceScreen;
@@ -80,6 +81,7 @@ public class DreamHomeControlsPreferenceControllerTest {

    @Test
    public void testSetChecked_setTrue_enablesSetting() {
        setControlsEnabledOnLockscreen(true);
        mBackend.setHomeControlsEnabled(false);
        assertThat(mBackend.getEnabledComplications())
                .doesNotContain(COMPLICATION_TYPE_HOME_CONTROLS);
@@ -91,6 +93,7 @@ public class DreamHomeControlsPreferenceControllerTest {

    @Test
    public void testSetChecked_setFalse_disablesSetting() {
        setControlsEnabledOnLockscreen(true);
        mBackend.setHomeControlsEnabled(true);
        assertThat(mBackend.getEnabledComplications())
                .contains(COMPLICATION_TYPE_HOME_CONTROLS);
@@ -102,15 +105,33 @@ public class DreamHomeControlsPreferenceControllerTest {

    @Test
    public void testIsChecked_returnsFalse() {
        setControlsEnabledOnLockscreen(true);
        mBackend.setHomeControlsEnabled(false);
        assertThat(mController.isChecked()).isFalse();
    }

    @Test
    public void testIsChecked_returnsTrue() {
        setControlsEnabledOnLockscreen(true);
        mBackend.setHomeControlsEnabled(true);
        assertThat(mBackend.getEnabledComplications())
                .contains(COMPLICATION_TYPE_HOME_CONTROLS);
        assertThat(mController.isChecked()).isTrue();
    }

    @Test
    public void testIsChecked_lockScreenDisabled_returnsFalse() {
        setControlsEnabledOnLockscreen(false);
        mBackend.setHomeControlsEnabled(true);
        assertThat(mBackend.getEnabledComplications())
                .doesNotContain(COMPLICATION_TYPE_HOME_CONTROLS);
        assertThat(mController.isChecked()).isFalse();
    }

    private void setControlsEnabledOnLockscreen(boolean enabled) {
        Settings.Secure.putInt(
                mContext.getContentResolver(),
                Settings.Secure.LOCKSCREEN_SHOW_CONTROLS,
                enabled ? 1 : 0);
    }
}