Home | History | Annotate | Download | only in am
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License
     15  */
     16 
     17 package android.server.am;
     18 
     19 import static android.server.am.ActivityManagerState.STATE_RESUMED;
     20 import static android.server.am.ActivityManagerState.STATE_STOPPED;
     21 import static android.server.am.Components.DISMISS_KEYGUARD_ACTIVITY;
     22 import static android.server.am.Components.SHOW_WHEN_LOCKED_ACTIVITY;
     23 import static android.server.am.Components.TEST_ACTIVITY;
     24 import static android.server.am.Components.VIRTUAL_DISPLAY_ACTIVITY;
     25 
     26 import static org.junit.Assume.assumeTrue;
     27 
     28 import android.server.am.ActivityManagerState.ActivityDisplay;
     29 
     30 import org.junit.Before;
     31 import org.junit.Test;
     32 
     33 /**
     34  * Display tests that require a locked keyguard.
     35  *
     36  * <p>Build/Install/Run:
     37  *     atest CtsActivityManagerDeviceTestCases:ActivityManagerDisplayLockedKeyguardTests
     38  */
     39 public class ActivityManagerDisplayLockedKeyguardTests extends ActivityManagerDisplayTestBase {
     40 
     41     @Before
     42     @Override
     43     public void setUp() throws Exception {
     44         super.setUp();
     45 
     46         assumeTrue(supportsMultiDisplay());
     47         assumeTrue(supportsSecureLock());
     48     }
     49 
     50     /**
     51      * Test that virtual display content is hidden when device is locked.
     52      */
     53     @Test
     54     public void testVirtualDisplayHidesContentWhenLocked() throws Exception {
     55         try (final VirtualDisplaySession virtualDisplaySession = new VirtualDisplaySession();
     56              final LockScreenSession lockScreenSession = new LockScreenSession()) {
     57             lockScreenSession.setLockCredential();
     58 
     59             // Create new usual virtual display.
     60             final ActivityDisplay newDisplay = virtualDisplaySession.createDisplay();
     61             mAmWmState.assertVisibility(VIRTUAL_DISPLAY_ACTIVITY, true /* visible */);
     62 
     63             // Launch activity on new secondary display.
     64             launchActivityOnDisplay(TEST_ACTIVITY, newDisplay.mId);
     65             mAmWmState.assertVisibility(TEST_ACTIVITY, true /* visible */);
     66 
     67             // Lock the device.
     68             lockScreenSession.gotoKeyguard();
     69             mAmWmState.waitForActivityState(TEST_ACTIVITY, STATE_STOPPED);
     70             mAmWmState.assertVisibility(TEST_ACTIVITY, false /* visible */);
     71 
     72             // Unlock and check if visibility is back.
     73             lockScreenSession.unlockDevice()
     74                     .enterAndConfirmLockCredential();
     75             mAmWmState.waitForKeyguardGone();
     76             mAmWmState.waitForActivityState(TEST_ACTIVITY, STATE_RESUMED);
     77             mAmWmState.assertVisibility(TEST_ACTIVITY, true /* visible */);
     78         }
     79     }
     80 
     81     /**
     82      * Tests whether a FLAG_DISMISS_KEYGUARD activity on a secondary display dismisses the keyguard.
     83      */
     84     @Test
     85     public void testDismissKeyguard_secondaryDisplay() throws Exception {
     86         try (final VirtualDisplaySession virtualDisplaySession = new VirtualDisplaySession();
     87              final LockScreenSession lockScreenSession = new LockScreenSession()) {
     88             lockScreenSession.setLockCredential();
     89             final ActivityDisplay newDisplay = virtualDisplaySession.createDisplay();
     90 
     91             lockScreenSession.gotoKeyguard();
     92             mAmWmState.assertKeyguardShowingAndNotOccluded();
     93             launchActivityOnDisplay(DISMISS_KEYGUARD_ACTIVITY, newDisplay.mId);
     94             lockScreenSession.enterAndConfirmLockCredential();
     95             mAmWmState.waitForKeyguardGone();
     96             mAmWmState.assertKeyguardGone();
     97             mAmWmState.assertVisibility(DISMISS_KEYGUARD_ACTIVITY, true);
     98         }
     99     }
    100 
    101     @Test
    102     public void testDismissKeyguard_whileOccluded_secondaryDisplay() throws Exception {
    103         try (final VirtualDisplaySession virtualDisplaySession = new VirtualDisplaySession();
    104              final LockScreenSession lockScreenSession = new LockScreenSession()) {
    105             lockScreenSession.setLockCredential();
    106             final ActivityDisplay newDisplay = virtualDisplaySession.createDisplay();
    107 
    108             lockScreenSession.gotoKeyguard();
    109             mAmWmState.assertKeyguardShowingAndNotOccluded();
    110             launchActivity(SHOW_WHEN_LOCKED_ACTIVITY);
    111             mAmWmState.computeState(SHOW_WHEN_LOCKED_ACTIVITY);
    112             mAmWmState.assertVisibility(SHOW_WHEN_LOCKED_ACTIVITY, true);
    113             launchActivityOnDisplay(DISMISS_KEYGUARD_ACTIVITY, newDisplay.mId);
    114             lockScreenSession.enterAndConfirmLockCredential();
    115             mAmWmState.waitForKeyguardGone();
    116             mAmWmState.assertKeyguardGone();
    117             mAmWmState.assertVisibility(DISMISS_KEYGUARD_ACTIVITY, true);
    118             mAmWmState.assertVisibility(SHOW_WHEN_LOCKED_ACTIVITY, true);
    119         }
    120     }
    121 }
    122