• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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