diff options
| author | 2016-10-26 16:15:25 -0700 | |
|---|---|---|
| committer | 2016-10-26 16:22:31 -0700 | |
| commit | 6d6fb401c79aadeb35cfc66cd36cb30f92d3552f (patch) | |
| tree | 312b236f28b08a0c3a207c7fed40ce179c883f58 | |
| parent | 8977c2dcd65266cc60e5c6e3b7688fcdc7fd9761 (diff) | |
Refactor stack removal methods
Refactor some parts of stack removal to make methods implementations
correspond to their names.
Change-Id: Ie686c463d67232d9d5fd96468fe3911003d22471
Test: Manual and existing tests still pass.
6 files changed, 15 insertions, 56 deletions
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 4df13251f8ed..9aba220316b9 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -2557,15 +2557,6 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM return true; } - case DELETE_ACTIVITY_CONTAINER_TRANSACTION: { - data.enforceInterface(IActivityManager.descriptor); - IActivityContainer activityContainer = - IActivityContainer.Stub.asInterface(data.readStrongBinder()); - deleteActivityContainer(activityContainer); - reply.writeNoException(); - return true; - } - case CREATE_STACK_ON_DISPLAY: { data.enforceInterface(IActivityManager.descriptor); int displayId = data.readInt(); @@ -6396,18 +6387,6 @@ class ActivityManagerProxy implements IActivityManager return res; } - public void deleteActivityContainer(IActivityContainer activityContainer) - throws RemoteException { - Parcel data = Parcel.obtain(); - Parcel reply = Parcel.obtain(); - data.writeInterfaceToken(IActivityManager.descriptor); - data.writeStrongBinder(activityContainer.asBinder()); - mRemote.transact(DELETE_ACTIVITY_CONTAINER_TRANSACTION, data, reply, 0); - reply.readException(); - data.recycle(); - reply.recycle(); - } - public boolean startBinderTracking() throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index 5edd03f438f4..7f583e68da0e 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -580,8 +580,6 @@ public interface IActivityManager extends IInterface { public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException; - public void deleteActivityContainer(IActivityContainer container) throws RemoteException; - public int getActivityDisplayId(IBinder activityToken) throws RemoteException; public void startSystemLockTaskMode(int taskId) throws RemoteException; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 1edc8d22cfaf..2ea2a7457ae6 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -9856,14 +9856,6 @@ public final class ActivityManagerService extends ActivityManagerNative } @Override - public void deleteActivityContainer(IActivityContainer container) throws RemoteException { - enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "deleteActivityContainer()"); - synchronized (this) { - mStackSupervisor.deleteActivityContainer(container); - } - } - - @Override public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException { enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "createStackOnDisplay()"); synchronized (this) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 22d8078dac7e..3dbbb13f7993 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -467,20 +467,21 @@ final class ActivityStack extends ConfigurationContainer { } } - void detachDisplay() { + void remove() { mDisplayId = Display.INVALID_DISPLAY; mStacks = null; if (mTaskPositioner != null) { mTaskPositioner.reset(); } - mWindowManager.detachStack(mStackId); - onParentChanged(); if (mStackId == DOCKED_STACK_ID) { // If we removed a docked stack we want to resize it so it resizes all other stacks // in the system to fullscreen. mStackSupervisor.resizeDockedStackLocked( null, null, null, null, null, PRESERVE_WINDOWS); } + mStackSupervisor.deleteActivityContainerRecord(mStackId); + mWindowManager.removeStack(mStackId); + onParentChanged(); } void getDisplaySize(Point out) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index ca36908e0eaa..6171fe874ec0 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2007,15 +2007,10 @@ public final class ActivityStackSupervisor extends ConfigurationContainer } } - void deleteActivityContainer(IActivityContainer container) { - ActivityContainer activityContainer = (ActivityContainer)container; - if (activityContainer != null) { - if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, - "deleteActivityContainer: callers=" + Debug.getCallers(4)); - final int stackId = activityContainer.mStackId; - mActivityContainers.remove(stackId); - mWindowManager.removeStack(stackId); - } + void deleteActivityContainerRecord(int stackId) { + if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, + "deleteActivityContainerRecord: callers=" + Debug.getCallers(4)); + mActivityContainers.remove(stackId); } void resizeStackLocked(int stackId, Rect bounds, Rect tempTaskBounds, Rect tempTaskInsetBounds, @@ -3460,7 +3455,7 @@ public final class ActivityStackSupervisor extends ConfigurationContainer if (activityDisplay != null) { ArrayList<ActivityStack> stacks = activityDisplay.mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - stacks.get(stackNdx).mActivityContainer.detachLocked(); + stacks.get(stackNdx).mActivityContainer.removeLocked(); } mActivityDisplays.remove(displayId); } @@ -4100,14 +4095,14 @@ public final class ActivityStackSupervisor extends ConfigurationContainer } } - protected void detachLocked() { - if (DEBUG_STACK) Slog.d(TAG_STACK, "detachLocked: " + this + " from display=" + void removeLocked() { + if (DEBUG_STACK) Slog.d(TAG_STACK, "removeLocked: " + this + " from display=" + mActivityDisplay + " Callers=" + Debug.getCallers(2)); if (mActivityDisplay != null) { mActivityDisplay.detachActivitiesLocked(mStack); mActivityDisplay = null; - mStack.detachDisplay(); } + mStack.remove(); } @Override @@ -4182,8 +4177,7 @@ public final class ActivityStackSupervisor extends ConfigurationContainer } void onTaskListEmptyLocked() { - detachLocked(); - deleteActivityContainer(this); + removeLocked(); mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index e6c951254635..b4e0d42996c3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -3407,21 +3407,16 @@ public class WindowManagerService extends IWindowManager.Stub } } - public void detachStack(int stackId) { + public void removeStack(int stackId) { synchronized (mWindowMap) { final TaskStack stack = mStackIdToStack.get(stackId); if (stack != null) { stack.removeIfPossible(); + mStackIdToStack.remove(stackId); } } } - public void removeStack(int stackId) { - synchronized (mWindowMap) { - mStackIdToStack.remove(stackId); - } - } - public void removeTask(int taskId) { synchronized (mWindowMap) { Task task = mTaskIdToTask.get(taskId); |