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}