Merge "Evaluate task on top of home when task is brought to front." into klp-dev

This commit is contained in:
Craig Mautner
2013-10-06 17:44:38 +00:00
committed by Android (Google) Code Review
3 changed files with 8 additions and 26 deletions

View File

@@ -572,8 +572,8 @@ final class ActivityRecord {
}
boolean isRootActivity() {
ArrayList<ActivityRecord> activities = task.mActivities;
return activities.size() == 0 || this == task.mActivities.get(0);
final ArrayList<ActivityRecord> activities = task.mActivities;
return activities.size() == 0 || this == activities.get(0);
}
UriPermissionOwner getUriPermissionsLocked() {

View File

@@ -1618,6 +1618,12 @@ final class ActivityStack {
}
private void insertTaskAtTop(TaskRecord task) {
// If this is being moved to the top by another activity or being launched from the home
// activity, set mOnTopOfHome accordingly.
final boolean fromHome = mStackSupervisor.getLastStack().isHomeStack();
if (!isHomeStack() && (fromHome || topTask() != task)) {
task.mOnTopOfHome = fromHome;
}
mTaskHistory.remove(task);
// Now put task at top.
int stackNdx = mTaskHistory.size();

View File

@@ -292,22 +292,6 @@ public final class ActivityStackSupervisor {
return mService.startHomeActivityLocked(mCurrentUser);
}
final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r,
ActivityStack stack) {
if (stack == mHomeStack) {
return;
}
if ((sourceRecord == null && getLastStack() == mHomeStack) ||
(sourceRecord != null && sourceRecord.isHomeActivity())) {
if (r == null) {
r = stack.topRunningActivityLocked(null);
}
if (r != null && !r.isHomeActivity() && r.isRootActivity()) {
r.task.mOnTopOfHome = true;
}
}
}
void setDismissKeyguard(boolean dismiss) {
if (ActivityManagerService.DEBUG_LOCKSCREEN) mService.logLockScreen(" dismiss=" + dismiss);
mDismissKeyguardOnNextActivity = dismiss;
@@ -1483,7 +1467,6 @@ public final class ActivityStackSupervisor {
// is the case, so this is it! And for paranoia, make
// sure we have correctly resumed the top activity.
if (doResume) {
setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack);
resumeTopActivitiesLocked(targetStack, null, options);
} else {
ActivityOptions.abort(options);
@@ -1579,9 +1562,6 @@ public final class ActivityStackSupervisor {
// don't use that intent!) And for paranoia, make
// sure we have correctly resumed the top activity.
if (doResume) {
// Reset flag so it gets correctly reevaluated.
intentActivity.task.mOnTopOfHome = false;
setLaunchHomeTaskNextFlag(sourceRecord, intentActivity, targetStack);
targetStack.resumeTopActivityLocked(null, options);
} else {
ActivityOptions.abort(options);
@@ -1619,7 +1599,6 @@ public final class ActivityStackSupervisor {
// resumed the top activity.
topStack.mLastPausedActivity = null;
if (doResume) {
setLaunchHomeTaskNextFlag(sourceRecord, null, topStack);
resumeTopActivitiesLocked();
}
ActivityOptions.abort(options);
@@ -1698,7 +1677,6 @@ public final class ActivityStackSupervisor {
// resumed the top activity.
targetStack.mLastPausedActivity = null;
if (doResume) {
setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack);
targetStack.resumeTopActivityLocked(null);
}
ActivityOptions.abort(options);
@@ -1721,7 +1699,6 @@ public final class ActivityStackSupervisor {
top.deliverNewIntentLocked(callingUid, r.intent);
targetStack.mLastPausedActivity = null;
if (doResume) {
setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack);
targetStack.resumeTopActivityLocked(null);
}
return ActivityManager.START_DELIVERED_TO_TOP;
@@ -1755,7 +1732,6 @@ public final class ActivityStackSupervisor {
EventLog.writeEvent(EventLogTags.AM_CREATE_TASK, r.userId, r.task.taskId);
}
ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task);
setLaunchHomeTaskNextFlag(sourceRecord, r, targetStack);
targetStack.mLastPausedActivity = null;
targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options);
mService.setFocusedActivityLocked(r);