Merge "Prevent requesting invalid state after docked" into rvc-dev am: cf7b637860 am: ad84f54329
Change-Id: I6901d4cca6da0d2c72653570e4c941a3cb185843
This commit is contained in:
@@ -40,7 +40,7 @@ public class DozeDockHandler implements DozeMachine.Part {
|
|||||||
|
|
||||||
private int mDockState = DockManager.STATE_NONE;
|
private int mDockState = DockManager.STATE_NONE;
|
||||||
|
|
||||||
public DozeDockHandler(AmbientDisplayConfiguration config, DozeMachine machine,
|
DozeDockHandler(AmbientDisplayConfiguration config, DozeMachine machine,
|
||||||
DockManager dockManager) {
|
DockManager dockManager) {
|
||||||
mMachine = machine;
|
mMachine = machine;
|
||||||
mConfig = config;
|
mConfig = config;
|
||||||
@@ -74,8 +74,13 @@ public class DozeDockHandler implements DozeMachine.Part {
|
|||||||
@Override
|
@Override
|
||||||
public void onEvent(int dockState) {
|
public void onEvent(int dockState) {
|
||||||
if (DEBUG) Log.d(TAG, "dock event = " + dockState);
|
if (DEBUG) Log.d(TAG, "dock event = " + dockState);
|
||||||
final DozeMachine.State nextState;
|
|
||||||
mDockState = dockState;
|
mDockState = dockState;
|
||||||
|
if (isPulsing()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DozeMachine.State nextState;
|
||||||
switch (mDockState) {
|
switch (mDockState) {
|
||||||
case DockManager.STATE_DOCKED:
|
case DockManager.STATE_DOCKED:
|
||||||
nextState = State.DOZE_AOD_DOCKED;
|
nextState = State.DOZE_AOD_DOCKED;
|
||||||
@@ -90,10 +95,15 @@ public class DozeDockHandler implements DozeMachine.Part {
|
|||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mMachine.requestState(nextState);
|
mMachine.requestState(nextState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isPulsing() {
|
||||||
|
DozeMachine.State state = mMachine.getState();
|
||||||
|
return state == State.DOZE_REQUEST_PULSE || state == State.DOZE_PULSING
|
||||||
|
|| state == State.DOZE_PULSING_BRIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
void register() {
|
void register() {
|
||||||
if (mRegistered) {
|
if (mRegistered) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -339,8 +339,8 @@ public class DozeMachine {
|
|||||||
return State.DOZE;
|
return State.DOZE;
|
||||||
}
|
}
|
||||||
if ((mState == State.DOZE_AOD_PAUSED || mState == State.DOZE_AOD_PAUSING
|
if ((mState == State.DOZE_AOD_PAUSED || mState == State.DOZE_AOD_PAUSING
|
||||||
|| mState == State.DOZE_AOD || mState == State.DOZE)
|
|| mState == State.DOZE_AOD || mState == State.DOZE
|
||||||
&& requestedState == State.DOZE_PULSE_DONE) {
|
|| mState == State.DOZE_AOD_DOCKED) && requestedState == State.DOZE_PULSE_DONE) {
|
||||||
Log.i(TAG, "Dropping pulse done because current state is already done: " + mState);
|
Log.i(TAG, "Dropping pulse done because current state is already done: " + mState);
|
||||||
return mState;
|
return mState;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,10 @@ import static org.mockito.ArgumentMatchers.any;
|
|||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.hardware.display.AmbientDisplayConfiguration;
|
import android.hardware.display.AmbientDisplayConfiguration;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
@@ -56,6 +58,7 @@ public class DozeDockHandlerTest extends SysuiTestCase {
|
|||||||
mDockManagerFake = spy(new DockManagerFake());
|
mDockManagerFake = spy(new DockManagerFake());
|
||||||
mDockHandler = new DozeDockHandler(mConfig, mMachine, mDockManagerFake);
|
mDockHandler = new DozeDockHandler(mConfig, mMachine, mDockManagerFake);
|
||||||
|
|
||||||
|
when(mMachine.getState()).thenReturn(State.DOZE_AOD);
|
||||||
doReturn(true).when(mConfig).alwaysOnEnabled(anyInt());
|
doReturn(true).when(mConfig).alwaysOnEnabled(anyInt());
|
||||||
mDockHandler.transitionTo(DozeMachine.State.UNINITIALIZED, DozeMachine.State.INITIALIZED);
|
mDockHandler.transitionTo(DozeMachine.State.UNINITIALIZED, DozeMachine.State.INITIALIZED);
|
||||||
}
|
}
|
||||||
@@ -101,4 +104,31 @@ public class DozeDockHandlerTest extends SysuiTestCase {
|
|||||||
|
|
||||||
verify(mMachine).requestState(eq(State.DOZE));
|
verify(mMachine).requestState(eq(State.DOZE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onEvent_dockedWhilePulsing_wontRequestStateChange() {
|
||||||
|
when(mMachine.getState()).thenReturn(State.DOZE_PULSING);
|
||||||
|
|
||||||
|
mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED);
|
||||||
|
|
||||||
|
verify(mMachine, never()).requestState(any(State.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onEvent_noneWhilePulsing_wontRequestStateChange() {
|
||||||
|
when(mMachine.getState()).thenReturn(State.DOZE_PULSING);
|
||||||
|
|
||||||
|
mDockManagerFake.setDockEvent(DockManager.STATE_NONE);
|
||||||
|
|
||||||
|
verify(mMachine, never()).requestState(any(State.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onEvent_hideWhilePulsing_wontRequestStateChange() {
|
||||||
|
when(mMachine.getState()).thenReturn(State.DOZE_PULSING);
|
||||||
|
|
||||||
|
mDockManagerFake.setDockEvent(DockManager.STATE_DOCKED_HIDE);
|
||||||
|
|
||||||
|
verify(mMachine, never()).requestState(any(State.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,6 +253,17 @@ public class DozeMachineTest extends SysuiTestCase {
|
|||||||
assertEquals(DOZE_AOD_DOCKED, mMachine.getState());
|
assertEquals(DOZE_AOD_DOCKED, mMachine.getState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPulseDone_whileDockedAoD_staysDockedAod() {
|
||||||
|
when(mDockManager.isDocked()).thenReturn(true);
|
||||||
|
mMachine.requestState(INITIALIZED);
|
||||||
|
mMachine.requestState(DOZE_AOD_DOCKED);
|
||||||
|
|
||||||
|
mMachine.requestState(DOZE_PULSE_DONE);
|
||||||
|
|
||||||
|
verify(mPartMock, never()).transitionTo(DOZE_AOD_DOCKED, DOZE_PULSE_DONE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPulseDone_dozeSuppressed_afterDocked_goesToDoze() {
|
public void testPulseDone_dozeSuppressed_afterDocked_goesToDoze() {
|
||||||
when(mHost.isDozeSuppressed()).thenReturn(true);
|
when(mHost.isDozeSuppressed()).thenReturn(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user