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

Commit fb99a16e authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

Merge "Register for doze brightness as soon as we can" into sc-qpr1-dev am:...

Merge "Register for doze brightness as soon as we can" into sc-qpr1-dev am: 99efba6b am: 1d12540b am: b7e0cc8c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15742198

Change-Id: I7c7ca5c060ccb57b9ab78560c1c35ec3e6352d33
parents 10648f4f b7e0cc8c
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -197,11 +197,6 @@
     low powered state yet. -->
    <bool name="doze_long_press_uses_prox">true</bool>

    <!-- Doze: whether the brightness sensor uses the proximity sensor.
     If both this parameter and doze_selectively_register_prox are true, registration for the
     brightness sensor won't occur when the display state is ON. -->
    <bool name="doze_brightness_uses_prox">true</bool>

    <!-- Doze: should notifications be used as a pulse signal? -->
    <bool name="doze_pulse_on_notifications">true</bool>

+8 −17
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.view.Display;

import com.android.systemui.dock.DockManager;
import com.android.systemui.doze.dagger.BrightnessSensor;
@@ -111,7 +110,15 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
    public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
        switch (newState) {
            case INITIALIZED:
                resetBrightnessToDefault();
                break;
            case DOZE_AOD:
            case DOZE_REQUEST_PULSE:
            case DOZE_AOD_DOCKED:
                setLightSensorEnabled(true);
                break;
            case DOZE:
                setLightSensorEnabled(false);
                resetBrightnessToDefault();
                break;
            case FINISH:
@@ -124,22 +131,6 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
        }
    }

    @Override
    public void onScreenState(int state) {
        boolean isDockedScreenOn = state == Display.STATE_ON && mDockManager.isDocked();
        if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND
                || (isDockedScreenOn && shouldRegisterLightSensorWhenScreenOnDocked())) {
            setLightSensorEnabled(true);
        } else {
            setLightSensorEnabled(false);
        }
    }

    private boolean shouldRegisterLightSensorWhenScreenOnDocked() {
        return !mDozeParameters.brightnessUsesProx()
                || !mDozeParameters.getSelectivelyRegisterSensorsUsingProx();
    }

    private void onDestroy() {
        setLightSensorEnabled(false);
    }
+1 −8
Original line number Diff line number Diff line
@@ -269,13 +269,6 @@ public class DozeParameters implements
        return mResources.getBoolean(R.bool.doze_long_press_uses_prox);
    }

    /**
     * Whether the brightness sensor uses the proximity sensor.
     */
    public boolean brightnessUsesProx() {
        return mResources.getBoolean(R.bool.doze_brightness_uses_prox);
    }

    /**
     * Callback to listen for DozeParameter changes.
     */
@@ -300,6 +293,7 @@ public class DozeParameters implements

    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.print("getAlwaysOn(): "); pw.println(getAlwaysOn());
        pw.print("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
        pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
        pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
@@ -312,7 +306,6 @@ public class DozeParameters implements
        pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
        pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
        pw.println(getSelectivelyRegisterSensorsUsingProx());
        pw.print("brightnessUsesProx(): "); pw.println(brightnessUsesProx());
    }

    interface Callback {
+0 −1
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ public class DozeConfigurationUtil {
        when(params.singleTapUsesProx()).thenReturn(true);
        when(params.longPressUsesProx()).thenReturn(true);
        when(params.getQuickPickupAodDuration()).thenReturn(500);
        when(params.brightnessUsesProx()).thenReturn(true);

        doneHolder[0] = true;
        return params;
+19 −67
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.doze;

import static com.android.systemui.doze.DozeMachine.State.DOZE;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_DOCKED;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE;
@@ -43,7 +44,6 @@ import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.view.Display;

import androidx.test.filters.SmallTest;

@@ -114,8 +114,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
                Optional.of(mSensor.getSensor()), mDozeHost, null /* handler */,
                mAlwaysOnDisplayPolicy, mWakefulnessLifecycle, mDozeParameters, mDockManager);

        mScreen.onScreenState(Display.STATE_ON);
    }

    @Test
