Loading services/core/java/com/android/server/wm/RootWindowContainer.java +22 −16 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPING; import static com.android.server.wm.ActivityStack.STACK_VISIBILITY_INVISIBLE; import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityStackSupervisor.ON_TOP; import static com.android.server.wm.ActivityStackSupervisor.dumpHistoryList; Loading Loading @@ -1931,25 +1932,30 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } boolean attachApplication(WindowProcessController app) throws RemoteException { final String processName = app.mName; boolean didSomething = false; for (int displayNdx = getChildCount() - 1; displayNdx >= 0; --displayNdx) { final DisplayContent display = getChildAt(displayNdx); final ActivityStack stack = display.getFocusedStack(); if (stack == null) { continue; } mTmpRemoteException = null; mTmpBoolean = false; // Set to true if an activity was started. final DisplayContent display = getChildAt(displayNdx); for (int areaNdx = display.getTaskDisplayAreaCount() - 1; areaNdx >= 0; --areaNdx) { final TaskDisplayArea taskDisplayArea = display.getTaskDisplayAreaAt(areaNdx); for (int taskNdx = taskDisplayArea.getStackCount() - 1; taskNdx >= 0; --taskNdx) { final ActivityStack rootTask = taskDisplayArea.getStackAt(taskNdx); if (rootTask.getVisibility(null /*starting*/) == STACK_VISIBILITY_INVISIBLE) { break; } final PooledFunction c = PooledLambda.obtainFunction( RootWindowContainer::startActivityForAttachedApplicationIfNeeded, this, PooledLambda.__(ActivityRecord.class), app, stack.topRunningActivity()); stack.forAllActivities(c); PooledLambda.__(ActivityRecord.class), app, rootTask.topRunningActivity()); rootTask.forAllActivities(c); c.recycle(); if (mTmpRemoteException != null) { throw mTmpRemoteException; } } } didSomething |= mTmpBoolean; } if (!didSomething) { Loading @@ -1966,8 +1972,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } try { if (mStackSupervisor.realStartActivityLocked(r, app, top == r /*andResume*/, true /*checkConfig*/)) { if (mStackSupervisor.realStartActivityLocked(r, app, top == r && r.isFocusable() /*andResume*/, true /*checkConfig*/)) { mTmpBoolean = true; } } catch (RemoteException e) { Loading services/core/java/com/android/server/wm/Task.java +12 −0 Original line number Diff line number Diff line Loading @@ -3671,6 +3671,10 @@ class Task extends WindowContainer<WindowContainer> { return STACK_VISIBILITY_INVISIBLE; } if (isTopActivityLaunchedBehind()) { return STACK_VISIBILITY_VISIBLE; } boolean gotSplitScreenStack = false; boolean gotOpaqueSplitScreenPrimary = false; boolean gotOpaqueSplitScreenSecondary = false; Loading Loading @@ -3788,6 +3792,14 @@ class Task extends WindowContainer<WindowContainer> { : STACK_VISIBILITY_VISIBLE; } private boolean isTopActivityLaunchedBehind() { final ActivityRecord top = topRunningActivity(); if (top != null && top.mLaunchTaskBehind) { return true; } return false; } ActivityRecord isInTask(ActivityRecord r) { if (r == null) { return null; Loading services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -548,7 +548,7 @@ public class ActivityRecordTests extends ActivityTestsBase { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); try { doReturn(false).when(stack).isTranslucent(any()); assertFalse(mStack.shouldBeVisible(null /* starting */)); assertTrue(mStack.shouldBeVisible(null /* starting */)); mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(), mActivity.getConfiguration())); Loading Loading
services/core/java/com/android/server/wm/RootWindowContainer.java +22 −16 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import static com.android.server.wm.ActivityStack.ActivityState.PAUSED; import static com.android.server.wm.ActivityStack.ActivityState.RESUMED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPED; import static com.android.server.wm.ActivityStack.ActivityState.STOPPING; import static com.android.server.wm.ActivityStack.STACK_VISIBILITY_INVISIBLE; import static com.android.server.wm.ActivityStackSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityStackSupervisor.ON_TOP; import static com.android.server.wm.ActivityStackSupervisor.dumpHistoryList; Loading Loading @@ -1931,25 +1932,30 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } boolean attachApplication(WindowProcessController app) throws RemoteException { final String processName = app.mName; boolean didSomething = false; for (int displayNdx = getChildCount() - 1; displayNdx >= 0; --displayNdx) { final DisplayContent display = getChildAt(displayNdx); final ActivityStack stack = display.getFocusedStack(); if (stack == null) { continue; } mTmpRemoteException = null; mTmpBoolean = false; // Set to true if an activity was started. final DisplayContent display = getChildAt(displayNdx); for (int areaNdx = display.getTaskDisplayAreaCount() - 1; areaNdx >= 0; --areaNdx) { final TaskDisplayArea taskDisplayArea = display.getTaskDisplayAreaAt(areaNdx); for (int taskNdx = taskDisplayArea.getStackCount() - 1; taskNdx >= 0; --taskNdx) { final ActivityStack rootTask = taskDisplayArea.getStackAt(taskNdx); if (rootTask.getVisibility(null /*starting*/) == STACK_VISIBILITY_INVISIBLE) { break; } final PooledFunction c = PooledLambda.obtainFunction( RootWindowContainer::startActivityForAttachedApplicationIfNeeded, this, PooledLambda.__(ActivityRecord.class), app, stack.topRunningActivity()); stack.forAllActivities(c); PooledLambda.__(ActivityRecord.class), app, rootTask.topRunningActivity()); rootTask.forAllActivities(c); c.recycle(); if (mTmpRemoteException != null) { throw mTmpRemoteException; } } } didSomething |= mTmpBoolean; } if (!didSomething) { Loading @@ -1966,8 +1972,8 @@ class RootWindowContainer extends WindowContainer<DisplayContent> } try { if (mStackSupervisor.realStartActivityLocked(r, app, top == r /*andResume*/, true /*checkConfig*/)) { if (mStackSupervisor.realStartActivityLocked(r, app, top == r && r.isFocusable() /*andResume*/, true /*checkConfig*/)) { mTmpBoolean = true; } } catch (RemoteException e) { Loading
services/core/java/com/android/server/wm/Task.java +12 −0 Original line number Diff line number Diff line Loading @@ -3671,6 +3671,10 @@ class Task extends WindowContainer<WindowContainer> { return STACK_VISIBILITY_INVISIBLE; } if (isTopActivityLaunchedBehind()) { return STACK_VISIBILITY_VISIBLE; } boolean gotSplitScreenStack = false; boolean gotOpaqueSplitScreenPrimary = false; boolean gotOpaqueSplitScreenSecondary = false; Loading Loading @@ -3788,6 +3792,14 @@ class Task extends WindowContainer<WindowContainer> { : STACK_VISIBILITY_VISIBLE; } private boolean isTopActivityLaunchedBehind() { final ActivityRecord top = topRunningActivity(); if (top != null && top.mLaunchTaskBehind) { return true; } return false; } ActivityRecord isInTask(ActivityRecord r) { if (r == null) { return null; Loading
services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -548,7 +548,7 @@ public class ActivityRecordTests extends ActivityTestsBase { final ActivityStack stack = new StackBuilder(mRootWindowContainer).build(); try { doReturn(false).when(stack).isTranslucent(any()); assertFalse(mStack.shouldBeVisible(null /* starting */)); assertTrue(mStack.shouldBeVisible(null /* starting */)); mActivity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(), mActivity.getConfiguration())); Loading