Merge "Skip moving the focused Task to top if it is already on top" into tm-qpr-dev am: be9d1c7821 am: 54c07fc4dc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19009471 Change-Id: Ie130fa95840e3f86181a1f7a9155c35a454552ce Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -2605,6 +2605,12 @@
|
||||
"group": "WM_DEBUG_STATES",
|
||||
"at": "com\/android\/server\/wm\/TaskFragment.java"
|
||||
},
|
||||
"385237117": {
|
||||
"message": "moveFocusableActivityToTop: already on top and focused, activity=%s",
|
||||
"level": "DEBUG",
|
||||
"group": "WM_DEBUG_FOCUS",
|
||||
"at": "com\/android\/server\/wm\/ActivityRecord.java"
|
||||
},
|
||||
"385595355": {
|
||||
"message": "Starting animation on %s: type=%d, anim=%s",
|
||||
"level": "VERBOSE",
|
||||
@@ -3409,6 +3415,12 @@
|
||||
"group": "WM_DEBUG_BOOT",
|
||||
"at": "com\/android\/server\/wm\/WindowManagerService.java"
|
||||
},
|
||||
"1239439010": {
|
||||
"message": "moveFocusableActivityToTop: set focused, activity=%s",
|
||||
"level": "DEBUG",
|
||||
"group": "WM_DEBUG_FOCUS",
|
||||
"at": "com\/android\/server\/wm\/ActivityRecord.java"
|
||||
},
|
||||
"1252594551": {
|
||||
"message": "Window types in WindowContext and LayoutParams.type should match! Type from LayoutParams is %d, but type from WindowContext is %d",
|
||||
"level": "WARN",
|
||||
@@ -3991,12 +4003,6 @@
|
||||
"group": "WM_DEBUG_STARTING_WINDOW",
|
||||
"at": "com\/android\/server\/wm\/ActivityRecord.java"
|
||||
},
|
||||
"1856211951": {
|
||||
"message": "moveFocusableActivityToTop: already on top, activity=%s",
|
||||
"level": "DEBUG",
|
||||
"group": "WM_DEBUG_FOCUS",
|
||||
"at": "com\/android\/server\/wm\/ActivityRecord.java"
|
||||
},
|
||||
"1856783490": {
|
||||
"message": "resumeTopActivity: Restarting %s",
|
||||
"level": "DEBUG",
|
||||
|
||||
@@ -3215,12 +3215,29 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mRootWindowContainer.getTopResumedActivity() == this
|
||||
&& getDisplayContent().mFocusedApp == this) {
|
||||
ProtoLog.d(WM_DEBUG_FOCUS, "moveFocusableActivityToTop: already on top, "
|
||||
+ "activity=%s", this);
|
||||
return !isState(RESUMED);
|
||||
// If this activity already positions on the top focused task, moving the task to front
|
||||
// is not needed. But we still need to ensure this activity is focused because the
|
||||
// current focused activity could be another activity in the same Task if activities are
|
||||
// displayed on adjacent TaskFragments.
|
||||
final ActivityRecord currentFocusedApp = mDisplayContent.mFocusedApp;
|
||||
if (currentFocusedApp != null && currentFocusedApp.task == task) {
|
||||
final Task topFocusableTask = mDisplayContent.getTask(
|
||||
(t) -> t.isLeafTask() && t.isFocusable(), true /* traverseTopToBottom */);
|
||||
if (task == topFocusableTask) {
|
||||
if (currentFocusedApp == this) {
|
||||
ProtoLog.d(WM_DEBUG_FOCUS, "moveFocusableActivityToTop: already on top "
|
||||
+ "and focused, activity=%s", this);
|
||||
} else {
|
||||
ProtoLog.d(WM_DEBUG_FOCUS, "moveFocusableActivityToTop: set focused, "
|
||||
+ "activity=%s", this);
|
||||
mDisplayContent.setFocusedApp(this);
|
||||
mAtmService.mWindowManager.updateFocusedWindowLocked(UPDATE_FOCUS_NORMAL,
|
||||
true /* updateInputWindows */);
|
||||
}
|
||||
return !isState(RESUMED);
|
||||
}
|
||||
}
|
||||
|
||||
ProtoLog.d(WM_DEBUG_FOCUS, "moveFocusableActivityToTop: activity=%s", this);
|
||||
|
||||
rootTask.moveToFront(reason, task);
|
||||
|
||||
@@ -475,5 +475,13 @@ public class TaskFragmentTest extends WindowTestsBase {
|
||||
assertFalse(activity0.isLetterboxedForFixedOrientationAndAspectRatio());
|
||||
assertFalse(activity1.isLetterboxedForFixedOrientationAndAspectRatio());
|
||||
assertEquals(SCREEN_ORIENTATION_UNSET, task.getOrientation());
|
||||
|
||||
tf0.setResumedActivity(activity0, "test");
|
||||
tf1.setResumedActivity(activity1, "test");
|
||||
mDisplayContent.mFocusedApp = activity1;
|
||||
|
||||
// Making the activity0 be the focused activity and ensure the focused app is updated.
|
||||
activity0.moveFocusableActivityToTop("test");
|
||||
assertEquals(activity0, mDisplayContent.mFocusedApp);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user