diff options
| author | 2021-04-27 08:40:52 +0000 | |
|---|---|---|
| committer | 2021-04-27 08:40:52 +0000 | |
| commit | 61a583e3650b65f3f40cc73176f51685fc84b5fa (patch) | |
| tree | de33953b4d01bd750fcabea62a1d550ba52ae2ba | |
| parent | 36cb0aa1e178d73df05ecbb0e3ab144982b485a6 (diff) | |
| parent | a9d9c267bec640ff15b6f4bb61203e8587278c49 (diff) | |
Merge "Add test case for opening light session with priority" into sc-dev
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/lights/LightsServiceTest.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/services/tests/servicestests/src/com/android/server/lights/LightsServiceTest.java b/services/tests/servicestests/src/com/android/server/lights/LightsServiceTest.java index f0a9a0089ec9..75aacd148011 100644 --- a/services/tests/servicestests/src/com/android/server/lights/LightsServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/lights/LightsServiceTest.java @@ -47,6 +47,9 @@ import org.mockito.MockitoAnnotations; @SmallTest public class LightsServiceTest { + private static final int HIGH_PRIORITY = Integer.MAX_VALUE; + private static final int DEFAULT_PRIORITY = 0; + private final ILights mHal = new ILights.Stub() { @Override public void setLightState(int id, HwLightState state) { @@ -188,4 +191,30 @@ public class LightsServiceTest { // Then the light should turn back off. assertThat(manager.getLightState(micLight).getColor()).isEqualTo(0); } + + @Test + public void testControlLights_higherPriorityCallerWinsContention() throws Exception { + LightsService service = new LightsService(mContext, () -> mHal, Looper.getMainLooper()); + LightsManager manager = new SystemLightsManager(mContext, service.mManagerService); + Light micLight = manager.getLights().get(0); + + // The light should begin by being off. + assertThat(manager.getLightState(micLight).getColor()).isEqualTo(TRANSPARENT); + + try (LightsManager.LightsSession session1 = manager.openSession(DEFAULT_PRIORITY)) { + try (LightsManager.LightsSession session2 = manager.openSession(HIGH_PRIORITY)) { + // When session1 and session2 both request the same light: + session1.requestLights( + new Builder().addLight(micLight, new LightState(BLUE)).build()); + session2.requestLights( + new Builder().addLight(micLight, new LightState(WHITE)).build()); + // Then session2 should win because it has a higher priority. + assertThat(manager.getLightState(micLight).getColor()).isEqualTo(WHITE); + } + // Then session1 should have its request go into effect. + assertThat(manager.getLightState(micLight).getColor()).isEqualTo(BLUE); + } + // Then the light should turn off because there are no more sessions. + assertThat(manager.getLightState(micLight).getColor()).isEqualTo(TRANSPARENT); + } } |