@@ -126,19 +124,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        assertTrue(mServiceFake.screenBrightness <= PowerManager.BRIGHTNESS_ON);
    }

    @Test
    public void testAod_usesLightSensor() {
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();

        mSensor.sendSensorEvent(3);

        assertEquals(3, mServiceFake.screenBrightness);
    }

    @Test
    public void testAod_usesDebugValue() throws Exception {
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        waitForSensorManager();

        Intent intent = new Intent(DozeScreenBrightness.ACTION_AOD_BRIGHTNESS);
@@ -161,34 +150,25 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
    }

    @Test
    public void testAodDocked_doNotSelectivelyUseProx_usesLightSensor() {
        // GIVEN the device doesn't need to selectively register for prox sensors and
        // brightness sensor uses prox
        when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(false);
        when(mDozeParameters.brightnessUsesProx()).thenReturn(true);

    public void doze_doesNotUseLightSensor() {
        // GIVEN the device is docked and the display state changes to ON
        when(mDockManager.isDocked()).thenReturn(true);
        mScreen.onScreenState(Display.STATE_ON);
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE);
        waitForSensorManager();

        // WHEN new sensor event sent
        mSensor.sendSensorEvent(3);

        // THEN brightness is updated
        assertEquals(3, mServiceFake.screenBrightness);
        // THEN brightness is NOT changed, it's set to the default brightness
        assertNotSame(3, mServiceFake.screenBrightness);
        assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
    }

    @Test
    public void testAodDocked_brightnessDoesNotUseProx_usesLightSensor() {
        // GIVEN the device doesn't need to selectively register for prox sensors but
        // the brightness sensor doesn't use prox
        when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(true);
        when(mDozeParameters.brightnessUsesProx()).thenReturn(false);

    public void aod_usesLightSensor() {
        // GIVEN the device is docked and the display state changes to ON
        when(mDockManager.isDocked()).thenReturn(true);
        mScreen.onScreenState(Display.STATE_ON);
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        waitForSensorManager();

        // WHEN new sensor event sent
@@ -198,34 +178,25 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        assertEquals(3, mServiceFake.screenBrightness);
    }


    @Test
    public void testAodDocked_noProx_brightnessUsesProx_doNotUseLightSensor() {
        final int startBrightness = mServiceFake.screenBrightness;

        // GIVEN the device needs to selectively register for prox sensors and
        // the brightness sensor uses prox
        when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(true);
        when(mDozeParameters.brightnessUsesProx()).thenReturn(true);

        // GIVEN the device is docked and the display state is on
        when(mDockManager.isDocked()).thenReturn(true);
        mScreen.onScreenState(Display.STATE_ON);
    public void docked_usesLightSensor() {
        // GIVEN the device is docked and the display state changes to ON
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_DOCKED);
        waitForSensorManager();

        // WHEN new sensor event sent
        mSensor.sendSensorEvent(3);

        // THEN brightness is NOT changed
        assertNotSame(3, mServiceFake.screenBrightness);
        assertEquals(startBrightness, mServiceFake.screenBrightness);
        // THEN brightness is updated
        assertEquals(3, mServiceFake.screenBrightness);
    }

    @Test
    public void testPausingAod_doesNotResetBrightness() throws Exception {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();

        mSensor.sendSensorEvent(1);
@@ -265,18 +236,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
    }

    @Test
    public void testOnScreenStateSetBeforeTransition_stillRegistersSensor() {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        waitForSensorManager();

        mSensor.sendSensorEvent(1);

        assertEquals(1, mServiceFake.screenBrightness);
    }

    @Test
    public void testNullSensor() throws Exception {
        mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
@@ -287,15 +246,12 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
        mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.onScreenState(Display.STATE_OFF);
    }

    @Test
    public void testNoBrightnessDeliveredAfterFinish() throws Exception {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.transitionTo(DOZE_AOD, FINISH);
        waitForSensorManager();

@@ -308,7 +264,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
    public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();

        mSensor.sendSensorEvent(1);
@@ -322,7 +277,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
    public void pausingAod_unblanksAfterSensor() {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();

        mSensor.sendSensorEvent(2);
@@ -334,7 +288,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {

        reset(mDozeHost);
        mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();
        mSensor.sendSensorEvent(2);
        verify(mDozeHost).setAodDimmingScrim(eq(0f));
@@ -344,7 +297,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
    public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception {
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.onScreenState(Display.STATE_DOZE);
        waitForSensorManager();

        mSensor.sendSensorEvent(2);