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 /** A task is removed from recents as a result of another task being added to recent tasks. */ onRecentTaskRemovedForAddTask(int taskId)37 default void onRecentTaskRemovedForAddTask(int taskId) { } 38 39 @BinderThread onTaskStackChangedBackground()40 default void onTaskStackChangedBackground() { } 41 onTaskStackChanged()42 default void onTaskStackChanged() { } 43 onTaskProfileLocked(RunningTaskInfo taskInfo, int userId)44 default void onTaskProfileLocked(RunningTaskInfo taskInfo, int userId) { } 45 onTaskDisplayChanged(int taskId, int newDisplayId)46 default void onTaskDisplayChanged(int taskId, int newDisplayId) { } 47 onTaskCreated(int taskId, ComponentName componentName)48 default void onTaskCreated(int taskId, ComponentName componentName) { } 49 onTaskRemoved(int taskId)50 default void onTaskRemoved(int taskId) { } 51 onTaskMovedToFront(int taskId)52 default void onTaskMovedToFront(int taskId) { } 53 onTaskMovedToFront(RunningTaskInfo taskInfo)54 default void onTaskMovedToFront(RunningTaskInfo taskInfo) { 55 onTaskMovedToFront(taskInfo.taskId); 56 } 57 onTaskDescriptionChanged(RunningTaskInfo taskInfo)58 default void onTaskDescriptionChanged(RunningTaskInfo taskInfo) { } 59 60 /** 61 * @return whether the snapshot is consumed and the lifecycle of the snapshot extends beyond 62 * the lifecycle of this callback. 63 */ onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot)64 default boolean onTaskSnapshotChanged(int taskId, TaskSnapshot snapshot) { 65 return false; 66 } 67 onBackPressedOnTaskRoot(RunningTaskInfo taskInfo)68 default void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { } 69 onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, boolean clearedTask, boolean wasVisible)70 default void onActivityRestartAttempt(RunningTaskInfo task, boolean homeTaskVisible, 71 boolean clearedTask, boolean wasVisible) { } 72 onActivityPinned(String packageName, int userId, int taskId, int stackId)73 default void onActivityPinned(String packageName, int userId, int taskId, int stackId) { } 74 onActivityUnpinned()75 default void onActivityUnpinned() { } 76 onActivityForcedResizable(String packageName, int taskId, int reason)77 default void onActivityForcedResizable(String packageName, int taskId, int reason) { } 78 onActivityDismissingDockedStack()79 default void onActivityDismissingDockedStack() { } 80 onActivityLaunchOnSecondaryDisplayFailed()81 default void onActivityLaunchOnSecondaryDisplayFailed() { } 82 onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo)83 default void onActivityLaunchOnSecondaryDisplayFailed(RunningTaskInfo taskInfo) { 84 onActivityLaunchOnSecondaryDisplayFailed(); 85 } 86 onActivityLaunchOnSecondaryDisplayRerouted()87 default void onActivityLaunchOnSecondaryDisplayRerouted() { } 88 onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo)89 default void onActivityLaunchOnSecondaryDisplayRerouted(RunningTaskInfo taskInfo) { 90 onActivityLaunchOnSecondaryDisplayRerouted(); 91 } 92 onActivityRequestedOrientationChanged(int taskId, int requestedOrientation)93 default void onActivityRequestedOrientationChanged(int taskId, int requestedOrientation) { } 94 onActivityRotation(int displayId)95 default void onActivityRotation(int displayId) { } 96 } 97