blob: 35a8ec37c758ade91758547b90a3f5a24244559b [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;
20import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
21import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
22
Garfield Tanb5910b42019-03-14 14:50:59 -070023import static org.junit.Assert.assertEquals;
Michal Karpinskia606a292019-01-12 17:29:52 +000024import static org.junit.Assert.assertFalse;
25import static org.junit.Assert.assertTrue;
26
Garfield Tanb5910b42019-03-14 14:50:59 -070027import android.app.WindowConfiguration;
Michal Karpinskia606a292019-01-12 17:29:52 +000028import android.platform.test.annotations.Presubmit;
29
30import androidx.test.filters.SmallTest;
31
32import org.junit.Test;
33
34/**
35 * Tests for RootWindowContainer.
36 *
37 * Build/Install/Run:
38 * atest WmTests:RootWindowContainerTests
39 */
40@SmallTest
41@Presubmit
42public class RootWindowContainerTests extends WindowTestsBase {
43
44 private static final int FAKE_CALLING_UID = 667;
45
46 @Test
47 public void testIsAnyNonToastWindowVisibleForUid_oneToastOneNonToastBothVisible() {
48 final WindowState toastyToast = createWindow(null, TYPE_TOAST, "toast", FAKE_CALLING_UID);
49 final WindowState app = createWindow(null, TYPE_APPLICATION, "app", FAKE_CALLING_UID);
50 toastyToast.mHasSurface = true;
51 app.mHasSurface = true;
52
53 assertTrue(toastyToast.isVisible());
54 assertTrue(app.isVisible());
55 assertTrue(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
56 }
57
58 @Test
59 public void testIsAnyNonToastWindowVisibleForUid_onlyToastVisible() {
60 final WindowState toastyToast = createWindow(null, TYPE_TOAST, "toast", FAKE_CALLING_UID);
61 toastyToast.mHasSurface = true;
62
63 assertTrue(toastyToast.isVisible());
64 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
65 }
66
67 @Test
68 public void testIsAnyNonToastWindowVisibleForUid_aFewNonToastButNoneVisible() {
69 final WindowState topBar = createWindow(null, TYPE_STATUS_BAR, "topBar", FAKE_CALLING_UID);
70 final WindowState app = createWindow(null, TYPE_APPLICATION, "app", FAKE_CALLING_UID);
71
72 assertFalse(topBar.isVisible());
73 assertFalse(app.isVisible());
74 assertFalse(mWm.mRoot.isAnyNonToastWindowVisibleForUid(FAKE_CALLING_UID));
75 }
Garfield Tanb5910b42019-03-14 14:50:59 -070076
77 @Test
78 public void testUpdateDefaultDisplayWindowingModeOnSettingsRetrieved() {
79 synchronized (mWm.mGlobalLock) {
80 assertEquals(WindowConfiguration.WINDOWING_MODE_FULLSCREEN,
81 mWm.getDefaultDisplayContentLocked().getWindowingMode());
82
83 mWm.mIsPc = true;
84 mWm.mSupportsFreeformWindowManagement = true;
85
86 mWm.mRoot.onSettingsRetrieved();
87
88 assertEquals(WindowConfiguration.WINDOWING_MODE_FREEFORM,
89 mWm.getDefaultDisplayContentLocked().getWindowingMode());
90 }
91 }
Michal Karpinskia606a292019-01-12 17:29:52 +000092}
93