From 615c06f3e3eb52d23c7d4f4e3c529c423c70db34 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Mon, 27 Apr 2020 12:23:39 -0700 Subject: [PATCH] Only act on event if something actually changed Dock events were forcing the device into AOD mode, and overriding the proximity sensor. Test: manual Test: atest DozeDockHandlerTest Fixes: 152377547 Change-Id: I250a0952ac82bc0690676e1c27f839179d7fa4f7 --- .../com/android/systemui/doze/DozeDockHandler.java | 6 ++++++ .../android/systemui/doze/DozeDockHandlerTest.java | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java index 3f88f252bfe70..554457b3564a5 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java @@ -75,6 +75,12 @@ public class DozeDockHandler implements DozeMachine.Part { public void onEvent(int dockState) { if (DEBUG) Log.d(TAG, "dock event = " + dockState); + // Only act upon state changes, otherwise we might overwrite other transitions, + // like proximity sensor initialization. + if (mDockState == dockState) { + return; + } + mDockState = dockState; if (isPulsing()) { return; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java index 9985d21e8515b..dc027997578fb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeDockHandlerTest.java @@ -19,6 +19,7 @@ package com.android.systemui.doze; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -82,8 +83,17 @@ public class DozeDockHandlerTest extends SysuiTestCase { verify(mMachine).requestState(eq(State.DOZE_AOD_DOCKED)); } + @Test + public void onEvent_noneWhileEnabledAod_ignoresIfAlreadyNone() { + mDockManagerFake.setDockEvent(DockManager.STATE_NONE); + + verify(mMachine, never()).requestState(eq(State.DOZE_AOD)); + } + @Test public void onEvent_noneWhileEnabledAod_requestsAodState() { + mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED); + clearInvocations(mMachine); mDockManagerFake.setDockEvent(DockManager.STATE_NONE); verify(mMachine).requestState(eq(State.DOZE_AOD)); @@ -91,6 +101,8 @@ public class DozeDockHandlerTest extends SysuiTestCase { @Test public void onEvent_noneWhileDisabledAod_requestsDozeState() { + mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED); + clearInvocations(mMachine); doReturn(false).when(mConfig).alwaysOnEnabled(anyInt()); mDockManagerFake.setDockEvent(DockManager.STATE_NONE);