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

Commit 1d12540b 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: 99efba6b

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

Change-Id: I15a3ddbcead86ef574b0af6460d286ad775dd20e
parents bfd83062 99efba6b
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -194,11 +194,6 @@
     low powered state yet. -->
     low powered state yet. -->
    <bool name="doze_long_press_uses_prox">true</bool>
    <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? -->
    <!-- Doze: should notifications be used as a pulse signal? -->
    <bool name="doze_pulse_on_notifications">true</bool>
    <bool name="doze_pulse_on_notifications">true</bool>


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


import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager;
import com.android.systemui.doze.dagger.BrightnessSensor;
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) {
    public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
        switch (newState) {
        switch (newState) {
            case INITIALIZED:
            case INITIALIZED:
                resetBrightnessToDefault();
                break;
            case DOZE_AOD:
            case DOZE_REQUEST_PULSE:
            case DOZE_AOD_DOCKED:
                setLightSensorEnabled(true);
                break;
            case DOZE:
            case DOZE:
                setLightSensorEnabled(false);
                resetBrightnessToDefault();
                resetBrightnessToDefault();
                break;
                break;
            case FINISH:
            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() {
    private void onDestroy() {
        setLightSensorEnabled(false);
        setLightSensorEnabled(false);
    }
    }
+1 −8
Original line number Original line Diff line number Diff line
@@ -267,13 +267,6 @@ public class DozeParameters implements TunerService.Tunable,
        return mResources.getBoolean(R.bool.doze_long_press_uses_prox);
        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.
     * Callback to listen for DozeParameter changes.
     */
     */
@@ -298,6 +291,7 @@ public class DozeParameters implements TunerService.Tunable,


    @Override
    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
    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("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
        pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
        pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
        pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
        pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
@@ -310,7 +304,6 @@ public class DozeParameters implements TunerService.Tunable,
        pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
        pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
        pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
        pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
        pw.println(getSelectivelyRegisterSensorsUsingProx());
        pw.println(getSelectivelyRegisterSensorsUsingProx());
        pw.print("brightnessUsesProx(): "); pw.println(brightnessUsesProx());
    }
    }


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


        doneHolder[0] = true;
        doneHolder[0] = true;
        return params;
        return params;
+19 −67
Original line number Original line 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;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD;
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_PAUSED;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE;
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.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
import android.testing.AndroidTestingRunner;
import android.testing.AndroidTestingRunner;
import android.view.Display;


import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;


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

        mScreen.onScreenState(Display.STATE_ON);
    }
    }


    @Test
    @Test
@@ -126,19 +124,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        assertTrue(mServiceFake.screenBrightness <= PowerManager.BRIGHTNESS_ON);
        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
    @Test
    public void testAod_usesDebugValue() throws Exception {
    public void testAod_usesDebugValue() throws Exception {
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        waitForSensorManager();
        waitForSensorManager();


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


    @Test
    @Test
    public void testAodDocked_doNotSelectivelyUseProx_usesLightSensor() {
    public void doze_doesNotUseLightSensor() {
        // 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);

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


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


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


    @Test
    @Test
    public void testAodDocked_brightnessDoesNotUseProx_usesLightSensor() {
    public void aod_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);

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


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



    @Test
    @Test
    public void testAodDocked_noProx_brightnessUsesProx_doNotUseLightSensor() {
    public void docked_usesLightSensor() {
        final int startBrightness = mServiceFake.screenBrightness;
        // GIVEN the device is docked and the display state changes to ON

        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
        // GIVEN the device needs to selectively register for prox sensors and
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        // the brightness sensor uses prox
        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_DOCKED);
        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);
        waitForSensorManager();
        waitForSensorManager();


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


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


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


        mSensor.sendSensorEvent(1);
        mSensor.sendSensorEvent(1);
@@ -265,18 +236,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
        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
    @Test
    public void testNullSensor() throws Exception {
    public void testNullSensor() throws Exception {
        mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
        mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
@@ -287,15 +246,12 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.transitionTo(INITIALIZED, DOZE_AOD);
        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
        mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
        mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
        mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
        mScreen.onScreenState(Display.STATE_DOZE);
        mScreen.onScreenState(Display.STATE_OFF);
    }
    }


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


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


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


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


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


        mSensor.sendSensorEvent(2);
        mSensor.sendSensorEvent(2);