1 /* 2 * Copyright (C) 2022 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 17 package com.android.wm.shell.desktopmode 18 19 import android.app.ActivityManager.RunningTaskInfo 20 import android.app.WindowConfiguration.ACTIVITY_TYPE_HOME 21 import android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD 22 import android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM 23 import android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN 24 import android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW 25 import android.app.WindowConfiguration.WINDOWING_MODE_PINNED 26 import android.content.ComponentName 27 import android.graphics.Rect 28 import android.view.Display.DEFAULT_DISPLAY 29 import com.android.wm.shell.MockToken 30 import com.android.wm.shell.TestRunningTaskInfoBuilder 31 32 object DesktopTestHelpers { 33 /** Create a task that has windowing mode set to [WINDOWING_MODE_FREEFORM] */ createFreeformTasknull34 fun createFreeformTask( 35 displayId: Int = DEFAULT_DISPLAY, 36 bounds: Rect? = null, 37 ): RunningTaskInfo = 38 TestRunningTaskInfoBuilder() 39 .setDisplayId(displayId) 40 .setParentTaskId(displayId) 41 .setToken(MockToken().token()) 42 .setActivityType(ACTIVITY_TYPE_STANDARD) 43 .setWindowingMode(WINDOWING_MODE_FREEFORM) 44 .setLastActiveTime(100) 45 .setUserId(DEFAULT_USER_ID) 46 .apply { bounds?.let { setBounds(it) } } 47 .build() 48 createPinnedTasknull49 fun createPinnedTask(displayId: Int = DEFAULT_DISPLAY, bounds: Rect? = null): RunningTaskInfo = 50 TestRunningTaskInfoBuilder() 51 .setDisplayId(displayId) 52 .setParentTaskId(displayId) 53 .setToken(MockToken().token()) 54 .setActivityType(ACTIVITY_TYPE_STANDARD) 55 .setWindowingMode(WINDOWING_MODE_PINNED) 56 .setLastActiveTime(100) 57 .apply { bounds?.let { setBounds(it) } } 58 .build() 59 createFullscreenTaskBuildernull60 fun createFullscreenTaskBuilder(displayId: Int = DEFAULT_DISPLAY): TestRunningTaskInfoBuilder = 61 TestRunningTaskInfoBuilder() 62 .setDisplayId(displayId) 63 .setToken(MockToken().token()) 64 .setActivityType(ACTIVITY_TYPE_STANDARD) 65 .setWindowingMode(WINDOWING_MODE_FULLSCREEN) 66 .setUserId(DEFAULT_USER_ID) 67 .setLastActiveTime(100) 68 69 /** Create a task that has windowing mode set to [WINDOWING_MODE_FULLSCREEN] */ 70 fun createFullscreenTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo = 71 createFullscreenTaskBuilder(displayId).build() 72 73 /** Create a task that has windowing mode set to [WINDOWING_MODE_MULTI_WINDOW] */ 74 fun createSplitScreenTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo = 75 TestRunningTaskInfoBuilder() 76 .setDisplayId(displayId) 77 .setToken(MockToken().token()) 78 .setActivityType(ACTIVITY_TYPE_STANDARD) 79 .setWindowingMode(WINDOWING_MODE_MULTI_WINDOW) 80 .setUserId(DEFAULT_USER_ID) 81 .setLastActiveTime(100) 82 .build() 83 84 fun createHomeTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo = 85 TestRunningTaskInfoBuilder() 86 .setDisplayId(displayId) 87 .setToken(MockToken().token()) 88 .setActivityType(ACTIVITY_TYPE_HOME) 89 .setWindowingMode(WINDOWING_MODE_FULLSCREEN) 90 .setUserId(DEFAULT_USER_ID) 91 .setLastActiveTime(100) 92 .build() 93 94 /** 95 * Create a new System Modal task builder, i.e. a builder for a task with only transparent 96 * activities. 97 */ 98 fun createSystemModalTaskBuilder(displayId: Int = DEFAULT_DISPLAY): TestRunningTaskInfoBuilder = 99 createFullscreenTaskBuilder(displayId).setActivityStackTransparent(true).setNumActivities(1) 100 101 /** Create a new System Modal task, i.e. a task with only transparent activities. */ 102 fun createSystemModalTask(displayId: Int = DEFAULT_DISPLAY): RunningTaskInfo = 103 createSystemModalTaskBuilder(displayId).build() 104 105 /** Create a new System Modal task with a base Activity. */ 106 fun createSystemModalTaskWithBaseActivity() = 107 createSystemModalTask().apply { 108 baseActivity = ComponentName("com.test.dummypackage", "TestClass") 109 } 110 111 const val DEFAULT_USER_ID = 10 112 } 113