diff options
| author | 2015-09-24 15:28:27 +0000 | |
|---|---|---|
| committer | 2015-09-24 15:28:27 +0000 | |
| commit | 6e3cc291ea698d63f9eced987c0697b1745c6da8 (patch) | |
| tree | eefa55a9019b47b025ee903c3feb3d2ed814364e | |
| parent | a316536528e94743cbda09e82aba325de7a869cf (diff) | |
| parent | 925d0d1369f118d9eb4a05a7d088eda19b733436 (diff) | |
Merge "Make home stack move like another stack."
3 files changed, 23 insertions, 43 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 87f7e085256d..9809c2e4906c 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -529,21 +529,15 @@ final class ActivityStack { * */ void moveToFront(String reason, TaskRecord task) { if (isAttached()) { - final boolean homeStack = isHomeStack() - || (mActivityContainer.mParentActivity != null - && mActivityContainer.mParentActivity.isHomeActivity()); - ActivityStack lastFocusStack = null; - if (!homeStack) { - // Need to move this stack to the front before calling - // {@link ActivityStackSupervisor#moveHomeStack} below. - lastFocusStack = mStacks.get(mStacks.size() - 1); - mStacks.remove(this); - mStacks.add(this); - } - // TODO(multi-display): Focus stack currently adjusted in call to move home stack. - // Needs to also work if focus is moving to the non-home display. + final ActivityStack lastFocusStack = mStacks.get(mStacks.size() - 1); + // Need to move this stack to the front before calling + // {@link ActivityStackSupervisor#setFocusStack} below. + mStacks.remove(this); + mStacks.add(this); + + // TODO(multi-display): Needs to also work if focus is moving to the non-home display. if (isOnHomeDisplay()) { - mStackSupervisor.moveHomeStack(homeStack, reason, lastFocusStack); + mStackSupervisor.setFocusStack(reason, lastFocusStack); } if (task != null) { insertTaskAtTop(task, null); @@ -4554,18 +4548,17 @@ final class ActivityStack { if (mTaskHistory.isEmpty()) { if (DEBUG_STACK) Slog.i(TAG_STACK, "removeTask: removing stack=" + this); - final boolean notHomeStack = !isHomeStack(); if (isOnHomeDisplay()) { String myReason = reason + " leftTaskHistoryEmpty"; if (mFullscreen || !adjustFocusToNextVisibleStackLocked(null, myReason)) { - mStackSupervisor.moveHomeStack(notHomeStack, myReason); + mStackSupervisor.moveHomeStackToFront(myReason); } } if (mStacks != null) { mStacks.remove(this); mStacks.add(0, this); } - if (notHomeStack) { + if (!isHomeStack()) { mActivityContainer.onTaskListEmptyLocked(); } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index b7f18c2d33e0..17a44720deaf 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -468,35 +468,22 @@ public final class ActivityStackSupervisor implements DisplayListener { return stack == mFocusedStack; } - void moveHomeStack(boolean toFront, String reason) { - moveHomeStack(toFront, reason, null); - } - - void moveHomeStack(boolean toFront, String reason, ActivityStack lastFocusedStack) { + void setFocusStack(String reason, ActivityStack lastFocusedStack) { ArrayList<ActivityStack> stacks = mHomeStack.mStacks; final int topNdx = stacks.size() - 1; if (topNdx <= 0) { return; } - // The home stack should either be at the top or bottom of the stack list. - if ((toFront && (stacks.get(topNdx) != mHomeStack)) - || (!toFront && (stacks.get(0) != mHomeStack))) { - if (DEBUG_STACK) Slog.d(TAG_STACK, "moveHomeTask: topStack old=" - + ((lastFocusedStack != null) ? lastFocusedStack : stacks.get(topNdx)) - + " new=" + mFocusedStack); - stacks.remove(mHomeStack); - stacks.add(toFront ? topNdx : 0, mHomeStack); - } - + final ActivityStack topStack = stacks.get(topNdx); + mFocusedStack = topStack; if (lastFocusedStack != null) { mLastFocusedStack = lastFocusedStack; } - mFocusedStack = stacks.get(topNdx); - EventLog.writeEvent(EventLogTags.AM_HOME_STACK_MOVED, - mCurrentUser, toFront ? 1 : 0, stacks.get(topNdx).getStackId(), - mFocusedStack == null ? -1 : mFocusedStack.getStackId(), reason); + EventLogTags.writeAmFocusedStack( + mCurrentUser, mFocusedStack == null ? -1 : mFocusedStack.getStackId(), + mLastFocusedStack == null ? -1 : mLastFocusedStack.getStackId(), reason); if (mService.mBooting || !mService.mBooted) { final ActivityRecord r = topRunningActivityLocked(); @@ -506,6 +493,10 @@ public final class ActivityStackSupervisor implements DisplayListener { } } + void moveHomeStackToFront(String reason) { + mHomeStack.moveToFront(reason); + } + /** Returns true if the focus activity was adjusted to the home stack top activity. */ boolean moveHomeStackTaskToTop(int homeStackTaskType, String reason) { if (homeStackTaskType == RECENTS_ACTIVITY_TYPE) { @@ -3666,11 +3657,7 @@ public final class ActivityStackSupervisor implements DisplayListener { } final boolean homeInFront = stack.isHomeStack(); if (stack.isOnHomeDisplay()) { - moveHomeStack(homeInFront, "switchUserOnHomeDisplay"); - TaskRecord task = stack.topTask(); - if (task != null) { - mWindowManager.moveTaskToTop(task.taskId); - } + stack.moveToFront("switchUserOnHomeDisplay"); } else { // Stack was moved to another display while user was swapped out. resumeHomeStackTask(HOME_ACTIVITY_TYPE, null, "switchUserOnOtherDisplay"); diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags index 9a645dfc6985..78b5f3333b2c 100644 --- a/services/core/java/com/android/server/am/EventLogTags.logtags +++ b/services/core/java/com/android/server/am/EventLogTags.logtags @@ -93,8 +93,8 @@ option java_package com.android.server.am # Activity focused 30043 am_focused_activity (User|1|5),(Component Name|3) -# Home Stack brought to front or rear -30044 am_home_stack_moved (User|1|5),(To Front|1|5),(Top Stack Id|1|5),(Focused Stack Id|1|5),(Reason|3) +# Stack focus +30044 am_focused_stack (User|1|5),(Focused Stack Id|1|5),(Last Focused Stack Id|1|5),(Reason|3) # Running pre boot receiver 30045 am_pre_boot (User|1|5),(Package|3) |