Loading core/java/android/app/IActivityTaskManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,9 @@ interface IActivityTaskManager { List<ActivityManager.StackInfo> getAllStackInfos(); ActivityManager.StackInfo getStackInfo(int windowingMode, int activityType); List<ActivityManager.StackInfo> getAllStackInfosOnDisplay(int displayId); ActivityManager.StackInfo getStackInfoOnDisplay(int windowingMode, int activityType, int displayId); /** * Informs ActivityTaskManagerService that the keyguard is showing. Loading core/java/android/app/TaskEmbedder.java +4 −13 Original line number Diff line number Diff line Loading @@ -655,20 +655,11 @@ public class TaskEmbedder { // color of the surface view during resizing. final int displayId = getDisplayId(); final List<ActivityManager.StackInfo> stackInfoList = mActivityTaskManager.getAllStackInfos(); // Iterate through stacks from top to bottom. final int stackCount = stackInfoList.size(); for (int i = 0; i < stackCount; i++) { final ActivityManager.StackInfo stackInfo = stackInfoList.get(i); // Only look for stacks on our virtual display. if (stackInfo.displayId != displayId) { continue; } // Found the topmost stack on target display. return stackInfo; } mActivityTaskManager.getAllStackInfosOnDisplay(displayId); if (stackInfoList.isEmpty()) { return null; } return stackInfoList.get(0); } } } services/core/java/com/android/server/wm/ActivityTaskManagerService.java +28 −1 Original line number Diff line number Diff line Loading @@ -2773,7 +2773,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getAllStackInfos(); return mRootActivityContainer.getAllStackInfos(INVALID_DISPLAY); } } finally { Binder.restoreCallingIdentity(ident); Loading @@ -2793,6 +2793,33 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } @Override public List<ActivityManager.StackInfo> getAllStackInfosOnDisplay(int displayId) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getAllStackInfos()"); long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getAllStackInfos(displayId); } } finally { Binder.restoreCallingIdentity(ident); } } @Override public ActivityManager.StackInfo getStackInfoOnDisplay(int windowingMode, int activityType, int displayId) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getStackInfo()"); long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getStackInfo(windowingMode, activityType, displayId); } } finally { Binder.restoreCallingIdentity(ident); } } @Override public void cancelRecentsAnimation(boolean restoreHomeStackPosition) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "cancelRecentsAnimation()"); Loading services/core/java/com/android/server/wm/RootActivityContainer.java +32 −6 Original line number Diff line number Diff line Loading @@ -1243,6 +1243,15 @@ class RootActivityContainer extends ConfigurationContainer return null; } private <T extends ActivityStack> T getStack(int windowingMode, int activityType, int displayId) { ActivityDisplay display = getActivityDisplay(displayId); if (display == null) { return null; } return display.getStack(windowingMode, activityType); } private ActivityManager.StackInfo getStackInfo(ActivityStack stack) { final int displayId = stack.mDisplayId; final ActivityDisplay display = getActivityDisplay(displayId); Loading Loading @@ -1296,8 +1305,15 @@ class RootActivityContainer extends ConfigurationContainer return (stack != null) ? getStackInfo(stack) : null; } ArrayList<ActivityManager.StackInfo> getAllStackInfos() { ActivityManager.StackInfo getStackInfo(int windowingMode, int activityType, int displayId) { final ActivityStack stack = getStack(windowingMode, activityType, displayId); return (stack != null) ? getStackInfo(stack) : null; } /** If displayId == INVALID_DISPLAY, this will get stack infos on all displays */ ArrayList<ActivityManager.StackInfo> getAllStackInfos(int displayId) { ArrayList<ActivityManager.StackInfo> list = new ArrayList<>(); if (displayId == INVALID_DISPLAY) { for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) { final ActivityDisplay display = mActivityDisplays.get(displayNdx); for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) { Loading @@ -1307,6 +1323,16 @@ class RootActivityContainer extends ConfigurationContainer } return list; } final ActivityDisplay display = getActivityDisplay(displayId); if (display == null) { return list; } for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = display.getChildAt(stackNdx); list.add(getStackInfo(stack)); } return list; } void deferUpdateBounds(int activityType) { final ActivityStack stack = getStack(WINDOWING_MODE_UNDEFINED, activityType); Loading Loading
core/java/android/app/IActivityTaskManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,9 @@ interface IActivityTaskManager { List<ActivityManager.StackInfo> getAllStackInfos(); ActivityManager.StackInfo getStackInfo(int windowingMode, int activityType); List<ActivityManager.StackInfo> getAllStackInfosOnDisplay(int displayId); ActivityManager.StackInfo getStackInfoOnDisplay(int windowingMode, int activityType, int displayId); /** * Informs ActivityTaskManagerService that the keyguard is showing. Loading
core/java/android/app/TaskEmbedder.java +4 −13 Original line number Diff line number Diff line Loading @@ -655,20 +655,11 @@ public class TaskEmbedder { // color of the surface view during resizing. final int displayId = getDisplayId(); final List<ActivityManager.StackInfo> stackInfoList = mActivityTaskManager.getAllStackInfos(); // Iterate through stacks from top to bottom. final int stackCount = stackInfoList.size(); for (int i = 0; i < stackCount; i++) { final ActivityManager.StackInfo stackInfo = stackInfoList.get(i); // Only look for stacks on our virtual display. if (stackInfo.displayId != displayId) { continue; } // Found the topmost stack on target display. return stackInfo; } mActivityTaskManager.getAllStackInfosOnDisplay(displayId); if (stackInfoList.isEmpty()) { return null; } return stackInfoList.get(0); } } }
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +28 −1 Original line number Diff line number Diff line Loading @@ -2773,7 +2773,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getAllStackInfos(); return mRootActivityContainer.getAllStackInfos(INVALID_DISPLAY); } } finally { Binder.restoreCallingIdentity(ident); Loading @@ -2793,6 +2793,33 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } @Override public List<ActivityManager.StackInfo> getAllStackInfosOnDisplay(int displayId) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getAllStackInfos()"); long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getAllStackInfos(displayId); } } finally { Binder.restoreCallingIdentity(ident); } } @Override public ActivityManager.StackInfo getStackInfoOnDisplay(int windowingMode, int activityType, int displayId) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getStackInfo()"); long ident = Binder.clearCallingIdentity(); try { synchronized (mGlobalLock) { return mRootActivityContainer.getStackInfo(windowingMode, activityType, displayId); } } finally { Binder.restoreCallingIdentity(ident); } } @Override public void cancelRecentsAnimation(boolean restoreHomeStackPosition) { enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "cancelRecentsAnimation()"); Loading
services/core/java/com/android/server/wm/RootActivityContainer.java +32 −6 Original line number Diff line number Diff line Loading @@ -1243,6 +1243,15 @@ class RootActivityContainer extends ConfigurationContainer return null; } private <T extends ActivityStack> T getStack(int windowingMode, int activityType, int displayId) { ActivityDisplay display = getActivityDisplay(displayId); if (display == null) { return null; } return display.getStack(windowingMode, activityType); } private ActivityManager.StackInfo getStackInfo(ActivityStack stack) { final int displayId = stack.mDisplayId; final ActivityDisplay display = getActivityDisplay(displayId); Loading Loading @@ -1296,8 +1305,15 @@ class RootActivityContainer extends ConfigurationContainer return (stack != null) ? getStackInfo(stack) : null; } ArrayList<ActivityManager.StackInfo> getAllStackInfos() { ActivityManager.StackInfo getStackInfo(int windowingMode, int activityType, int displayId) { final ActivityStack stack = getStack(windowingMode, activityType, displayId); return (stack != null) ? getStackInfo(stack) : null; } /** If displayId == INVALID_DISPLAY, this will get stack infos on all displays */ ArrayList<ActivityManager.StackInfo> getAllStackInfos(int displayId) { ArrayList<ActivityManager.StackInfo> list = new ArrayList<>(); if (displayId == INVALID_DISPLAY) { for (int displayNdx = 0; displayNdx < mActivityDisplays.size(); ++displayNdx) { final ActivityDisplay display = mActivityDisplays.get(displayNdx); for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) { Loading @@ -1307,6 +1323,16 @@ class RootActivityContainer extends ConfigurationContainer } return list; } final ActivityDisplay display = getActivityDisplay(displayId); if (display == null) { return list; } for (int stackNdx = display.getChildCount() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = display.getChildAt(stackNdx); list.add(getStackInfo(stack)); } return list; } void deferUpdateBounds(int activityType) { final ActivityStack stack = getStack(WINDOWING_MODE_UNDEFINED, activityType); Loading