blob: 894890a2d0f1165be9e613afafc3ce231963697f [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() {
Tiger Huang332793b2019-10-29 23:21:27 +080086 final WindowState statusBar =
87 createWindow(null, TYPE_STATUS_BAR, "statusBar", FAKE_CALLING_UID);
Michal Karpinskia606a292019-01-12 17:29:52 +000088 final WindowState app = createWindow(null, TYPE_APPLICATION, "app", FAKE_CALLING_UID);
89
Tiger Huang332793b2019-10-29 23:21:27 +080090 assertFalse(statusBar.isVisibleNow());
Alan Stokeseea8d3e2019-04-10 17:37:25 +010091 assertFalse(app.isVisibleNow());
Michal Karpinskia606a292019-01-12 17:29:52 +000092 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
93 }
Garfield Tanb5910b42019-03-14 14:50:59 -070094
95 @Test
96 public void testUpdateDefaultDisplayWindowingModeOnSettingsRetrieved() {
Riddle Hsu73f53572019-09-23 23:13:01 +080097 assertEquals(WindowConfiguration.WINDOWING_MODE_FULLSCREEN,
98 mWm.getDefaultDisplayContentLocked().getWindowingMode());
Garfield Tanb5910b42019-03-14 14:50:59 -070099
Riddle Hsu73f53572019-09-23 23:13:01 +0800100 mWm.mIsPc = true;
101 mWm.mAtmService.mSupportsFreeformWindowManagement = true;
Garfield Tanb5910b42019-03-14 14:50:59 -0700102
Riddle Hsu73f53572019-09-23 23:13:01 +0800103 mWm.mRoot.onSettingsRetrieved();
Garfield Tanb5910b42019-03-14 14:50:59 -0700104
Riddle Hsu73f53572019-09-23 23:13:01 +0800105 assertEquals(WindowConfiguration.WINDOWING_MODE_FREEFORM,
106 mWm.getDefaultDisplayContentLocked().getWindowingMode());
Garfield Tanb5910b42019-03-14 14:50:59 -0700107 }
Michal Karpinskia606a292019-01-12 17:29:52 +0000108}
109