blob: 66468a37af4b8859406ca552261815f729558a0c [file] [log] [blame]
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.server.wm;
import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL;
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_PHONE;
import static android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION;
import static android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR;
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
import android.content.Context;
import android.platform.test.annotations.Presubmit;
import android.view.Display;
import org.junit.Test;
/**
* Tests that verify the behavior of window context policy
*
* Build/Install/Run:
* atest CtsWindowManagerDeviceTestCases:WindowContextPolicyTests
*/
@Presubmit
public class WindowContextPolicyTests extends WindowContextTestBase {
@Test(expected = UnsupportedOperationException.class)
public void testCreateWindowContextWithNoDisplayContext() {
mContext.createWindowContext(TYPE_APPLICATION_OVERLAY, null);
}
@Test(expected = IllegalArgumentException.class)
public void testWindowContextWithNullDisplay() {
final Context displayContext = createDisplayContext(Display.DEFAULT_DISPLAY);
displayContext.createWindowContext(null /* display */, TYPE_APPLICATION_OVERLAY,
null /* options */);
}
@Test
public void testWindowContextWithDisplayOnNonUiContext() {
createAllowSystemAlertWindowAppOpSession();
final Display display = mDm.getDisplay(Display.DEFAULT_DISPLAY);
mContext.createWindowContext(display, TYPE_APPLICATION_OVERLAY, null /* options */);
}
@Test
public void testCreateMultipleWindowContextsWithoutView() {
final WindowManagerState.DisplayContent display = createManagedVirtualDisplaySession()
.setSimulateDisplay(true).createDisplay();
for (int i = 0; i < 10; i++) {
createWindowContext(display.mId);
}
}
@Test
public void testWindowContextWithAllPublicTypes() {
final WindowManagerState.DisplayContent display = createManagedVirtualDisplaySession()
.setSimulateDisplay(true).createDisplay();
final int[] allPublicWindowTypes = new int[] {
TYPE_BASE_APPLICATION, TYPE_APPLICATION, TYPE_APPLICATION_STARTING,
TYPE_DRAWN_APPLICATION, TYPE_APPLICATION_PANEL, TYPE_APPLICATION_MEDIA,
TYPE_APPLICATION_SUB_PANEL, TYPE_APPLICATION_ATTACHED_DIALOG,
TYPE_STATUS_BAR, TYPE_SEARCH_BAR, TYPE_PHONE, TYPE_SYSTEM_ALERT,
TYPE_TOAST, TYPE_SYSTEM_OVERLAY, TYPE_PRIORITY_PHONE,
TYPE_SYSTEM_DIALOG, TYPE_KEYGUARD_DIALOG, TYPE_SYSTEM_ERROR, TYPE_INPUT_METHOD,
TYPE_INPUT_METHOD_DIALOG, TYPE_WALLPAPER, TYPE_PRIVATE_PRESENTATION,
TYPE_ACCESSIBILITY_OVERLAY, TYPE_APPLICATION_OVERLAY
};
for (int windowType : allPublicWindowTypes) {
createWindowContext(display.mId, windowType);
}
}
}