Loading core/java/android/hardware/display/BrightnessInfo.java +13 −2 Original line number Diff line number Diff line Loading @@ -113,16 +113,24 @@ public final class BrightnessInfo implements Parcelable { */ public final int brightnessMaxReason; /** * Whether the current brightness value is overridden by the application window via * {@link android.view.WindowManager.LayoutParams#screenBrightness}. */ public final boolean isBrightnessOverrideByWindow; public BrightnessInfo(float brightness, float brightnessMinimum, float brightnessMaximum, @HighBrightnessMode int highBrightnessMode, float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason) { this(brightness, brightness, brightnessMinimum, brightnessMaximum, highBrightnessMode, highBrightnessTransitionPoint, brightnessMaxReason); highBrightnessTransitionPoint, brightnessMaxReason, false /* isBrightnessOverrideByWindow */); } public BrightnessInfo(float brightness, float adjustedBrightness, float brightnessMinimum, float brightnessMaximum, @HighBrightnessMode int highBrightnessMode, float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason) { float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason, boolean isBrightnessOverrideByWindow) { this.brightness = brightness; this.adjustedBrightness = adjustedBrightness; this.brightnessMinimum = brightnessMinimum; Loading @@ -130,6 +138,7 @@ public final class BrightnessInfo implements Parcelable { this.highBrightnessMode = highBrightnessMode; this.highBrightnessTransitionPoint = highBrightnessTransitionPoint; this.brightnessMaxReason = brightnessMaxReason; this.isBrightnessOverrideByWindow = isBrightnessOverrideByWindow; } /** Loading Loading @@ -178,6 +187,7 @@ public final class BrightnessInfo implements Parcelable { dest.writeInt(highBrightnessMode); dest.writeFloat(highBrightnessTransitionPoint); dest.writeInt(brightnessMaxReason); dest.writeBoolean(isBrightnessOverrideByWindow); } public static final @android.annotation.NonNull Creator<BrightnessInfo> CREATOR = Loading @@ -201,6 +211,7 @@ public final class BrightnessInfo implements Parcelable { highBrightnessMode = source.readInt(); highBrightnessTransitionPoint = source.readFloat(); brightnessMaxReason = source.readInt(); isBrightnessOverrideByWindow = source.readBoolean(); } } packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -1675,6 +1675,16 @@ flag { } } flag { name: "show_toast_when_app_control_brightness" namespace: "systemui" description: "Showing the warning toast if the current running app window has controlled the brightness value." bug: "363225340" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "home_controls_dream_hsum" namespace: "systemui" Loading packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.Text import com.android.systemui.coroutines.collectLastValue import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory import com.android.systemui.kosmos.brightnessWarningToast import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.res.R Loading Loading @@ -61,6 +62,7 @@ class BrightnessSliderViewModelTest : SysuiTestCase() { sliderHapticsViewModelFactory, brightnessMirrorShowingInteractor, supportsMirroring = true, brightnessWarningToast, ) } } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt +32 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,19 @@ package com.android.systemui.settings.brightness import android.hardware.display.BrightnessInfo import android.hardware.display.DisplayManager import android.os.Handler import android.platform.test.annotations.RequiresFlagsEnabled import android.platform.test.flag.junit.CheckFlagsRule import android.platform.test.flag.junit.DeviceFlagsValueProvider import android.service.vr.IVrManager import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.android.systemui.log.LogBuffer import com.android.systemui.settings.DisplayTracker Loading @@ -30,13 +36,16 @@ import com.android.systemui.settings.UserTracker import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations Loading @@ -44,7 +53,8 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) @RunWithLooper class BrightnessControllerTest : SysuiTestCase() { @get:Rule public val mCheckFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() private val executor = FakeExecutor(FakeSystemClock()) private val secureSettings = FakeSettings() @Mock private lateinit var toggleSlider: ToggleSlider Loading @@ -53,6 +63,7 @@ class BrightnessControllerTest : SysuiTestCase() { @Mock private lateinit var displayManager: DisplayManager @Mock private lateinit var iVrManager: IVrManager @Mock private lateinit var logger: LogBuffer @Mock private lateinit var display: Display private lateinit var testableLooper: TestableLooper Loading @@ -63,9 +74,11 @@ class BrightnessControllerTest : SysuiTestCase() { MockitoAnnotations.initMocks(this) testableLooper = TestableLooper.get(this) val contextSpy = spy(context) whenever(contextSpy.getDisplay()).thenReturn(display) underTest = BrightnessController( context, contextSpy, toggleSlider, userTracker, displayTracker, Loading Loading @@ -105,4 +118,21 @@ class BrightnessControllerTest : SysuiTestCase() { assertThat(messagesProcessed).isEqualTo(1) } @Test @RequiresFlagsEnabled(Flags.FLAG_SHOW_TOAST_WHEN_APP_CONTROL_BRIGHTNESS) fun testOnChange_showToastWhenAppOverridesBrightness() { val brightnessInfo = BrightnessInfo( 0.45f, 0.45f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF, 1.0f /* highBrightnessTransitionPoint */, BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE, true /* isBrightnessOverrideByWindow */ ) whenever(display.brightnessInfo).thenReturn(brightnessInfo) underTest.registerCallbacks() testableLooper.processAllMessages() underTest.onChanged(true /* tracking */, 100 /* value */, false /* stopTracking */) verify(toggleSlider).showToast(any()) } } packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessSliderControllerTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.haptics.slider.HapticSlider import com.android.systemui.haptics.slider.HapticSliderPlugin import com.android.systemui.plugins.ActivityStarter import com.android.systemui.settings.brightness.ui.BrightnessWarningToast import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.BrightnessMirrorController import com.android.systemui.util.mockito.any Loading Loading @@ -64,6 +65,7 @@ class BrightnessSliderControllerTest : SysuiTestCase() { @Mock private lateinit var vibratorHelper: VibratorHelper @Mock private lateinit var msdlPlayer: MSDLPlayer @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var brightnessWarningToast: BrightnessWarningToast @Captor private lateinit var seekBarChangeCaptor: ArgumentCaptor<SeekBar.OnSeekBarChangeListener> Loading Loading @@ -94,6 +96,7 @@ class BrightnessSliderControllerTest : SysuiTestCase() { HapticSlider.SeekBar(seekBar), ), activityStarter, brightnessWarningToast, ) mController.init() mController.setOnChangedListener(listener) Loading Loading
core/java/android/hardware/display/BrightnessInfo.java +13 −2 Original line number Diff line number Diff line Loading @@ -113,16 +113,24 @@ public final class BrightnessInfo implements Parcelable { */ public final int brightnessMaxReason; /** * Whether the current brightness value is overridden by the application window via * {@link android.view.WindowManager.LayoutParams#screenBrightness}. */ public final boolean isBrightnessOverrideByWindow; public BrightnessInfo(float brightness, float brightnessMinimum, float brightnessMaximum, @HighBrightnessMode int highBrightnessMode, float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason) { this(brightness, brightness, brightnessMinimum, brightnessMaximum, highBrightnessMode, highBrightnessTransitionPoint, brightnessMaxReason); highBrightnessTransitionPoint, brightnessMaxReason, false /* isBrightnessOverrideByWindow */); } public BrightnessInfo(float brightness, float adjustedBrightness, float brightnessMinimum, float brightnessMaximum, @HighBrightnessMode int highBrightnessMode, float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason) { float highBrightnessTransitionPoint, @BrightnessMaxReason int brightnessMaxReason, boolean isBrightnessOverrideByWindow) { this.brightness = brightness; this.adjustedBrightness = adjustedBrightness; this.brightnessMinimum = brightnessMinimum; Loading @@ -130,6 +138,7 @@ public final class BrightnessInfo implements Parcelable { this.highBrightnessMode = highBrightnessMode; this.highBrightnessTransitionPoint = highBrightnessTransitionPoint; this.brightnessMaxReason = brightnessMaxReason; this.isBrightnessOverrideByWindow = isBrightnessOverrideByWindow; } /** Loading Loading @@ -178,6 +187,7 @@ public final class BrightnessInfo implements Parcelable { dest.writeInt(highBrightnessMode); dest.writeFloat(highBrightnessTransitionPoint); dest.writeInt(brightnessMaxReason); dest.writeBoolean(isBrightnessOverrideByWindow); } public static final @android.annotation.NonNull Creator<BrightnessInfo> CREATOR = Loading @@ -201,6 +211,7 @@ public final class BrightnessInfo implements Parcelable { highBrightnessMode = source.readInt(); highBrightnessTransitionPoint = source.readFloat(); brightnessMaxReason = source.readInt(); isBrightnessOverrideByWindow = source.readBoolean(); } }
packages/SystemUI/aconfig/systemui.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -1675,6 +1675,16 @@ flag { } } flag { name: "show_toast_when_app_control_brightness" namespace: "systemui" description: "Showing the warning toast if the current running app window has controlled the brightness value." bug: "363225340" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "home_controls_dream_hsum" namespace: "systemui" Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/brightness/ui/viewmodel/BrightnessSliderViewModelTest.kt +2 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.Text import com.android.systemui.coroutines.collectLastValue import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory import com.android.systemui.kosmos.brightnessWarningToast import com.android.systemui.kosmos.testScope import com.android.systemui.lifecycle.activateIn import com.android.systemui.res.R Loading Loading @@ -61,6 +62,7 @@ class BrightnessSliderViewModelTest : SysuiTestCase() { sliderHapticsViewModelFactory, brightnessMirrorShowingInteractor, supportsMirroring = true, brightnessWarningToast, ) } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessControllerTest.kt +32 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,19 @@ package com.android.systemui.settings.brightness import android.hardware.display.BrightnessInfo import android.hardware.display.DisplayManager import android.os.Handler import android.platform.test.annotations.RequiresFlagsEnabled import android.platform.test.flag.junit.CheckFlagsRule import android.platform.test.flag.junit.DeviceFlagsValueProvider import android.service.vr.IVrManager import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import android.view.Display import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.android.systemui.log.LogBuffer import com.android.systemui.settings.DisplayTracker Loading @@ -30,13 +36,16 @@ import com.android.systemui.settings.UserTracker import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations Loading @@ -44,7 +53,8 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidJUnit4::class) @RunWithLooper class BrightnessControllerTest : SysuiTestCase() { @get:Rule public val mCheckFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() private val executor = FakeExecutor(FakeSystemClock()) private val secureSettings = FakeSettings() @Mock private lateinit var toggleSlider: ToggleSlider Loading @@ -53,6 +63,7 @@ class BrightnessControllerTest : SysuiTestCase() { @Mock private lateinit var displayManager: DisplayManager @Mock private lateinit var iVrManager: IVrManager @Mock private lateinit var logger: LogBuffer @Mock private lateinit var display: Display private lateinit var testableLooper: TestableLooper Loading @@ -63,9 +74,11 @@ class BrightnessControllerTest : SysuiTestCase() { MockitoAnnotations.initMocks(this) testableLooper = TestableLooper.get(this) val contextSpy = spy(context) whenever(contextSpy.getDisplay()).thenReturn(display) underTest = BrightnessController( context, contextSpy, toggleSlider, userTracker, displayTracker, Loading Loading @@ -105,4 +118,21 @@ class BrightnessControllerTest : SysuiTestCase() { assertThat(messagesProcessed).isEqualTo(1) } @Test @RequiresFlagsEnabled(Flags.FLAG_SHOW_TOAST_WHEN_APP_CONTROL_BRIGHTNESS) fun testOnChange_showToastWhenAppOverridesBrightness() { val brightnessInfo = BrightnessInfo( 0.45f, 0.45f, 0.0f, 1.0f, BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF, 1.0f /* highBrightnessTransitionPoint */, BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE, true /* isBrightnessOverrideByWindow */ ) whenever(display.brightnessInfo).thenReturn(brightnessInfo) underTest.registerCallbacks() testableLooper.processAllMessages() underTest.onChanged(true /* tracking */, 100 /* value */, false /* stopTracking */) verify(toggleSlider).showToast(any()) } }
packages/SystemUI/multivalentTests/src/com/android/systemui/settings/brightness/BrightnessSliderControllerTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import com.android.systemui.classifier.FalsingManagerFake import com.android.systemui.haptics.slider.HapticSlider import com.android.systemui.haptics.slider.HapticSliderPlugin import com.android.systemui.plugins.ActivityStarter import com.android.systemui.settings.brightness.ui.BrightnessWarningToast import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.BrightnessMirrorController import com.android.systemui.util.mockito.any Loading Loading @@ -64,6 +65,7 @@ class BrightnessSliderControllerTest : SysuiTestCase() { @Mock private lateinit var vibratorHelper: VibratorHelper @Mock private lateinit var msdlPlayer: MSDLPlayer @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var brightnessWarningToast: BrightnessWarningToast @Captor private lateinit var seekBarChangeCaptor: ArgumentCaptor<SeekBar.OnSeekBarChangeListener> Loading Loading @@ -94,6 +96,7 @@ class BrightnessSliderControllerTest : SysuiTestCase() { HapticSlider.SeekBar(seekBar), ), activityStarter, brightnessWarningToast, ) mController.init() mController.setOnChangedListener(listener) Loading