blob: 60204539d17885a8c1104c9d297446f3bf940900 [file] [log] [blame]
Jorim Jaggi98a9d202018-03-26 16:17:07 +02001/*
2 * Copyright (C) 2018 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
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070014 * limitations under the License.
Jorim Jaggi98a9d202018-03-26 16:17:07 +020015 */
16
17package com.android.server.wm;
18
19import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
Evan Rosky7735d352019-03-18 17:27:27 -070020import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020021import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
Evan Rosky7735d352019-03-18 17:27:27 -070022import static android.view.WindowManager.TRANSIT_ACTIVITY_OPEN;
Evan Roskyec9488c2019-03-01 19:32:12 -080023import static android.view.WindowManager.TRANSIT_TASK_CHANGE_WINDOWING_MODE;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020024import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
25import static android.view.WindowManager.TRANSIT_TASK_OPEN;
Brett Chabota26eda92018-07-23 13:08:30 -070026
Tadashi G. Takaoka82eb7a52019-03-26 18:22:01 +090027import static org.junit.Assert.assertEquals;
28import static org.junit.Assert.assertFalse;
29import static org.junit.Assert.assertTrue;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020030
31import android.platform.test.annotations.Presubmit;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020032import android.view.WindowManager;
33
Wale Ogunwale8e85aee2019-04-30 15:55:05 -070034import androidx.test.filters.FlakyTest;
Brett Chabota26eda92018-07-23 13:08:30 -070035import androidx.test.filters.SmallTest;
Brett Chabota26eda92018-07-23 13:08:30 -070036
Jorim Jaggi98a9d202018-03-26 16:17:07 +020037import org.junit.Before;
38import org.junit.Test;
Riddle Hsu73f53572019-09-23 23:13:01 +080039import org.junit.runner.RunWith;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020040
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070041/**
42 * Build/Install/Run:
43 * atest FrameworksServicesTests:AppTransitionControllerTest
44 */
Jorim Jaggi98a9d202018-03-26 16:17:07 +020045@SmallTest
46@Presubmit
Riddle Hsu73f53572019-09-23 23:13:01 +080047@RunWith(WindowTestRunner.class)
lumark588a3e82018-07-20 18:53:54 +080048public class AppTransitionControllerTest extends WindowTestsBase {
Jorim Jaggi98a9d202018-03-26 16:17:07 +020049
lumark588a3e82018-07-20 18:53:54 +080050 private AppTransitionController mAppTransitionController;
Jorim Jaggi98a9d202018-03-26 16:17:07 +020051
52 @Before
53 public void setUp() throws Exception {
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070054 mAppTransitionController = new AppTransitionController(mWm, mDisplayContent);
Jorim Jaggi98a9d202018-03-26 16:17:07 +020055 }
56
57 @Test
Wale Ogunwale8e85aee2019-04-30 15:55:05 -070058 @FlakyTest(bugId = 131005232)
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070059 public void testTranslucentOpen() {
Garfield Tane8d84ab2019-10-11 09:49:40 -070060 final ActivityRecord behind = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080061 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
Garfield Tane8d84ab2019-10-11 09:49:40 -070062 final ActivityRecord translucentOpening = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080063 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
64 translucentOpening.setOccludesParent(false);
65 translucentOpening.setHidden(true);
66 mDisplayContent.mOpeningApps.add(behind);
67 mDisplayContent.mOpeningApps.add(translucentOpening);
68 assertEquals(WindowManager.TRANSIT_TRANSLUCENT_ACTIVITY_OPEN,
69 mAppTransitionController.maybeUpdateTransitToTranslucentAnim(TRANSIT_TASK_OPEN));
Jorim Jaggi98a9d202018-03-26 16:17:07 +020070 }
71
72 @Test
Wale Ogunwale8e85aee2019-04-30 15:55:05 -070073 @FlakyTest(bugId = 131005232)
Tadashi G. Takaokab6e148c2018-11-03 02:59:06 -070074 public void testTranslucentClose() {
Garfield Tane8d84ab2019-10-11 09:49:40 -070075 final ActivityRecord behind = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080076 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
Garfield Tane8d84ab2019-10-11 09:49:40 -070077 final ActivityRecord translucentClosing = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080078 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
79 translucentClosing.setOccludesParent(false);
80 mDisplayContent.mClosingApps.add(translucentClosing);
81 assertEquals(WindowManager.TRANSIT_TRANSLUCENT_ACTIVITY_CLOSE,
82 mAppTransitionController.maybeUpdateTransitToTranslucentAnim(TRANSIT_TASK_CLOSE));
Jorim Jaggi98a9d202018-03-26 16:17:07 +020083 }
Evan Roskyec9488c2019-03-01 19:32:12 -080084
85 @Test
Wale Ogunwale8e85aee2019-04-30 15:55:05 -070086 @FlakyTest(bugId = 131005232)
Evan Roskyec9488c2019-03-01 19:32:12 -080087 public void testChangeIsNotOverwritten() {
Garfield Tane8d84ab2019-10-11 09:49:40 -070088 final ActivityRecord behind = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080089 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
Garfield Tane8d84ab2019-10-11 09:49:40 -070090 final ActivityRecord translucentOpening = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +080091 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
92 translucentOpening.setOccludesParent(false);
93 translucentOpening.setHidden(true);
94 mDisplayContent.mOpeningApps.add(behind);
95 mDisplayContent.mOpeningApps.add(translucentOpening);
96 assertEquals(TRANSIT_TASK_CHANGE_WINDOWING_MODE,
97 mAppTransitionController.maybeUpdateTransitToTranslucentAnim(
98 TRANSIT_TASK_CHANGE_WINDOWING_MODE));
Evan Roskyec9488c2019-03-01 19:32:12 -080099 }
Evan Rosky7735d352019-03-18 17:27:27 -0700100
101 @Test
Wale Ogunwale9e3c69e2019-05-02 08:04:01 -0700102 @FlakyTest(bugId = 131005232)
Evan Rosky7735d352019-03-18 17:27:27 -0700103 public void testTransitWithinTask() {
Garfield Tane8d84ab2019-10-11 09:49:40 -0700104 final ActivityRecord opening = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +0800105 WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD);
106 opening.setOccludesParent(false);
Garfield Tane8d84ab2019-10-11 09:49:40 -0700107 final ActivityRecord closing = createActivityRecord(mDisplayContent,
Riddle Hsu73f53572019-09-23 23:13:01 +0800108 WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD);
109 closing.setOccludesParent(false);
110 final Task task = opening.getTask();
111 mDisplayContent.mOpeningApps.add(opening);
112 mDisplayContent.mClosingApps.add(closing);
113 assertFalse(mAppTransitionController.isTransitWithinTask(TRANSIT_ACTIVITY_OPEN, task));
114 closing.getTask().removeChild(closing);
115 task.addChild(closing, 0);
116 assertTrue(mAppTransitionController.isTransitWithinTask(TRANSIT_ACTIVITY_OPEN, task));
117 assertFalse(mAppTransitionController.isTransitWithinTask(TRANSIT_TASK_OPEN, task));
Evan Rosky7735d352019-03-18 17:27:27 -0700118 }
Jorim Jaggi98a9d202018-03-26 16:17:07 +0200119}