blob: afe18c332b9d1dfc9fe05bfc091404b70641cef9 [file] [log] [blame]
Michal Karpinskia606a292019-01-12 17:29:52 +00001/*
2 * Copyright (C) 2019 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
17package com.android.server.wm;
18
19import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
Michal Karpinski2927b542019-04-16 14:02:46 +010020import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
Michal Karpinskia606a292019-01-12 17:29:52 +000021import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
22import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
23
Garfield Tanb5910b42019-03-14 14:50:59 -070024import static org.junit.Assert.assertEquals;
Michal Karpinskia606a292019-01-12 17:29:52 +000025import static org.junit.Assert.assertFalse;
26import static org.junit.Assert.assertTrue;
27
Garfield Tanb5910b42019-03-14 14:50:59 -070028import android.app.WindowConfiguration;
Michal Karpinskia606a292019-01-12 17:29:52 +000029import android.platform.test.annotations.Presubmit;
30
31import androidx.test.filters.SmallTest;
32
33import org.junit.Test;
Riddle Hsu73f53572019-09-23 23:13:01 +080034import org.junit.runner.RunWith;
Michal Karpinskia606a292019-01-12 17:29:52 +000035
36/**
37 * Tests for RootWindowContainer.
38 *
39 * Build/Install/Run:
40 * atest WmTests:RootWindowContainerTests
41 */
42@SmallTest
43@Presubmit
Riddle Hsu73f53572019-09-23 23:13:01 +080044@RunWith(WindowTestRunner.class)
Michal Karpinskia606a292019-01-12 17:29:52 +000045public class RootWindowContainerTests extends WindowTestsBase {
46
47 private static final int FAKE_CALLING_UID = 667;
48
49 @Test
Michal Karpinski2927b542019-04-16 14:02:46 +010050 public void testIsAnyNonToastWindowVisibleForUid_oneToastOneAppStartOneNonToastBothVisible() {
Michal Karpinskia606a292019-01-12 17:29:52 +000051 final WindowState toastyToast = createWindow(null, TYPE_TOAST, "toast", FAKE_CALLING_UID);
52 final WindowState app = createWindow(null, TYPE_APPLICATION, "app", FAKE_CALLING_UID);
Michal Karpinski2927b542019-04-16 14:02:46 +010053 final WindowState appStart = createWindow(null, TYPE_APPLICATION_STARTING, "appStarting",
54 FAKE_CALLING_UID);
Michal Karpinskia606a292019-01-12 17:29:52 +000055 toastyToast.mHasSurface = true;
56 app.mHasSurface = true;
Michal Karpinski2927b542019-04-16 14:02:46 +010057 appStart.mHasSurface = true;
Michal Karpinskia606a292019-01-12 17:29:52 +000058
Alan Stokeseea8d3e2019-04-10 17:37:25 +010059 assertTrue(toastyToast.isVisibleNow());
60 assertTrue(app.isVisibleNow());
Michal Karpinski2927b542019-04-16 14:02:46 +010061 assertTrue(appStart.isVisibleNow());
Michal Karpinskia606a292019-01-12 17:29:52 +000062 assertTrue(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
63 }
64
65 @Test
66 public void testIsAnyNonToastWindowVisibleForUid_onlyToastVisible() {
67 final WindowState toastyToast = createWindow(null, TYPE_TOAST, "toast", FAKE_CALLING_UID);
68 toastyToast.mHasSurface = true;
69
Alan Stokeseea8d3e2019-04-10 17:37:25 +010070 assertTrue(toastyToast.isVisibleNow());
Michal Karpinskia606a292019-01-12 17:29:52 +000071 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
72 }
73
74 @Test
Michal Karpinski2927b542019-04-16 14:02:46 +010075 public void testIsAnyNonToastWindowVisibleForUid_onlyAppStartingVisible() {
76 final WindowState appStart = createWindow(null, TYPE_APPLICATION_STARTING, "appStarting",
77 FAKE_CALLING_UID);
78 appStart.mHasSurface = true;
79
80 assertTrue(appStart.isVisibleNow());
81 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
82 }
83
84 @Test
Michal Karpinskia606a292019-01-12 17:29:52 +000085 public void testIsAnyNonToastWindowVisibleForUid_aFewNonToastButNoneVisible() {
86 final WindowState topBar = createWindow(null, TYPE_STATUS_BAR, "topBar", FAKE_CALLING_UID);
87 final WindowState app = createWindow(null, TYPE_APPLICATION, "app", FAKE_CALLING_UID);
88
Alan Stokeseea8d3e2019-04-10 17:37:25 +010089 assertFalse(topBar.isVisibleNow());
90 assertFalse(app.isVisibleNow());
Michal Karpinskia606a292019-01-12 17:29:52 +000091 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
92 }
Garfield Tanb5910b42019-03-14 14:50:59 -070093
94 @Test
95 public void testUpdateDefaultDisplayWindowingModeOnSettingsRetrieved() {
Riddle Hsu73f53572019-09-23 23:13:01 +080096 assertEquals(WindowConfiguration.WINDOWING_MODE_FULLSCREEN,
97 mWm.getDefaultDisplayContentLocked().getWindowingMode());
Garfield Tanb5910b42019-03-14 14:50:59 -070098
Riddle Hsu73f53572019-09-23 23:13:01 +080099 mWm.mIsPc = true;
100 mWm.mAtmService.mSupportsFreeformWindowManagement = true;
Garfield Tanb5910b42019-03-14 14:50:59 -0700101
Riddle Hsu73f53572019-09-23 23:13:01 +0800102 mWm.mRoot.onSettingsRetrieved();
Garfield Tanb5910b42019-03-14 14:50:59 -0700103
Riddle Hsu73f53572019-09-23 23:13:01 +0800104 assertEquals(WindowConfiguration.WINDOWING_MODE_FREEFORM,
105 mWm.getDefaultDisplayContentLocked().getWindowingMode());
Garfield Tanb5910b42019-03-14 14:50:59 -0700106 }
Michal Karpinskia606a292019-01-12 17:29:52 +0000107}
108