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

Commit 92cdcf75 authored by Bryce Lee's avatar Bryce Lee Committed by Android (Google) Code Review
Browse files

Merge "Dim screen brightness for low light clock." into main

parents fa3ddb3a 23b54317
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -1146,6 +1146,27 @@ public class DreamService extends Service implements Window.Callback {
        }
    }

    /**
     * Sets the screen brightness.
     *
     * This method sets the underlying {@link LayoutParams#screenBrightness} property. Since this
     * affects the window, {@link #setScreenBrightness(float)} should not be used for windowless
     * dreams.
     *
     * @hide For use by SystemUI components only.
     */
    @UnsupportedAppUsage
    public void setScreenBrightness(float brightness) {
        if (mWindow == null) {
            Slog.e(TAG, "trying to set screen brightness without window");
            return;
        }

        WindowManager.LayoutParams lp = mWindow.getAttributes();
        lp.screenBrightness = brightness;
        mWindow.setAttributes(lp);
    }

    /**
     * Sets the screen brightness to use while dozing.
     * <p>
+10 −0
Original line number Diff line number Diff line
@@ -2047,6 +2047,16 @@ flag {
    bug: "397180418"
}

flag {
    name: "lowlight_clock_set_brightness"
    namespace: "systemui"
    description: "Sets brightness to minimum when using lowlight clock"
    bug: "419096438"
    metadata {
      purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "lowlight_clock_uses_keyguard_charging_status"
    namespace: "systemui"
+9 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.widget.TextClock;
import android.widget.TextView;

import com.android.dream.lowlight.LowLightTransitionCoordinator;
import com.android.systemui.Flags;
import com.android.systemui.lowlightclock.ChargingStatusProvider;
import com.android.systemui.lowlightclock.LowLightClockAnimationProvider;
import com.android.systemui.lowlightclock.LowLightDisplayController;
@@ -102,7 +103,14 @@ public class LowLightClockDreamService extends DreamService implements
                Log.v(TAG, "setting dim brightness state");
                mDisplayController.setDisplayBrightnessModeEnabled(true);
            } else {
                Log.v(TAG, "dim brightness not supported");
                if (Flags.lowlightClockSetBrightness()) {
                    Log.v(TAG,
                            "dim brightness not supported. setting screen brightness to minimum");
                    setScreenBrightness(0f);
                } else {
                    Log.v(TAG, "dim brightness not supported.");

                }
            }
        }
    }
+22 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import android.service.dreams.Flags;
import android.service.dreams.IDreamOverlayCallback;
import android.testing.TestableLooper;
import android.view.KeyEvent;
import android.view.WindowManager;

import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
@@ -241,6 +242,27 @@ public class DreamServiceTest {
        environment.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SPACE));
    }

    @Test
    public void testSetBrightness() throws Exception {
        final float screenBrightness = .45f;
        TestDreamEnvironment environment = new TestDreamEnvironment.Builder(mTestableLooper)
                .build();
        environment.advance(TestDreamEnvironment.DREAM_STATE_DREAM_ACTIVITY_CREATED);
        environment.setDreamScreenBrightness(screenBrightness);
        final WindowManager.LayoutParams params = environment.getLatestLayoutParams();
        assertThat(params.screenBrightness).isEqualTo(screenBrightness);
    }

    @Test
    public void testSetBrightnessNoWindowEarlyExits() throws Exception {
        final float screenBrightness = .45f;
        TestDreamEnvironment environment = new TestDreamEnvironment.Builder(mTestableLooper)
                .build();

        // This call should not crash
        environment.setDreamScreenBrightness(screenBrightness);
    }

    @Test
    @EnableFlags(Flags.FLAG_DREAM_HANDLES_BEING_OBSCURED)
    public void testComeToFront() throws Exception {
+19 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.server.dreams;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.anyBoolean;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.description;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.eq;
@@ -429,4 +430,22 @@ public class TestDreamEnvironment {
    public IDreamOverlayClient getDreamOverlayClient() {
        return mDreamOverlayClient;
    }

    /**
     * Calls {@link DreamService#setScreenBrightness(float)}
     */
    public void setDreamScreenBrightness(float brightness) {
        mService.setScreenBrightness(brightness);
    }

    /**
     * Returns the last {@link android.view.WindowManager.LayoutParams} set on the activity window.
     */
    public WindowManager.LayoutParams getLatestLayoutParams() {
        final ArgumentCaptor<WindowManager.LayoutParams> lpCaptor =
                ArgumentCaptor.forClass(WindowManager.LayoutParams.class);
        verify(mActivityWindow, atLeastOnce()).setAttributes(lpCaptor.capture());

        return lpCaptor.getValue();
    }
}