blob: 162a1a90875a2c3049b47e669bbeb6eb280330df [file] [log] [blame]
Wale Ogunwaleb783fd82016-11-04 09:51:54 -07001/*
2 * Copyright (C) 2016 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
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070019import org.junit.Test;
20import org.junit.runner.RunWith;
21
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070022import android.platform.test.annotations.Presubmit;
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070023import android.support.test.filters.SmallTest;
24import android.support.test.runner.AndroidJUnit4;
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070025
26import java.util.ArrayList;
27
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070028import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070029import static org.junit.Assert.assertEquals;
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070030
31/**
32 * Tests for the {@link DisplayContent} class.
33 *
34 * Build/Install/Run:
35 * bit FrameworksServicesTests:com.android.server.wm.DisplayContentTests
36 */
37@SmallTest
38@Presubmit
39@RunWith(AndroidJUnit4.class)
Wale Ogunwale44fbdf52016-11-16 10:18:45 -080040public class DisplayContentTests extends WindowTestsBase {
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070041
42 @Test
43 public void testForAllWindows() throws Exception {
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080044 final WindowState exitingAppWindow = createWindow(null, TYPE_BASE_APPLICATION,
45 sDisplayContent, "exiting app");
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070046 final AppWindowToken exitingAppToken = exitingAppWindow.mAppToken;
47 exitingAppToken.mIsExiting = true;
48 exitingAppToken.mTask.mStack.mExitingAppTokens.add(exitingAppToken);
49
50 final ArrayList<WindowState> windows = new ArrayList();
51
52 // Test forward traversal.
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080053 sDisplayContent.forAllWindows(w -> {windows.add(w);}, false /* traverseTopToBottom */);
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070054
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080055 assertEquals(sWallpaperWindow, windows.get(0));
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070056 assertEquals(exitingAppWindow, windows.get(1));
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080057 assertEquals(sChildAppWindowBelow, windows.get(2));
58 assertEquals(sAppWindow, windows.get(3));
59 assertEquals(sChildAppWindowAbove, windows.get(4));
60 assertEquals(sDockedDividerWindow, windows.get(5));
61 assertEquals(sStatusBarWindow, windows.get(6));
62 assertEquals(sNavBarWindow, windows.get(7));
63 assertEquals(sImeWindow, windows.get(8));
64 assertEquals(sImeDialogWindow, windows.get(9));
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070065
66 // Test backward traversal.
67 windows.clear();
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080068 sDisplayContent.forAllWindows(w -> {windows.add(w);}, true /* traverseTopToBottom */);
Wale Ogunwaleb783fd82016-11-04 09:51:54 -070069
Wale Ogunwale3c1170d2016-12-02 14:44:52 -080070 assertEquals(sWallpaperWindow, windows.get(9));
71 assertEquals(exitingAppWindow, windows.get(8));
72 assertEquals(sChildAppWindowBelow, windows.get(7));
73 assertEquals(sAppWindow, windows.get(6));
74 assertEquals(sChildAppWindowAbove, windows.get(5));
75 assertEquals(sDockedDividerWindow, windows.get(4));
76 assertEquals(sStatusBarWindow, windows.get(3));
77 assertEquals(sNavBarWindow, windows.get(2));
78 assertEquals(sImeWindow, windows.get(1));
79 assertEquals(sImeDialogWindow, windows.get(0));
80 }
81
82 @Test
83 public void testForAllWindows_WithImeTarget() throws Exception {
84 final WindowState imeAppTarget =
85 createWindow(null, TYPE_BASE_APPLICATION, sDisplayContent, "imeAppTarget");
86
87 sWm.mInputMethodTarget = imeAppTarget;
88
89 final ArrayList<WindowState> windows = new ArrayList();
90
91 // Test forward traversal.
92 sDisplayContent.forAllWindows(w -> {windows.add(w);}, false /* traverseTopToBottom */);
93
94 assertEquals(sWallpaperWindow, windows.get(0));
95 assertEquals(sChildAppWindowBelow, windows.get(1));
96 assertEquals(sAppWindow, windows.get(2));
97 assertEquals(sChildAppWindowAbove, windows.get(3));
98 assertEquals(imeAppTarget, windows.get(4));
99 assertEquals(sImeWindow, windows.get(5));
100 assertEquals(sImeDialogWindow, windows.get(6));
101 assertEquals(sDockedDividerWindow, windows.get(7));
102 assertEquals(sStatusBarWindow, windows.get(8));
103 assertEquals(sNavBarWindow, windows.get(9));
104
105 // Test backward traversal.
106 windows.clear();
107 sDisplayContent.forAllWindows(w -> {windows.add(w);}, true /* traverseTopToBottom */);
108
109 assertEquals(sWallpaperWindow, windows.get(9));
110 assertEquals(sChildAppWindowBelow, windows.get(8));
111 assertEquals(sAppWindow, windows.get(7));
112 assertEquals(sChildAppWindowAbove, windows.get(6));
113 assertEquals(imeAppTarget, windows.get(5));
114 assertEquals(sImeWindow, windows.get(4));
115 assertEquals(sImeDialogWindow, windows.get(3));
116 assertEquals(sDockedDividerWindow, windows.get(2));
117 assertEquals(sStatusBarWindow, windows.get(1));
118 assertEquals(sNavBarWindow, windows.get(0));
119
120 // Clean-up
121 sWm.mInputMethodTarget = null;
122 imeAppTarget.removeImmediately();
Wale Ogunwaleb783fd82016-11-04 09:51:54 -0700123 }
Wale Ogunwaleb783fd82016-11-04 09:51:54 -0700124}