OSDN Git Service

Refactor stack removal methods
authorAndrii Kulian <akulian@google.com>
Wed, 26 Oct 2016 23:15:25 +0000 (16:15 -0700)
committerAndrii Kulian <akulian@google.com>
Wed, 26 Oct 2016 23:22:31 +0000 (16:22 -0700)
Refactor some parts of stack removal to make methods implementations
correspond to their names.

Change-Id: Ie686c463d67232d9d5fd96468fe3911003d22471
Test: Manual and existing tests still pass.

core/java/android/app/ActivityManagerNative.java
core/java/android/app/IActivityManager.java
services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/am/ActivityStack.java
services/core/java/com/android/server/am/ActivityStackSupervisor.java
services/core/java/com/android/server/wm/WindowManagerService.java

index 4df1325..9aba220 100644 (file)
@@ -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();
index 5edd03f..7f583e6 100644 (file)
@@ -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;
index 1edc8d2..2ea2a74 100644 (file)
@@ -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) {
index 22d8078..3dbbb13 100644 (file)
@@ -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) {
index ca36908..6171fe8 100644 (file)
@@ -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();
         }
 
index e6c9512..b4e0d42 100644 (file)
@@ -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);