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

Commit cd4a35de authored by Yi-yo Chiang's avatar Yi-yo Chiang
Browse files

Revert "Update the summary of AoD when Bedtime mode is on"

Revert "Update the summary of Idle lock screen when Bedtime mode..."

Revert submission 13071396-cherrypick-cherrypick-bedtime-hpxwlbiuim-0q85x8kaar

Reason for revert: Broken test b/173663404

Reverted Changes:
Id2511cb0a:Update the summary of AoD when Bedtime mode is on
I041599b9c:Update the summary of Idle lock screen when Bedtim...

Bug: 173663404
Change-Id: I9bea7499393d3ab1733b82140942499dddd9a2aa
Merged-In: I3b7053ad752f548f421dcca10cc1203500b1220b
parent bca70dd2
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -104,8 +104,6 @@
    <uses-permission android:name="android.permission.INSTALL_DYNAMIC_SYSTEM" />
    <uses-permission android:name="android.permission.BIND_CELL_BROADCAST_SERVICE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.READ_DREAM_STATE" />
    <uses-permission android:name="android.permission.READ_DREAM_SUPPRESSION" />
    
    <application android:label="@string/settings_label"
            android:icon="@drawable/ic_launcher_settings"
+0 −3
Original line number Diff line number Diff line
@@ -12187,7 +12187,4 @@
    <!-- Summary for see all preference when bluetooth is disable [CHAR LIMIT=none]-->
    <string name="connected_device_see_all_summary">Bluetooth will turn on</string>
    <!-- Summary for preference when Bedtime mode is on [CHAR LIMIT=NONE] -->
    <string name="aware_summary_when_bedtime_on">Unavailable because bedtime mode is on</string>
</resources>
+14 −40
Original line number Diff line number Diff line
@@ -16,17 +16,12 @@
package com.android.settings.display;

import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.display.AmbientDisplayConfiguration;
import android.os.PowerManager;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;

import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;

