116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung/* 216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * Copyright (C) 2017 The Android Open Source Project 316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * 416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * you may not use this file except in compliance with the License. 616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * You may obtain a copy of the License at 716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * 816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * http://www.apache.org/licenses/LICENSE-2.0 916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * 1016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * Unless required by applicable law or agreed to in writing, software 1116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * distributed under the License is distributed on an "AS IS" BASIS, 1216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * See the License for the specific language governing permissions and 1416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung * limitations under the License 1516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung */ 1616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 1716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungpackage com.android.systemui.recents; 1816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 1916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; 2016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 2116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport static com.android.systemui.recents.RecentsImpl.RECENTS_ACTIVITY; 2216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport static com.android.systemui.recents.RecentsImpl.RECENTS_PACKAGE; 2316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 2416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport static org.junit.Assert.fail; 2516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 2616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.app.ActivityManager; 2716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.app.ActivityManager.RunningTaskInfo; 2816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.app.IActivityManager; 2916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.os.SystemClock; 3016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.support.test.filters.MediumTest; 3116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport android.support.test.runner.AndroidJUnit4; 3216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 3316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport com.android.systemui.SysuiTestCase; 3416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 3516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport org.junit.Test; 3616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport org.junit.runner.RunWith; 3716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 3816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungimport java.util.List; 3916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 4016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung@RunWith(AndroidJUnit4.class) 4116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung@MediumTest 4216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chungpublic class RecentsTest extends SysuiTestCase { 4316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 4416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung @Test 4516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung public void testRecentsActivityType() throws Exception { 4616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung // Clear the state 4716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung final IActivityManager am = ActivityManager.getService(); 4816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung am.removeStacksWithActivityTypes(new int[] { ACTIVITY_TYPE_RECENTS }); 4916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 5016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung // Toggle recents, use a shell command because it is not exported 5116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung runShellCommand("am start -n " + RECENTS_PACKAGE + "/" + RECENTS_ACTIVITY); 5216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung 5316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung // Verify that an activity was launched with the right activity type 5416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung int retryCount = 0; 5516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung while (retryCount < 10) { 5616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung List<RunningTaskInfo> tasks = am.getTasks(Integer.MAX_VALUE); 5716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung for (RunningTaskInfo info : tasks) { 5816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung if (info.configuration.windowConfiguration.getActivityType() 5916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung == ACTIVITY_TYPE_RECENTS) { 6016e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung // Found a recents activity with the right activity type 6116e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung return; 6216e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung } 6316e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung } 6416e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung SystemClock.sleep(50); 6516e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung retryCount++; 6616e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung } 6716e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung fail("Expected Recents activity with ACTIVITY_TYPE_RECENTS"); 6816e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung } 6916e185e60b449958b138d52a7bdb7dea998ebb79Winson Chung}