Loading packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +7 −10 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.util.Log; import android.view.Display; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.SettableWakeLock; import com.android.systemui.util.wakelock.WakeLock; /** Loading @@ -43,15 +44,14 @@ public class DozeScreenState implements DozeMachine.Part { private final DozeParameters mParameters; private int mPendingScreenState = Display.STATE_UNKNOWN; private boolean mWakeLockHeld; private WakeLock mWakeLock; private SettableWakeLock mWakeLock; public DozeScreenState(DozeMachine.Service service, Handler handler, DozeParameters parameters, WakeLock wakeLock) { mDozeService = service; mHandler = handler; mParameters = parameters; mWakeLock = wakeLock; mWakeLock = new SettableWakeLock(wakeLock); } @Override Loading @@ -64,6 +64,7 @@ public class DozeScreenState implements DozeMachine.Part { mHandler.removeCallbacks(mApplyPendingScreenState); applyScreenState(screenState); mWakeLock.setAcquired(false); return; } Loading @@ -84,9 +85,8 @@ public class DozeScreenState implements DozeMachine.Part { boolean shouldDelayTransition = newState == DozeMachine.State.DOZE_AOD && mParameters.shouldControlScreenOff(); if (!mWakeLockHeld && shouldDelayTransition) { mWakeLockHeld = true; mWakeLock.acquire(); if (shouldDelayTransition) { mWakeLock.setAcquired(true); } if (!messagePending) { Loading Loading @@ -118,10 +118,7 @@ public class DozeScreenState implements DozeMachine.Part { if (DEBUG) Log.d(TAG, "setDozeScreenState(" + screenState + ")"); mDozeService.setDozeScreenState(screenState); mPendingScreenState = Display.STATE_UNKNOWN; if (mWakeLockHeld) { mWakeLockHeld = false; mWakeLock.release(); } mWakeLock.setAcquired(false); } } } packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import static com.android.systemui.doze.DozeMachine.State.INITIALIZED; import static com.android.systemui.doze.DozeMachine.State.UNINITIALIZED; import static com.android.systemui.utils.os.FakeHandler.Mode.QUEUEING; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading @@ -41,6 +43,7 @@ import android.view.Display; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.WakeLock; import com.android.systemui.util.wakelock.WakeLockFake; import com.android.systemui.utils.os.FakeHandler; import org.junit.Before; Loading @@ -58,8 +61,7 @@ public class DozeScreenStateTest extends SysuiTestCase { FakeHandler mHandlerFake; @Mock DozeParameters mDozeParameters; @Mock WakeLock mWakeLock; WakeLockFake mWakeLock; @Before public void setUp() throws Exception { Loading @@ -68,6 +70,7 @@ public class DozeScreenStateTest extends SysuiTestCase { when(mDozeParameters.getAlwaysOn()).thenReturn(true); mServiceFake = new DozeServiceFake(); mHandlerFake = new FakeHandler(Looper.getMainLooper()); mWakeLock = new WakeLockFake(); mScreen = new DozeScreenState(mServiceFake, mHandlerFake, mDozeParameters, mWakeLock); } Loading Loading @@ -158,14 +161,29 @@ public class DozeScreenStateTest extends SysuiTestCase { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mHandlerFake.dispatchQueuedMessages(); reset(mWakeLock); mScreen.transitionTo(INITIALIZED, DOZE_AOD); verify(mWakeLock).acquire(); verify(mWakeLock, never()).release(); assertThat(mWakeLock.isHeld(), is(true)); mHandlerFake.dispatchQueuedMessages(); verify(mWakeLock).release(); assertThat(mWakeLock.isHeld(), is(false)); } @Test public void test_releasesWakeLock_abortingLowPowerDelayed() { // Transition to low power mode will be delayed to let // animations play at 60 fps. when(mDozeParameters.shouldControlScreenOff()).thenReturn(true); mHandlerFake.setMode(QUEUEING); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mHandlerFake.dispatchQueuedMessages(); mScreen.transitionTo(INITIALIZED, DOZE_AOD); assertThat(mWakeLock.isHeld(), is(true)); mScreen.transitionTo(DOZE_AOD, FINISH); assertThat(mWakeLock.isHeld(), is(false)); } } No newline at end of file Loading
packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java +7 −10 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.util.Log; import android.view.Display; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.SettableWakeLock; import com.android.systemui.util.wakelock.WakeLock; /** Loading @@ -43,15 +44,14 @@ public class DozeScreenState implements DozeMachine.Part { private final DozeParameters mParameters; private int mPendingScreenState = Display.STATE_UNKNOWN; private boolean mWakeLockHeld; private WakeLock mWakeLock; private SettableWakeLock mWakeLock; public DozeScreenState(DozeMachine.Service service, Handler handler, DozeParameters parameters, WakeLock wakeLock) { mDozeService = service; mHandler = handler; mParameters = parameters; mWakeLock = wakeLock; mWakeLock = new SettableWakeLock(wakeLock); } @Override Loading @@ -64,6 +64,7 @@ public class DozeScreenState implements DozeMachine.Part { mHandler.removeCallbacks(mApplyPendingScreenState); applyScreenState(screenState); mWakeLock.setAcquired(false); return; } Loading @@ -84,9 +85,8 @@ public class DozeScreenState implements DozeMachine.Part { boolean shouldDelayTransition = newState == DozeMachine.State.DOZE_AOD && mParameters.shouldControlScreenOff(); if (!mWakeLockHeld && shouldDelayTransition) { mWakeLockHeld = true; mWakeLock.acquire(); if (shouldDelayTransition) { mWakeLock.setAcquired(true); } if (!messagePending) { Loading Loading @@ -118,10 +118,7 @@ public class DozeScreenState implements DozeMachine.Part { if (DEBUG) Log.d(TAG, "setDozeScreenState(" + screenState + ")"); mDozeService.setDozeScreenState(screenState); mPendingScreenState = Display.STATE_UNKNOWN; if (mWakeLockHeld) { mWakeLockHeld = false; mWakeLock.release(); } mWakeLock.setAcquired(false); } } }
packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenStateTest.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import static com.android.systemui.doze.DozeMachine.State.INITIALIZED; import static com.android.systemui.doze.DozeMachine.State.UNINITIALIZED; import static com.android.systemui.utils.os.FakeHandler.Mode.QUEUEING; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; Loading @@ -41,6 +43,7 @@ import android.view.Display; import com.android.systemui.SysuiTestCase; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.wakelock.WakeLock; import com.android.systemui.util.wakelock.WakeLockFake; import com.android.systemui.utils.os.FakeHandler; import org.junit.Before; Loading @@ -58,8 +61,7 @@ public class DozeScreenStateTest extends SysuiTestCase { FakeHandler mHandlerFake; @Mock DozeParameters mDozeParameters; @Mock WakeLock mWakeLock; WakeLockFake mWakeLock; @Before public void setUp() throws Exception { Loading @@ -68,6 +70,7 @@ public class DozeScreenStateTest extends SysuiTestCase { when(mDozeParameters.getAlwaysOn()).thenReturn(true); mServiceFake = new DozeServiceFake(); mHandlerFake = new FakeHandler(Looper.getMainLooper()); mWakeLock = new WakeLockFake(); mScreen = new DozeScreenState(mServiceFake, mHandlerFake, mDozeParameters, mWakeLock); } Loading Loading @@ -158,14 +161,29 @@ public class DozeScreenStateTest extends SysuiTestCase { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mHandlerFake.dispatchQueuedMessages(); reset(mWakeLock); mScreen.transitionTo(INITIALIZED, DOZE_AOD); verify(mWakeLock).acquire(); verify(mWakeLock, never()).release(); assertThat(mWakeLock.isHeld(), is(true)); mHandlerFake.dispatchQueuedMessages(); verify(mWakeLock).release(); assertThat(mWakeLock.isHeld(), is(false)); } @Test public void test_releasesWakeLock_abortingLowPowerDelayed() { // Transition to low power mode will be delayed to let // animations play at 60 fps. when(mDozeParameters.shouldControlScreenOff()).thenReturn(true); mHandlerFake.setMode(QUEUEING); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mHandlerFake.dispatchQueuedMessages(); mScreen.transitionTo(INITIALIZED, DOZE_AOD); assertThat(mWakeLock.isHeld(), is(true)); mScreen.transitionTo(DOZE_AOD, FINISH); assertThat(mWakeLock.isHeld(), is(false)); } } No newline at end of file