public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreferenceController {
@@ -36,9 +31,13 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference

    private static final int MY_USER = UserHandle.myUserId();
    private static final String PROP_AWARE_AVAILABLE = "ro.vendor.aware_available";
    private static final String AOD_SUPPRESSED_TOKEN = "winddown";

    private AmbientDisplayConfiguration mConfig;
    private OnPreferenceChangedCallback mCallback;

    public interface OnPreferenceChangedCallback {
        void onPreferenceChanged();
    }

    public AmbientDisplayAlwaysOnPreferenceController(Context context, String key) {
        super(context, key);
@@ -51,12 +50,6 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
                AVAILABLE : UNSUPPORTED_ON_DEVICE;
    }

    @Override
    public void updateState(Preference preference) {
        super.updateState(preference);
        refreshSummary(preference);
    }

    @Override
    public boolean isSliceable() {
        return TextUtils.equals(getPreferenceKey(), "ambient_display_always_on");
@@ -77,14 +70,10 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
        int enabled = isChecked ? ON : OFF;
        Settings.Secure.putInt(
                mContext.getContentResolver(), Settings.Secure.DOZE_ALWAYS_ON, enabled);
        return true;
        if (mCallback != null) {
            mCallback.onPreferenceChanged();
        }

    @Override
    public CharSequence getSummary() {
        return mContext.getText(
                isAodSuppressedByBedtime(mContext) ? R.string.aware_summary_when_bedtime_on
                        : R.string.doze_always_on_summary);
        return true;
    }

    public AmbientDisplayAlwaysOnPreferenceController setConfig(
@@ -93,6 +82,12 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
        return this;
    }

    public AmbientDisplayAlwaysOnPreferenceController setCallback(
            OnPreferenceChangedCallback callback) {
        mCallback = callback;
        return this;
    }

    public static boolean isAvailable(AmbientDisplayConfiguration config) {
        return config.alwaysOnAvailableForUser(MY_USER);
    }
@@ -103,25 +98,4 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
        }
        return mConfig;
    }

    /**
     * Returns whether AOD is suppressed by Bedtime mode, a feature of Digital Wellbeing.
     *
     * We know that Bedtime mode suppresses AOD using {@link AOD_SUPPRESSED_TOKEN}. If the Digital
     * Wellbeing app is suppressing AOD with {@link AOD_SUPPRESSED_TOKEN}, then we can infer that
     * AOD is being suppressed by Bedtime mode.
     */
    public static boolean isAodSuppressedByBedtime(Context context) {
        int uid;
        final PowerManager powerManager = context.getSystemService(PowerManager.class);
        final PackageManager packageManager = context.getPackageManager();
        final String packageName = context.getString(
                com.android.internal.R.string.config_defaultWellbeingPackage);
        try {
            uid = packageManager.getApplicationInfo(packageName, /* flags= */ 0).uid;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
        return powerManager.isAmbientDisplaySuppressedForTokenByApp(AOD_SUPPRESSED_TOKEN, uid);
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -88,7 +88,9 @@ public class LockscreenDashboardFragment extends DashboardFragment
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        use(AmbientDisplayAlwaysOnPreferenceController.class).setConfig(getConfig(context));
        use(AmbientDisplayAlwaysOnPreferenceController.class)
                .setConfig(getConfig(context))
                .setCallback(this::updatePreferenceStates);
        use(AmbientDisplayNotificationsPreferenceController.class).setConfig(getConfig(context));
        use(DoubleTapScreenPreferenceController.class).setConfig(getConfig(context));
        use(PickupGesturePreferenceController.class).setConfig(getConfig(context));
+10 −62
Original line number Diff line number Diff line
@@ -19,20 +19,13 @@ package com.android.settings.display;
import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.hardware.display.AmbientDisplayConfiguration;
import android.os.PowerManager;
import android.provider.Settings;

import com.android.internal.R;
import com.android.settings.testutils.shadow.ShadowSecureSettings;

import org.junit.Before;
@@ -48,41 +41,24 @@ import org.robolectric.annotation.Config;
@Config(shadows = ShadowSecureSettings.class)
public class AmbientDisplayAlwaysOnPreferenceControllerTest {

    private static final String TEST_PACKAGE = "com.android.test";

    @Mock
    private AmbientDisplayConfiguration mConfig;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private PowerManager mPowerManager;
    @Mock
    private ApplicationInfo mApplicationInfo;

    private Context mContext;

    private ContentResolver mContentResolver;

    private AmbientDisplayAlwaysOnPreferenceController mController;
    private boolean mCallbackInvoked;

    @Before
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mContext = spy(RuntimeEnvironment.application);
        mContext = RuntimeEnvironment.application;
        mContentResolver = mContext.getContentResolver();
        mController = new AmbientDisplayAlwaysOnPreferenceController(mContext, "key");
        mController.setConfig(mConfig);

        mApplicationInfo.uid = 1;
        when(mContext.getString(R.string.config_defaultWellbeingPackage)).thenReturn(TEST_PACKAGE);

        when(mContext.getPackageManager()).thenReturn(mPackageManager);
        doReturn(mApplicationInfo).when(mPackageManager).getApplicationInfo(
                TEST_PACKAGE, /* flag= */0);

        doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
        when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
                .thenReturn(false);
        mController.setCallback(() -> mCallbackInvoked = true);
    }

    @Test
@@ -131,6 +107,13 @@ public class AmbientDisplayAlwaysOnPreferenceControllerTest {
                .isEqualTo(0);
    }

    @Test
    public void onPreferenceChange_callback() {
        assertThat(mCallbackInvoked).isFalse();
        mController.setChecked(true);
        assertThat(mCallbackInvoked).isTrue();
    }

    @Test
    public void isSliceableCorrectKey_returnsTrue() {
        final AmbientDisplayAlwaysOnPreferenceController controller =
@@ -150,39 +133,4 @@ public class AmbientDisplayAlwaysOnPreferenceControllerTest {
    public void isPublicSlice_returnTrue() {
        assertThat(mController.isPublicSlice()).isTrue();
    }

    @Test
    public void isAodSuppressedByBedtime_bedTimeModeOn_returnTrue() {
        when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
                .thenReturn(true);

        assertThat(AmbientDisplayAlwaysOnPreferenceController
                .isAodSuppressedByBedtime(mContext)).isTrue();
    }

    @Test
    public void isAodSuppressedByBedtime_bedTimeModeOff_returnFalse() {
        assertThat(AmbientDisplayAlwaysOnPreferenceController
                .isAodSuppressedByBedtime(mContext)).isFalse();
    }

    @Test
    public void isAodSuppressedByBedtime_notFoundWellbeingPackage_returnFalse()
            throws PackageManager.NameNotFoundException {
        when(mPackageManager.getApplicationInfo(TEST_PACKAGE, /* flag= */0)).thenThrow(
                new PackageManager.NameNotFoundException());

        assertThat(AmbientDisplayAlwaysOnPreferenceController
                .isAodSuppressedByBedtime(mContext)).isFalse();
    }

    @Test
    public void getSummary_bedTimeModeOn_shouldReturnUnavailableSummary() {
        when(mPowerManager.isAmbientDisplaySuppressedForTokenByApp(anyString(), anyInt()))
                .thenReturn(true);

        final CharSequence summary = mController.getSummary();
        assertThat(summary).isEqualTo(mContext.getString(
                com.android.settings.R.string.aware_summary_when_bedtime_on));
    }
}
Loading