summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrii Kulian <akulian@google.com> 2016-10-26 16:15:25 -0700
committer Andrii Kulian <akulian@google.com> 2016-10-26 16:22:31 -0700
commit6d6fb401c79aadeb35cfc66cd36cb30f92d3552f (patch)
tree312b236f28b08a0c3a207c7fed40ce179c883f58
parent8977c2dcd65266cc60e5c6e3b7688fcdc7fd9761 (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.
-rw-r--r--core/java/android/app/ActivityManagerNative.java21
-rw-r--r--core/java/android/app/IActivityManager.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java8
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java7
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java24
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java9
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);