17517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin/* 27517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * Copyright (C) 2017 The Android Open Source Project 37517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * 47517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * Licensed under the Apache License, Version 2.0 (the "License"); 57517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * you may not use this file except in compliance with the License. 67517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * You may obtain a copy of the License at 77517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * 87517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * http://www.apache.org/licenses/LICENSE-2.0 97517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * 107517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * Unless required by applicable law or agreed to in writing, software 117517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * distributed under the License is distributed on an "AS IS" BASIS, 127517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * See the License for the specific language governing permissions and 147517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin * limitations under the License 157517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin */ 167517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 177517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinpackage com.android.systemui.doze; 187517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 19660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport static org.mockito.ArgumentMatchers.anyBoolean; 207517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport static org.mockito.ArgumentMatchers.eq; 217517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport static org.mockito.Mockito.mock; 22660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport static org.mockito.Mockito.reset; 237517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport static org.mockito.Mockito.verify; 24660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport static org.mockito.Mockito.when; 257517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 267517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport android.app.IWallpaperManager; 277517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport android.os.RemoteException; 287517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport android.support.test.filters.SmallTest; 297517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 30660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport com.android.keyguard.KeyguardUpdateMonitor; 317517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport com.android.systemui.SysuiTestCase; 32660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport com.android.systemui.statusbar.phone.DozeParameters; 337517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 34660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport org.junit.Before; 357517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport org.junit.Test; 367517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport org.junit.runner.RunWith; 377517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinimport org.junit.runners.JUnit4; 38660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport org.mockito.Mock; 39660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupinimport org.mockito.MockitoAnnotations; 407517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 417517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin@RunWith(JUnit4.class) 427517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin@SmallTest 437517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupinpublic class DozeWallpaperStateTest extends SysuiTestCase { 447517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin 45660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin private DozeWallpaperState mDozeWallpaperState; 46660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin @Mock IWallpaperManager mIWallpaperManager; 47660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin @Mock DozeParameters mDozeParameters; 48660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 49660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin @Before 50660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin public void setUp() { 51660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin MockitoAnnotations.initMocks(this); 5230c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mDozeParameters); 53660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin } 54660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 557517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin @Test 567517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin public void testDreamNotification() throws RemoteException { 57660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin // Pre-condition 58660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin when(mDozeParameters.getAlwaysOn()).thenReturn(true); 59660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 60660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.UNINITIALIZED, 617517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin DozeMachine.State.DOZE_AOD); 62660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(true), anyBoolean()); 63660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_AOD, DozeMachine.State.FINISH); 64660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(false), anyBoolean()); 65660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 66660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin // Make sure we're sending false when AoD is off 67660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin reset(mDozeParameters); 68660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.FINISH, DozeMachine.State.DOZE_AOD); 69660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(false), anyBoolean()); 70660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin } 71660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 72660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin @Test 73660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin public void testAnimates_whenSupported() throws RemoteException { 74660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin // Pre-conditions 75660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin when(mDozeParameters.getDisplayNeedsBlanking()).thenReturn(false); 7616cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin when(mDozeParameters.shouldControlScreenOff()).thenReturn(true); 77660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin when(mDozeParameters.getAlwaysOn()).thenReturn(true); 78660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 79660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.UNINITIALIZED, 80660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin DozeMachine.State.DOZE_AOD); 81660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(true)); 82660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 83660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_AOD, DozeMachine.State.FINISH); 84660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(true)); 85660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin } 86660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 87660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin @Test 88660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin public void testDoesNotAnimate_whenNotSupported() throws RemoteException { 89660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin // Pre-conditions 90660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin when(mDozeParameters.getDisplayNeedsBlanking()).thenReturn(true); 91660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin when(mDozeParameters.getAlwaysOn()).thenReturn(true); 9216cfe45dec96154d37b36364f67cedce16ca2484Lucas Dupin when(mDozeParameters.shouldControlScreenOff()).thenReturn(false); 93660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 94660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.UNINITIALIZED, 95660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin DozeMachine.State.DOZE_AOD); 96660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(false)); 97660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin 98660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_AOD, DozeMachine.State.FINISH); 99660d573e438c4b1a044fa399bb99272a0bcc9f22Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(false)); 1007517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin } 10130c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin 10230c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin @Test 10330c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin public void testTransitionTo_requestPulseIsAmbientMode() throws RemoteException { 10430c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE, 10530c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin DozeMachine.State.DOZE_REQUEST_PULSE); 10630c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(false)); 10730c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin } 10830c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin 10930c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin @Test 11030c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin public void testTransitionTo_pulseIsAmbientMode() throws RemoteException { 11130c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE, 11230c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin DozeMachine.State.DOZE_PULSING); 11330c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(false)); 11430c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin } 11530c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin 11630c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin @Test 11730c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin public void testTransitionTo_animatesWhenWakingUpFromPulse() throws RemoteException { 11830c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE, 11930c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin DozeMachine.State.DOZE_PULSING); 12030c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin reset(mIWallpaperManager); 12130c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_PULSING, 12230c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin DozeMachine.State.FINISH); 12330c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(true)); 12430c75471492ec7862ab7fbd56358a75178e0ed52Lucas Dupin } 1257517b5dcce8dde3a22177857b8fff6439fd98d82Lucas Dupin} 126