Do not repeat doze amount callbacks

We can skip setting the doze amount if the callback was invoked with the
same value.

Test: manual
Test: atest StatusBarStateControllerImplTest
Fixes: 190379075
Change-Id: I6417e89a61745b377b1229a23bf2d56296685153
This commit is contained in:
Lucas Dupin
2022-02-08 14:55:06 -08:00
parent 961de6077a
commit 5b3d0eef28
2 changed files with 17 additions and 0 deletions

View File

@@ -336,6 +336,9 @@ public class StatusBarStateControllerImpl implements
}
private void setDozeAmountInternal(float dozeAmount) {
if (Float.compare(dozeAmount, mDozeAmount) == 0) {
return;
}
mDozeAmount = dozeAmount;
float interpolatedAmount = mDozeInterpolator.getInterpolation(dozeAmount);
synchronized (mListeners) {

View File

@@ -23,14 +23,18 @@ import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.logging.testing.UiEventLoggerFake
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.any
import org.mockito.ArgumentMatchers.anyFloat
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.Mockito.`when` as whenever
@@ -73,4 +77,14 @@ class StatusBarStateControllerImplTest : SysuiTestCase() {
assertEquals(StatusBarStateEvent.STATUS_BAR_STATE_SHADE.id, ids[1])
assertEquals(StatusBarStateEvent.STATUS_BAR_STATE_SHADE_LOCKED.id, ids[2])
}
@Test
fun testSetDozeAmountInternal_onlySetsOnce() {
val listener = mock(StatusBarStateController.StateListener::class.java)
controller.addCallback(listener)
controller.setDozeAmount(0.5f, false /* animated */)
controller.setDozeAmount(0.5f, false /* animated */)
verify(listener).onDozeAmountChanged(eq(0.5f), anyFloat())
}
}