1 /*
2  * Copyright (C) 2020 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.common;
18 
19 import android.app.ActivityManager.RunningTaskInfo;
20 import android.app.ITaskStackListener;
21 import android.content.ComponentName;
22 import android.window.TaskSnapshot;
23 
24 import androidx.annotation.BinderThread;
25 
26 /**
27  * An interface to track task stack changes. Classes should implement this instead of
28  * {@link ITaskStackListener} to reduce IPC calls from system services.
29  */
30 public interface TaskStackListenerCallback {
31 
onRecentTaskListUpdated()32     default void onRecentTaskListUpdated() { }
33 
onRecentTaskListFrozenChanged(boolean frozen)34     default void onRecentTaskListFrozenChanged(boolean frozen) { }
35 
36     @BinderThread
onTaskStackChangedBackground()37     default void onTaskStackChangedBackground() { }
38 
onTaskStackChanged()39     default void onTaskStackChanged() { }
40 
onTaskProfileLocked(RunningTaskInfo taskInfo, int userId)41     default void onTaskProfileLocked(RunningTaskInfo taskInfo, int userId) { }
42 
onTaskDisplayChanged(int taskId, int newDisplayId)43     default void onTaskDisplayChanged(int taskId, int newDisplayId) { }
44 
onTaskCreated(int taskId, ComponentName componentName)45     default void onTaskCreated(int taskId, ComponentName componentName) { }
46 
onTaskRemoved(int taskId)47     default void onTaskRemoved(int taskId) { }
48 
onTaskMovedToFront(int taskId)49     default void onTaskMovedToFront(int taskId) { }
50 
onTaskMovedToFront(RunningTaskInfo taskInfo)51     default void onTaskMovedToFront(RunningTaskInfo taskInfo) {
52         onTaskMovedToFront(taskInfo.taskId);
53     }
54 
onTaskDescriptionChanged(RunningTaskInfo taskInfo)55     default void onTaskDescriptionChanged(RunningTaskInfo taskInfo) { }
56 
57     /**
58      * @return whether the snapshot is consumed and the lifecycle of the snapshot extends beyond
59      *         the lifecycle of this callback.
60      */
onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot)61     default boolean onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) {
62         return false;
63     }
64 
onBackPressedOnTaskRoot(RunningTaskInfo taskInfo)65     default void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { }
66 
onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, boolean clearedTask, boolean wasVisible)67     default void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible,
68             boolean clearedTask, boolean wasVisible) { }
69 
onActivityPinned(String packageName, int userId, int taskId, int stackId)70     default void onActivityPinned(String packageName, int userId, int taskId, int stackId) { }
71 
onActivityUnpinned()72     default void onActivityUnpinned() { }
73 
onActivityForcedResizable(String packageName, int taskId, int reason)74     default void onActivityForcedResizable(String packageName, int taskId, int reason) { }
75 
onActivityDismissingDockedStack()76     default void onActivityDismissingDockedStack() { }
77 
onActivityLaunchOnSecondaryDisplayFailed()78     default void onActivityLaunchOnSecondaryDisplayFailed() { }
79 
onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo)80     default void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo) {
81         onActivityLaunchOnSecondaryDisplayFailed();
82     }
83 
onActivityLaunchOnSecondaryDisplayRerouted()84     default void onActivityLaunchOnSecondaryDisplayRerouted() { }
85 
onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo)86     default void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo) {
87         onActivityLaunchOnSecondaryDisplayRerouted();
88     }
89 
onActivityRequestedOrientationChanged(int taskId, int requestedOrientation)90     default void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) { }
91 
onActivityRotation(int displayId)92     default void onActivityRotation(int displayId) { }
93 }
94